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

下载本文档

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

文档简介

C语言课程设计报告书系部名称通信工程系学生姓名xxx专业名称通信工程专业班 级xxxxx班学号xxxxxxxx指导教师 xxxx时间2010年06月07日至 2010年06月18日 实验题目:学生宿舍管理系统一、实验目的通过本课程设计,强化上机动手能力,使学生在理论和实践的基础上进一步巩固C语言程序设计课程学习的内容,掌握工程软件设计的基本方法。通过这次实习练习,可以更进一步的熟悉所学的知识,还可以加强和巩固知识。长达两周的上机练习,为我们提供了很好的编程环境。更好的了解编程的意义,为将来参加实践活动以及以后的毕业设计打下坚实的基础。二、实验内容我设计的是“学生宿舍管理系统”,主要是针对住宿学生个人信息的管理,适用对象主要是学校,以方便学校对住宿学生的管理。包括学生的姓名、学号、性别、专业、班级等等。在编写过程中主要运用C语言的基本知识有:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的调用与使用)等。 三、需求分析 该程序是由C语言编写的一个宿舍管理查询软件,本程序在Microsoft Visual C+ 6.0下运行,其主要功能是实现对学生信息的录入、添加、删除、修改、查询、统计。其中查询可以分别以姓名、学号、宿舍号为关键字查询学生信息。统计可以分别以学号、宿舍号、性别、班级、专业为关键字进行统计,并且输出信息按学号大小从小到大输出。四、概要设计1、方案设计主函数密码模块录入模块添加模块修改模块删除模块查询模块统计模块退出系统学 号姓名宿舍性 别年龄专 业返 回班 级按姓名按学号按宿舍返 回按性别按学号按宿舍返 回按班级按专业 2、数据结构说明程序中数据主要是学生信息,具体属于类型如下:truct st_message char name20; /*学生姓名*/char dorm7; /*宿舍号*/char num10; /*学号*/char sex5; /*性别*/char age4; /*年龄*/char major20; /*专业*/char classs8; /*班级*/3、模块功能说明第一密码模块:调用cipher(),进行管理者的注册与登录操作。第二录入模块:调用input_message(),对住宿学生信息进行录入。第三添加模块:调用append_message(),对新来学生信息进行添加录入。第四修改模块:调用revise_message(),对需修改学生的信息进行修改。第五删除模块:调用delete_message(),对某一学生信息进行删除操作。第六查询模块:调用find_message(),分别以姓名、学号、宿舍号对学生信息进行查询。第七统计模块:调用census_message(),分别以学号、宿舍号、性别、班级、专业方式对学生信息进行统计,并按学号由小到大输出。五、详细设计及运行结果1.函数之间调用关系图主函数 main()删除函数delete_message()录入函数input_message()统计函数census_message()添加函数append_message()排序函数sortmessage() 密码函数cipher()修改函数revise_message()查询函数find_message()2.部分模块流程图及运行结果图示 登陆界面主函数流程图输入密码功能选择选1选4选0选2选3选5录入模块添加模块修改模块删除模块查询模块结束退出系统是是是是是是否否否否否开始选6统计模块是否连续三次输入错误,退出系统主页界面录入模块 输入姓名输入班级输入宿舍输入学号输入性别输入年龄输入专业是否继续录入结 束NY录入界面修改模块输入要修改学生的姓名功能选择选1选7选4选8选2选3选5选6修改学号修改姓名修改班级修改宿舍修改性别修改年龄修改专业是否继续结束返回主页是是是是是是是是否否否否否否否 修改界面 统计模块输入统计方式功能选择选1选4选6选2选3选5按学号按宿舍按性别按班级按专业结束返回主页是是是是是是否否否否否统计界面六、调试情况,设计技巧及体会 1、测试数据 对功能1(密码系统测试)的测试:先注册账号密码分别为:1,1,然后退出程序进行登录测试。输入一组错误账号密码系统显示“输入的账号或密码有误,请重新输入!”。在输入正确密码,系统显示“登陆成功”并进入主界面。对功能2(录入学生信息)的测试:按照先后顺序分别输入学生信息:学号 姓名 班级 宿舍号 性别 年龄 专业03091002 张三 0901 13#401 男 20 通信工程03091001 李四 0902 13#401 男 20 计算机对功能3(添加学生信息)的测试:按照先后顺序分别输入学生信息:学号 姓名 班级 宿舍号 性别 年龄 专业03091004 王红 0901 14#401 女 20 通信工程03091003 李娜 0902 14#401 女 20 计算机对功能4(修改学生信息)的测试:输入要修改学生的姓名:王五,系统显示“该学生信息不存在”。输入修改学生姓名:张三,系统显示出该学生信息。选择修改学号为:03091005,系统显示出修改后的学生信息。对功能5(删除学生信息)的测试:输入要删除学生的学号:03091001,系统显示“该学生信息不存在”。输入要删除的学生的学号:03091005,系统显示出该学生信息。选择删除该学生信息。对功能6(查询学生信息)的测试:查询宿舍号为14#401的信息,系统显示为:学号 姓名 班级 宿舍号 性别 年龄 专业03091003 李娜 0902 14#401 女 20 计算机03091004 王红 0901 14#401 女 20 通信工程对功能7(统计学生信息)的测试:选择按学号统计,系统显示为:学号 姓名 班级 宿舍号 性别 年龄 专业03091002 张三 0901 13#401 男 20 通信工程03091003 李娜 0902 14#401 女 20 计算机03091004 王红 0901 14#401 女 20 通信工程 学生总人数3人,其中男生1人,女生2人。 对功能8(退出系统)的测试:选择退出系统,程序关闭。 2、对调试中主要问题进行总结 调试过程中,经常会出现输入或显示为乱码的情况,这往往是上下定义的数据类型不同或定义数组长度不够所造成的。有时候程序中还会出现录入五个数据而只显示四个的情况,这也往往是由于定义的结构体数组长度过低所造成的。像这类问题只要把数据类型都定义成字符型,并且定义一个合理的数组长度往往都能解决。在调试过程中我遇到最大的问题出现在删除模块。在运用“rt+”打开文件并对某一数据进行删除后,往往显示会多显示一行数据。这是由于“rt+”写数据时只会覆盖数据而不会清除原文件数据,因此文件最后一行数据总会保留在原文件中。后来我先用“rt”打开文件并读取文件中的数据,然后再用“wt”打开原文件将删除后的数据重新写入文件,最终检测运行成功。 3、对自己设计进行评价,指出合理和不足之处,提出改进的方案 本程序拥有很多的优点:第一,它具有作为一个宿舍管理系统的各个功能,包括录入信息、添加信息、修改信息、删除信息、查询信息、统计信息六大主要功能。可以方便的进行住宿学生信息的管理。第二,它的各个功能模块在实现时非常方便,例如:录入和添加学生信息可以自己控制录入和添加的人数;统计学生信息可以分学号、班级、专业等进行统计等等。第三,它也具有安全性,在进入学生信息管理系统之前要求输入账号和密码,所以非常安全,不会造成信息的外泄。当然程序也有他的不足之处,比如密码不能回显“*”,这样很容易造成密码的丢失。可以在密码模块中改为回显“*”形式,并且可以对密码进行算法加密,这样更能确保信息的安全。 4、在设计过程中的感受 “万事开头难”这句话在我编写程序的过程中得到了真正的体现。在最初编写的几天里出现了这样那样的错误一大堆,这主要是由于我对基础知识掌握不扎实所造成的。但是随后几天里,我对课本知识进行了回顾并不时的向老师和同学进行请教,慢慢的对编写程序也开始得心应手起来。程序的编写总归是一件费时费力的事情,但只要我们认真编写和调试最后总能成功。 短短的两周实习时间我收获颇多,我相信经过这次实习必将为我以后的深入学习打下扎实的基础。参考文献:语言程序设计(第二版)王曙燕科学出版社七、源程序清单#includestdio.h#includestring.h#includestdlib.h#includeio.h#define N 900struct cipherchar account6; char code6;m10;cipher() /*密码模块*/ int i,k=0,flag,flag1,flag2,fno,fsize,fnum,choice; char account6; char code6,code16; FILE *fp1;printf (nnnnnnn *学生宿舍管理系统*n);printf ( * 1.登陆 *n);printf ( * 2.注册 *n);printf ( *n);scanf(%d,&choice);system(cls);switch(choice)case 1: fp1=fopen(code.txt,rt); if(fp1=NULL)printf(nn*你还没有注册,按任意键退出!); getchar(); exit(1);fno=fileno(fp1); fsize=filelength(fno); fnum=fsize/sizeof(struct cipher); while(k3) getchar(); system(cls); printf(请输入账号:); gets(account); printf(请输入密码:); gets(code); for(i=0;ifnum;i+) fread(&m,sizeof(struct cipher),1,fp1); if(!strcmp(mi.account,account) flag1=0; else flag1=1; if(!strcmp(mi.code,code) flag2=0; else flag2=1; if(flag1=0&flag2=0) fclose(fp1); printf(登陆成功!n); system(pause); return 1; if(i=fnum) printf(输入的账号或密码有误,请重新输入!); k+; printf(连续3次输入错误,退出!n); system(pause); exit(1);case 2:fp1=fopen(code.txt,at+); if(fp1=NULL)printf(nn*文件打开错误。按任意键退出!); getchar(); exit(1); do system(cls); getchar(); printf(请输入注册账号:); gets(m0.account);printf(请输入注册密码:); gets(m0.code); printf(请再次输入注册密码:); gets(code1); if(!strcmp(m0.code,code1)fwrite(&m0,sizeof(struct cipher),1,fp1); fclose(fp1); flag=0; else printf(两次密码输入不同,请重新注册!); getchar(); flag=1; while(flag=1); printf(注册成功!n); getchar(); system(cls); break;return 1; struct st_message /*学生信息*/ char name20; /*学生姓名*/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(fno); fnum=fsize/sizeof(struct st_message); for(i=0;ifnum;i+) fread(&sti,sizeof(struct st_message),1,fp); for(i=0;ifnum-1;i+) for(j=i+1;j0) t=sti; sti=stj; stj=t; rewind(fp); for(i=0;ifnum;i+) fwrite(&sti,sizeof(struct st_message),1,fp); 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(); 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(n请输入学生专业:); gets(sti.major); fwrite(&sti,sizeof(struct st_message),1,fp); 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(1); for (i=0;i+) struct st_message stN; system (cls); getchar(); 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(n请输入所添加学生专业:); gets(sti.major); fwrite(&sti,sizeof(struct st_message),1,fp); 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=fileno(fp); fsize=filelength(fno); fnum=fsize/sizeof(struct st_message); system(cls); gets(s); printf(请输入需要修改的学生姓名:); gets(re_name); for (i=0;ifnum;i+) fread(&sti,sizeof(struct st_message),1,fp); if(!strcmp(re_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); 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(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: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(学号-姓名-班级-宿舍号-性别-年龄-专业-n); printf(-n); printf(%-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); choice=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) printf(nn*库存文件不存在!请先建立。按任意键退出!); getchar(); exit(1); fno=fileno(fp); fsize=filelength(fno); fnum=fsize/sizeof(struct st_message); for(i=0;ifnum;i+) fread(&sti,sizeof(struct st_message),1,fp); 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.classs,sti.dorm,sti.sex,sti.age,sti.major); printf(n是否删除该学生信息:n); printf(1.是n); printf(2.否n); scanf(%d,&choice); 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(&sti,sizeof(struct st_message),1,fp); fclose(fp); getchar(); break; case 2:printf(按任意键返回主菜单!); getchar();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=fopen(student.txt,rt); if(fp=NULL) printf(nn*库存文件不存在!请先建立。按任意键退出!); 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,&choice); system(cls); getchar(); switch(choice) case 1:printf(请输入需要查询的姓名:n); gets(f_name); printf(n -该学生信息-nn); printf(学号-姓名-班级-宿舍号-性别-年龄-专业-n); printf(-n); for (i=0;ifnum;i+) if(!strcmp(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(-n); for (i=0;ifnum;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_dorm); printf(n -该宿舍学生信息-nn); printf(学号-姓名-班级-宿舍号-性别-年龄-专业-n); printf(-n); rewind(fp); for (i=0;ifnum;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.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,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); 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); printf(5.按专业显示n); printf(6.返回主页n); scanf(%d,&choice); system(cls); switch(choice) case 1: printf(n -学生信息-nn); printf(学号-姓名-班级-宿舍号-性别-年龄-专业-n); printf(-n); for(i=0;ifnum;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.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;ifnum;i+) if(!strcmp(dorm,sti.dorm) printf(-n); printf(%-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); printf

温馨提示

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

最新文档

评论

0/150

提交评论