1、 面向过程程序设计课 程 设 计 课程名称:学生宿舍管理系统 院 系: 班 级: 学 号: 姓 名: 指导老师: 目录1. 引言.22. 课程设计任务书.3a) 设计目标b) 设计要求c) 课程设计汇报装订内容及次序d) 设计题目3. 程序设计说明书.34. 课程设计目标.4a) 目标b) 试验内容c) 需求分析5. 程序基础框架结构图.56. 程序测试.67. 课程设计总结.88. 附录(源代码).18 引言学生宿舍管理系统对于一个学校来说是必不可少组成部分。目前好多学校还停留在宿舍管理人员手工统计数据最初阶段,手工记录对于规模小学校来说还勉强能够接收,但对于学生信息量比较庞大,需要统计存档
2、数据高校来说,人工统计是相当麻烦。而且当查找某条统计时,因为数据量庞大,还只能靠人工一条条去查找,这么不仅麻烦还浪费了很多时间,效率也比较低。当今社会是飞速进步而世界,原始统计方法已经被社会所淘汰,计算机化管理正是适应时代产物。信息世界永远不会是一个平静世界,当一个技术不能满足需求时,就会有新技术诞生并替换旧技术。二十一世纪今天,信息社会占着主流地位,计算机在各行各业中利用已经得到普及,自动化、信息化管理越来越广泛应用于各个领域。故伴随宿舍需要管理信息快速增加,建立一个宿舍管理系统可使宿舍管理人员管理工作系统化、规范化、自动化,大大提升管理效率。课程设计任务书一、设计目标经过此次课程设计使学生
3、深入加深对C语言课程内容了解,初步掌握通常应用程序开发方法和步骤,深入了解和掌握C语言编程方法和技巧,提升学生用C语言处理实际问题能力。二、设计要求1、认真查阅参考书、资料2、遵守课程设计时间安排3、按时上机,认真调试程序4、认真完成课程设计汇报三、课程设计汇报装订内容及次序1、课程设计封皮2、目录3、引言4、课程设计任务书5、程序设计说明书 6、程序设计目标7、程序基础框架结构图8、课程设计总结和心得四、设计题目湖南工业大学学生宿舍管理系统 程序设计说明书该课程设计课题是湖南工业大学学生宿舍管理系统。这个系统关键是实现对学生信息输入,输出,追加,查询,修改,统计及删除等功效,完成对学生宿舍信
4、息管理。在学生宿舍管理系统中关键有输入、显示、追加、查询、修改、统计、删除及退出7大功效。设计首页界面使其美观。课程设计目标一、目标1.经过此次课程设计,强化上级动手能力,在理论和实践基础上深入巩固 C语言程序设计课程学习内容,掌握工程软件设计基础方法。 2.熟悉C语言基础内容从而掌握C语言基础知识和了解C程序基础编写及运行。 3.了解程序分模块编写并对程序每个模块进行具体设计而且能了解通常C语言编写程序。 4.熟悉C程序设计开发环境及C程序调试过程。二、试验内容我设计是“学生宿舍管理系统”,关键是针对住宿学生个人信息管理,适用对象关键是学校,以方便学校对住宿学生管理。包含学生姓名、学号、性别
5、、专业、班级等等。在编写过程中关键利用C语言基础知识有:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(次序结构、判定选择结构、循环结构);大程序功效分解方法(即函数调用和使用)等。三、需求分析 该程序是由C语言编写一个宿舍管理查询软件,本程序在Microsoft Visual C+ 6.0下运行,其关键功效是实现对学生信息录入、添加、删除、修改、查询、统计。其中查询能够分别以姓名、学号、宿舍号为关键字查询学生信息。统计能够分别以学号、宿舍号、性别、班级、专业为关键字进行统计。程序基础框架结构图 学生宿舍管理系统 数据输入
6、退出系统数据删除数据 统计数据修改数据查询数据追加数据显示返回按楼寝查询按楼号查询按姓名查询按学号查询源代码清单#include #include #include #include #include #define M 10000typedef struct sushechar num10;char name20;char sex5;char class110;char lh10;char qsh10;char tel15; XSSS;XSSS persM;int n=0;void cx1();void cx2();void cx3();void cx4();void tj1();void
7、tj2();void tj3();int isnum(char *);void zm();void load();void modify();void input();void save();void list();void zm1();void zm3();void explain();void dele();main()char c;while(1)system(cls);zm();c=getch();switch(c)case 1: load(); input(); save(); break;case 2: load(); modify(); save(); break;case 3:
8、 load(); input(); save();break;case 4:load(); list(); save();break;case 5:load(); zm1(); save();break;case 6:load(); zm3(); save();break;case 7:load(); dele(); save();break;case 8:load(); explain(); save();break;case 0: exit(0);default : printf(n*输入错误,请重新输入!*n); void zm()printf( *n);printf( * *n);pr
9、intf( * *n);printf( * 湖 南 工 业 大 学 学 生 宿 舍 管 理 系 统 *n);printf( * *n);printf( * *n);printf( *n);printf(nnn);printf( 1. 录入信息n);printf( 2. 修改信息n);printf( 3. 追加信息n);printf( 4. 显示信息n);printf( 5. 查询信息n);printf( 6. 统计信息n);printf( 7. 删除信息n);printf( 8. 版权信息n);printf( 0. 退出本程序n);void zm1()char c;system(cls);pr
10、intf( *n);printf( * *n);printf( * *n);printf( * 湖 南 工 业 大 学 学 生 宿 舍 管 理 系 统 *n);printf( * *n);printf( * *n);printf( *n);printf(nnn);printf( 1. 按学号查询n);printf( 2. 按姓名查询n);printf( 3. 按楼号查询n);printf( 4. 按楼号+寝室号查询n);printf( 0. 结束查询返回上层n);c=getch();switch(c)case 1: cx1(); break;case 2: cx2(); break;case
11、3: cx3();break;case 4: cx4();break;case 0: return ;default : printf(输入错误,按任意键返回!); getch(); return ;void zm3()char c;system(cls);printf( *n);printf( * *n);printf( * *n);printf( * 湖 南 工 业 大 学 学 生 宿 舍 管 理 系 统 *n);printf( * *n);printf( * *n);printf( *n);printf(nnn);printf( 1. 按班级统计n);printf( 2. 按楼号统计n)
12、;printf( 3. 按楼号+寝室号统计n);printf( 0. 结束统计返回上层n);c=getch();switch(c)case 1: tj1(); break;case 2: tj2(); break;case 3: tj3();break;case 0: return ;default : printf(输入错误,按任意键返回!); getch(); return ;void cx1()char name10;int i,m; system(cls);printf(nnn*按学号查询*n);printf(n 请输入要查询学号:);scanf(%s,name);m=0;for(i=
13、0;in;i+)if(strcmp(persi.num,name)=0 ) printf(#Record 学号 姓名 性别 班级 楼号 寝室号 本人电话n);printf(%7d %-8s%-8s%-6s%-8s%-8s%-8s%-8sn,i+1,persi.num,persi.name,persi.sex,persi.class1,persi.lh,persi.qsh,persi.tel);m+;if(m=0) printf(n 查无此人!n);printf(press any key continuen );getch(); void cx2()char name20;int i,m; s
14、ystem(cls);printf(nnn*按姓名查询*n);printf(n 请输入姓名:);scanf(%s,name);m=0;for(i=0;in;i+)if(strcmp(persi.name,name)=0 ) printf(#Record 学号 姓名 性别 班级 楼号 寝室号 本人电话n);printf(%7d %-8s%-8s%-6s%-8s%-8s%-8s%-8sn,i+1,persi.num,persi.name,persi.sex,persi.class1,persi.lh,persi.qsh,persi.tel);m+;if(m=0) printf(n 查无此人!n);
15、printf(press any key continuen );getch();void cx3()char name10;int i,m; system(cls);printf(nnn*按楼号查询*n);printf(n 请输入要查询楼号:);scanf(%s,name);m=0;for(i=0;in;i+)if(strcmp(persi.lh,name)=0 ) printf(#Record 学号 姓名 性别 班级 楼号 寝室号 本人电话n);printf(%7d %-8s%-8s%-6s%-8s%-8s%-8s%-8sn,i+1,persi.num,persi.name,persi.s
16、ex,persi.class1,persi.lh,persi.qsh,persi.tel);m+;if(m=0) printf(n 文件中没有该楼学生数据!n);printf(press any key continuen );getch();void cx4()char name10;char num10;int i,m; system(cls);printf(nnn*按楼号+寝室号查询*n);printf(n 请输入要查询楼号:);scanf(%s,name);printf(n 请输入要查询寝室号:);scanf(%s,num);m=0;for(i=0;in;i+)if(strcmp(pe
17、rsi.lh,name)=0 & strcmp(persi.qsh,num)=0) printf(#Record 学号 姓名 性别 班级 楼号 寝室号 本人电话n);printf(%7d %-8s%-8s%-6s%-8s%-8s%-8s%-8sn,i+1,persi.num,persi.name,persi.sex,persi.class1,persi.lh,persi.qsh,persi.tel);m+;if(m=0) printf(n 文件中没有符合条件数据!n);printf(press any key continuen );getch(); void load()FILE *fp;
18、n=0;if(fp=fopen(xsss.txt,rb)=NULL)printf(The file is not found!nplease append new data!n);return ;while(fread(&persn,sizeof(XSSS),1,fp)!=0) /*(!feof(fp)*/n+;printf(数据导入成功 !n);fclose(fp);void save()FILE *fp; int i=0;if(fp=fopen(xsss.txt,wb)=NULL)printf(The file is not found!nplease append new data!n)
19、;return ;for(i=0;in;i+)fwrite(&persi,sizeof(XSSS),1,fp);fclose(fp);printf(数据已保留n);void input()XSSS a; while(1)system(cls);printf(nnn* 输 入 信 息 *n);printf(n 请输入学生住宿信息n);printf(学号:);scanf(%s,a.num);printf(姓名:);scanf(%s,a.name);printf(性别:);scanf(%s,a.sex);printf(班级:);scanf(%s,a.class1);printf(楼号:);scanf
20、(%s,a.lh); printf(寝室号:);scanf(%s,a.qsh);printf(本人电话:);scanf(%s,a.tel);if(isnum(a.tel)=0)printf(输入电话号码错误,系统将以 0000 替换!n );strcpy(a.tel,0000);persn+=a;printf(是否继续录入(Y/N)?);if (toupper(getch()=N)break;void list()int i;system(cls);printf(nnn*显示全部个人信息*n);for(i=0;in;i+)printf(#Record 学号 姓名 性别 班级 楼号 寝室号 本人
21、电话n);printf(%7d %-8s%-8s%-6s%-8s%-8s%-8s%-8sn,i+1,persi.num,persi.name,persi.sex,persi.class1,persi.lh,persi.qsh,persi.tel);printf(press any key continuen );getch(); void modify()char num20;int i; system(cls);printf(nnn*修 改 学 生 住 宿 信 息*n);printf(n 请输入要修改学生学号:);scanf(%s,num);for(i=0;in;i+)if(strcmp(p
22、ersi.num,num)=0) break;if(i=n) printf(n 文件中没有该学生数据,无法进行修改操作!n);elseprintf(#Record 学号 姓名 性别 班级 楼号 寝室号 本人电话n);printf(%7d %-8s%-8s%-6s%-8s%-8s%-8s%-8sn,i+1,persi.num,persi.name,persi.sex,persi.class1,persi.lh,persi.qsh,persi.tel);printf(n 真要修改吗(Y/N)?);if (toupper(getch()=Y)printf(n 请输入新信息:n);printf(学号:
23、);scanf(%s,persi.num);printf(姓名:);scanf(%s,persi.name);printf(性别:);scanf(%s,persi.sex);printf(班级:);scanf(%s,persi.class1);printf(楼号:);scanf(%s,persi.lh);printf(寝室号:);scanf(%s,persi.qsh);printf(本人电话:);scanf(%s,persi.tel);if(isnum(persi.tel)=0)printf(输入电话号码错误,系统将以 0000 替换!n );strcpy(persi.tel,0000);pr
24、intf(n处理后结果:n);printf(#Record 学号 姓名 性别 班级 楼号 寝室号 本人电话n);printf(%7d %-8s%-8s%-6s%-8s%-8s%-8s%-8sn,i+1,persi.num,persi.name,persi.sex,persi.class1,persi.lh,persi.qsh,persi.tel);printf(n处理结束!n);getch();void tj1()char name10;int i,m; system(cls);printf(nnn*按班级统计*n);printf(n 请输入要统计人数班级号:);scanf(%s,name);
25、m=0;for(i=0;in;i+)if(strcmp(persi.class1,name)=0 ) m+;if(m=0) printf(n 文件中没有符合条件数据!n);elseprintf(%s 班有 %d 人住宿n,name,m);printf(nn统计结束!n );getch(); void tj2()char name10;int i,m; system(cls);printf(nnn*按楼号统计*n);printf(n 请输入要统计人数楼号:);scanf(%s,name);m=0;for(i=0;in;i+)if(strcmp(persi.lh,name)=0 ) m+;if(m
26、=0) printf(n 文件中没有符合条件数据!n);elseprintf(%s 号楼有 %d 人住宿n,name,m);printf(nn统计结束!n );getch(); void tj3()char name10;char num10;int i,m; system(cls);printf(nnn*按楼号+寝室号统计*n);printf(n 请输入要统计人数楼号:);scanf(%s,name);printf(n 请输入寝室号:);scanf(%s,num);m=0;for(i=0;i=0 & si=9) return 0;else i+;return 1;void explain()
27、system(cls);printf( *n);printf( * *n);printf( * *n);printf( * 湖 南 工 业 大 学 学 生 宿 舍 管 理 系 统 *n);printf( * *n);printf( * *n);printf( *n);printf(nnn);printf(本学生宿舍管理系统由某某班学生某某某编写,本程序有很多不足之处,n);printf(欢迎大家提出意见,以供修改。本系统最终版权解释归本人全部,未经许可,不得转载。);printf(联络方法: );getch();void dele()char name10;int i,m,j,n;system
28、(cls);printf(nnn* 删 除 信 息 *n);printf(n 请输入要删除学生信息:);scanf(%s,name);m=0;for(i=0;in;i+)if(strcmp(persi.class1,name)=0 ) m+;break;if(m=0)printf(没有找到该学生信息);elseprintf(#Record 学号 姓名 性别 班级 楼号 寝室号 本人电话n);printf(%7d %-8s%-8s%-6s%-8s%-8s%-8s%-8sn,i+1,persi.num,persi.name,persi.sex,persi.class1,persi.lh,persi.qsh,persi.tel);printf(n 真要删除吗(Y/N)?);if (toupper(getch()=Y) /toupper小写变大写for(j=i;jn-1;j+)persj=persj+1;n-; printf(nn删除结束!n );getch(); 测试分析1)显示主菜单界面2)录入界面:3).修改界面4)信息显示界面5).查询界面6).统计界面7).删除界面8).版权界面课程设计总结为期一周C