收藏 分享(赏)

学生宿舍管理系统 C语言编程.doc

上传人:HR专家 文档编号:6616924 上传时间:2019-04-18 格式:DOC 页数:19 大小:472.90KB
下载 相关 举报
学生宿舍管理系统   C语言编程.doc_第1页
第1页 / 共19页
学生宿舍管理系统   C语言编程.doc_第2页
第2页 / 共19页
学生宿舍管理系统   C语言编程.doc_第3页
第3页 / 共19页
学生宿舍管理系统   C语言编程.doc_第4页
第4页 / 共19页
学生宿舍管理系统   C语言编程.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、“学生宿舍管理系统”C语言课程设计报告一、程序功能简介我设计的是“学生宿舍管理系统” ,主要是针对住宿学生个人信息的管理,适用对象主要是学校,以方便学校对住宿学生的管理。包括学生的姓名、学号、性别、专业、班级等等。在编写过程中主要运用 C 语言的基本知识有:数据类型(整形、实型、字符型、指针、数组、结构等) ;运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等) ;程序结构(顺序结构、判断选择结构、循环结构) ;大程序的功能分解方法(即函数的调用与使用)等。 二、课程设计要求该程序是由 C 语言编写的一个学生宿舍 管理查询软件,程序在 Microsoft Visual C+ 6.0 下运行

2、,其主要功能是实现对学生信息的录入、添加、删除、修改、查询、统计。其中查询可以分别以姓名、学号、宿舍号为关键字查询学生信息。统计可以分别以学号、宿舍号、性别、班级、专业为关键字进行统计,并且输出信息按学号大小从小到大输出。三、源程序分析1) 结构分析1. 方案设计主函数录入模块添加模块修改模块删除模块查询模块统计模块退出系统学号姓名班级宿舍性别年龄专业返回按姓名按学号按宿舍返回按学号按宿舍按性别按班级按专业返回2. 数据结构说明程序中数据主要是学生信息,具体属于类型如下:struct st_message char name20; /*学生姓名*/char dorm7; /*宿舍号*/char

3、 num10; /*学号*/char sex5; /*性别*/char age4; /*年龄*/char major20; /*专业*/char classs8; /*班级*/3. 模块功能说明第一录入模块:调用 input_message(),对住宿学生信息进行录入。第二添加模块:调用 append_message(),对新来学生信息进行添加录入。第三修改模块:调用 revise_message(),对需修改学生的信息进行修改。第四删除模块:调用 delete_message(),对某一学生信息进行删除操作。第五查询模块:调用 find_message(),分别以姓名、学号、宿舍号对学生信息

4、进行查询。第六统计模块:调用 census_message(),分别以学号、宿舍号、性别、班级、专业方式对学生信息进行统计,并按学号由小到大输出。四、编程中遇到的问题及解决方法在调试过程中,时常会出现输入或显示为乱码的情况,这可能是上下定义的数据类型不同或定义数组长度不够所导致的。有时候程序中还会出现录入五个数据而只显示四个的情况,这也经常是因为定义的结构体数组长度过低所造成的。像这些问题只要把数据类型都定义成字符型,并且定义一个合理的数组长度一般都能解决。在调试过程中我遇到最大的问题出现在删除模块。在运用“rt+”打开文件并对某一数据进行删除后,往往显示会多显示一行数据。这是由于“rt+”写

5、数据时只会覆盖数据而不会清除原文件数据,因此文件最后一行数据总会保留在原文件中。后来我先用“rt”打开文件并读取文件中的数据,然后再用“wt”打开原文件将删除后的数据重新写入文件,最终成功运行。五、程序运行截屏与结果分析1. 测试数据对功能 1(录入学生信息)的测试:按照先后顺序分别输入学生信息:学号 姓名 班级 宿舍号 性别 年龄 专业05111101 张三 051111 429 女 18 土木工程04111102 李四 041111 218 男 18 信息工程对功能 2(添加学生信息)的测试:按照先后顺序分别输入学生信息:学号 姓名 班级 宿舍号 性别 年龄 专业02111101 陈红 0

6、21111 429 女 18 机械系03111203 赵娜 031112 101 女 18 能源与环境对功能 3(修改学生信息)的测试:输入要修改学生的姓名:林丹,系统显示“该学生信息不存在” 。输入修改学生姓名:张三,系统显示出该学生信息。选择修改学号为:05111118,系统显示出修改后的学生信息。对功能 4(删除学生信息)的测试:输入要删除学生的学号:03111210,系统显示“该学生信息不存在” 。输入要删除的学生的学号:03111203,系统显示出该学生信息。选择删除该学生信息。对功能 5(查询学生信息)的测试:查询宿舍号为 429 的信息,系统显示为:学号 姓名 班级 宿舍号 性别

