学生宿舍管理系统C语言编程_第1页
学生宿舍管理系统C语言编程_第2页
学生宿舍管理系统C语言编程_第3页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、信息的录入、添加、删除、修改、查询、统计。其中 查询可以分别以、学号、宿舍号为关键字查询学生信息。统计可以分别以学号、宿舍号、性 别、班级、专业为关键字进行统计,并且输出信息按学号大小从小到大输出。三、源程序分析1)结构分析1.方案设计修删添改除加模模模块块块块块按宿舍匚按2.数据结构说明程序中数据主要是学生信息,具体属于类型如下:3.模块功能说明 第一录入模块 第二添加模块 第三修改模块 第四删除模块 第五查询模块 第六统计模块 对学生信息进行统计,调用 调用 调用 调用 调用 调用in put_message(),对住宿学生信息进行录入。 append_message(),对新来学生信息进

3、行添加录入。 revise_message(),对需修改学生的信息进行修改。 delete_message(),对某一学生信息进行删除操作。fin d_message(),分别以、学号、宿舍号对学生信息进行查询。census_message(,分别以学号、宿舍号、性别、班级、专业方式 并按学号由小到大输出。号、structst_messagecharname20;/*学生*/chardorm7;/*宿舍号*/charnum10;/*学号*/charsex5;/*性别*/charage4;/*年龄*/charmajor20;/*专业*/charclasss8;/*班级*/四、编程中遇到的冋题及解

4、决方法在调试过程中,时常会出现输入或显示为乱码的情况,这可能是上下定义的数据类型不同或定义数组长度不够所导致的。有时候程序中还会出现录入五个数据而只显示四个的情 况,这也经常是因为定义的结构体数组长度过低所造成的。像这些问题只要把数据类型都定义成字符型,并且定义一个合理的数组长度一般都能解决。在调试过程中我遇到最大的问题出现在删除模块。在运用“rt+ ”打开文件并对某一数据进行删除后,往往显示会多显示一行数据。这是由于“rt+ ”写数据时只会覆盖数据而不会清除原文件数据,因此文件最后一行数据总会保留在原文件中。后来我先用“rt ”打开文件并读取文件中的数据,然后再用“ wt ”打开原文件将删除

5、后的数据重新写入文件,最终成 功运行。五、程序运行截屏与结果分析1.测试数据对功能1 (录入学生信息)的测试:按照先后顺序分别输入学生信息:学号班级佰舍号性别年龄专业05111101 三051111 429女18土木工程04111102 四041111 218男18信息工程对功能2 (添加学生信息)的测试;:按照先后顺序分别输入学生信息学号班级佰舍号性别年龄专业02111101 红021111 429女18机械系03111203 娜031112 101女18能源与环境对功能3 (修改学生信息)的测试:输入要修改学生的:林丹,系统显示“该学生信息 不存在”。输入修改学生:三,系统显示出该学生信息

6、。选择修改学号为:05111118,系统显示出修改后的学生信息。对功能4 (删除学生信息)的测试:输入要删除学生的学号:03111210,系统显示“该学生信息不存在”。输入要删除的学生的学号:03111203,系统显示出该学生信息。选择删除该学生信息。对功能5 (查询学生信息)的测试:查询宿舍号为 429的信息,系统显示为:学号班级佰舍号性别年龄专业02111101红 021111 429女18机械系05111101三 051111 429女18土木工程对功能6 (统计学生信息)的测试:选择按学号统计,系统显示为学号班级佰舍号性别年龄专业02111101红 021111 429女18机械系04

7、111102四 041111 218男18信息工程05111101三 051111 429女18土木工程学生总人数3人,其中男生1人,女生2人。对功能7 (退出系统)的测试:选择退出系统,程序关闭。2.详细设计及运行结果1)函数调用关系图2)部分模块流程图及运行结果截屏 主页界面主页流程图开始功能选择是录入模块选1否选2否是选3否是选4否是添加模块修改模块删除模块录入界面录入界面修改模块修改界面 J CAUtc tXc.rel&«k1 口 ".><:£nmitiLW占丄丄丄口 蚱博肩r.ZbjgE亡卩4.砂卫谴備入篇要値改的严生蝉tb 卅三述学

