《学生宿舍管理系统 C语言编程》由会员分享,可在线阅读,更多相关《学生宿舍管理系统 C语言编程(22页珍藏版)》请在人人文库网上搜索。
1、“学生宿舍管理系统” C C 语言课程设计报告语言课程设计报告 一、一、 程序功能简介程序功能简介 我设计的是“学生宿舍管理系统” ,主要是针对住宿学生个人信息的管理,适用对象主 要是学校,以方便学校对住宿学生的管理。 包括学生的姓名、学号、性别、专业、班级等等。 在编写过程中主要运用 C 语言的基本知识有:数据类型(整形、实型、字符型、指针、数组、 结构等) ;运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序 结构、判断选择结构、循环结构) ;大程序的功能分解方法(即函数的调用与使用)等。 二、二、 课程设计要求课程设计要求 该程序是由 C 语言编写的一个学生宿舍管理。
2、查询软件,程序在 Microsoft Visual C+ 6.0 下运行,其主要功能是实现对学生信息的录入、添加、删除、修改、查询、统计。其中 查询可以分别以姓名、 学号、 宿舍号为关键字查询学生信息。 统计可以分别以学号、 宿舍号、 性别、班级、专业为关键字进行统计,并且输出信息按学号大小从小到大输出。 三、三、 源程序分析源程序分析 1)1) 结构分析结构分析 1.方案设计 。1 。 主 函 数 录 入 模 块 添 加 模 块 修 改 模 块 删 除 模 块 查 询 模 块 统 计 模 块 退 出 系 统 学 号 姓 名 班 级 宿 舍 性 别 年 龄 专 业 返 回 按 姓 名 按 学 。
3、号 按 宿 舍 返按 回学 号 按 宿 舍 按 性 别 按按 班专 级业 返 回 2.数据结构说明 程序中数据主要是学生信息,具体属于类型如下: struct st_message char name20; /*学生姓名*/ char dorm7; /*宿舍号*/ char num10; /*学号*/ char sex5; /*性别*/ char age4; /*年龄*/ char major20; /*专业*/ char classs8; /*班级*/ 3. 模块功能说明 第一录入模块:调用 input_message(),对住宿学生信息进行录入。 第二添加模块:调用 append_mess。
4、age(),对新来学生信息进行添加录入。 第三修改模块:调用 revise_message(),对需修改学生的信息进行修改。 第四删除模块:调用 delete_message(),对某一学生信息进行删除操作。 第五查询模块:调用 find_message(),分别以姓名、学号、宿舍号对学生信息进行查 询。 第六统计模块:调用 census_message(),分别以学号、宿舍号、性别、班级、专业方 式对学生信息进行统计,并按学号由小到大输出。 四、四、 编程中遇到的问题及解决方法编程中遇到的问题及解决方法 在调试过程中, 时常会出现输入或显示为乱码的情况, 这可能是上下定义的数据类型不 同或定。
5、义数组长度不够所导致的。有时候程序中还会出现录入五个数据而只显示四个的情 况, 这也经常是因为定义的结构体数组长度过低所造成的。 像这些问题只要把数据类型都定 义成字符型,并且定义一个合理的数组长度一般都能解决。 在调试过程中我遇到最大的问题出现在删除模块。在运用“rt+”打开文件并对某一数 据进行删除后,往往显示会多显示一行数据。这是由于“rt+”写数据时只会覆盖数据而不 会清除原文件数据,因此文件最后一行数据总会保留在原文件中。后来我先用“ rt”打开文 件并读取文件中的数据,然后再用“ wt”打开原文件将删除后的数据重新写入文件,最终成 功运行。 。2 。 五、五、 程序运行截屏与结果分。
6、析程序运行截屏与结果分析 1. 测试数据 对功能 1(录入学生信息)的测试:按照先后顺序分别输入学生信息: 学号姓名班级宿舍号 性别年龄专业 05111101 张三 051111 429女 18土木工程 04111102 李四 041111 218男 18信息工程 对功能 2(添加学生信息)的测试:按照先后顺序分别输入学生信息: 学号姓名班级宿舍号 性别年龄专业 02111101 陈红 021111 429女 18机械系 03111203 赵娜 031112 101女 18能源与环境 对功能 3(修改学生信息)的测试:输入要修改学生的姓名:林丹,系统显示“该学生 信息不存在” 。 输入修改学生。
7、姓名: 张三, 系统显示出该学生信息。 选择修改学号为: 05111118, 系统显示出修改后的学生信息。 对功能 4(删除学生信息)的测试:输入要删除学生的学号: 03111210,系统显示“该 学生信息不存在” 。输入要删除的学生的学号:03111203,系统显示出该学生信息。选择删 除该学生信息。 对功能 5(查询学生信息)的测试:查询宿舍号为429 的信息,系统显示为: 学号姓名班级宿舍号性别年龄专业 02111101 陈红 021111 429女 18机械系 05111101 张三 051111 429女 18土木工程 对功能 6(统计学生信息)的测试:选择按学号统计,系统显示为: 。
8、学号姓名班级宿舍号性别年龄专业 02111101 陈红 021111 429女 18机械系 04111102 李四 041111 218男 18信息工程 05111101 张三 051111 429女 18土木工程 学生总人数 3 人,其中男生 1 人,女生 2 人。 对功能 7(退出系统)的测试:选择退出系统,程序关闭。 2. 详细设计及运行结果 1) 函数调用关系图 。3 。 2) 部分模块流程图及运行结果截屏 主页界面 主页流程图 开始 功能选择 是 选 1 否 选 2 否 是 选 3 否 选 4 否 选 5 是 。 录入模块 是 添加模块 修改模块 是 删除模块 4 。 查询模块 否 。
9、选 6 是 统计模块 录入界面 否 选 0 退出系统 结束 。5 。 输入姓名 输入班级 输入宿舍 输入学号 输入性别 输入年龄 输入专业 Y 是 否 继 续录入 N 结束 录入界面 修改模块 。6 。 输入要修改学 生的姓名 功能选择 是 选 1 否 选 2 是 修改学号 修改姓名 否 选 3 否 是 修改班级 是 选 4 否 是 选 5 是 否 选 6 修改宿舍 修改性别 修改年龄 否 选 7 是 修改专业 返回主页 选 8 否 是否继续 是 结束 。7 。 修改界面 统计模块 输入统计方式 功能选择 是 选 1 否是 按学号 选 2 否是 按宿舍 选 3 否 是 按性别 选 4 否 是 。
10、按班级 选 5 否是 按专业 选 6 返回主页 结束 。8 。 统计界面 六、六、 心得体会心得体会 “万事开头难” 这句话在我编写程序的过程中得到了真正的体现。 在最初编写的几天里 出现了这样那样的错误一大堆, 这主要是由于我对基础知识掌握不扎实所造成的。 但是随后 几天里, 我对课本知识进行了回顾并不时的向老师和同学进行请教, 慢慢的对编写程序也开 始得心应手起来。 程序的编写总归是一件费时费力的事情, 但只要我们认真编写和调试最后 总能成功。 短短以周实习时间我收获颇多, 我相信经过这次实习必将为我以后的深入学习打下扎实 的基础。 七、七、 源程序源程序 #include #includ。
11、e #include #include #define N 900 struct st_message /*学生信息*/ char name20; /*学生姓名*/ char dorm7; /*宿舍号*/ char num10; /*学号*/ char sex5; /*性别*/ char age4; /*年龄*/ char major20; /*专业*/ char classs8; /*班级*/ stN,t; 。9 。 sort_message() /*排序模块*/ int i,j,fno,fsize,fnum; FILE *fp; fp=fopen(student.txt,rt+); if(。
12、fp=NULL) printf(nn*文件打开错误。按任意键退出!); getchar(); exit(1); fno=fileno(fp); fsize=filelength(fno); fnum=fsize/sizeof(struct st_message); for(i=0;ifnum;i+) fread( for(i=0;ifnum-1;i+) for(j=i+1;j0) t=sti; sti=stj; stj=t; rewind(fp); for(i=0;ifnum;i+) fwrite( fclose(fp); input_message() /*录用信息模块*/ int i; c。
13、har choice; FILE *fp; fp=fopen(student.txt,at+); if(fp=NULL) printf(nn*库存文件不存在!请建立。按任意键退出!); getchar(); exit(1); for (i=0;i+) system (cls); getchar(); printf(请输入学生姓名:); gets(sti.name); printf(n 请输入学生班级:); 。10 。 gets(sti.classs); printf(n 请输入学生宿舍号:); gets(sti.dorm); printf(n 请输入学生学号:); gets(sti.num);。
14、 printf(n 请输入学生性别:); gets(sti.sex); printf(n 请输入学生年龄:); gets(sti.age); printf(n 请输入学生专业:); gets(sti.major); fwrite( printf(输入成功!n 是否继续录入(Y/N)?); choice=getchar(); if(choice=y|choice=Y) continue; else fclose(fp); break; append_message() /*添加模块*/ int i; char choice; FILE *fp; fp=fopen(student.txt,at+)。
15、; if(fp=NULL) printf(nn*库存文件不存在!请建立。按任意键退出!); getchar(); exit(1); for (i=0;i+) struct st_message stN; system (cls); getchar(); printf(请输入所添加学生姓名:); gets(sti.name); printf(n 请输入所添加学生班级:); gets(sti.classs); printf(n 请输入所添加学生宿舍号:); gets(sti.dorm); printf(n 请输入所添加学生学号:); gets(sti.num); printf(n 请输入所添加学生。
16、性别:); 。11 。 gets(sti.sex); printf(n 请输入所添加学生年龄:); gets(sti.age); printf(n 请输入所添加学生专业:); gets(sti.major); fwrite( printf(输入成功!n 是否继续添加(Y/N)?); choice=getchar(); if(choice=y|choice=Y) continue; else fclose(fp); break; revise_message() /*修改模块*/ int i,choice,flag,fno,fsize,fnum; char re_name20,s20; FILE。
17、 *fp; do fp=fopen(student.txt,rt+); fno=fileno(fp); fsize=filelength(fno); fnum=fsize/sizeof(struct st_message); system(cls); gets(s); printf(请输入需要修改的学生姓名:); gets(re_name); for (i=0;ifnum;i+) fread( if(!strcmp(re_name,sti.name) printf(n -该学生信息-nn); printf(学号-姓名-班级-宿舍号-性别-年龄-专业 -n); printf(-n); print。
18、f(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,sti.num,sti. name, sti.classs,sti.dorm,sti.sex,sti.age,sti.major); printf(您要修改哪一项?n); printf(1.学号n); 。12 。 printf(2.姓名n); printf(3.班级n); printf(4.宿舍号n); printf(5.性别n); printf(6.年龄n); printf(7.专业n); printf(8.返回主页n); scanf(%d, switch(choice) case 1:printf(n 请输入修改。
19、后的学号:); scanf(%s,sti.num);break; case 2:printf(n 请输入修改后的姓名:); scanf(%s,sti.name);break; case 3:printf(n 请输入修改后的班级:); scanf(%s,sti.classs);break; case 4:printf(n 请输入修改后的宿舍号:); scanf(%s,sti.dorm);break; case 5:printf(n 请输入修改后的性别:); scanf(%s,sti.sex);break; case 6:printf(n 请输入修改后的年龄:); scanf(%s,sti.age。
20、);break; case 7:printf(n 请输入修改后的专业:); scanf(%s,sti.major);break; case 8:return 1; getchar(); system(cls); printf(n -修改后的学生信息-nn); printf(学号-姓名-班级-宿舍号-性别-年龄-专业 -n); printf(-n); printf(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,sti.num,sti. name, sti.classs,sti.dorm,sti.sex,sti.age,sti.major); rewind(fp); f。
21、seek(fp,sizeof(struct st_message)*i,0); fwrite( fclose(fp); break; if(i=fnum) printf(n 该学生信息不存在!); 。13 。 printf(nn 继续修改吗?(Y/N); choice=getchar(); if(choice=Y|choice=y) flag=1; system(pause); else flag=0; while(flag=1); return 1; delete_message() /*删除模块*/ int i,j,choice,fno,fsize,fnum; char d_num10; 。
22、FILE *fp; system(cls); getchar(); fp=fopen(student.txt,rt); if(fp=NULL) printf(nn*库存文件不存在!请先建立。按任意键退出!); getchar(); exit(1); fno=fileno(fp); fsize=filelength(fno); fnum=fsize/sizeof(struct st_message); for(i=0;ifnum;i+) fread( printf(请输入需要删除学生的学号:n); gets(d_num); system(cls); for(i=0;ifnum;i+) if(!s。
23、trcmp(d_num,sti.num) printf(n -该学生信息-nn); printf(学号-姓名-班级-宿舍号-性别-年龄-专业-n); printf(-n); printf(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,sti.num,sti. name, sti.classs,sti.dorm,sti.sex,sti.age,sti.major); printf(n 是否删除该学生信息:n); printf(1.是n); printf(2.否n); scanf(%d, switch(choice) 。14 。 case 1:for(j=i;jfnum。
24、-1;j+) stj=stj+1; rewind(fp); fp=fopen(student.txt,wt); for(i=0;ifnum-1;i+) fwrite( fclose(fp); getchar(); break; case 2:printf(按任意键返回主菜单!); getchar(); return 0; break; if(i=fnum) printf(所查学生信息不存在,按任意键返回主菜单!); getchar(); return 0; printf(删除信息成功,按任意键返回主菜单!); return 1; find_message() /*查找信息模块*/ int i,。
25、choice,flag,fno,fsize,fnum; char f_name20; char f_num10; char f_dorm7; FILE *fp; system(cls); do sort_message(); fp=fopen(student.txt,rt); if(fp=NULL) printf(nn*库存文件不存在!请先建立。按任意键退出!); getchar(); exit(1); fno=fileno(fp); fsize=filelength(fno); fnum=fsize/sizeof(struct st_message); system(cls); printf。
26、(请选择查询方式:n); 。15 。 printf(1.按姓名查询n); printf(2.按学号查询n); printf(3.按宿舍号查询n); printf(4.返回主页n); scanf(%d, system(cls); getchar(); switch(choice) case 1:printf(请输入需要查询的姓名:n); gets(f_name); printf(n -该学生信息-nn); printf(学号-姓名-班级-宿舍号 -性别-年龄-专业 -n); printf(-n); for (i=0;ifnum;i+) if(!strcmp(f_name,sti.name) pr。
27、intf(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,sti.num,sti. name, sti.classs,sti.dorm,sti.sex,sti.age,sti.major); printf(-n); break; case 2:printf(请输入要查询的学号:); gets(f_num); printf(n -该学生信息-nn); printf(学号-姓名-班级-宿舍号 -性别-年龄-专业 -n); printf(-n); for (i=0;ifnum;i+) fread( if(!strcmp(f_num,sti.num) printf(%-8s 。
28、%-6s %-4s %-6s %-4s %-4s %-20sn,sti.num,sti. name, sti.classs,sti.dorm,sti.sex,sti.age,sti.major); printf(-n); break; case 3:printf(请输入要查询的宿舍号:); 。16 。 gets(f_dorm); printf(n -该宿舍学生信息-nn); printf(学号-姓名-班级-宿舍号 -性别-年龄-专业 -n); printf(-n); rewind(fp); for (i=0;ifnum;i+) fread( if(!strcmp(f_dorm,sti.dorm。
29、) printf(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,sti.num,sti. name, sti.classs,sti.dorm,sti.sex,sti.age,sti.major); printf(-n); break; case 4:return 0; printf(nn 继续查询吗?(Y/N); choice=getchar(); if(choice=Y|choice=y) flag=1; system(pause); else flag=0; while(flag=1); return 1; census_message() /*统计信息模块*/。
30、 int i,choice,fno,fsize,fnum; int m=0,n=0,k=0; char dorm7; char classs8; char major20; FILE *fp; sort_message(); fp=fopen(student.txt,rt); if(fp=NULL) printf(nn*文件打开错误。按任意键退出!); getchar(); 。17 。 exit(1); fno=fileno(fp); fsize=filelength(fno); fnum=fsize/sizeof(struct st_message); system(cls); printf。
31、(请选择显示方式:n); printf(1.按学号显示n); printf(2.按宿舍号显示n); printf(3.按性别显示n); printf(4.按班级显示n); printf(5.按专业显示n); printf(6.返回主页n); scanf(%d, system(cls); switch(choice) case 1: printf(n -学生信息-nn); printf(学号-姓名-班级-宿舍号-性别-年龄-专业 -n); printf(-n); for(i=0;ifnum;i+) fread( printf(%-8s %-6s %-4s %-6s %-4s %-4s %-20s。
32、n,sti.num,sti .name, sti.classs,sti.dorm,sti.sex,sti.age,sti.major); k+; if(!strcmp(sti.sex,男) m+; if(!strcmp(sti.sex,女) n+; printf(-n); printf(nn 学生总人数为%d,其中男生为%d,女生为%d。 ,k,m,n); break; case 2: getchar(); printf(请输入要显示的宿舍号:); gets(dorm); printf(n -该宿舍学生信息-nn); printf(学号-姓名-班级-宿舍号-性别-年龄-专业 -n); for 。
33、(i=0;ifnum;i+) 。18 。 if(!strcmp(dorm,sti.dorm) printf(-n); printf(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,sti.num,sti. name, sti.classs,sti.dorm,sti.sex,sti.age,sti.major); break; case 3:printf(请输入需要显示的性别:n); printf(1.男n); printf(2.女n); scanf(%d, printf(n -学生信息-nn); printf(学号-姓名-班级-宿舍号-性别-年龄-专业 -n); pr。
34、intf(-n); switch(choice) case 1: for(i=0;ifnum;i+) if(!strcmp(sti.sex,男) printf(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,sti.num,sti .name, sti.classs,sti.dorm,sti.sex,sti.age,sti.major); m+; printf(-n); printf(nn 男生人数为%d。,m); break; case 2: for(i=0;ifnum;i+) if(!strcmp(sti.sex,女) printf(%-8s %-6s %-4s 。
35、%-6s %-4s %-4s %-20sn,sti.num,sti .name, sti.classs,sti.dorm,sti.sex,sti.age,sti.major); n+; printf(-n); printf(nn 女生人数为%d。,n); 。19 。 break; break; case 4: getchar(); printf(请输入要显示的班级:); gets(classs); printf(n -该班级学生信息-nn); printf(学号-姓名-班级-宿舍号-性别-年龄-专业 -n); printf(-n) ; for (i=0;ifnum;i+) if(!strcmp。
36、(classs,sti.classs) printf(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,sti.num,sti .name, sti.classs,sti.dorm,sti.sex,sti.age,sti.major); k+; if(!strcmp(sti.sex,男) m+; if(!strcmp(sti.sex,女) n+; printf(-n); printf(nn 该班学生总人数为 %d,其中男生为 %d,女生为 %d。 ,k,m,n); break; case 5: getchar(); printf(请输入要显示的专业:); gets(ma。
37、jor); printf(n -该专业学生信息-nn); printf(学号-姓名-班级-宿舍号-性别-年龄-专业 -n); printf(-n) ; for (i=0;ifnum;i+) if(!strcmp(major,sti.major) printf(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,sti.num, sti.name, sti.classs,sti.dorm,sti.sex,sti.age,sti.major); k+; 。20 。 if(!strcmp(sti.sex,男) m+; if(!strcmp(sti.sex,女) n+; prin。
38、tf(-n) ; printf(nn 该专业学生总人数为%d,其中男生为%d,女生为%d。 ,k,m,n); break; case 6: return 0; fclose(fp); system(pause); return 1; void main() int choice; do system(cls); /*清屏*/ printf(nnn* 学 生 宿 舍 管 理 系 统 *nn); printf( 1.录入学生信息nn); printf( 2.添加学生信息nn); printf( 3.修改学生信息nn); printf( 4.删除学生信息nn); printf( 5.查找学生信息nn。
39、); printf( 6.统计学生信息nn); printf( 0.退出系统nn); printf(请选择 0-6:); scanf(%d, switch(choice) case 1: input_message();break; case 2: append_message();break; case 3: revise_message();break; case 4: delete_message();break; case 5: find_message();break; case 6: census_message();break; case 0: break; while(choice!=0); 。21 。 欢迎您的下载,欢迎您的下载, 资料仅供参考!资料仅供参考! 致力为企业和个人提供合同协议, 策划案计划书,学习课件等等 打造全网一站式需求 。22。