7、 年龄 专业02111101 陈红 021111 429 女 18 机械系05111101 张三 051111 429 女 18 土木工程对功能 6(统计学生信息)的测试:选择按学号统计,系统显示为:学号 姓名 班级 宿舍号 性别 年龄 专业02111101 陈红 021111 429 女 18 机械系04111102 李四 041111 218 男 18 信息工程05111101 张三 051111 429 女 18 土木工程学生总人数 3 人,其中男生 1 人,女生 2 人。对功能 7(退出系统)的测试:选择退出系统,程序关闭。2. 详细设计及运行结果1) 函数调用关系图2) 部分模块流程

8、图及运行结果截屏主页界面主页流程图开始功能选择选 1选 5选 4选 3选 2录入模块添加模块修改模块删除模块是是是是是否否否否录入界面选 0选 6退出系统查询模块统计模块结束是否否输入姓名输入班级输入宿舍输入学号输入性别输入年龄输入专业是否继续录入结 束NY录入界面修改模块输入要修改学生的姓名功能选择选 1选 7选 4选 8选 2选 3选 5选 6修改学号修改姓名修改班级修改宿舍修改性别修改年龄修改专业是否继续结束返回主页是是是是是是是是否否否否否否否修改界面统计模块输入统计方式功能选择选 1选 4选 6选 2选 3选 5按学号按宿舍按性别按班级按专业结束返回主页是是是是是是否否否否否统计界面

9、六、心得体会“万事开头难”这句话在我编写程序的过程中得到了真正的体现。在最初编写的几天里出现了这样那样的错误一大堆,这主要是由于我对基础知识掌握不扎实所造成的。但是随后几天里,我对课本知识进行了回顾并不时的向老师和同学进行请教,慢慢的对编写程序也开始得心应手起来。程序的编写总归是一件费时费力的事情,但只要我们认真编写和调试最后总能成功。短短以周实习时间我收获颇多,我相信经过这次实习必将为我以后的深入学习打下扎实的基础。七、源程序#include#include#include#include#define N 900struct st_message /*学生信息*/char name20;

