宿舍管理系统程序设计报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

课程设计报告课程名称计算机通信工程学院专业网络工程班级1班学生姓名鲍苏莉学号10021240101设计题目学生宿舍管理系统指导教师张莹2012年6月10日至2012年6月17日题目:宿舍管理系统目录:1、问题描述:为宿舍管理人员编写一个宿舍管理查询软体。2、需求分析:宿舍管理系统主要是解决宿舍学生的查询、修改的问题,在计算机上实现学生的录入,输出,查询,更新,修改,添加等功能,每次录入完毕好后,文件中就会有相应的学生的信息,并再次调用输出的时候,录入的学生会相应的输出。明确规定:(1)、输入的学生的学号,年龄,年级,宿舍楼层号,宿舍楼号是整数类型,名字,专业是字符类型。(2)、输出:定义#definePRINT1#definePRINT2为输出语句,输出类型有整形和字符型。(3)达成的功能:(1)录入学生信息(2)打印学生信息(3)更新学生信息(4)查询宿舍信息(5)学生宿舍排序(0)退出系统更新(1)添加学生信息(2)删除学生信息(3)修改学生信息(0)返回主菜单查询(1)按学号查找(2)按姓名查找(0)退出可以连续操作。测试数据:录入正确的信息时:输入错误信息的时候:3、数据结构设计:structstu{charname[20];intnum;charsex;intage;intgrade;charzhuanye[30];};structdom{intbui_num;intfloor_num;structstust;}s[MAX],p;4、概要设计:定义了函数save(),保存输入的学生信息到文件中。输入函数shuru()和input()函数,用来从计算机界面输入学生的信息。读取函数read(),从文件中读取保存的学生的信息。输出函数output()输出输入的学生信息。添加函数insert()用来添加学生信息。del(),revise(),删除和修改函数。按姓名和学号查询的函数inquire_name(),inquire_num()。(2)详细设计:5、测试分析:(1)实际测试的数据:11,ff,f,22,2,fa,2,2(2)预期结果:-------------------------------------------------------------宿舍管理系统菜单页面menu()更新学生信息打印学生信息退出系统录入学生信息查询学生信息学生宿舍排序添加学生信息删除学生信息修改学生信息返回主菜单宿舍情况排序返回主菜单按学生姓名查询返回主菜单按学生学号查询学生信息以保存在文件中学号--学生姓名--性别--年龄--年级----专业--楼号--楼层号11fff222fa22(3)实际运行与分析:在输入学生的信息后,在主函数中在调用输出函数和读出函数,然后在主屏幕上就会显示上显示的信息。(3)算法的时空分析及改进思想:在输入学生的信息后,就会写进二进制的文件中,在从文件中读出来,在主函数调用即在主屏幕上输出学生的信息。改进思想,在输入函数是定义学生的最大人数是#defineMAX40,然后输入学生时必须40个学生全部输入才可进行下一步的操作,所以程序比较简单,在此基础上,进行改进,在输入一个学生信息时主屏幕会显示是否继续,如果继续则继续输入下一个学生的信息,如果则返回到主菜单。6总结:在刚开始编程序时,会遇到很多很多的问题和困难,主要还是对基础知识掌握的不扎实造成的,一些简单的语句也会出现最简单的错误,随着几天的训练在编程方面会有点进步但是还需要进一步的学习,调试过程中,经常会出现输入或显示为乱码的情况,这往往是上下定义的数据类型不同或定义数组长度不够所造成的。有时候程序中还会出现录入五个数据而只显示四个的情况,这也往往是由于定义的结构体数组长度过低所造成的。像这类问题只要把数据类型都定义成字符型,并且定义一个合理的数组长度往往都能解决。在进行程序的编写过程中,注意简单的符号的漏输。学生的宿舍管理系统,用到文件的存储,输入学生信息需要写文件,写到文件里,在输出学生信息时,在进行文件的读操作,在此程序上用到的是二进制文件。7、主要参考文献:1.《数据结构课程设计》,苏仕华等编著,机械工业出版社,2005.5.第一版;2.《算法与数据结构》,范策等编著,机械工业出版社2004,第一版。3.《数据结构(C语言版)》,严蔚敏等编著,清华大学出版社20044.《数据结构实用教程(第二版)》,徐孝凯编著,清华大学出版社20065.《数据结构》,谢楚屏等编著,人民邮电出版社源代码:#includestdio.h#includestdlib.h#includestring.h#defineMAX40#definePRINT1printf(-------------------------------------------------------------\n)#definePRINT2printf(学号--学生姓名--性别--年龄--年级----专业--楼号--楼层号\n\n)intsum=0;intnumber=6;inta=0;structstu{charname[20];intnum;charsex;intage;intgrade;charzhuanye[30];};structdom{intbui_num;intfloor_num;structstust;}s[MAX],p;//保存信息save(){FILE*fp;inti;if((fp=fopen(dom.txt,wt))==NULL)//打开文件{printf(读文件错误!\n);return0;}for(i=1;i=sum;i++)if(fwrite(&s[i],sizeof(structdom),1,fp)!=1)//写文件printf(写文件错误!\n);return0;fclose(fp);}intmenu()//菜单界面{inti;printf(\n\n\n*****宿舍管理系统*****\n\n);printf(1.录入学生信息\n\n);printf(2.打印学生信息\n\n);printf(3.更新学生信息\n\n);printf(4.查询宿舍信息\n\n);printf(5.学生宿舍排序\n\n);printf(0.退出系统\n\n);printf(请选择(0-5):);do{printf(请选择:);scanf(%d,&i);}while(i0||i5);returni;}intshuru()//输入学生的信息{printf(\n学号:);scanf(%d,&s[a].st.num);if(s[a].st.num==0)return0;printf(\n学生姓名:);scanf(%s,s[a].st.name);printf(\n学生性别(男生用M表示,女生用F表示):);getchar();scanf(%c,&s[a].st.sex);printf(\n学生年龄:);scanf(%d,&s[a].st.age);printf(\n学生年级:);scanf(%d,&s[a].st.grade);printf(\n学生专业:);scanf(%s,&s[a].st.zhuanye);printf(\n宿舍楼号:);scanf(%d,&s[a].bui_num);printf(\n宿舍楼层号:);scanf(%d,&s[a].floor_num);return0;}//输入模块input(){charch;printf(\n\n录入学生信息(最多%d个)\n,MAX);printf(----------------------------\n);printf(请输入第%d个学生的信息\n,++a);shuru();sum=a;printf(是否继续输入?y/n:\n);scanf(%c,&ch);ch=getchar();while(ch=='y'){printf(请输入第%d个学生的信息\n,++a);shuru();sum=a;ch=getchar();printf(\n);printf(是否继续输入?y/n:);scanf(%c,&ch);}if(ch=='n'){printf(\n--%d个学生的信息输入完毕!--\n,a);sum=a;printf(\n按任意键返回主菜单!);getchar();}return0;}//读取信息intread(){FILE*fp;inti=1;if((fp=fopen(dom.txt,rt))==NULL){printf(\n\n*****暂时还没有任何信息,按任意键进入主菜单选择基本信息的录入!*****\n);return0;}while(!feof(fp))//判断函数是否真的结束{fread(&s[i],sizeof(structdom),1,fp);i++;}fclose(fp);return(i);}//输出模块output(){inti;printf(\n\n--学生信息表--\n\n);PRINT2;PRINT1;for(i=1;i=sum;i++)if(s[i].st.num!=0){printf(%2d%10s%6c%7d%6d%8s%5d%6d\n\n,s[i].st.num,s[i].st.name,s[i].st.sex,s[i].st.age,s[i].st.grade,s[i].st.zhuanye,s[i].bui_num,s[i].floor_num);printf(\n);}}//添加学生信息insert(){inti=sum+1,flag=0;charchoice;printf(\n\n添加一个新同学\n);printf(---------------\n);do{printf(\n新学号:);scanf(%d,&s[i].st.num);printf(\n学生姓名:);scanf(%s,s[i].st.name);printf(\n学生性别(男生用M表示,女生用F表示):);getchar();scanf(%c,&s[i].st.sex);printf(\n学生年龄:);scanf(%d,&s[i].st.age);printf(\n学生年级:);scanf(%d,&s[i].st.grade);printf(\n学生专业:);scanf(%s,s[i].st.zhuanye);printf(\n宿舍楼号:);scanf(%d,&s[i].bui_num);printf(\n宿舍楼层号:);scanf(%d,&s[i].floor_num);sum++;printf(\n要继续吗?(Y/N));getchar();scanf(%c,&choice);if(choice=='y'||choice=='Y'){flag=1;i++;printf(\n继续!\n);}elseif(choice=='n'||choice=='N'){flag=0;}}while(flag==1);printf(\n按任意键返回主菜单!);return0;}//删除模块del(){intflag,del,i,k;charchoice;do{printf(\n输入要删除的学生学号:);scanf(%d,&del);for(i=1;i=sum;i++)if(del==s[i].st.num)for(k=i;k=sum-1;k++)s[k]=s[k+1];sum--;printf(\n\n继续吗?(Y/N));getchar();scanf(%c,&choice);if(choice=='y'||choice=='Y'){flag=1;printf(\n继续!\n);}elseif(choice=='n'||choice=='N'){flag=0;}}while(flag==1);printf(\n\n按任意键返回主菜单!);getchar();return0;}//修改模块revise(){inti,choices,revise_num,flag=0;do{pr

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功