学生宿舍管理系统C语言课程设计报告_第1页
学生宿舍管理系统C语言课程设计报告_第2页
学生宿舍管理系统C语言课程设计报告_第3页
学生宿舍管理系统C语言课程设计报告_第4页
学生宿舍管理系统C语言课程设计报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

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

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

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

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

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

6、龄专业02111101陈红021111429女18机械系03111203赵娜031112101女18能源与环境对功能3 (修改学生信息)的测试:输入要修改学生的姓名:林丹,系统显示“该学生 信息不存在"。输入修改学生姓名:张三,系统显示出该学生信息。 选择修改学号为:05111118, 系统显示出修改后的学生信息。对功能4 (删除学生信息)的测试:输入要删除学生的学号:03111210,系统显示“该学生信息不存在"。输入要删除的学生的学号:03111203,系统显示出该学生信息。选择删除该学生信息。对功能5 (查询学生信息)的测试:查询宿舍号为429的信息,系统显示为:学号

7、姓名班级宿舍号,住另年龄专业02111101陈红021111429女18机械系05111101张三051111429女18土木工程对功能6 (统计学生信息)的测试:选择按学号统计,系统显示为:学号姓名班级宿舍号性别年龄专业02111101陈红021111429女18机械系04111102李四041111218男18信息工程05111101张三051111429女18土木工程学生总人数3人,其中男生1人,女生2人。对功能7 (退出系统)的测试:选择退出系统,程序关闭。2.详细设计及运行结果1)函数调用关系图文档大全2)部分模块流程图及运行结果截屏 主页界面主页流程图开始录入模块添加模块修改模块删

8、除模块录入界面录入界面修改模块返回主页是修改界面(s) I 国 “CAUilM®1口Mkrcp%5BW M135Wni 11 lini05T1BOin.hu”pF>4 "谓输入芾要修改的学生姓茗F 张三一一 谟学生信息一 学号一.姓名一一班破一宿舍号一性别一年龄一专业=一嘉O1射号力 :管I警别酹业回 1 1要学处犯痛性耳专返2.3.M.5ETQ统计模块统计界面是选1是选2是选3是选4否是选5是选6返回主页输入统计方式功能选择按宿舍按性别按专业按学号按班级实用标准机械系 信息程 二木工程J 甲 mC;UseracftDesktcpciB®11101X051

9、111 01WStDebugXCpp4,exe-学生信息学号姓名班级-宿舍1一性别一年某-专业021 1 1 1EJ1 陈缸04111102 季西05111113 在 Z1学生总人数为3.其中男生为1 .女生为N.请按住意窿继续.半-二六、心得体会“万事开头难”这句话在我编写程序的过程中得到了真正的体现。在最初编写的几天里出现了这样那样的错误一大堆, 这主要是由于我对基础知识掌握不扎实所造成的。但是随后几天里,我对课本知识进行了回顾并不时的向老师和同学进行请教,慢慢的对编写程序也开始得心应手起来。程序的编写总归是一件费时费力的事情,但只要我们认真编写和调试最后总能成功。短短以周实习时间我收获颇

10、多, 我相信经过这次实习必将为我以后的深入学习打下扎实 的基础。七、源程序#include<stdio.h> #include<string.h> #include<stdlib.h> #include<io.h> #define N 900struct st_message /* 学生信息 */ .char name20; /*学生姓名 */ char dorm7; /* 宿舍号 */ char num10; /* 学号*/ char sex5; /* 性别*/ char age4; /* 年龄 */ char major20; /* 专业 *

11、/ 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;fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(struct st_message);for(i=0;i<fnum;i+)

12、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.num,stj.num)>0)t=sti;sti=stj;stj=t;rewind(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=fopen

13、("student.txt","at+");if(fp=NULL)printf("nn*库存文件不存在!请建立。按任意键退出!");getchar();exit;for (i=0;i+) system ("cls");getchar();printf("请输入学生姓名:");gets();printf("n请输入学生班级:");gets(sti.classs);printf("n请输入学生宿舍号:");gets(sti.dorm);prin

14、tf("n请输入学生学号:");gets(sti.num);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)?");choice=getchar();if(choice=

