1、学生宿舍管理系统学生宿舍管理系统1课程设计的目的进一步掌握和利用C语言进行程设计的能力,理解和运用结构化程设计的思想和方法,熟练掌握条件语句、循环、数组、函数操作,初步掌握开发一个小型实用系统的基本方法,学会高度一个较长程序的基本方法和利用流程图或N-S图表示算法,将本课程所学的知识合理地运用于实践当中。适当了解一些书上没有的函数及使用方法。2设计分工与合作:在本设计中,其中 1. 输入记录、 2. 显示记录 、 6. 按姓名查找,删除一条记录、 7 查找并显示一个记录程序等程序代码由(学号:222009322072035)完成,其中 3. 按房间号排序并显示、 4. 按学号排序并显示、 5.
2、 插入一条记录按学号排序并显示等程序代码由。3设计方案论证21设计思路利用数组对宿舍的记录进行循环输入输出,利用冒泡法记录进行排序,利用循环查找数组中某个数据,对其进行显示,删除,读入和写入文档等操作。2. 2 N-S图4.具体程序代码:#include /*引用库函数*/#include#include#includetypedef struct /*定义结构体数组*/ char roomnum4; /*房间号*/ char bednum2; /*床位号*/ char num10; /*学号*/ char name20; /*姓名*/ Student;Student room11000; /
3、*结构体数组变量*/int menu_select() /*菜单函数*/ char c; do system(cls); /*运行前清屏*/ printf(tt学生宿舍管理系统n); /*菜单选择*/ printf(tt 1. 输入记录 n); printf(tt 2. 显示记录 n); printf(tt 3. 按房间号排序并显示 n); printf(tt 4. 按学号排序并显示 n); printf(tt 5. 插入一条记录按学号排序并显示 n); printf(tt 6. 按姓名查找,删除一条记录 n); printf(tt 7 查找并显示一个记录 n); printf(tt 8. 从
4、文件中读入数据 n); printf(tt 9. 循环写入数据 n); printf(tt 0. 结束程序 n); printf(ttn); printf(tt请选择您要运行的选项按(0-9):); c=getchar(); /*读入选择*/ while(c9); return(c-0); /*返回选择*/int Input(Student room,int n) /*输入若干条记录*/int i=0;char sign,x10; /*x10为清除多余的数据所用*/while(sign!=n&sign!=N) /*判断*/ printf(tt房间号:); /*交互输入*/ scanf(tt%s
5、&,roomn+i.roomnum); printf(tt床位号:); scanf(tt%s,&roomn+i.bednum); printf(tt学号:); scanf(tt%s,&roomn+i.num); printf(tt姓名:); scanf(tt%s,&roomn+i.name); gets(x); /*清除多余的输入*/ printf(tt是否继续输入?(Y/N); scanf(tt%c,&sign); /*输入判断*/ i+;return(n+i);void Display(Student room,int n) /*显示所有记录*/int i;printf(tt-n); /*
6、格式头*/printf(tt房间号 床位号 学号 姓名 n);printf(tt-n);for(i=1;i1&i%10=0) /*每十个暂停*/ printf(tt-n); /*格式*/ printf(tt);system(pause); printf(tt-n); printf(tt);system(pause);void Sort_by_num(Student room,int n) /*按学号排序*/ int i,j,*p,*q,s; char t10; for(i=0;in-1;i+) /*冒泡法排序*/ for(j=0;j0) strcpy(t,roomj+1.bednum); st
7、rcpy(roomj+1.bednum,roomj.bednum); strcpy(roomj.bednum,t); strcpy(t,roomj+1.num); strcpy(roomj+1.num,roomj.num); strcpy(roomj.num,t); strcpy(t,roomj+1.name); strcpy(roomj+1.name,roomj.name); strcpy(roomj.name,t); void Sort_by_roomnum(Student room,int n) /*按房间号排序*/ int i,j,*p,*q,s; char t10; for(i=0;
8、in-1;i+) /*冒泡法排序*/ for(j=0;j0) strcpy(t,roomj+1.roomnum); strcpy(roomj+1.roomnum,roomj.roomnum); strcpy(roomj.roomnum,t); strcpy(t,roomj+1.bednum); strcpy(roomj+1.bednum,roomj.bednum); strcpy(roomj.bednum,t); strcpy(t,roomj+1.num); strcpy(roomj+1.num,roomj.num); strcpy(roomj.num,t); strcpy(t,roomj+1
9、.name); strcpy(roomj+1.name,roomj.name); strcpy(roomj.name,t); int Insert_a_record(Student room,int n) /*插入一条记录*/char x100; /*清除多余输入所用*/ printf(tt学生房间号:); /*交互式输入*/ scanf(tt%s,&roomn.roomnum); printf(tt学生床位号:); scanf(tt%s,&roomn.bednum); printf(tt学生学号:); scanf(tt%s,&roomn.num); printf(tt学生姓名:); scan
10、f(tt%s,&roomn.name); gets(x); n+; Sort_by_num(room,n); /*调用排序函数*/ printf(tt插入记录成功!n); /*返回成功信息*/ return(n);int Delete_a_record(Student room,int n) /*按姓名查找,删除一条记录*/ char s20; int i=0,j; printf(tt输入他(她)的姓名:); /*交互式问寻*/ scanf(%s,s); while(strcmp(roomi.name,s)!=0&in) i+; /*查找判断*/ if(i=n) printf(tt对不起没找到
11、该学生!n); /*返回失败信息*/ return(n); for(j=i;jn-1;j+) /*删除操作*/ strcpy(roomj.roomnum,roomj+1.roomnum); strcpy(roomj.bednum,roomj+1.bednum); strcpy(roomj.num,roomj+1.num); strcpy(roomj.name,roomj+1.name); printf(tt删除记录成功!n); /*返回成功信息*/ return(n-1);void Query_a_record(Student room,int n) /*查找并显示一个记录*/ char s2
12、0; int i=0; printf(tt输入他(她)的姓名:); /*交互式输入*/ scanf(tt%s,&s); while(strcmp(roomi.name,s)!=0&in) i+; /*查找判断*/ if(i=n) printf(tt对不起没找到该学生!n); /*输入失败信息*/ return; printf(tt他(她)的房间号:%sn,roomi.roomnum); /*输出该学生信息*/ printf(tt他(她)的床位号:%sn,roomi.bednum); printf(tt他(她)的学号:%sn,roomi.num);int AddfromText(Student
13、room,int n) /*从文件中读入数据*/ int i=0,num; FILE *fp; /*定义文件指针*/ char filename20; /*定义文件名*/ printf(tt输入文件名:);scanf(tt%s,&filename); /*输入文件名*/ if(fp=fopen(filename,rb)=NULL) /*打开文件*/ printf(tt无法打开该文件n); /*打开失败信息*/ printf(tt); system(pause); return(n); fscanf(fp,%d,&num); /*读入总记录量*/ while(inum) /*循环读入数据*/ f
14、scanf(fp,%s%s%s%s,roomn+i.roomnum,roomn+i.bednum,roomn+i.num,roomn+i.name); i+; n+=num; fclose(fp); /*关闭文件*/ printf(tt读入成功!n); printf(tt); system(pause); return(n);void WritetoText(Student room,int n) /*将所有记录写入文件*/int i=0;FILE *fp; /*定义文件指针*/char filename100; /*定义文件名*/ printf(tt循环写入数据n); /*输入文件名*/ p
15、rintf(tt输入文件名:); scanf(tt%s,&filename); if(fp=fopen(filename,w)=NULL) /*打开文件*/ printf(tt无法打开该文件n); system(pause); return; fprintf(fp,%dn,n); /*循环写入数据*/ while(in) fprintf(fp,%-10s%-10s%-10s%-10sn,roomi.roomnum,roomi.bednum,roomi.num,roomi.name); i+; fclose(fp); /*关闭文件*/ printf(写入成功!n); /*返回成功信息*/void
16、 main() /*主函数*/int n=0; for(;) switch(menu_select() /*选择判断*/ case 1: printf(tt输入记录n); /*输入若干条记录*/ n=Input(room1,n); break; case 2: printf(tt显示记录n); /*显示所有记录*/ Display(room1,n); break; case 3: printf(tt按房间号排序并显示n); Sort_by_roomnum(room1,n); /*按房间号排序*/ printf(tt排序成功!n); Display(room1,n); printf(tt); b
17、reak; case 4: printf(tt按学号排序并显示n); Sort_by_num(room1,n); /*按学号排序*/ printf(ttt排序成功!n); Display(room1,n); printf(tt); break; case 5: printf(tt插入一条记录按学号排序并显示n); n=Insert_a_record(room1,n); /*插入一条记录*/ Display(room1,n); printf(tt); break; case 6: printf(tt按姓名查找,删除一条记录n); n=Delete_a_record(room1,n); /*按姓名
18、查找,删除一条记录*/ printf(tt); system(pause); break; case 7: printf(tt查找并显示一个记录n); Query_a_record(room1,n); /*查找并显示一个记录*/ printf(tt); system(pause); break; case 8: printf(tt从文件中读入数据n); AddfromText(room1,n); /*从文件中读入数据*/ printf(tt); system(pause); break; case 9: printf(tt循环写入数据n); WritetoText(room1,n); /*循环写入数据*/ printf(tt); system(pause); break; case 0: printf(tt谢谢使用,祝您好运,再见!n); /*结束程序*/ printf(tt); system(pause); exit(0);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1