c语言程序保存学生信息代码,学生信息管理系统C语言程序代码

《学生信息管理系统C语言程序代码》由会员分享,可在线阅读,更多相关《学生信息管理系统C语言程序代码(15页珍藏版)》请在人人文库网上搜索。

1、include #include #include #include #include #include #include include #include #define LEN sizeogstiuct student)using namespace std:mtn=0;定义一个全局变址统计学生人数stract student/淀义一个学生信息的结构体char name20; 用来存放姓名的char sex20; 用来存放性别的char yuanxi20;用來存放院系的long intid; 用来存放学号的mtscore4;/用来存放分数的int total: 用來存放总分数的stnict。

2、 student next:;vector stu;class Informationpublic:InfbrmationO ;构造函数.-InfomiationO : 析构闻数.smdent *creatO建工链表函数.void output(sttident *head);int coimt(student *head);/定义闻敌 count0统计考生总敌student *insert(studentname.ch); 将循环结构前血输入的姓名复制到结构体名为pl的数组name中cout 性别:;cinpl-sex:潤璜?皖系:;cin$tr;cout 学号(9 位):;docin$tr。

3、;if(atol(str)999999999 | atol(str)id=atol(str): flag=l; while(flag=O);flag=O;cout语文成绩:;do cin$tr;if(atoi(str)100 | atoi($tr)$core0=atoi(str): flag=l;while(flag=0);flag=0;cout外语成绩:;docin$tr;if(atoi(str)100 | atoi($tr)score 1 =atoi(str); flag=l; while(flag=0);flag=0;cout数学成绩:;docin$tr;if(atoi(str)100 。

4、| atoi($tr)score2=atoi(str); flag=l; while(flag=0);flag=0;cout C卄成绩:;docin$tr;if(atoi($tr)100 | atoi(str)score3=atoi(str); flag=l; while(flag=0);flag=0;pl-total=p 1 -score0-p 1 -score 11 -score2-pl -score3;/it 总分if(n=O)head=piy/如果是输入第一组学生考试倍息就将抬针pl姒给指针head else p2-next=piy/否则将pl以给p2所指结构体的next抬针p2r)l。

5、;/将指针pl赋给指针p2将n的值加1cout 姓名:;cinch;/将输入的姓名存放到字符数组ch中p2-next=NULL:,7将p2所指结构体的next指针垂新貳空值return (head);/将输入的第一组学生考试信息返回void Information:output(stxident *head)定义outputOF敌将学生的信息从头播针所拆内容开始输出if(head=NULL)cout这是一个空表,请先输入考生成绩.5;el$ecoutcout*学生成绩倍息表忸;n;总分5;潤璜?学号姓名性别院系语文英语3,数学Ci平均成绩COUtUUm;pl=head;将头拆针姒给pdocou。

6、t$et-(8)pl -idseh(9)p 1 -naxneset(8)p 1 -$exsetv(l 3 )p 1 -$core0setv(l 6)pl-$core 1uvsetw( 10)p 1 -$core2sehv(9)pl -score3setw(6)total;4.0sehv(ll)p 1 -totalendl:coutn;pl=pl-next;.7将下一组学生信息的next指针賦给pwhile(pl!=NULLV/若指针p非空則继续,目的是把所有的学生信息都传给指针p然后输出. /统计学生人数的函数int Information:coimt(struct student *head。

7、)/定义函数 countO统计考生总故 if(head=NULL)/:指针head为空返回但为0 retum(O);else reniru( 1 +count(head-next) J!函数的递归调用插入学生的成绩信息的函数student *Infbmiation:inseit( student *head) /Hi入新结点定义个指向 struct student 的结构体拆针函敌*inseit()l|J來添加考 生信息.char stif 10;int flag=O;cout vv请输入新增学生成绩信息aanendl;pl=(snident *)malloc(LEN); H便 pl 指向插入。

8、的新结点cout 姓名:;cmpl-name: 将输入的姓名存放到结构体名为pl的数组name中cout 性别:;cinpl-sex:cout 学 ; (9 位):;docin$tr;if(atol(str)99999999 | atol($tr)id=atol($tr): flag=l;while(flag=O);flag=O;cout语文成绩:;docin$tr;if(atoi(str)100 | atoi(str)score0=atoi(str); flag=l;while(flag=O);flag=O;cout外语成绩:;docin$tr;if(atoi(str)100 | atoi(。

9、$tr)score円toi(str); flag=l;while(flag=O);flag=0;cout数学成绩:;docin$tr;if(atoi($tr)100 | atoi(str)score2=atoi(str); flag=l;while(flag=O);flag=0;cout C+ 成绩:;docin$tr;if(atoi(str)100 | atoi(str)score3=atoi(str); flag=l;while(flag=O);flag=0;pl-total=pl-score0-pl-scorel-T)l-score2-pl-score3;/it 总分p2=head;.7。

10、将头抬针触给p2if(head=NULL)/r;没调用次函数以前的头抬针head为空head=pl;pl-next=NULL;/则将pl賦给头指针head井将pl所指结枸体成员指针next賦空值elseiiile(p 1 -idp2-id)&(p2 -next !=MULL)p3=p2;/p3指向原p2指向的结点p2=p2-next;旳)2后移一个结点iflpl-idid)if(head=p2) pl-next=head:head=pl; 插入到第一个结点z前elsep3-next=pl;pl-next=p2;插入到p3所拆结点Z后elsep2-next=pl;pl-next=NULL: 插入。

11、到尾结点Z后11卄;将学生人敌加1cout你输入的学生信息己经成功插入uid&plnext!=NULLW寻找耍删除的结点当pl所指的学号不是输入的学号并且pl所指的next指针不 为空PF;pl=pl-next; .7p2指向原pl指向的结点pl后移一个结点if(num=plid)/如果输入的学生准考证号是pl所指的学号结点找到后硼除ifnext;/如果head指针和pl指针相等則将下一个结点賦给指针headelsep2-next=plnext;/否则将pl所指结点駅给p2所指结点将耍删除的学生涪息跳过去cout田除学号为?淡澎?的学生n;1将学生人数减5retum(head);/将头指针返回。

12、査找学生信息函数stxident *Infonnation:find(student *headjong int num) ”定义 个抬向 struct student 的结构体指针函数拿find。用來传找学生 信息.if(head=NULL),77;:用次函数以前的头指针head为空cout这是一个空表,请先输入考生成绩.n;retum(head);elsepl=head; ”否则将头抬针賦给plhile(num!=p 1 -id&p 1 -next !=NULL)寻找结点当pl所指的学号不是输入的学生学号并且pl所指的next 针不为空pl=pl-next; /.pl 启移一个结点if(n。

13、um=plid),7如果耍査找的学号是pl所指的学号coutn;潤璜?学号姓名性别院系语文英语数学C+平均分总分5;coutn:coutsetr-(8)pl -idseW(9)p 1 -nameseW(8)p 1 -sexuvsetw( 13 )p 1 -$core0uvsetw( 16)pl -$corelsetv(10)pl -score2$e(9)p 1 -$core3seh(6)p 1 -total;4.0uvsetw( 11) 1 -totalendl:coutn;elsecout没找到学号为?決澎?的学生.5; 结点没找到retum(head);void Information: 。

14、:inorder(snident *head) 定义inorderQ函数将考生的总分从大到小彳*列并输.4int i.k.m=0j;student *p20;/定义一个指向stnict student的结构体指针数纽p-NULL)”如果头拆针绘空则继续m=coxmt(head);coutn;潤璟?学生成绩统计表n;coutn;潤璜?学号姓名性别 院系 语文 英语 敌学C 平均分 总分 coutn;pl=head:fbr(k=0:knext;fbr(k=O:ktotaltotal)p2=pk;pM=pj;pi】=p2;fbr(i=0;iidseW(9)p 1 -nameseW(8)p 1 -se。

15、xuvsetw( 13 )p 1 -$core0uvsetw( 16)pl -$core 1setv(10)pl -score2$e(9)p 1 -$core3seh(6)p 1 -total;4.0setv(ll) 1 totalendl:coutn; void Information:average(student *head) 求备科平均成绩的函故int km:float argl=0.arg2=0.aig3=0,arg4=0;if(head=NULL)7ftll果头指针是空則继续 cout这是一个空表,请先输入学生成绩.n;elsem=count(head); pl=head;for(。

16、k=0:kscore0: arg2+=p 1 -score 1: arg3+=p 1 -$core2: arg4+=p 1 -score3: pl=pl-next;潤瑤?全班单科成绩平均分5;coutn;cout 语文平均:setx-(7)arg 1英语平均分:setw(7)namehead-idsexhead-score0head-score 1 head-score2score3totalendl:head=head-next:student *Infbmiation: ReadO/读取函数的实现int i=0;pl=p2=( student *)malloc(LEN):head=NULL。

17、;ifstream m(data.txtjos:out);ini;if(i=0)cout data.txt文件屮的数据为空请先输入数据。endl; retxun0;elsecout endl:fbr(:iO;i)pl=(student *)malloc(LEN):ci nst.namest.idst.sexst.score0$t.$corelst.score2st.score3st.total;strcpy(p 1 -name. st.name);pl-id=st.id;strcpy(p 1 -sex.st.sex);p 1 -score0=st.score0;p 1 -$core 1 =st。

18、.score 1 ;p 1 -score2=st.score2;pl-score3=st.score3;pl-total=st. total;述n=C)head=plM如果魁输入第一组学生考试倍息就将拆针pl賦给指针headelse p2-next=piy/否则将pl賦给p2所指结构体的next抬针p2)iy/将指针pi賦给指针p2n卄;/;俗n的值加1cout p 1 name$exscore0pl-$corelpl-$core2pl-$core3pl-totalendl:coutendl:cout 数州己经成功读取完毕。endl;p2-next=NULL:return (head);int。

19、 mainO 主函数.system(coloT 40/A 变登 Wi 界而颜色Information person;student *head=NULL;char s&(5;int flas=O;int choice;long mt i;char admin20;char pass3O;n;请输入账弓5;请输入密码 閥煤?cmApass:if(strcmp(admin.Il)=0&strcmp(pa$s,?)=O)docout而溜璟?界菜统理息生I学倍管系主单*endl;潤璜?| endl;I1 憫fl?endl;输入学生倍息endl; |澜嫌?潤璟? I显示学生信息endl; I I end。

20、l; it序统计成绩|润璟? 閥璟? I 査找学生倍息I vendl:I增加学生信息.endl; |潤璟? |瀾璟? | endl;删除学生信息.保存退出系统I M?. I endl;11 憫璜? vendl:潤璜? (l7):()bb;请输入您的选择cinstr;if(atoi($tr)7 | atoi(str)999999999 | atol(str)999999999 | atol(str)l)潤璟?对不起,请输入正确输入!hm;elsei=atol(str): flag=l;while(flag=O);flag=0;head=person.cancel(head,i);person.output(head);break:case 7:person. save(head);制璜?文件己保存!可以安全退出! endl;break:default :cout对不起您的输入有決.请垂新输入。n;break:while(choice!=7);else密码不对.垂新输入潤璜?return 0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值