学生宿舍管理系统C语言编程.pdf
《学生宿舍管理系统C语言编程.pdf》由会员分享,可在线阅读,更多相关《学生宿舍管理系统C语言编程.pdf(22页珍藏版)》请在三一文库上搜索。
1、。 。 1 “学生宿舍管理系统” C语言课程设计报告 一、 程序功能简介 我设计的是“学生宿舍管理系统”,主要是针对住宿学生个人信息的管理,适用对象主 要是学校, 以方便学校对住宿学生的管理。包括学生的姓名、学号、性别、 专业、 班级等等。 在编写过程中主要运用C语言的基本知识有:数据类型 (整形、 实型、 字符型、 指针、 数组、 结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序 结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的调用与使用)等。 二、 课程设计要求 该程序是由C 语言编写的一个学生宿舍管理查询软件,程序在Microsoft Vi
2、sual C+ 6.0 下运行,其主要功能是实现对学生信息的录入、添加、删除、修改、查询、统计。其中 查询可以分别以姓名、学号、 宿舍号为关键字查询学生信息。统计可以分别以学号、宿舍号、 性别、班级、专业为关键字进行统计,并且输出信息按学号大小从小到大输出。 三、 源程序分析 1)结构分析 1.方案设计 。 。 2 2.数据结构说明 程序中数据主要是学生信息,具体属于类型如下: struct st_message char name20; /*学生姓名 */ char dorm7; /*宿舍号 */ char num10; /*学号 */ char sex5; /*性别 */ char age
3、4; /*年龄 */ char major20; /*专业 */ char classs8; /*班级 */ 3.模块功能说明 第一录入模块:调用input_message(),对住宿学生信息进行录入。 第二添加模块:调用append_message() ,对新来学生信息进行添加录入。 第三修改模块:调用revise_message(),对需修改学生的信息进行修改。 第四删除模块:调用delete_message(),对某一学生信息进行删除操作。 第五查询模块:调用find_message(),分别以姓名、学号、宿舍号对学生信息进行查 询。 第六统计模块:调用census_message()
4、,分别以学号、宿舍号、性别、班级、专业方 式对学生信息进行统计,并按学号由小到大输出。 四、 编程中遇到的问题及解决方法 在调试过程中, 时常会出现输入或显示为乱码的情况,这可能是上下定义的数据类型不 同或定义数组长度不够所导致的。有时候程序中还会出现录入五个数据而只显示四个的情 况,这也经常是因为定义的结构体数组长度过低所造成的。像这些问题只要把数据类型都定 义成字符型,并且定义一个合理的数组长度一般都能解决。 在调试过程中我遇到最大的问题出现在删除模块。在运用“rt+ ”打开文件并对某一数 据进行删除后,往往显示会多显示一行数据。这是由于“rt+ ”写数据时只会覆盖数据而不 会清除原文件数
5、据,因此文件最后一行数据总会保留在原文件中。后来我先用“rt ”打开文 件并读取文件中的数据,然后再用“wt ”打开原文件将删除后的数据重新写入文件,最终成 功运行。 主 函 数 录 入 模 块 添 加 模 块 修 改 模 块 删 除 模 块 查 询 模 块 统 计 模 块 退 出 系 统 学 号 姓 名 班 级 宿 舍 性 别 年 龄 专 业 返 回 按 姓 名 按 学 号 按 宿 舍 返 回 按 学 号 按 宿 舍 按 性 别 按 班 级 按 专 业 返 回 。 。 3 五、 程序运行截屏与结果分析 1.测试数据 对功能 1(录入学生信息)的测试:按照先后顺序分别输入学生信息: 学号姓名班
6、级宿舍号性别年龄专业 05111101 张三 051111 429 女 18 土木工程 04111102 李四 041111 218 男 18 信息工程 对功能 2(添加学生信息)的测试:按照先后顺序分别输入学生信息: 学号姓名班级宿舍号性别年龄专业 02111101 陈红 021111 429 女 18 机械系 03111203 赵娜 031112 101 女 18 能源与环境 对功能 3(修改学生信息)的测试:输入要修改学生的姓名:林丹,系统显示“该学生 信息不存在” 。 输入修改学生姓名: 张三,系统显示出该学生信息。选择修改学号为: 05111118, 系统显示出修改后的学生信息。 对
7、功能 4(删除学生信息)的测试:输入要删除学生的学号:03111210,系统显示“该 学生信息不存在” 。输入要删除的学生的学号:03111203,系统显示出该学生信息。选择删 除该学生信息。 对功能 5(查询学生信息)的测试:查询宿舍号为429 的信息,系统显示为: 学号姓名班级宿舍号性别年龄专业 02111101 陈红 021111 429 女 18 机械系 05111101 张三 051111 429 女 18 土木工程 对功能 6(统计学生信息)的测试:选择按学号统计,系统显示为: 学号姓名班级宿舍号性别年龄专业 02111101 陈红 021111 429 女 18 机械系 0411
8、1102 李四 041111 218 男 18 信息工程 05111101 张三 051111 429 女 18 土木工程 学生总人数3 人,其中男生1 人,女生2 人。 对功能 7(退出系统)的测试:选择退出系统,程序关闭。 2.详细设计及运行结果 1)函数调用关系图 。 。 4 2)部分模块流程图及运行结果截屏 主页界面 主页流程图 开始 功能选择 选 1 选 5 选 4 选 3 选 2 录入模块 添加模块 修改模块 删除模块 是 是 是 是 是 否 否 否 否 。 。 5 录入界面 选 0 选 6 退出系统 查询模块 统计模块 结束 是 否 否 。 。 6 录入界面 修改模块 输入姓名
9、输入班级 输入宿舍 输入学号 输入性别 输入年龄 输入专业 是 否 继 续录入 结束 N Y 。 。 7 输入要修改学 生的姓名 功能选择 选 1 选 7 选 4 选 8 选 2 选 3 选 5 选 6 修改学号 修改姓名 修改班级 修改宿舍 修改性别 修改年龄 修改专业 是否继续 结束 返回主页 是 是 是 是 是 是 是 是 否 否 否 否 否 否 否 。 。 8 修改界面 统计模块 输入统计方式 功能选择 选 1 选 4 选 6 选 2 选 3 选 5 按学号 按宿舍 按性别 按班级 按专业 结束 返回主页 是 是 是 是 是 是 否 否 否 否 否 。 。 9 统计界面 六、 心得体会
10、 “万事开头难” 这句话在我编写程序的过程中得到了真正的体现。在最初编写的几天里 出现了这样那样的错误一大堆,这主要是由于我对基础知识掌握不扎实所造成的。但是随后 几天里, 我对课本知识进行了回顾并不时的向老师和同学进行请教,慢慢的对编写程序也开 始得心应手起来。程序的编写总归是一件费时费力的事情,但只要我们认真编写和调试最后 总能成功。 短短以周实习时间我收获颇多,我相信经过这次实习必将为我以后的深入学习打下扎实 的基础。 七、 源程序 #include #include #include #include #define N 900 struct st_message /*学生信息 */
11、char name20; /*学生姓名 */ char dorm7; /*宿舍号 */ char num10; /*学号*/ char sex5; /*性别*/ char age4; /*年龄*/ char major20; /*专业*/ char classs8; /*班级*/ stN,t; 。 。 10 sort_message() /*排序模块 */ int i,j,fno,fsize,fnum; FILE *fp; fp=fopen(“student.txt“,“rt+“); if(fp=NULL) printf(“nn*文件打开错误。按任意键退出!“); getchar(); exi
12、t(1); fno=fileno(fp); fsize=filelength(fno); fnum=fsize/sizeof(struct st_message); for(i=0;i0) t=sti; sti=stj; stj=t; rewind(fp); for(i=0;ifnum;i+) fwrite( fclose(fp); input_message() /*录用信息模块 */ int i; char choice; FILE *fp; fp=fopen(“student.txt“,“at+“); if(fp=NULL) printf(“nn*库存文件不存在!请建立。按任意键退出!“
13、); getchar(); exit(1); for (i=0;i+) system (“cls“); getchar(); printf(“请输入学生姓名: “); gets(sti.name); printf(“n请输入学生班级: “); 。 。 11 gets(sti.classs); printf(“n请输入学生宿舍号: “); gets(sti.dorm); printf(“n请输入学生学号: “); gets(sti.num); printf(“n请输入学生性别: “); gets(sti.sex); printf(“n请输入学生年龄: “); gets(sti.age); pri
14、ntf(“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+“); if(fp=NULL) printf(“nn*库存文件不存在!请建立。按任意键退出!“); getchar(); exit
15、(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请输入所添加学生性别:“); 。 。 12 gets(sti.sex); printf(“n请输入所添加学生年龄:“); g
16、ets(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 *fp; do fp=fopen(“student.txt“,“rt+“); fno=f
17、ileno(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“); printf(“%-8s %-6s %-4s %-
18、6s %-4s %-4s %-20sn“,sti.num,sti. name, sti.classs,sti.dorm,sti.sex,sti.age,sti.major); printf(“您要修改哪一项? n“); printf(“1.学号n“); 。 。 13 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(“
19、n请输入修改后的学号: “); 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请输入
20、修改后的年龄: “); scanf(“%s“,sti.age);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.cl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生宿舍 管理 系统 语言 编程
链接地址:https://www.31doc.com/p-5594815.html