1、根据系统要求,即本系统具有信息的录入,显示,排序显示、查找,插入、从文件中读入数据、循环写入数据、结束程序等功能,先设计出详细的系统流程图,然后将源代码输入程序,进行编译调试即可。 程序总体分12个项目:输入记录、显示记录、按姓名排序并显示、按房间号排序并显示 、按学号排序并显示 、按姓名查找并显示 、按房间号查找并显示 、按学号查找并显示、插入一条记录按学号排序并显示、从文件中读入数据、循环写入数据以及结束程序。三、系统流程图系统流程图下页图所示根据流程图,将程序源代码输入到编译环境中,按照提示选择进行记录的输入,输入一个数据后提示是否继续输入,直到结束程序为止。将程序编译生成“学生宿舍管理
2、系统.exe”。运行该文件如图1所示。图1 输出界面图输入记录采用循环输入 while(sign!=n & sign!N) /*判断*/ printf(tt姓名:); scanf(tt%s, &roomn+i.name);tt学号:roomn+i.num);tt房间号:,&roomn+i.roomnum);tt是否继续输入?(Y/N)tt%csign); /*输入判断*/ i+; 返回(n+i);按照提示选择“1”进行记录的输入如图2所示:图2 输入记录显示图 连续输入多组数据后,按“n”结束输入,提示按任意键继续,按任意键后选择“2”进行记录的显示如图3所示。图3 显示所有记录按姓名排序采用
3、冒泡排序法。 int i,j; char t10; for(i=0;in-1;i+) /*冒泡法排序*/ for(j=0;j0) strcpy(t,roomj+1.name); strcpy(roomj+1.name,roomj.name); strcpy(roomj.name,t); strcpy(t,roomj+1.num); strcpy(roomj+1.num,roomj.num); strcpy(roomj.num,t); strcpy(t,roomj+1.roomnum); strcpy(roomj+1.roomnum,roomj.roomnum); strcpy(roomj.ro
4、omnum,t); 显示后提示按任意键继续,选择“3”进行按姓名排序并显示,如图4所示。图4 按姓名排序显示图按房间号排序采用 冒泡排序法 for(i=0; if(strcmp(roomj.roomnum,roomj+1.roomnum) 显示后提示按任意键继续,选择“4”进行按房间号排序并显示,如图5所示。图5 按房间号排序显示图同样学号排序也是用的冒泡法排序。 if(strcmp(roomj.num,roomj+1.num) strcpy(t,roomj+1.roomnum);显示后提示按任意键继续,选择“5”进行按学号排序并显示,如图6所示。图6 按学号排序显示图功能6-8为查找功能 按
5、姓名查找并显示功能 printf(tt输入要查找的姓名: scanf(%s,s); while(strcmp(roomi.name,s)!=0 & in) i+; /*查找判断*/ if(i=n)tt对不起没有找到该学生!n /*返回失败信息*/ else Display_a_record(room1,i); /*调用函数*/显示后提示按任意键继续,选择“6”按提示步骤按学号查找一条记录并显示,如图7所示。图7 按姓名查找并显示图按房间号查找和按学号查找的方法大同小异。分别输入“7”、“8”显示截图如下页图8 按房间号查找并显示图 图9 按学号查找并显示图功能9为插入一条记录按学号排序并显示。
6、int Insert_a_record(Student room,int n) /*插入一条记录并按学号排序*/ printf(tt学生姓名:roomn.name);tt学生学号:roomn.num);tt学生房间号:roomn.roomnum); n+; Sort_by_num(room,n); /*调用排序函数*/tt插入记录成功! /*返回成功信息*/return(n);显示后提示按任意键继续,选择“9”进行插入数据,如下页图10所示。图10 插入一条记录按学号排序并显示图五、心得体会这次课程设计我做的还不是很完善,因为功能不是很多,如果以后有机会完善的话,应该对管理员和用户登录时做进一
7、步完善。学生的信息还不够完整,如学生的宿舍长,系别,一些费用以及学生的成绩等待相关详细信息。如果使次系统再详细些,需添加更多的管理员以及管理员权限,还有学生的更多信息,如果有必要的话,添加一些有关教师的信息,以及教师登录的界面。在这次课程设计的过程中,我们体会到要想开发一个系统软件,不仅需要相当的专业技术知识,还要有严谨缜密的思维能力。只有思想上清晰了,编程才有意义,否则就是白费力气。同时还要善于捕获细小的方面,因为那往往是这个程序的致命因素。这次课程设计培养了我的细心和耐性,更树立了一种科学的态度。附录:源代码#includestdlib.hctype.hstring.htypedef st
8、ruct char roomnum4; char num10; char name20;Student;Student room11000;int menu() char c; do system(clstt学生宿舍管理系统ntt 1. 输入记录 2. 显示记录 3. 按姓名排序并显示 4. 按房间号排序并显示 5. 按学号排序并显示 6. 按姓名查找并显示 7. 按房间号查找并显示 8. 按学号查找并显示 9. 插入一条记录按学号排序并显示 10. 从文件中读入数据 11. 循环写入数据 0. 结束程序 ttntt请选择您要运行的选项按(0-11): c=getchar(); while(c
9、11 return(c- int Input(Student room,int n) int i=0; char sign;) return(n+i);void Display_all_record(Student room,int n) int i;tt-ntt房间号 学号 姓名 n for(i=1;n+1;i+) tt%-10s%-10s%-10sn,roomi-1.roomnum,roomi-1.num,roomi-1.name);tt system(pausevoid Display_a_record(Student room,int n) ,roomn.roomnum,roomn.n
10、um,roomn.name); /*输出所查找的一条记录*/void Sort_by_name(Student room,int n) void Sort_by_num(Student room,int n) void Sort_by_roomnum(Student room,int n) void Find_record_name(Student room,int n) char s10; void Find_record_rommnum(Student room,int n) char s20;tt输入要查找的房间号: while(strcmp(roomi.roomnum,s)! void
11、 Find_record_num(Student room,int n) tt输入要查找的学号: while(strcmp(roomi.num,s)!int Insert_a_record(Student room,int n) return(n);int AddfromText(Student room,int n) int i=0,num; FILE *fp; char filename20;tt输入文件名:filename); if(fp=fopen(filename,rb)=NULL) tt无法打开该文件n system( return(n); fscanf(fp,%dnum); wh
12、ile(inum) fscanf(fp,%s%s%s%s,roomn+i.roomnum,roomn+i.num,roomn+i.name); i+; n+=num; fclose(fp);tt读入成功!void WritetoText(Student room,int n) char filename100;tt循环写入数据nw return; fprintf(fp,%dn,n);n) fprintf(fp,%-10s%-10s%-10s%-10sn,roomi.roomnum,roomi.num,roomi.name);写入成功!int main() int n=0; for(;) switch(menu() case 1: printf(tt输入记录n n=Input(room1,n); break; case 2:tt显示记录n Display_all_record(room1,n); case 3:tt按姓名排序并显示n Sort_by_name(room1,n);tt排序成功! case 4:tt按房间号排序并显示n Sort_by_roomnum(room1,n); case 5:tt按学号排序并显示n Sort_by_num(room1,n);ttt排序成功!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1