8、生信息一 爭号姓名进级一宿舍号慣另一年龄专业_511 noioi 1 1 1统计模块统计界面是选1是选2是选3是选4否是选5是选6返回主页功能选择结束按宿舍按性别按班级按专业按学号-|匚;SUsffT3c.ft' Dmkt£jpLiSft 陌芳熔 山5丄丄擘生信息爭号雉暑班级一宿舍号一悝别专业02111101 阵红 41 1 11 32 垂勺 051)1118 耳 k3 8 92 122 u,<男信息工程 土耗工惶学生总人數为3.其中男生打1 .女生为Z 谓按任蹇键堆蛭一-六、心得体会“万事开头难”这句话在我编写程序的过程中得到了真正的体现。在最初编写的几天里出现了这样

9、那样的错误一大堆,这主要是由于我对基础知识掌握不扎实所造成的。但是随后几天里,我对课本知识进行了回顾并不时的向老师和同学进行请教,慢慢的对编写程序也开始得心应手起来。程序的编写总归是一件费时费力的事情,但只要我们认真编写和调试最后总能成功。短短以周实习时间我收获颇多, 我相信经过这次实习必将为我以后的深入学习打下扎实 的基础。七、源程序#i nclude<stdio.h>#i nclude<stri ng.h> #i nclude<stdlib.h> #i nclude<io.h> #defi ne N 900struct st_message

10、/* 学生信息 */ _char name20; /* 学生 */ char dorm7; /* 宿舍号 */ char num10; /* 学号 */ char sex5; /* 性别 */ char age4; /* 年龄 */ char major20; /* 专业 */ char classs8; /* 班级 */ stN,t;sort_message()/* 排序模块 */文档大全int i,j,f no, fsize,f num;FILE *fp;fp=fope n( "stude nt.txt","rt+");if(fp=NULL)pri

11、ntf("nn*文件打开错误。按任意键退出!"); getchar();exit(1);fno=file no(fp);fsize=filele ngth(fno);fnum=fsize/sizeof(struct st_message); for(i=0;i<fnum;i+)fread(&sti,sizeof(struct st_message),1,fp); for(i=0;i<fnum-1;i+)for(j=i+1;j<fnum;j+) if(strcmp(sti. nu m,stj. num )>0) t=sti;sti=stj;st

