学生管理系统(C语言小项目)
讲课的主题:链表与文件的结合。
文件:希望长久的保存
链表:节点数不确定,删除和增加方便
系统:
用户:
1、分配用户(管理员帐号,普通用户)
2、登录用户:
API:输入暗文密码(不带回显)
char* getpass("提示符") unistd.h
函数名:getpass
返回值:密码的首地址
形参:提示符
C的项目:
通讯录:
1、增加手机号(手机号存放在外存:文件)
2、读取用户
3、查找(模糊匹配: 李)
4、删除
5、修改
C语言知识点:
文件:二进制
数据处理:双向链表
数据模型:
个人信息
struct msg
{
char name[100];
char tel[12];
char sex;
};
//链表的节点:数据+指向链表(两个指向域)
struct Node
{
//数据
struct msg data;
//指向域:
struct Node* next;
struct Node* front;
};
睡眠等待:
sleep()
代码如下:
管理员的头文件:
gly:
#ifndef __glyH__
#define __glyH__
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<errno.h>
#include<stdlib.h>
struct glynode;
struct guanliyuan
{ char name[10];
char pw[10];
int qx;
};
typedef struct guanliyuan gly;
typedef struct glynode gnd;
typedef struct glynode* gpnd;
struct glynode
{
gly data;
gpnd next;
};
void xie(); //写入管理员,初始化
void chakan(); //查看数据库管理员信息
int panduan(char*,char*,int*); //判断用户名和密码
char gcr(gpnd*); //文本里面信息写到链表,管理员
char gcr2(gpnd); //链表数据写到文本,管理员
void zhuce(gpnd*); //注册
int denglu(char*); //登录函数
char gwins(gpnd*,gly); //尾插法插入
void gfind(gpnd); //查找管理员
void gqk(gpnd*); //清空链表
void galter(gpnd); //修改管理员
void glist(gpnd); //遍历管理员
int gdel(gpnd*); //根据姓名删除
#endif
管理员的执行文件:
gly.c:
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<errno.h>
#include<stdlib.h>
#include"gly"
void xie() //写入管理员,初始化
{
FILE* fp=fopen("./aa.txt","wb");
if(fp==NULL)
{
fprintf(stderr,"cp:打开失败!%s",strerror(errno));
return ;
}
gly m={"luxin","123456",0};
fwrite(&m,sizeof(gly),1,fp);
fclose(fp);
}
void chakan() //查看数据库管理员信息
{
FILE *fp=fopen("./aa.txt","rb");
if(NULL==fp)
{
fprintf(stderr,"cp:打开失败!%s",strerror(errno));
return ;
}
gly sh;
int time=0;
printf("姓名\t\t密码\t\t权限\n");
while(fread(&sh,1,sizeof(gly),fp)>0)
{
time++;
printf("%s \t\t%s \t\t%d\n",sh.name,sh.pw,sh.qx);
}
printf("%d个人\n",time);
if(time==0)
printf("ab.txt文本为空");
printf(".................\n");
fclose(fp);
}
int panduan(char* name,char* pw,int* qx) //判断用户名和密码
{ FILE *fp=fopen("./aa.txt","rb");
if(NULL==fp)
{
fprintf(stderr,"cp:打开失败! %s",strerror(errno));
return 0;
}
gly stu;
int time=0;
printf("pd");
while(fread(&stu,sizeof(gly),1,fp)>0)
{
if(strcmp(name,stu.name)==0)
{ time=1;
if(strcmp(pw,stu.pw)==0)
{ time=2;*qx=stu.qx;}
else
time=3;
}
}
switch(time)
{ case 3:
printf("密码错误!\nwhat you input is:%s\n",pw);
break;
case 2:printf("登录成功!\n");
// printf("%s \t\t%s \t\t%d\n",stu.name,stu.pw,stu.qx);
break;
case 0:printf("用户名不存在!\n");break;
}
return time;
}
char gcr(gpnd* ph) //文本里面信息写到链表,管理员
{
FILE* fp=fopen("./aa.txt","rb");
if(fp==NULL)
{
fprintf(stderr,"cp:打开失败!%s",strerror(errno));
return 0;
}
gly d;
while(fread(&d,1,sizeof(gly),fp)>0)
{ gwins(ph,d);
}
fclose(fp);
printf(".................\n");
}
char gcr2(gpnd ph) //链表数据写到文本,管理员
{
FILE* fp=fopen("./aa.txt","wb");
if(fp==NULL)
{
fprintf(stderr,"cp:打开失败!%s",strerror(errno));
return 0;
}
while(ph!=NULL)
{ gly m=ph->data;
fwrite(&m,1,sizeof(gly),fp);
ph=ph->next;
}
fclose(fp);
printf("\n.................\n");
}
void zhuce(gpnd* ghh) //注册
{
gly m;
gpnd pp=*ghh;
int h=0;
while(1)
{ printf("请输入用户名:");
scanf("%s",m.name);
if(pp==NULL)
break;
while(NULL!=pp)
{ if(strcmp(m.name,pp->data.name)!=0)
{ printf("用户名%s不存在,可添加\n",m.name);
h++;break;
}
else
printf("用户名%s存在,不可添加\n",m.name);
pp=pp->next;
}
if(h!=0)
break;
}
strcpy(m.pw,getpass("Password:"));
printf("%s\n",m.pw);
m.qx=1;
gwins(ghh,m);
printf("用户名%s添加成功\n",m.name);
printf("\n.....................\n");
}
int denglu(char* xm) //登录函数
{ gly ph;
printf("name:");
// char name[10];
scanf("%s",ph.name);//printf("%s\n",name);
// printf("%s",ph.name);
while(1)
{
strcpy(ph.pw,getpass("Password:"));
int yyp=panduan(ph.name,ph.pw,&ph.qx);
if(yyp==2)
break;
if(yyp==0||yyp==3)
{ printf("是否退出:1是/2否");
int sf;
scanf("%d",&sf);
if(sf==1)
break;
}
}
int ppo=ph.qx; // printf("%d",ppo);
strcpy(xm,ph.name);
return ppo;
}
char gwins(gpnd* ph,gly msg) //尾插法插入
{
gpnd pnew=malloc(sizeof(gnd));
if(NULL==pnew)
return ;
pnew->data=msg;
pnew->next=NULL;
if(*ph==NULL)
{
*ph=pnew;
}
else
{
gpnd pee=*ph;
while(pee->next!=NULL)
pee=pee->next;
pee->next=pnew;
}
}
void gfind(gpnd ph) //查找管理员
{ printf("请输入要查找的name:");
char sc[10];
scanf("%s",&sc);
int s=0;
printf("姓名\t\t 密码\t\t权限\n");
while(ph!=NULL)
{ if(strcmp(ph->data.name,sc)==0)
{printf("%s\t\t %s\t\t %d\n",ph->data.name,ph->data.pw,ph->data.qx); s++;
}
ph=ph->next;
}
if(s==0)
printf("所查找的人不存在!\n");
}
void gqk(gpnd* ph) //清空链表
{
if(NULL==(*ph))
{//printf("链表为空\n");
return;}
gpnd pl=NULL;
while(NULL!=(*ph)->next)
{ pl=(*ph)->next;
free((*ph));
(*ph)=pl;
}
if(NULL!=(*ph))
{
free((*ph));
(*ph)=NULL;
}
}
void galter(gpnd ph) //修改管理员
{ printf("请输入要修改的name:");
char sc[10];
int s=0;
scanf("%s",&sc);
while(ph!=NULL)
{ if(strcmp(ph->data.name,sc)==0)
{
printf("密码:");
scanf("%s",&(ph->data.pw));
printf("权限:");
scanf("%d",&(ph->data.qx));
printf("姓名:%s 密码:%s 权限:%d\n",ph->data.name,ph->data.pw,ph->data.qx);
s++; }
ph=ph->next;
}
if(s==0)
printf("所要修改的人不存在!\n");
else
printf("修改成功!");
}
void glist(gpnd ph) //遍历管理员
{
printf("姓名\t\t 密码\t\t权限\n");
while(ph!=NULL)
{
printf("%s\t\t %s\t\t %d\n",ph->data.name,ph->data.pw,ph->data.qx);
ph=ph->next;
}
}
int gdel(gpnd* ph) //根据姓名删除
{ printf("输入要删除的name:");
char name[10];
scanf("%s",&name);
gpnd front=*ph,rear=*ph;
while(rear!=NULL&&strcmp(rear->data.name,name)!=0)
{
front=rear;
rear=rear->next;
}
if(rear==NULL)
{
printf("不存在\n");
return 0;
}
else
{ printf("存在\n");
printf("确认删除:1是/2否");
int qr;
scanf("%d",&qr);
if(qr==1)
{ if(rear==*ph)
*ph=rear->next;
else
front->next=rear->next;
free(rear);
printf("已删除\n");
}
}
return 1;
}
/*
void main()
{
chakan();
gpnd ph=NULL;
gcr(&ph);
// zhuce(&ph);
gdel(&ph);
char xm[10];
int pop=denglu(xm);
printf("%s %d\n",xm,pop);
gcr2(ph);
gqk(&ph);
chakan();
}
*/
学生的头文件:
xs:
#ifndef __xsH__
#define __xsH__
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<errno.h>
#include<stdlib.h>
struct bode;
struct xueshen
{ char name[10];
char xb[3];
int sroce;
int id;
};
typedef struct xueshen xs;
typedef struct node nd;
typedef struct node* pnd;
struct node
{
xs data;
pnd next;
};
void chakan(); //查看数据库管理员信息
void chakanxs(); //查看数据库学生信息
char wins(pnd*,xs); //尾插法插入
char cr(pnd*); //文本里面信息写到链表
char cr2(pnd); //链表数据写到文本
char insert(pnd*); //添加学生信息
int del(pnd*); //根据姓名删除
void qk(pnd*); //清空链表
void find2(pnd); //id查找
void find(pnd); //姓名查找
void alter(pnd); //根据姓名修改
void banji(pnd); //成绩排序
void banid(pnd); //id排序
void list(pnd); //遍历
void qkxs(pnd); //清空学生信息
void cjfx(pnd); //成绩分析
void fd(pnd); //分段成绩
#endif
学生的执行文件:
xs.c:
#include"xsc"
void chakanxs() //查看数据库学生信息
{
FILE *fp=fopen("./ab.txt","rb");
if(NULL==fp)
{
fprintf(stderr,"cp:打开失败!%s",strerror(errno));
return ;
}
xs sh;
int time=0;
printf("姓名\t\t性别\t\t成绩\t\t ID\n");
while(fread(&sh,1,sizeof(xs),fp)>0)
{
time++;
printf("%s \t\t%s \t\t%d \t\t% d\n",sh.name,sh.xb,sh.sroce,sh.id);
}
printf("%d个人\n",time);
if(time==0)
printf("ab.txt文本为空");
printf(".................\n");
fclose(fp);
}
char wins(pnd* ph,xs msg) //尾插法插入
{
pnd pnew=malloc(sizeof(nd));
if(NULL==pnew)
return ;
pnew->data=msg;
pnew->next=NULL;
if(*ph==NULL)
{
*ph=pnew;
}
else
{
pnd pee=*ph;
while(pee->next!=NULL)
pee=pee->next;
pee->next=pnew;
}
}
char cr(pnd* ph) //文本里面信息写到链表
{
FILE* fp=fopen("./ab.txt","rb");
if(fp==NULL)
{
fprintf(stderr,"cp:打开失败!%s",strerror(errno));
return 0;
}
xs d;
while(fread(&d,1,sizeof(xs),fp)>0)
{ wins(ph,d);
}
fclose(fp);
printf(".................\n");
}
char cr2(pnd ph) //链表数据写到文本
{
FILE* fp=fopen("./ab.txt","wb");
if(fp==NULL)
{
fprintf(stderr,"cp:打开失败!%s",strerror(errno));
return 0;
}
while(ph!=NULL)
{ xs m=ph->data;
fwrite(&m,1,sizeof(xs),fp);
ph=ph->next;
}
fclose(fp);
printf("\n.................\n");
}
char insert(pnd* ph) //添加学生信息
{
xs d;
pnd pp=*ph;
printf("name:");
scanf("%s",d.name);
while(1)
{
printf("xb:");
char xb[2];
scanf("%s",&xb);
if(strcmp(xb,"n")==0||strcmp(xb,"m")==0)
{ strcpy(d.xb,xb);
break ;
}
else
printf("输入错误\n");
}
printf("sroce(数字):");
scanf("%d",&d.sroce);
int h=0;
while(1)
{ printf("ID:");
scanf("%d",&d.id);
if(pp==NULL)
break;
while(NULL!=pp)
{ if(d.id!=pp->data.id)
{ h++; break;}
else
printf("学号存在,不可添加\n");
pp=pp->next;
}
if(h!=0)
break;
}
wins(ph,d);
printf("\n.................\n");
}
int del(pnd* ph) //根据姓名删除
{ printf("输入要删除的name:");
char name[10];
scanf("%s",&name);
pnd front=*ph,rear=*ph;
while(rear!=NULL&&strcmp(rear->data.name,name)!=0)
{
front=rear;
rear=rear->next;
}
if(rear==NULL)
{
printf("不存在\n");
return 0;
}
else
{ printf("存在\n");
if(rear==*ph)
*ph=rear->next;
else
front->next=rear->next;
free(rear);
printf("已删除\n");
}
return 1;
}
void qk(pnd* ph) //清空链表
{
if(NULL==(*ph))
{//printf("链表为空\n");
return;}
pnd pl=NULL;
while(NULL!=(*ph)->next)
{ pl=(*ph)->next;
free((*ph));
(*ph)=pl;
}
if(NULL!=(*ph))
{
free((*ph));
(*ph)=NULL;
}
}
void find2(pnd ph)
{ printf("请输入要查找的id:");
int sc;
scanf("%d",&sc);
int s=0;
printf("姓名\t\t性别\t\t成绩\t\t ID\n");
while(ph!=NULL)
{ if(ph->data.id==sc)
{printf("%s\t\t %s\t\t %d\t\t %d\n",ph->data.name,ph->data.xb,ph->data.sroce,ph->data.id);
s++;
}
ph=ph->next;
}
if(s==0)
printf("所查找的人不存在!\n");
}
void cjfx(pnd ph)
{ int i=0,h=0;
printf("班级最低分:%d\n",ph->data.sroce);
pnd zgf=NULL;
while(ph!=NULL)
{ h=h+ph->data.sroce;
i++;zgf=ph;
ph=ph->next;
}
printf("班级平均分:%d\n",h/i);
printf("班级最高分:%d\n",zgf->data.sroce);
}
void fd(pnd ph)
{ printf("请输入要查找多少分以上的分数:");
int h;
scanf("%d",&h);
int s=0;
printf("姓名\t\t性别\t\t成绩\t\t ID\n");
while(ph!=NULL)
{ if(ph->data.sroce>h)
{printf("%s\t\t %s\t\t %d\t\t %d\n",ph->data.name,ph->data.xb,ph->data.sroce,ph->data.id);
s++;
}
ph=ph->next;
}
if(s==0)
printf("所查找的分段不存在!\n");
}
void find(pnd ph)
{ printf("请输入要查找的name:");
char sc[10];
scanf("%s",&sc);
int s=0;
printf("姓名\t\t性别\t\t成绩\t\t ID\n");
while(ph!=NULL)
{ if(strcmp(ph->data.name,sc)==0)
{printf("%s\t\t %s\t\t %d\t\t %d\n",ph->data.name,ph->data.xb,ph->data.sroce,ph->data.id);
s++;
}
ph=ph->next;
}
if(s==0)
printf("所查找的人不存在!\n");
}
void alter(pnd ph)
{ printf("请输入要修改的name:");
char sc[10];
int s=0;
scanf("%s",&sc);
while(ph!=NULL)
{ if(strcmp(ph->data.name,sc)==0)
{ printf("name:");
scanf("%s",&(ph->data.name));
printf("xb:");
scanf("%s",&(ph->data.xb));
printf("sroce:");
scanf("%d",&(ph->data.sroce));
printf("ID:");
scanf("%d",&(ph->data.id));
printf("姓名:%s 性别:%s 成绩:%d ID:%d \n",ph->data.name,ph->data.xb,ph->data.sroce,ph->data.id);
s++; }
ph=ph->next;
}
if(s==0)
printf("所要修改的人不存在!\n");
else
printf("修改成功!");
}
void banji(pnd ph)//成绩排序
{ pnd p=NULL;
pnd l=NULL;
p=ph;
while(p!=l)
{ while(p->next!=l)
{
if(p->data.sroce>p->next->data.sroce)
{xs he=p->data;
p->data=p->next->data;
p->next->data=he;
}
p=p->next;
}
l=p;
p=ph->next;
}
}
void banid(pnd ph)//id排序
{ pnd p=NULL;
pnd l=NULL;
p=ph;
while(p!=l)
{ while(p->next!=l)
{
if(p->data.id>p->next->data.id)
{xs he=p->data;
p->data=p->next->data;
p->next->data=he;
}
p=p->next;
}
l=p;
p=ph->next;
}
}
void list(pnd ph)
{
printf("姓名\t\t性别\t\t成绩\t\t ID\n");
while(ph!=NULL)
{
printf("%s\t\t %s\t\t %d\t\t %d\n",ph->data.name,ph->data.xb,ph->data.sroce,ph->data.id);
ph=ph->next;
}
}
void cl()
{ printf("(清屏按1加回车)");
int pop;
scanf("%d",&pop);
if(pop==1)
system("clear");
}
void qkxs(pnd ph)//清空学生信息
{
FILE* fp=fopen("./as.txt","wb");
if(fp==NULL)
{
fprintf(stderr,"cp:打开失败!%s",strerror(errno));
return ;
}
fclose(fp);
system("cp as.txt ab.txt");
printf("\n.................\n");
}
/*
void main()
{ printf("\n");
system("clear");
printf("\n");
printf(" 学生管理系统\n");
int s;
pnd hh=NULL;
while(1)
{
printf("\n添加学生信息:1\n查找学生信息:2\n修改学生信息:3\n删除学生信息:4\n");
printf("遍历:5\n查看文本:6\n成绩排序:7\nID排序:8\n清空:9\n");
printf("其他:退出\n");
printf("请输入:");
scanf("%d",&s);
if(s>0&&s<=9)
switch(s)
{case 1:cr(&hh);insert(&hh);cr2(hh);cl();break;
case 2:cr(&hh);find(hh);cr2(hh);cl();break;
case 3:cr(&hh);alter(hh);cr2(hh);cl();break;
case 4:cr(&hh);del(&hh);cr2(hh);cl();break;
case 5:cr(&hh);list(hh);cr2(hh);cl();break;
case 6:chakanxs();cl();break;
case 7:cr(&hh);banji(hh);list(hh);cr2(hh);cl();break;
case 8:cr(&hh);banid(hh);list(hh);cr2(hh);cl();break;
case 9:cr(&hh);qkxs(hh);break;
default:qk(&hh);return;
}
else
break;
qk(&hh);
}
}
*/
主函数的执行文件:
main.c:
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<errno.h>
#include<stdlib.h>
#include"xsc"
#include"gly"
void xueshen(char* xm)
{ system("clear");
int s;
printf("xs:%s\n",xm);
pnd hh=NULL;
gpnd ghh=NULL;
while(1)
{
printf("\n姓名查找学生信息:1\nID查找学生信息:2\n班级成绩:3\n成绩排序:4\nID排序:5\n成绩分析:6\n");
printf("分段信息:7\n其他:退出\n");
printf("请输入:");
scanf("%d",&s);
if(s>0&&s<=9)
switch(s)
{case 1:cr(&hh);find(hh);cr2(hh);cl();break;
case 2:cr(&hh);find2(hh);cr2(hh);cl();break;
case 3:cr(&hh);list(hh);cr2(hh);cl();break;
case 4:cr(&hh);banji(hh);list(hh);cr2(hh);cl();break;
case 5:cr(&hh);banid(hh);list(hh);cr2(hh);cl();break;
case 6:cr(&hh);banji(hh);cjfx(hh);cr2(hh);cl();break;
case 7:cr(&hh);fd(hh);cr2(hh);cl();break;
default:qk(&hh);return;
}
else
break;
qk(&hh);gqk(&ghh);
scanf("%*[^\n]%*c");
}
}
void guanliyuan(char* xm)
{ printf("\n");
system("clear");
int s;
pnd hh=NULL;
gpnd ghh=NULL;
printf("gly:%s\n",xm);
while(1)
{ printf("学生管理:");
printf("\n添加学生信息:1\n姓名查找学生信息:2\nID查找学生信息:3\n修改学生信息:4\n删除学生信息:5\n");
printf("查看班级成绩:6\n成绩分析:7\n分段信息:8\n学生成绩排序:9\n学生ID排序:10\n查看学生数据库:11\n清空学生数据库:12\n");
printf("管理员管理:\n");
printf("查找管理员:13\n修改管理员信息:14\n查看管理员信息:15\n");
printf("其他:退出\n");
printf("请输入:");
scanf("%d",&s);
if(s>0&&s<=15)
switch(s)
{case 1:cr(&hh);insert(&hh);cr2(hh);cl();break;
case 2:cr(&hh);find(hh);cr2(hh);cl();break;
case 3:cr(&hh);find2(hh);cr2(hh);cl();break;
case 4:cr(&hh);alter(hh);cr2(hh);cl();break;
case 5:cr(&hh);del(&hh);cr2(hh);cl();break;
case 6:cr(&hh);list(hh);cr2(hh);cl();break;
case 7:cr(&hh);banji(hh);cjfx(hh);cr2(hh);cl();break;
case 8:cr(&hh);fd(hh);cr2(hh);cl();break;
case 9:cr(&hh);banji(hh);list(hh);cr2(hh);cl();break;
case 10:cr(&hh);banid(hh);list(hh);cr2(hh);cl();break;
case 11:chakanxs();cl();break;
case 12:cr(&hh);qkxs(hh);break;
case 13:gcr(&ghh);gfind(ghh);gcr2(ghh);cl();break;
case 14:gcr(&ghh);galter(ghh);gcr2(ghh);cl();break;
case 15:gcr(&ghh);glist(ghh);gcr2(ghh);cl();break;
default:qk(&hh);gqk(&ghh);return;
}
else
break;
qk(&hh);gqk(&ghh);
// scanf("%*[^\n]%*c");
}
}
void main()
{ printf("\n");
system("clear");
printf("\n");
printf(" 学生管理系统\n");
// xie();//初始化管理员
chakan();
gpnd ghh=NULL;
gcr(&ghh);
printf("1.登录 2.注册:");
int ze;
scanf("%d",&ze);
if(ze==2)
zhuce(&ghh);
// gdel(&ghh);删除管理员
gcr2(ghh);
gcr(&ghh);
char xm[10];
printf("登录:");
int ppo=denglu(xm);
if(ppo==1)
xueshen(xm);
if(ppo==0)
guanliyuan(xm);
gcr2(ghh);
}
学生管理系统(C语言小项目)相关推荐
- 南京邮电大学c语言程序设计平台,程序设计报告-南京邮电大学-学生管理系统-c语言.doc...
程序设计报告-南京邮电大学-学生管理系统-c语言.doc 程序设计报告 题 目: 学生信息管理系统 专 业 电子信息科学与技术 学 生 姓 名 孟祥熙 班 级 学 号 指 导 教 师 王蔚 指 导 单 ...
- 南京邮电大学c语言程序报告,程序设计报告南京邮电大学学生管理系统 c语言.doc...
程序设计报告南京邮电大学学生管理系统 c语言 程序设计报告 题 目: 学生信息管理系统 专 业 电子信息科学与技术 学 生 姓 名 孟祥熙 班 级 学 号 指 导 教 师 王蔚 指 导 单 位 南京邮 ...
- c语言为什么要建项目,一个C语言小项目为什么都说牛逼
原标题:一个C语言小项目为什么都说牛逼 意在鼓励C语言学者.更有兴趣,学习更富有创业和乐趣! 推荐加学习交流群:658807522 可以在一起学习交流,既是参赛选手,又是学者,也可以先学习再参赛,反正 ...
- C语言小项目——走迷宫
C语言小项目--走迷宫 设计方向: 1.定义二维字符数组作为迷宫 2.定义变量记录老鼠的位置 3.判定移动后位置的变化 4.记录游戏时长 5.判定到达终点的条件 总体设计: 1.用不同字符代表墙.老鼠 ...
- 学生管理系统——C语言版
文章目录 学生管理系统--C语言版 主函数 录入学生信息 删除学生信息 修改学生信息 查找学生信息 打印学生信息 保存学生信息 读取学生信息 求班级成绩的平均值 学生管理系统--C语言版 主函数 in ...
- 学生管理系统 C语言 动态链表 结构体 文件操作 设置密码 输入密码回显星号
C语言 学生管理系统代码 实现功能 功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名.学号.专业. 性别.年龄. 电话.家庭住址.还可以继续拓展 系统要求实现以下功能: 1.输入功能: ...
- C语言小项目之“究极无敌螺旋丸极爆炸狂拽炫酷五彩棒的”通讯录之*派小猩*作品
C语言小项目之"究极无敌螺旋丸极爆炸狂拽炫酷五彩棒的"通讯录之派小猩作品 项目概述 基于C语言开发一个多功能的通讯录 功能目录 1.增加 2.删除 3.查找 4.修改 5.显示 6 ...
- 学生管理系统c#语言代码,基于C#语言的学生管理系统的设计(ASP.NET2.0)
摘 要 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用.学生管理系统是学校管理中不可少的一部分.而基于B/S架构的学生管 ...
- 学生管理程序c语言数组,c语言学生管理系统(c语言学生信息管理系统)
要求:1记录学生班级姓名,性别,职务住址情况,数据输入数据删除排序查. #include /*引用库函数*/ #include #include #include typedef struct /*定 ...
最新文章
- IEEE史上首位华人主席,马里兰大学终身教授刘国瑞当选
- CPLD/FPGA的UART接口设计之系统时钟(晶振)和波特率关系
- TIOBE 年度榜单揭晓:C 语言夺冠,Python 紧随其后
- centos 7安装zabbix 3.0
- linux libimf.so,如何安装Linux版FLOW-3D及注意事项
- 安全运维 - Linux系统维护
- Process Explorer 诊断和排错实例(下)
- c51语言串口,C51 语言编程:单片机与 PC 串口通信程序
- 使用现成的组件生成伪随机二进制序列和白噪声
- 流利阅读12.28 Seriously, Prada, what were you thinking? Why the fashion industry keeps bumbling into rac
- 如何用计算机远程桌面连接不上,手把手教你电脑远程桌面无法连接怎么办
- 用树莓派做MIDI HOST,给合成器外接MIDI键盘
- python脚本计算STM32的bxCAN的波特率
- 零拷贝之splice( )函数和tee( )函数
- 卸载Macfee杀毒软件之后Outlook无法加载项scanotlk.dll,outlook已经将其禁用
- Rapid object detection using a boosted cascade of simple features-简译
- 广东省第三届强网杯Writeup
- vs2017无法下载安装文件,请检查internet连接
- 2014年中信银行IT类笔试回忆版
- 摄影必备图像处理软件—— lr cc 2019直装版(Lightroom Classic CC 2019 for Mac8.2.1中文激活版)
热门文章
- 关闭服务器共享文件,服务器如何关闭共享文件夹共享文件夹
- 前端面试总结(持续更新中~~~~)
- android获取内部存储卡里的文件,获取Android内部存储(外部SD卡)和扩展存储卡(TF卡)的路径...
- sum 矩阵求和 matlab
- C/C++ 字符指针数组循环赋值问题
- 《现代密码学》2022年期末试卷
- 分频器的Verilog设计
- ubuntu20.04超简单的安装海康相机与海康sdk调试问题
- TCP/IP 之 大明王朝邮差 (转)
- 卓有成效的程序员(影印版)