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

下载本文档

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

文档简介

“学生宿舍管理系统”C语言课程设计报告程序功能简介我设计的是“学生宿舍管理系统”,主要是针对住宿学生个人信息的管理,适用对象主要是学校,以方便学校对住宿学生的管理。包括学生的姓名、学号、性别、专业、班级等等。在编写过程中主要运用C语言的基本知识有:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的调用与使用)等。课程设计要求该程序是由C语言编写的一个学生宿舍管理查询软件,程序在MicrosoftVisualC++6.0下运行,其主要功能是实现对学生信息的录入、添加、删除、修改、查询、统计。其中查询可以分别以姓名、学号、宿舍号为关键字查询学生信息。统计可以分别以学号、宿舍号、性别、班级、专业为关键字进行统计,并且输出信息按学号大小从小到大输出。源程序分析结构分析方案设计主函数主函数录入模块添加模块修改模块删除模块查询模块统计模块退出系统学号姓名班级宿舍性别年龄专业返回按姓名按学号按宿舍返回按学号按宿舍按性别按班级按专业返回数据结构说明程序中数据主要是学生信息,具体属于类型如下:structst_messagecharname[20];/*学生姓名*/chardorm[7];/*宿舍号*/charnum[10];/*学号*/charsex[5];/*性别*/charage[4];/*年龄*/charmajor[20];/*专业*/charclasss[8];/*班级*/模块功能说明第一录入模块:调用input_message(),对住宿学生信息进行录入。第二添加模块:调用append_message(),对新来学生信息进行添加录入。第三修改模块:调用revise_message(),对需修改学生的信息进行修改。第四删除模块:调用delete_message(),对某一学生信息进行删除操作。第五查询模块:调用find_message(),分别以姓名、学号、宿舍号对学生信息进行查询。第六统计模块:调用census_message(),分别以学号、宿舍号、性别、班级、专业方式对学生信息进行统计,并按学号由小到大输出。编程中遇到的问题及解决方法在调试过程中,时常会出现输入或显示为乱码的情况,这可能是上下定义的数据类型不同或定义数组长度不够所导致的。有时候程序中还会出现录入五个数据而只显示四个的情况,这也经常是因为定义的结构体数组长度过低所造成的。像这些问题只要把数据类型都定义成字符型,并且定义一个合理的数组长度一般都能解决。在调试过程中我遇到最大的问题出现在删除模块。在运用“rt+”打开文件并对某一数据进行删除后,往往显示会多显示一行数据。这是由于“rt+”写数据时只会覆盖数据而不会清除原文件数据,因此文件最后一行数据总会保留在原文件中。后来我先用“rt”打开文件并读取文件中的数据,然后再用“wt”打开原文件将删除后的数据重新写入文件,最终成功运行。输入姓名输入姓名输入班级输入宿舍输入学号输入性别输入年龄输入专业是否继续录入结束NY录入界面修改模块输入要修改学生的姓名输入要修改学生的姓名功能选择选1选7选4选8选2选3选5选6修改学号修改姓名修改班级修改宿舍修改性别修改年龄修改专业是否继续结束返回主页是是是是是是是是否否否否否否否修改界面统计模块输入统计方式功能选择选1选4选6输入统计方式功能选择选1选4选6选2选3选5按学号按宿舍按性别按班级按专业结束返回主页是是是是是是否否否否否统计界面心得体会“万事开头难”这句话在我编写程序的过程中得到了真正的体现。在最初编写的几天里出现了这样那样的错误一大堆,这主要是由于我对基础知识掌握不扎实所造成的。但是随后几天里,我对课本知识进行了回顾并不时的向老师和同学进行请教,慢慢的对编写程序也开始得心应手起来。程序的编写总归是一件费时费力的事情,但只要我们认真编写和调试最后总能成功。短短以周实习时间我收获颇多,我相信经过这次实习必将为我以后的深入学习打下扎实的基础。源程序#include<stdio.h>#include<string.h>#include<stdlib.h>#include<io.h>#defineN900structst_message/*学生信息*/{charname[20];/*学生姓名*/ chardorm[7];/*宿舍号*/ charnum[10];/*学号*/ charsex[5];/*性别*/ charage[4];/*年龄*/ charmajor[20];/*专业*/ charclasss[8];/*班级*/}st[N],t;sort_message()/*排序模块*/{inti,j,fno,fsize,fnum; FILE*fp; fp=fopen("student.txt","rt+");if(fp==NULL){printf("\n\n*****文件打开错误。按任意键退出!");getchar();exit(1);}fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(structst_message);for(i=0;i<fnum;i++) fread(&st[i],sizeof(structst_message),1,fp);for(i=0;i<fnum-1;i++) for(j=i+1;j<fnum;j++) if(strcmp(st[i].num,st[j].num)>0) {t=st[i]; st[i]=st[j]; st[j]=t; }rewind(fp);for(i=0;i<fnum;i++) fwrite(&st[i],sizeof(structst_message),1,fp);fclose(fp);}input_message()/*录用信息模块*/{inti;charchoice;FILE*fp;fp=fopen("student.txt","at+");if(fp==NULL){printf("\n\n*****库存文件不存在!请建立。按任意键退出!");getchar();exit(1);}for(i=0;;i++){system("cls");getchar();printf("请输入学生姓名:");gets(st[i].name);printf("\n请输入学生班级:");gets(st[i].classs);printf("\n请输入学生宿舍号:");gets(st[i].dorm);printf("\n请输入学生学号:");gets(st[i].num);printf("\n请输入学生性别:");gets(st[i].sex);printf("\n请输入学生年龄:");gets(st[i].age);printf("\n请输入学生专业:");gets(st[i].major);fwrite(&st[i],sizeof(structst_message),1,fp);printf("输入成功!\n是否继续录入(Y/N)?");choice=getchar();if(choice=='y'||choice=='Y')continue;else{fclose(fp);break;}}}append_message()/*添加模块*/{inti;charchoice;FILE*fp;fp=fopen("student.txt","at+");if(fp==NULL){printf("\n\n*****库存文件不存在!请建立。按任意键退出!");getchar();exit(1);}for(i=0;;i++){structst_messagest[N];system("cls");getchar();printf("请输入所添加学生姓名:");gets(st[i].name);printf("\n请输入所添加学生班级:");gets(st[i].classs);printf("\n请输入所添加学生宿舍号:");gets(st[i].dorm);printf("\n请输入所添加学生学号:");gets(st[i].num);printf("\n请输入所添加学生性别:");gets(st[i].sex);printf("\n请输入所添加学生年龄:");gets(st[i].age);printf("\n请输入所添加学生专业:");gets(st[i].major);fwrite(&st[i],sizeof(structst_message),1,fp);printf("输入成功!\n是否继续添加(Y/N)?");choice=getchar();if(choice=='y'||choice=='Y')continue;else{fclose(fp);break;}}}revise_message()/*修改模块*/{inti,choice,flag,fno,fsize,fnum;charre_name[20],s[20];FILE*fp;do{fp=fopen("student.txt","rt+");fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(structst_message);system("cls");gets(s);printf("请输入需要修改的学生姓名:");gets(re_name); for(i=0;i<fnum;i++) { fread(&st[i],sizeof(structst_message),1,fp);if(!strcmp(re_name,st[i].name)) {printf("\n-----该学生信息-----\n\n");printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n"); printf("-----------------------------------------------------\n"); printf("%-8s%-6s%-4s%-6s%-4s%-4s%-20s\n",st[i].num,st[i].name, st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major); printf("您要修改哪一项?\n"); printf("1.学号\n"); printf("2.姓名\n"); printf("3.班级\n"); printf("4.宿舍号\n"); printf("5.性别\n"); printf("6.年龄\n"); printf("7.专业\n"); printf("8.返回主页\n");scanf("%d",&choice);switch(choice) {case1:printf("\n请输入修改后的学号:");scanf("%s",st[i].num);break;case2:printf("\n请输入修改后的姓名:"); scanf("%s",st[i].name);break;case3:printf("\n请输入修改后的班级:"); scanf("%s",st[i].classs);break;case4:printf("\n请输入修改后的宿舍号:");scanf("%s",st[i].dorm);break;case5:printf("\n请输入修改后的性别:"); scanf("%s",st[i].sex);break;case6:printf("\n请输入修改后的年龄:"); scanf("%s",st[i].age);break;case7:printf("\n请输入修改后的专业:"); scanf("%s",st[i].major);break; case8:return1; } getchar(); system("cls");printf("\n-----修改后的学生信息-----\n\n");printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");printf("-----------------------------------------------------\n");printf("%-8s%-6s%-4s%-6s%-4s%-4s%-20s\n",st[i].num,st[i].name, st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major); rewind(fp);fseek(fp,sizeof(structst_message)*i,0); fwrite(&st[i],sizeof(structst_message),1,fp); fclose(fp);break; }}if(i==fnum)printf("\n该学生信息不存在!");printf("\n\n继续修改吗?(Y/N)");choice=getchar();if(choice=='Y'||choice=='y'){flag=1;system("pause");}elseflag=0;}while(flag==1);return1;}delete_message()/*删除模块*/{inti,j,choice,fno,fsize,fnum;chard_num[10];FILE*fp;system("cls");getchar();fp=fopen("student.txt","rt");if(fp==NULL){printf("\n\n*****库存文件不存在!请先建立。按任意键退出!");getchar();exit(1);}fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(structst_message);for(i=0;i<fnum;i++)fread(&st[i],sizeof(structst_message),1,fp);printf("请输入需要删除学生的学号:\n");gets(d_num);system("cls");for(i=0;i<fnum;i++){if(!strcmp(d_num,st[i].num)){printf("\n-----该学生信息-----\n\n");printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");printf("-----------------------------------------------------\n"); printf("%-8s%-6s%-4s%-6s%-4s%-4s%-20s\n",st[i].num,st[i].name, st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major); printf("\n是否删除该学生信息:\n"); printf("1.是\n");printf("2.否\n"); scanf("%d",&choice); switch(choice) {case1:for(j=i;j<fnum-1;j++) st[j]=st[j+1]; rewind(fp); fp=fopen("student.txt","wt"); for(i=0;i<fnum-1;i++) fwrite(&st[i],sizeof(structst_message),1,fp); fclose(fp); getchar(); break; case2:printf("按任意键返回主菜单!"); getchar(); return0;} break;}}if(i==fnum){printf("所查学生信息不存在,按任意键返回主菜单!");getchar();return0;}printf("删除信息成功,按任意键返回主菜单!");return1;}find_message()/*查找信息模块*/{inti,choice,flag,fno,fsize,fnum;charf_name[20];charf_num[10];charf_dorm[7];FILE*fp;system("cls");do{sort_message();fp=fopen("student.txt","rt");if(fp==NULL){printf("\n\n*****库存文件不存在!请先建立。按任意键退出!");getchar();exit(1);}fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(structst_message);system("cls");printf("请选择查询方式:\n");printf("1.按姓名查询\n");printf("2.按学号查询\n");printf("3.按宿舍号查询\n");printf("4.返回主页\n");scanf("%d",&choice);system("cls");getchar();switch(choice){case1:printf("请输入需要查询的姓名:\n"); gets(f_name); printf("\n-----该学生信息-----\n\n");printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n"); printf("-----------------------------------------------------\n"); for(i=0;i<fnum;i++) if(!strcmp(f_name,st[i].name)) printf("%-8s%-6s%-4s%-6s%-4s%-4s%-20s\n",st[i].num,st[i].name, st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major); printf("-----------------------------------------------------\n"); break;case2:printf("请输入要查询的学号:"); gets(f_num); printf("\n-----该学生信息-----\n\n");printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n"); printf("-----------------------------------------------------\n"); for(i=0;i<fnum;i++) {fread(&st[i],sizeof(structst_message),1,fp);if(!strcmp(f_num,st[i].num)) printf("%-8s%-6s%-4s%-6s%-4s%-4s%-20s\n",st[i].num,st[i].name, st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major); } printf("-----------------------------------------------------\n"); break;case3:printf("请输入要查询的宿舍号:"); gets(f_dorm); printf("\n-----该宿舍学生信息-----\n\n");printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n"); printf("-----------------------------------------------------\n"); rewind(fp); for(i=0;i<fnum;i++) {fread(&st[i],sizeof(structst_message),1,fp);if(!strcmp(f_dorm,st[i].dorm)) printf("%-8s%-6s%-4s%-6s%-4s%-4s%-20s\n",st[i].num,st[i].name, st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major); } printf("-----------------------------------------------------\n"); break;case4:return0;}printf("\n\n继续查询吗?(Y/N)");choice=getchar();if(choice=='Y'||choice=='y'){flag=1;system("pause");}elseflag=0;}while(flag==1);return1;}census_message()/*统计信息模块*/{inti,choice,fno,fsize,fnum;intm=0,n=0,k=0;chardorm[7];charclasss[8];charmajor[20];FILE*fp;sort_message();fp=fopen("student.txt","rt");if(fp==NULL){printf("\n\n*****文件打开错误。按任意键退出!");getchar();exit(1);}fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(structst_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",&choice);system("cls");switch(choice){case1:printf("\n-----学生信息-----\n\n");printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n"); printf("-----------------------------------------------------\n");for(i=0;i<fnum;i++) {fread(&st[i],sizeof(structst_message),1,fp); {printf("%-8s%-6s%-4s%-6s%-4s%-4s%-20s\n",st[i].num,st[i].name, st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major); k++; if(!strcmp(st[i].sex,"男"))m++;if(!strcmp(st[i].sex,"女"))n++; } } printf("-----------------------------------------------------\n"); printf("\n\n学生总人数为%d,其中男生为%d,女生为%d。",k,m,n); break;case2:getchar(); printf("请输入要显示的宿舍号:"); gets(dorm); printf("\n-----该宿舍学生信息-----\n\n");printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n"); for(i=0;i<fnum;i++) if(!strcmp(dorm,st[i].dorm)) {printf("-----------------------------------------------------\n"); printf("%-8s%-6s%-4s%-6s%-4s%-4s%-20s\n",st[i].num,st[i].name, st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major); } break;case3:printf("请输入需要显示的性别:\n"); printf("1.男\n");printf("2.女\n"); scanf("%d",&choice); printf("\n-----学生信息-----\n\n");printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");printf("-----------------------------------------------------\n"); switch(choice) {case1:for(i=0;i<fnum;i++) if(!strcmp(st[i].sex,"男")) {printf("%-8s%-6s%-4s%-6s%-4s%-4s%-20s\n",st[i].num,st[i].name, st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major); m++; } printf("-----------------------------------------------------\n");printf("\n\n男生人数为%d。",m); break; case2:for(i=0;i<fnum;i++) if(!strcmp(st[i].sex,"女")) {printf("%-8s%-6s%-4s%-6s%-4s%-4s%-20s\n",st[i].num,st[i].name, st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major); n++; } printf("-----------------------------------------------------\n"); printf("\n\n女生人数为%d。",n); break; } break;case4:getchar(); printf("请输入要显示的班级:"); gets(classs); printf("\n-----该班级学生信息-----\n\n");printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n"); printf("-----------------------------------------------------\n"); for(i=0;i<fnum;i++) if(!strcmp(classs,st[i].classs)) {printf("%-8s%-6s%-4s%-6s%-4s%-4s%-20s\n",st[i].num,st[i].name, st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major); k++; if(!strcmp(st[i].sex,"男"))m++;if(!strcmp(st[i].sex,"女"))n++; } printf("-----------------------------------------------------\n"); printf("\n\n该班学生总人数为%d,其中男生为%d,女生为%d。",k,m,n); break;case5:getchar(); printf("请输入要显示的

温馨提示

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

评论

0/150

提交评论