10、/*学生姓名*/char dorm7; /*宿舍号*/char num10; /*学号*/char sex5; /*性别*/char age4; /*年龄*/char major20; /*专业*/char classs8; /*班级*/stN,t;sort_message() /*排序模块*/int i,j,fno,fsize,fnum;FILE *fp;fp=fopen(“student.txt“,“rt+“);if(fp=NULL)printf(“nn*文件打开错误。按任意键退出!“);getchar();exit(1);fno=fileno(fp);fsize=filelength(f

11、no);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*库存文件不存在!请建立。按任意键退出!“);getchar();exit(1);for (i=0;i+) system (“cls“);getchar(

12、);printf(“请输入学生姓名:“);gets(sti.name);printf(“n 请输入学生班级:“);gets(sti.classs);printf(“n 请输入学生宿舍号:“);gets(sti.dorm);printf(“n 请输入学生学号:“);gets(sti.num);printf(“n 请输入学生性别:“);gets(sti.sex);printf(“n 请输入学生年龄:“);gets(sti.age);printf(“n 请输入学生专业:“);gets(sti.major); fwrite(printf(“输入成功!n 是否继续录入(Y/N)?“);choice=ge

13、tchar();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(1);for (i=0;i+)struct st_message stN;system (“cls“);getchar();printf(“请输入所添加学生姓名:“);gets(sti.name)

14、;printf(“n 请输入所添加学生班级:“);gets(sti.classs);printf(“n 请输入所添加学生宿舍号:“);gets(sti.dorm);printf(“n 请输入所添加学生学号:“);gets(sti.num);printf(“n 请输入所添加学生性别:“);gets(sti.sex);printf(“n 请输入所添加学生年龄:“);gets(sti.age);printf(“n 请输入所添加学生专业:“);gets(sti.major); fwrite(printf(“输入成功!n 是否继续添加(Y/N)?“);choice=getchar();if(choice

15、=y|choice=Y)continue;elsefclose(fp); break;revise_message() /*修改模块*/int i,choice,flag,fno,fsize,fnum;char re_name20,s20;FILE *fp; dofp=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

16、 (i=0;ifnum;i+) fread(if(!strcmp(re_name,sti.name) 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“);printf(“1.学号n“);printf(“2.姓名n“);printf(“3.班级n“);

17、printf(“4.宿舍号n“);printf(“5.性别n“);printf(“6.年龄n“);printf(“7.专业n“);printf(“8.返回主页n“);scanf(“%d“,switch(choice)case 1:printf(“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 请输

18、入修改后的宿舍号:“);scanf(“%s“,sti.dorm);break;case 5:printf(“n 请输入修改后的性别:“);scanf(“%s“,sti.sex);break;case 6:printf(“n 请输入修改后的年龄:“);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(“学号-姓名- 班级- 宿舍号-性别

19、-年龄-专业-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);fseek(fp,sizeof(struct st_message)*i,0);fwrite(fclose(fp);break;if(i=fnum)printf(“n 该学生信息不存在!“);printf(“nn 继续修改吗 ?(Y/N)“);choice=getchar();if(choice=Y|choi

20、ce=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;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=

21、fsize/sizeof(struct st_message);for(i=0;ifnum;i+)fread(printf(“请输入需要删除学生的学号:n“);gets(d_num);system(“cls“);for(i=0;ifnum;i+)if(!strcmp(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.dor

22、m,sti.sex,sti.age,sti.major);printf(“n 是否删除该学生信息:n“);printf(“1.是n“);printf(“2.否n“);scanf(“%d“,switch(choice)case 1:for(j=i;jfnum-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

23、)printf(“所查学生信息不存在,按任意键返回主菜单!“);getchar();return 0;printf(“删除信息成功,按任意键返回主菜单!“);return 1; find_message() /*查找信息模块 */int i,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*库存文件不存在!请先建立。按任意键退出!

24、“);getchar();exit(1);fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(struct st_message);system(“cls“);printf(“请选择查询方式:n“);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);pri

25、ntf(“n -该学生信息 -nn“);printf(“学号-姓名- 班级- 宿舍号-性别-年龄-专业-n“);printf(“-n“);for (i=0;ifnum;i+)if(!strcmp(f_name,sti.name) 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 2:printf(“请输入要查询的学号:“);gets(f_num);printf(“n -该学生信息

26、-nn“);printf(“学号-姓名- 班级- 宿舍号-性别-年龄-专业-n“);printf(“-n“);for (i=0;ifnum;i+)fread(if(!strcmp(f_num,sti.num)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 3:printf(“请输入要查询的宿舍号:“);gets(f_dorm);printf(“n -该宿舍学生信息 -nn“);

27、printf(“学号-姓名- 班级- 宿舍号-性别-年龄-专业-n“);printf(“-n“);rewind(fp);for (i=0;ifnum;i+)fread(if(!strcmp(f_dorm,sti.dorm) 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();

28、if(choice=Y|choice=y)flag=1;system(“pause“);else flag=0;while(flag=1); return 1; census_message() /*统计信息模块*/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();exit(1);f

29、no=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(struct st_message);system(“cls“);printf(“请选择显示方式: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(“学号-

30、姓名- 班级- 宿舍号-性别-年龄-专业-n“);printf(“-n“);for(i=0;ifnum;i+) fread( 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 2:

31、 getchar();printf(“请输入要显示的宿舍号:“);gets(dorm);printf(“n -该宿舍学生信息 -nn“);printf(“学号-姓名- 班级- 宿舍号-性别-年龄-专业-n“);for (i=0;ifnum;i+)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(“请输入需要显示

32、的性别:n“);printf(“1.男n“);printf(“2.女n“);scanf(“%d“,printf(“n -学生信息-nn“);printf(“学号-姓名- 班级- 宿舍号-性别-年龄-专业-n“);printf(“-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+;print

33、f(“-n“);printf(“nn 男生人数为%d。“,m);break;case 2: 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);n+;printf(“-n“);printf(“nn 女生人数为%d 。“,n);break;break;case 4: getchar();printf(“请输入要显示的班级:“);gets(classs

34、);printf(“n -该班级学生信息 -nn“);printf(“学号-姓名- 班级- 宿舍号-性别-年龄-专业-n“);printf(“-n“);for (i=0;ifnum;i+)if(!strcmp(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(“-

35、n“);printf(“nn 该班学生总人数为 %d,其中男生为%d,女生为%d。“,k,m,n);break;case 5: getchar();printf(“请输入要显示的专业:“);gets(major);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

36、,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 6: return 0; fclose(fp);system(“pause“); return 1;void main()int choice;dosystem(“cls“); /*清屏*/printf(“nnn *学生宿舍管理系统*nn“);printf(“ 1.录入

37、学生信息nn“);printf(“ 2.添加学生信息nn“);printf(“ 3.修改学生信息nn“);printf(“ 4.删除学生信息nn“);printf(“ 5.查找学生信息nn“);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);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报