15、9;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;for (i=0;i+)struct st_message stN;system ("cls");getchar(

16、);printf("请输入所添加学生姓名:");gets();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(&quo

17、t;n请输入所添加学生专业:");gets(sti.major);fwrite(&sti,sizeof(struct st_message),1,fp);printf("输入成功! n是否继续添加(Y/N)?");choice=getchar();if(choice='y'|choice='Y')continue;elsefclose(fp);break;revise_message() /* 修改模块 */int i,choice,flag,fno,fsize,fnum;char re_name20,s20;FILE *f

18、p;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 (i=0;i<fnum;i+)fread(&sti,sizeof(struct st_message),1,fp);if(!strcmp(re_name,sti.

19、name) printf("n该学生信息nn");printf("学号姓名班级-宿舍号-性别-年龄-专业-n");printf("n");printf("%-8s %-6s %-4s %-6s %-4s %-4s %-20sn",sti.num,, sti.classs,sti.dorm,sti.sex,sti.age,sti.major);printf("您要修改哪一项? n");printf("1.学号n");printf("2.姓名n"

20、;);printf("3.班级n");printf("4.宿舍号 n");printf("5.性别 n");printf("6.年龄n");printf("7.专业n");printf("8.返回主页 n");scanf("%d”,&choice);switch(choice)case 1:printf("n请输入修改后的学号:");scanf("%s",sti.num);break;case 2:printf(&qu

21、ot;n请输入修改后的姓名:");scanf("%s",);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:prin

22、tf("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("学号姓名班级一宿舍号-性别一年龄一专业-n");printf("n");printf("

23、;%-8s%-6s %-4s %-6s %-4s %-4s %-20sn",sti.num,,sti.classs,sti.dorm,sti.sex,sti.age,sti.major);rewind(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)");c

24、hoice=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;FILE *fp;system("cls");getchar();fp=fopen("student.txt","rt");if(fp=NULL)pri

25、ntf("nn*库存文件不存在!请先建立。按任意键退出!");getchar();exit;fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(struct st_message);for(i=0;i<fnum;i+)文档大全实用标准fread(&sti,sizeof(struct st_message),1,fp);printf("请输入需要删除学生而学号:n");gets(d_num);system("cls");for(i=0;i<fnum;i+)if

26、(!strcmp(d_num,sti.num)printf("n该学生信息nn");printf("学号-姓名-班级-宿舍号性别年龄专业-n");printf("An");printf("%-8s%-6s %-4s %-6s %-4s %-4s %-20sn",sti.num,,sti.classs,sti.dorm,sti.sex,sti.age,sti.major);printf("n是否删除该学士信息:n");printf("1.是n");printf(

27、"2.否n");scanf("%d”,&choice);switch(choice)case 1:for(j=i;j<fnum-1;j+)stj=stj+1;rewind(fp);fp=fopen("student.txt","wt");for(i=0;i<fnum-1;i+)fwrite(&sti,sizeof(struct st_message),1,fp);fclose(fp);getchar();break;case 2:printf("按任意键返回主菜单!");get

28、char();return 0; break; if(i=fnum)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=fope

29、n("student.txt","rt");if(fp=NULL)printf("nn*库存文件不存在!请先建立。按任意键退出!");getchar();exit;fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(struct st_message);system("cls");printf("请选择查询方式:n");printf("1.按姓名查询n");printf("2.按学号查询n");pr

30、intf("3.按宿舍号查询n");printf("4.返回主页 n");scanf("%d”,&choice);system("cls");getchar();switch(choice)case 1:printf(”请输入需要查询的姓名:n");gets(f_name);printf("n该学生信息nn");printf("学号-姓名-班级宿舍号性别年龄专业-n");printf("n");for (i=0;i<fnum;i+)if(!s

31、trcmp(f_name,)printf("%-8s%-6s %-4s %-6s %-4s %-4s %-20sn",sti.num,,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("

32、;n");for (i=0;i<fnum;i+)fread(&sti,sizeof(struct st_message),1,fp);if(!strcmp(f_num,sti.num)printf("%-8s%-6s %-4s %-6s %-4s %-4s %-20sn",sti.num,,sti.classs,sti.dorm,sti.sex,sti.age,sti.major);printf("n");break;case 3:printf("请输入要查询的宿舍号:");gets(f_dor

33、m);printf("n该宿舍学生信息nn");printf("学号-姓名-班级宿舍号性别年龄专业-n");printf("n");rewind(fp);for (i=0;i<fnum;i+)fread(&sti,sizeof(struct st_message),1,fp);if(!strcmp(f_dorm,sti.dorm)printf("%-8s %-6s %-4s %-6s %-4s %-4s %-20sn",sti.num,, sti.classs,sti.dorm,sti

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

35、k=0;char dorm7;char classs8;char major20;FILE *fp;sort_message();fp=fopen("student.txt","rt");if(fp=NULL)printf("nn*文件打开错误。按任意键退出!");getchar();exit;fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(struct st_message);system("cls");printf("请选择显示方式:n&q

36、uot;);printf("1.按学号显示n");printf("2.按宿舍号显示n");printf("3.按性别显示n");printf("4.按班级显示n");printf("5.按专业显示n");文档大全实用标准printf("6.返回主页 n");scanf("%d”,&choice);system("cls");switch(choice)case 1: printf("n学生信息 nn");printf(

37、"学号姓名班级一宿舍号-性别一年龄-专业-n");printf("n");for(i=0;i<fnum;i+) fread(&sti,sizeof(struct st_message),1,fp); printf("%-8s%-6s %-4s %-6s %-4s %-4s %-20sn",sti.num,,sti.classs,sti.dorm,sti.sex,sti.age,sti.major);k+;if(!strcmp(sti.sex,"男")m+;if(!strcmp(sti.

38、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 (i=0;i<fnum;i+) if(!strcmp(dorm,sti.dorm) printf("n");pr

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

40、");printf("n");switch(choice)case 1: for(i=0;i<fnum;i+)if(!strcmp(sti.sex,"男") printf("%-8s %-6s %-4s %-6s %-4s %-4s %-20sn",sti.num,, sti.classs,sti.dorm,sti.sex,sti.age,sti.major);m+;An"); printf("printf("nn 男生人数为 d。",m); break;case

41、 2: for(i=0;i<fnum;i+)if(!strcmp(sti.sex,"女") printf("%-8s%-6s %-4s %-6s %-4s %-4s %-20sn",sti.num,,sti.classs,sti.dorm,sti.sex,sti.age,sti.major);n+;printf("An");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) printf("%-8s%-6s %-4s %-6

温馨提示

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

评论

0/150

提交评论