《c语言大作业学生管理完整 .docx》由会员分享,可在线阅读,更多相关《c语言大作业学生管理完整 .docx(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品名师归纳总结#include stdafx.h #include #include #include #include #define N 100 struct studentchar name10 。int num 。char sex10 。float math 。float yingyu 。float zhengzhi 。float ywen 。float aver 。float sum 。stu 。void menusystemcls 。printf*欢迎使用同学成果治理系统*n 。printf*=*n。printf*请选择相应的功能:*n 。printf*1.成果录入*n 。pri
2、ntf*2.查询成果*n 。printf*3.修改成果*n 。printf*4.插入成果*n 。printf*5.报表输出*n 。printf*6. 删除操作 * n 。printf * 0. 退出系统 * n 。printf*=*n。printf nnnnnnnnn* * *n。/成果录入void inputsystemcls 。FILE *fp 。student xs。 /* 定义一个结构体变量来装从文件中读出来的数据*/ int c=1 。iffp=fopenstudent.dat,ab=NULLprintfcant open file.n。exit0 。可编辑资料 - - - 欢迎下载
3、精品名师归纳总结printfn成果录入 。printfn*。whilec+ /* 中间加油 break,可使循环中断 */printfn请输入您的姓名 姓名为 end 终止 : 。scanf%s,xs.name 。ifstrcmpxs.name,end=0 break 。/* 判定姓名是否为 end,用字符串判定 */ printfn请输入学号: 。scanf%d,&xs.num 。printfn性别: 。scanf%s,&xs.sex 。printfn请输入数学的成果: 。scanf%f,&xs.math 。printfn请输入英语的成果: 。scanf%f,&xs.yingyu。print
4、fn请输入政治的成果: 。scanf%f,&xs.zhengzhi 。printfn请输入语文的成果: 。scanf%f,&xs.ywen。xs.aver=0。/* 给平均分变量赋初值 */ xs.aver=xs.math+xs.yingyu+xs.zhengzhi+xs.ywen/4。xs.sum=0。xs.sum=xs.math+xs.yingyu+xs.zhengzhi+xs.ywen 。fwrite&xs,sizeofstu,1,fp。 /将成果信息写入文件systemcls 。fclosefp 。void xingmingFILE *fp 。student xs。char name1
5、0 。printfn输入要查同学的姓名 : 。 scanf%s,name 。iffp=fopenstudent.dat,rb=NULLprintfcant open file.n。exit0 。 while.feoffpfread&xs,sizeofstu,1,fp 。ifstrcmpxs.name,name=0/* 按姓名查询时判定输入的姓名是否存在,会循环从数据中找取*/printfn同学的信息如下 :n 。printfn %10s %6s %6s %6s %6s %6s %6s %6s %6sn,姓名 , 学号 , 性别 , 数学 , 英语, 政治 , 语文 , 平均成果 , 总成果 。
6、可编辑资料 - - - 欢迎下载精品名师归纳总结printfn %10s %6d%6s %6.2f %6.2f %6.2f %6.2f %6.2f%6.2fn,xs.name,xs.num,xs.sex,xs. math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum 。break。iffeoffpprintfn查找失败 . 。 /* 同学不存在 */ fclosefp 。void xuehaoFILE *fp 。student xs。int num 。printfn输入要查同学的学号 : 。scanf%d,&num 。iffp=fopenstuden
7、t.dat,rb=NULLprintfcant open file.n。exit0 。 while.feoffpfread&xs,sizeofstu,1,fp 。ifxs.num=num/* 按学号查询时判定输入的学号是否存在,会循环从数据中找取*/printfn同学的信息如下 :n 。printfn %10s %6s %6s %6s %6s %6s %6s %6s %6sn,姓名 , 学号 , 性别, 数学 , 英语 ,政治 , 语文, 平均成果 , 总成果 。printfn %10s %6d%6s %6.2f %6.2f %6.2f %6.2f %6.2f%6.2fn,xs.name,xs
8、.num,xs.sex,xs. math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum 。break。iffeoffp printfn查找失败 . 。fclosefp 。/查询void searchchar ch1。systemcls 。printf请输入按何种方式查询:n 。printfn1- 姓名, 2-学号 : 。ch1=getchar。/* 用字符接收 */switchch1/* 判定 */可编辑资料 - - - 欢迎下载精品名师归纳总结case 1:xingming 。break。case 2:xuehao。 break。printfn按任
9、意键返回主菜单。getch。/* 让屏幕停留同时按任意键返回*/修改 : 输入同学的姓名,查找该同学,如找到就修改该生的成果信息,并显示修改前后的结果。void modistudent xs。FILE *fp 。char name10 。systemcls 。printfn输入要修改的同学的姓名: 。scanf%s,name 。iffp=fopenstudent.dat,rb+=NULLprintfcant open file.n。exit0 。 while.feoffpfread&xs,sizeofstu,1,fp 。ifstrcmpxs.name,name=0/* 判定输入要修改的姓名是否
10、存在*/printf修改前同学的信息如下 :n 。printfn %10s %6s %6s %6s %6s %6s %6s %6s %6sn,姓名 , 学号 , 性别, 数学 , 英语 ,政治 , 语文, 平均成果 , 总成果 。printfn %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2fn,xs.name,xs.num,xs.sex,xs.math,xs.y ingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum 。printfn请输入该生的数学成果: 。scanf%f,&xs.math 。printfn英语成果 : 。sca
11、nf%f,&xs.yingyu。printfn政治成果 : 。scanf%f,&xs.zhengzhi。printfn语文成果 : 。 scanf%f,&xs.ywen。xs.aver=xs.math +xs.yingyu +xs.zhengzhi +xs.ywen/4。xs.sum=xs.math +xs.yingyu +xs.zhengzhi +xs.ywen 。break。if.feoffpprintf n修改后的同学的信息如下:n 。printfn %10s %6s %6s %6s %6s %6s %6s %6s %6sn,姓名 , 学号 , 性别, 数学 , 英语 ,政治 , 语文,
12、 平均成果 , 总成果 。可编辑资料 - - - 欢迎下载精品名师归纳总结printfn %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2fn,xs.name,xs.num,xs.sex,xs.math,xs.y ingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum 。fseekfp,sizeofstu,1 。/* 负号表示后退, 1 表示文件当前位置*/fwrite&xs,sizeofstu,1,fp。/* 再写入,同时把要修改的那个掩盖掉*/elseprintfn同学不存在,修改失败. 。fclosefp 。printfn按任意
13、键返回主菜单 。getch。/ 插入 :输入同学的平常的各项成果,插入到指定位置。当指定的位置超出范畴时,将其插入到全班的最终,并显示插入成功后的结果。void insertint i=0,j,k,lenth 。FILE *fp 。student s,xsN 。systemcls 。printfn请输入插入的同学的姓名: 。scanf%s,&s.name 。printfn同学的学号 : 。scanf%d,&s.num 。printfn同学的性别 : 。scanf%s,&s.sex 。printfn数学成果 : 。scanf%f,&s.math 。printfn英语成果 : 。scanf%f,&
14、s.yingyu。printfn政治成果 : 。scanf%f,&s.zhengzhi 。printfn语文成果 : 。scanf%f,&s.ywen 。s.aver=s.math+s.yingyu+s.zhengzhi+s.ywen/4 。s.sum= s.math+s.yingyu+s.zhengzhi+s.ywen 。printfn插入位置 : 。scanf%d,&k 。/ i=0 。iffp=fopenstudent.dat,rb=NULLprintf cant open file.n。exit0 。while.feoffpfread&xsi,sizeofstu,1,fp。/* 把数据
15、读入到结构体数组中*/ iffeoffp break 。i+ 。fclosefp 。lenth=i 。ifk=0/*k的位置要位于数组范畴之内*/ 插入可编辑资料 - - - 欢迎下载精品名师归纳总结forj=lenth-1 。j=k 。j-xsj+1=xsj。/* 一开头 j 是最大的,往后移一个这样移动防止数据被掩盖*/* 循环是只循环这一句的*/xsk=s 。/* 将输入的同学信息加入这个k 位置 */ lenth+ 。/* 长度 +1*/写回iffp=fopenstudent.dat,wb=NULLprintf不能建立文件 .n 。exit0 。fori=0 。ilenth 。i+ f
16、write&xsi,sizeofstu,1,fp。else/* 不再数组范畴之内*/iffp=fopenstudent.dat,ab=NULLprintf不能建立文件 .n 。exit0 。fwrite&s,sizeofstu,1,fp。printfn按任意键返回主菜单 。fclosefp 。/显示 void printFILE *fp 。student s。systemcls 。iffp=fopenstudent.dat,rb=NULLprintf cant open file.n。exit0 。printf同学成果表 。printfn *。printfn %10s %10s%6s %6s
17、%6s %6s %6s %6s %6s n,姓名 , 学号 , 性别 , 数学, 英语, 政治 , 语文 , 平均成果 , 总成果 。while.feoffpfread&s,sizeofstu,1,fp 。/从文件中读取成果信息iffeoffp break 。/ 判定是否文件尾printfn %10s %6d%6s %6.2f %6.2f %6.2f %6.2f%6.2f%6.2fn,s.name,s.num,s.sex,s.可编辑资料 - - - 欢迎下载精品名师归纳总结math,s.yingyu,s.zhengzhi,s.ywen,s.aver,s.sum 。fclosefp 。print
18、fn按任意键返回主菜单 。getch。/统计 void tongjiint i=0,j=0,k=0,l=0,m=0,n,p,q,r,t,u。FILE *fp 。student sN, *p1N,*p2N,*p3N,*p4N。/* 用指针数组 */ systemcls 。iffp=fopenstudent.dat,rb=NULL printfcantt open file.n。 exit0 。 while.feoffpfread&si+,sizeofstu,1,fp。/* 读入数据 */ iffeoffp break 。t=i 。i=0 。foru=0 。 ut。u+/* 以下每个指针数组用于指
19、向各分数段的同学信息*/ifsi.aver=60&si.aver=80&si.aver=90 p4m+=&si+。continue。printf同学成果单 。printfn 90 以上的人有:姓名学号平均分 n。forr=0 。rname,p4r-num,p4r-aver。printfn 80-89分的人有:姓名学号平均分 n 。forq=0 。 qname,p3q-num,p3q-aver。printfn 60-79分的人有:姓名学号平均分 n 。forp=0 。pname,p2p-num,p2p-aver。printfn不及格的人有:姓名学号 平均分 n 。可编辑资料 - - - 欢迎下载
20、精品名师归纳总结forn=0 。nname,p1n-num,p1n-aver。fclosefp 。printfn按任意键返回主菜单。getch。/ifsi.aver=60&si.aver=80&si.aver=90 p4m+=&si+。continue。printf同学成果单 。printfn 90 以上的人有:姓名学号平均分 n。forr=0 。rname,p4r-num,p4r-aver。printfn 80-89分的人有:姓名学号平均分 n 。forq=0 。 qname,p3q-num,p3q-aver。printfn 60-79分的人有:姓名学号平均分 n 。forp=0 。pnam
21、e,p2p-num,p2p-aver。printfn不及格的人有:姓名学号 平均分 n 。forn=0 。nname,p1n-num,p1n-aver。fclosefp 。printfn按任意键返回主菜单。getch。/删除 :输入同学姓名,如该同学存在,就删除,并显示删除后余下的同学成果信息void delestudent xsN 。FILE *fp 。char name10 。可编辑资料 - - - 欢迎下载精品名师归纳总结int i=0,len,k=-1/*k0是为后面 if 判定用的 */ 。systemcls 。printfn输入要删除的同学姓名: 。scanf%s,name 。if
22、fp=fopenstudent.dat,rb+=NULLprintf cant open file.n。 exit0 。 while.feoffp删除 :输入同学姓名,如该同学存在,就删除,并显示删除后余下的同学成果信息void delestudent xsN 。FILE *fp 。char name10 。int i=0,len,k=-1/*k=0/*k0说明找到删除同学位置*/iffp=fopenstudent.dat,wb+=NULLprintf cant open file.n。 exit0 。 fori=0 。ilen 。i+ifi=k continue 。/* 从这个位置开头写入
23、*/ fwrite&xsi,sizeofstu,1,fp。fclosefp 。else printfn删除失败 .n 。getch。 /* 失败后重新返回菜单 */ printfn按任意键返回主菜单 。print 。/菜单选择可编辑资料 - - - 欢迎下载精品名师归纳总结void mainchar ch。systemcolor 3f 。while1menu。/ 显示菜单ch=getch 。/选择菜单ifch=0 break 。switchch/ 判定功能项case1:input。break。case 2:search。break。case 3:modi 。break。case 4:inser
24、t。break。case 5:print 。break。case 6:tongji 。break。case 7:dele。break。#include stdafx.h #include #include #include #include #define N 100 struct studentchar name10 。int num 。char sex10 。float math 。float yingyu 。float zhengzhi 。float ywen 。float aver 。float sum 。stu 。void menusystemcls 。printf*欢迎使用同学成果
25、治理系统*n 。printf*=*n。可编辑资料 - - - 欢迎下载精品名师归纳总结printf*请选择相应的功能:*n 。printf*1.成果录入*n。printf*2.查询成果*n。printf*3.修改成果*n。printf*4.插入成果*n。printf*5.报表输出*n。printf*6.删除操作*n。printf*0.退出系统*n 。printf*=printf nnnnnnnnn* * *nn。/成果录入void inputsystemcls 。FILE *fp 。student xs。 /* 定义一个结构体变量来装从文件中读出来的数据*/ int c=1 。iffp=fop
26、enstudent.dat,ab=NULLprintfcant open file.n。exit0 。 printfn成果录入 。printfn*。whilec+ /* 中间加油 break,可使循环中断 */printfn请输入您的姓名 姓名为 end 终止 : 。scanf%s,xs.name 。ifstrcmpxs.name,end=0 break 。/* 判定姓名是否为 end,用字符串判定 */ printfn请输入学号: 。scanf%d,&xs.num 。printfn性别: 。scanf%s,&xs.sex 。printfn请输入数学的成果: 。scanf%f,&xs.math
27、 。printfn请输入英语的成果: 。scanf%f,&xs.yingyu。printfn请输入政治的成果: 。scanf%f,&xs.zhengzhi 。printfn请输入语文的成果: 。scanf%f,&xs.ywen。xs.aver=0。/* 给平均分变量赋初值 */ xs.aver=xs.math+xs.yingyu+xs.zhengzhi+xs.ywen/4。xs.sum=0。xs.sum=xs.math+xs.yingyu+xs.zhengzhi+xs.ywen 。fwrite&xs,sizeofstu,1,fp。 /将成果信息写入文件可编辑资料 - - - 欢迎下载精品名师归
28、纳总结systemcls 。fclosefp 。void xingmingFILE *fp 。student xs。char name10 。printfn输入要查同学的姓名 : 。 scanf%s,name 。iffp=fopenstudent.dat,rb=NULLprintfcant open file.n。exit0 。 while.feoffpfread&xs,sizeofstu,1,fp 。ifstrcmpxs.name,name=0/* 按姓名查询时判定输入的姓名是否存在,会循环从数据中找取*/printfn同学的信息如下 :n 。printfn %10s %6s %6s %6s
29、 %6s %6s %6s %6s %6sn,姓名 , 学号 , 性别 , 数学 , 英语, 政治 , 语文 , 平均成果 , 总成果 。printfn %10s %6d%6s %6.2f %6.2f %6.2f %6.2f %6.2f%6.2fn,xs.name,xs.num,xs.sex,xs. math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum 。break。iffeoffpprintfn查找失败 . 。 /* 同学不存在 */ fclosefp 。void xuehaoFILE *fp 。student xs。int num 。printf
30、n输入要查同学的学号 : 。scanf%d,&num 。iffp=fopenstudent.dat,rb=NULLprintfcant open file.n。exit0 。 while.feoffpfread&xs,sizeofstu,1,fp 。ifxs.num=num/* 按学号查询时判定输入的学号是否存在,会循环从数据中找取*/可编辑资料 - - - 欢迎下载精品名师归纳总结printfn同学的信息如下 :n 。printfn %10s %6s %6s %6s %6s %6s %6s %6s %6sn,姓名 , 学号 , 性别, 数学 , 英语 ,政治 , 语文, 平均成果 , 总成果
31、 。printfn %10s %6d%6s %6.2f %6.2f %6.2f %6.2f %6.2f%6.2fn,xs.name,xs.num,xs.sex,xs. math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum 。break。iffeoffp printfn查找失败 . 。fclosefp 。/查询void searchchar ch1。systemcls 。printf请输入按何种方式查询:n 。printfn1- 姓名, 2-学号 : 。ch1=getchar。/* 用字符接收 */ switchch1/* 判定 */case 1:x
32、ingming 。break。case 2:xuehao。 break。printfn按任意键返回主菜单。getch。/* 让屏幕停留同时按任意键返回*/修改 : 输入同学的姓名,查找该同学,如找到就修改该生的成果信息,并显示修改前后的结果。void modistudent xs。FILE *fp 。char name10 。systemcls 。printfn输入要修改的同学的姓名: 。scanf%s,name 。iffp=fopenstudent.dat,rb+=NULLprintfcant open file.n。exit0 。 while.feoffpfread&xs,sizeofst
33、u,1,fp 。ifstrcmpxs.name,name=0/* 判定输入要修改的姓名是否存在*/可编辑资料 - - - 欢迎下载精品名师归纳总结printf修改前同学的信息如下 :n 。printfn %10s %6s %6s %6s %6s %6s %6s %6s %6sn,姓名 , 学号 , 性别, 数学 , 英语 ,政治 , 语文, 平均成果 , 总成果 。printfn %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2fn,xs.name,xs.num,xs.sex,xs.math,xs.y ingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum 。printfn请输入该生的数学成果: 。scanf%f,&xs.math 。printfn英语成果 : 。scanf%f,&xs.yingyu。printfn政治成果 : 。scanf%f,&xs.zhengzhi。printfn语文成果 : 。 scanf%f,&xs.ywen。xs.aver=xs.math +xs.yingyu +xs.zhengzhi +xs.ywen/4。xs.sum=xs.math +xs.yingyu +xs.zhengzhi +xs.ywen 。break。i
限制150内