12、j=t;rewi nd(fp);for(i=0;i<fnum;i+)fwrite(&sti,sizeof(struct st_message),1,fp); fclose(fp);input_message()/* 录用信息模块 */int i;char choice;FILE *fp;fp=fope n("stude nt.txt","at+");if(fp=NULL)pri ntf("nn* 库存文件不存在!请建立。按任意键退出!");getchar();exit(1);for (i=0;i+) system (&q

13、uot;cis");getchar();printf("请输入学生:");gets(sti. name);printf("n请输入学生班级:");gets(sti.classs);printf("n请输入学生宿舍号:");gets(sti.dorm);printf("n请输入学生学号:");gets(sti. nu m);printf("n请输入学生性别:");gets(sti.sex);文档大全printf("n请输入学生年龄:");gets(sti.age);p

14、rintf("n请输入学生专业:");gets(sti.major);fwrite(&sti,sizeof(struct st_message),1,fp);printf("输入成功! n是否继续录入(丫/N)?");choice=getchar();if(choice='y'|choice='Y')con ti nue;else fclose(fp);break;append_message() /* 添加模块 */int i;-char choice;FILE *fp;fp=fope n("stude

15、 nt.txt","at+");if(fp=NULL)pri ntf("nn*库存文件不存在!请建立。按任意键退出!");getchar();exit(1);for (i=0;i+)struct st_message stN;system ("cis");getchar();printf("请输入所添加学生:");gets(sti. name);printf("n请输入所添加学生班级:");gets(sti.classs);printf("n请输入所添加学生宿舍号:"

16、;);gets(sti.dorm);printf("n请输入所添加学生学号:");gets(sti. nu m);printf("n请输入所添加学生性别:");gets(sti.sex);printf("n请输入所添加学生年龄:");gets(sti.age);printf("n请输入所添加学生专业:");gets(sti.major);fwrite(&sti,sizeof(struct st_message),1,fp);printf("输入成功! n是否继续添加(Y/N)?");ch

17、oice=getchar();if(choice='y'|choice='Y')con ti nue;elsefclose(fp); break; revise_message() /* 修改模块 */int i,choice,flag,fno,fsize,fnum;char re_name20,s20;FILE *fp;dofp=fope n( "stude nt.txt","rt+");fno=file no(fp);fsize=filele ngth(fno); fnum=fsize/sizeof(struct st

18、_message); system("cls");gets(s);printf("请输入需要修改的学生:"); gets(re_ name);for (i=0;i<fnum;i+)fread(&sti,sizeof(struct st_message),1,fp); if(!strcmp(re_ n ame,sti. name) printf("n-该学生信息-nn");printf("学号班级-宿舍号-性别-年龄-专业-n");printf("n");prin tf("

19、%-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");prin tf("2.n");printf("3.班级n");printf("4.宿舍号 n");printf("5.性别n");printf("6.年龄n");prin

20、tf("7.专业n");printf("8.返回主页 n");sca nf("%d",&choice);switch(choice)case 1:printf("n请输入修改后的学号:");sca nf("%s",sti. nu m);break;case 2:printf("n请输入修改后的:");sca nf("%s",sti. name);break;case 3:printf("n请输入修改后的班级:");sca nf(

21、"%s",sti.classs);break;case 4:printf("n请输入修改后的宿舍号:");sca nf("%s",sti.dorm);break;case 5:printf("n请输入修改后的性别:");sea nf("%s",sti.sex);break;case 6:printf("n请输入修改后的年龄:");sea nf("%s",sti.age);break;case 7:printf("n请输入修改后的专业:"

22、);sea nf("%s",sti.major);break;case 8:retur n 1;getchar(); system("cls");prin tf("n修改后的学生信息 nn");printf("学号班级-宿舍号-性别-年龄-专业-n");printf("n");prin tf("%-8s%-6s %-4s %-6s %-4s %-4s %-20sn",sti. num,sti. name,sti.classs,sti.dorm,sti.sex,sti.age,

23、sti.major);rewi nd(fp);fseek(fp,sizeof(struct st_message)*i,0);fwrite(&sti,sizeof(struct st_message),1,fp); fclose(fp);break;if(i=fnum)printf("n该学生信息不存在!");printf("nn 继续修改吗?(Y/N)");choice=getchar();if(choice='Y'|choice=y)flag=1;system("pause");else flag=0;wh

24、ile(flag=1);return 1;delete_message() /* 删除模块 */int i,j,choice,fno,fsize,fnum;char d_num10;FILE *fp;system("cls");getchar();fp=fope n("stude nt.txt","rt");if(fp=NULL)pri ntf("nn*库存文件不存在!请先建立。按任意键退出!");getchar();exit(1);fno=file no(fp);fsize=filele ngth(fno);fn

25、um=fsize/sizeof(struct st_message);for(i=0;i<fnum;i+)fread(&sti,sizeof(struct st_message),1,fp);printf("请输入需要删除学生的学号:n");gets(d_ nu m);system("cls");for(i=0;i<fnum;i+)if(!strcmp(d_nu m,sti. nu m)printf("n-该学生信息-nn");printf("学号班级-宿舍号-性别-年龄-专业-n");prin

26、tf("n");prin tf("%-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");scan f("%d",&choice);switch(choice)case 1:for(j=i;j<fnum-1;j

27、+)stj=stj+1;rewi nd(fp);fp=fope n("stude nt.txt","wt");for(i=0;i<fnum-1;i+)fwrite(&sti,sizeof(struct st_message),1,fp); fclose(fp); getchar();break;case 2:pri ntf("按任意键返回主菜单!");getchar();return 0;break;if(i=fnum)printf("所查学生信息不存在,按任意键返回主菜单!");getchar();

28、return 0;printf("删除信息成功,按任意键返回主菜单!");return 1;find_message() /*查找信息模块*/int i,choice,flag,fno,fsize,fnum;char f_n ame20;char f_num10;char f_dorm7;FILE *fp;system("cls");do文档大全 sort_message();fp=fope n( "stude nt.txt","rt");if(fp=NULL)pri ntf("nn*库存文件不存在!请先

29、建立。按任意键退出!");getchar();exit(1);fno=file no(fp);fsize=filele ngth(fno);fnum=fsize/sizeof(struct st_message);system("cls");prin tf("请选择查询方式:n");printf("1.按查询 n");printf("2.按学号查询n");printf("3.按宿舍号查询n");printf("4.返回主页 n");scan f("%d&q

30、uot;,&choice);system("cls");getchar();switch(choice)case 1:pri ntf("请输入需要查询的:n");gets(f_ name);prin tf("n该学生信息nn");printf("学号班级-宿舍号-性别-年龄-专业-n");printf("n");for (i=0;i<fnum;i+)if(!strcmp(f_ name,sti. name)prin tf("%-8s%-6s %-4s %-6s %-4s

31、%-4s %-20sn",sti. num,sti. name,sti.classs,sti.dorm,sti.sex,sti.age,sti.major);printf("n");break;case 2:pri ntf("请输入要查询的学号:");gets(f_ nu m);prin tf("n该学生信息nn");printf("学号班级-宿舍号-性别-年龄-专业-n");printf("n");for (i=0;i<fnum;i+)fread(&sti,sizeof

32、(struct st_message),1,fp);if(!strcmp(f_ nu m,sti. nu m)prin tf("%-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:pri ntf("请输入要查询的宿舍号:");gets(f_dorm);printf("n-该宿舍学生信息-nn");printf(&q

33、uot;学号班级-宿舍号-性别-年龄-专业-n");printf("n");rewi nd(fp);for (i=0;i<fnum;i+)fread(&sti,sizeof(struct st_message),1,fp); if(!strcmp(f_dorm,sti.dorm)prin tf("%-8s%-6s %-4s %-6s %-4s %-4s %-20sn",sti. num,sti. name,sti.classs,sti.dorm,sti.sex,sti.age,sti.major);printf("n&q

34、uot;);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()/* 统计信息模块 */int i,choice,fno,fsize,fnum;int m=0,n=0,k=0;char dorm7;char classs8;char major20;FI

35、LE *fp;sort_message();fp=fope n("stude nt.txt","rt"); if(fp=NULL)pri ntf("nn*文件打开错误。按任意键退出!"); getchar();exit(1);fno=file no(fp);fsize=filele ngth(fno);fnum=fsize/sizeof(struct st_message);system("cls");prin tf("请选择显示方式:n");printf("1.按学号显示n"

36、;);printf("2.按宿舍号显示n");printf("3.按性别显示n");printf("4.按班级显示n");printf("5.按专业显示n");文档大全printf("6.返回主页 n");scan f("%d",&choice);system("cls");switch(choice)case 1: prin tf("n 学生信息 nn");printf("学号班级-宿舍号-性别-年龄-专业-n&qu

37、ot;);printf("n");for(i=0;i<fnum;i+) fread(&sti,sizeof(struct st_message),1,fp); prin tf("%-8s%-6s %-4s %-6s %-4s %-4s %-20sn",sti. nu m,sti. name,sti.classs,sti.dorm,sti.sex,sti.age,sti.major); k+;if(!strcmp(sti.sex,"男")m+;if(!strcmp(sti.sex,"女")n+;prin

38、tf(”n");printf("nn学生总人数为%d,其中男生为%d,女生为d。",k,m,n); break;case 2: getchar();printf("请输入要显示的宿舍号:");gets(dorm);printf("n-该宿舍学生信息-nn");printf("学号班级-宿舍号-性别-年龄-专业-n");for (i=0;i<fnum;i+)if(!strcmp(dorm,sti.dorm) printf("n");prin tf("%-8s%-6s %-

39、4s %-6s %-4s %-4s %-20sn",sti. num,sti. name,sti.classs,sti.dorm,sti.sex,sti.age,sti.major); break;case 3:pri ntf("请输入需要显示的性别:n");prin tf("1.男 n");printf("2.女n");sca nf("%d",&choice);prin tf("n 学生信息 nn");printf("学号班级-宿舍号-性别-年龄-专业-n"

40、;);printf("n");switch(choice)case 1: for(i=0;i<fnum;i+)if(!strcmp(sti.sex,"男") prin tf("%-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: f

41、or(i=0;i<fnum;i+)if(!strcmp(sti.sex,"女") prin tf("%-8s%-6s %-4s %-6s %-4s %-4s %-20sn",sti. nu m,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);printf("n-该班级学生信息-nn");printf("学号班级-宿舍号-性别-年龄-专业-n");printf("n");for (i=0;i<fnum;i+)if(!strcmp(classs,sti.classs) prin tf("%-8s%-6s %-4s %-6s %-4s %-4s %

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论