1、8.按照学生的学号升序对学生信息进行排序。9.用文件的方式将录入的数据进行存储,并从其中读取数据。三、概要设计1.功能模块图:2.各模块详细的功能描述:A.输入模块:调用input()函数将学生宿舍信息依次输入到结构体数组中,结束后将保存在制定文件中,在其他模块的函数中可以随时进行调用,结束后可以将修改后的学生宿舍信息再一次保存。B.添加模块:如果要添加新入住学生信息可以调用append函数将新生信息插入到原有信息的末尾,在保存到文件中。C.修改模块:修改可以通过输入要修改的学生的学号,对学生的个人信息利用switch选择要修改的内容.修改完毕后,保存到所设定的文件中去。D.删除模块:删除可以
2、通过输入要删除的学生学号,对学生的所有个人信息进行删除.删除完毕之后保存到文件中去。E.查询模块:选择输入要查询学生的学号,并将查询的信息显示在屏幕上。F.统计模块:输入要统计人数的班级号,然后输出此班的总人数。G.排序模块:按学生学号用冒泡法升序排出学生的信息。H.打印模块:输出当前文件中所有的学生住宿信息。四、详细设计:1.流程图:2.重点设计:intread_file(STUDENTSstudents)FILE*fp;inti=0;if(fp=fopen(,rt)=NULL) printf(nn*库存文件不存在!请创建);/*创建文件*/return0;while(fread(&stud
3、entsi,sizeof(STUDENTS),1,fp)=1)/*成功创建*/i+;fclose(fp);returni;voidsave_file(STUDENTSstudents,intsum)/*保存信息*/FILE*fp;inti;wbprintf(读文件错误!nreturn;五测试数据及运行结果:三组正常数据:1.2.异常测试数据及运行结果:2.六、调试情况,设计技巧及体会:1.设计过程中的体会:在刚开始还没有大体思路,觉得设计不简单。但当总体构思完成后,对各个功能的实现可以用小程序即模块形式进行实现,比如输入数据,输出数据,修改数据,删除数据等.在一个个小程序中调试,最后各个模块的
4、功能完成比较好后,在将所有的模块都放进main()主函数中进行调试,这样可以避免由整体构思调试引起的调试障碍.但还是没有得到完美的效果,有的模块还是有问题。而且程序上看没什么问题啊?老师也帮了不少的忙吧。在此写过老师的帮助。2.在调试过程中,F5,F10,F11,有了更深的认识,并且可以更灵活的运用。在编写程序的过程中,有些逻辑不是很清楚,但大部分程序模块还是写出来了。那些不清楚的就是文件方面的知识,以后要好好研究下文件了。总体来说,这次课程设计对C语言方面的知识又重新复习了一遍,感觉还行。3.还有就是原先有想过用密码,构思是想实现一个帐号密码配对使用的方法,但是由于文件的使用不熟练,最后还是
5、以失败告终。同时程序只能在当前登录过程中输入进入系统,有较大的局限性。七、参考文献C语言程序设计谭浩强清华大学出版社1999年12月C语言程序设计(第二版)王曙燕/主编八附录:3.完全代码:#include/*头文件*/#defineMAX100typedefstructintyear;intmonth;intday;DATE;intnum;/*学号*/charname20;/*姓名*um); if(studentsi.num=0)break; printf(n学生姓名: scanf(%s,studentsi.name);n学生性别:,studentsi.sex);n学生年龄:%d,&stud
6、entsi.age);n学生出生年月日:%d%d%dstudentsi.,&studentsi., &studentsi.;n学生宿舍:,studentsi.sushe);n学生班级:,studentsi.classes);n学生专业:,studentsi.zhuanye);n学生床号:,studentsi.chuanghao); i+; while(it); save_file(students,t);/*保存输入的学生信息*/ printf(n%d个学生信息输入完毕!,t); getch();returnt;/*返回输入学生的个数值*/*输出模块*/voidoutput(STUDENTSs
7、tudents,intsum) inti;system(clsprintf(numnamesexageyear-month-daysusheclasseszhuanyechuanghaonfor(i=0;isum;i+)/*输出学生的信息*/ printf(%5d%5s%5s%5d%5d%5d%5d%5s%5s%5s%5sn, studentsi.num,studentsi.name,studentsi.sex,studentsi.age,studentsi.,studentsi.,studentsi.,studentsi.sushe, studentsi.classes,studentsi.
8、zhuanye,studentsi.chuanghao); save_file(students,sum);/*添加信息模块*/intappend(STUDENTSstudents,intsum) inti=sum,flag=0; /*从已经输入的学生尾部添加*/charchoice ; sum=read_file(students); system(nn添加学生信息ndo if(iMAX)/*已经输入的学生个数和要添加的学生个数之和要小于定义的学生个数最大值*/ printf(n新学生学号:studentsi.num);/*输入添加学生的基本信息*/n学生宿舍号:n床号:n继续添加吗(Y/N
9、)choice=getch(); if(choice=Y|choice=y) flag=1;n继续!/*是否要继续添加*/ elseflag=0; while(flag=1);n按任意键返回主菜单! save_file(students,i);/*保存添加的学生信息到原文件*/ returni;/*返回文件中学生个数值*/*修改信息模块*/voidmodify(STUDENTSstudents,intsum)um=modify_num)n学生信息nnumnamesexageyear-month-dayaddresssushezhuanyechuanghaon,studentsi.num,stu
10、dentsi.name,studentsi.sex,studentsi.age,studentsi.,studentsi.,studentsi.,studentsi.sushe,studentsi.classes,studentsi.zhuanye,studentsi.chuanghao);n要修改哪一项nn1.学生学号nn2.学生姓名nn3.学生性别nn4.学生年龄nn5.学生出生年月日nn6.学生宿舍号nn7.学生班级nn8.学生专业nn9.学生床号nn请选择(1-9): scanf(choice); switch(choice) case1:n输入修改后的学号: scanf(break;
11、 case2:n输入修改后的姓名: case3:n输入修改后的性别:/*选择要修改学生的项目*/ case4:n输入修改后的年龄: case5:n输入修改后的出生年月: case6:n输入修改后的宿舍号: case7:n输入修改后的班级: case8:n输入修改后的专业: case9:n输入修改后的床号: n学生信息表n break;/*输出修改后的学生信息*/ if(i=sum)n该学生不存在! getch();nn继续修改吗( choice=getch(); /*是否要继续修改*/*保存修改后的信息*/*删除信息模块*/ intdel(STUDENTSstudents,intsum) in
12、ti,del_num;请输入要删除的学生学号del_num);/*输入要删除的学生学号*/ for(i=0;i+) if(del_num=studentsi.num) for(;sum-1; studentsi.num=studentsi+1.num;删除成功 save_file(students,sum-1);/*保存删除后的学生信息到原文件*/ return(sum-1);/*查询信息模块*/voidinquire(STUDENTSstudents,intsum) FILE*fp; inti,choice,flag,inquire_num;/*读文件*/%dn,sum); do syste
13、m(n输入要查询的学生学号:scanf(inquire_num);/*输入要查询的学生学号*/ if(studentsi.num=inquire_num)n此学生信息为:%5d%5s%5s%5d%d%d%d%5s%5s%5s%5sn break;/*输出要查询的学生信息*/ if(i=sum)n无此学生信息nnn是否继续(/*是否要继续*/while(flag=1);getch();/*统计信息模块*/voidcount(STUDENTSstudents,intsum) inti,count=0;chars10;请输入要统计的班级的学生的班级号!,s);/*按输入的班级号统计此班的总学生人数*
14、/if(strcmp(s,studentsi.classes)=0) count+;%s班的总人数为%d人,s,count); save_file(students,sum);/*排行信息模块*/voidsort(STUDENTSstudents,intsum) inti,j,t;n学生信息排行nn按学号排行ni+)/*按学号用冒泡法升序排列学生信息*/ for(j=i+1;jstudentsj.num) t=studentsi.num; studentsi.num=studentsj.num; studentsj.num=t; studentsi.num,studentsi.name,stu
15、dentsi.sex,studentsi.age,studentsi.,studentsi.,studentsi.,studentsi.sushe,studentsi.classes,studentsi.zhuanye,studentsi.chuanghao);/*输出排序后的学生信息*/*保存排序后的学生信息到文件中*/voidmima()charmima;chara9; 请输入密码:8;mima=getch();*ai=mima;a8=0nnnnnnnnn成功登陆!else nnnnnnnnn密码错误,您无权使用该系统!nnexit(1);voidmain()/*主函数*/ STUDENT
16、SstudentsMAX;intchoice,sum;mima();sum=read_file(students);if(!sum)并录入基本库存信息! sum=input(students);/*录入学生信息*/system(nnn学生宿舍管理系统nn1.添加学生信息nn2.修改学生信息nn3.删除学生信息nn4.查询学生信息nn5.统计学生信息nn6.学生排序nn7.打印学生信息nn0.退出系统nn请选择(0-7): switch(choice)/*用switch选择要调用的各模块函数并执行*/ case1:sum=append(students,sum);modify(students,sum);sum=del(students,sum);inquir
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1