宿舍管理系统软件数据结构课程设计_第1页
宿舍管理系统软件数据结构课程设计_第2页
宿舍管理系统软件数据结构课程设计_第3页
宿舍管理系统软件数据结构课程设计_第4页
宿舍管理系统软件数据结构课程设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、一、题目名称:宿舍管理查询软件二、设计目的:进一步掌握和利用C语言进行课程设计的能力,理解和运用结构化程设计的思想和方法,熟练掌握条件语句、循环、数组、函数操作,初步掌握开发一个小型实用系统的基本方法,学会高度一个较长程序的基本方法和利用流程图或N-S图表示算法,将本课程所学的知识合理地运用于实践当中。了解一些书上没有的函数及使用方法。三、设计分析:1、需求分析为了实现提高高校宿舍管理部门的工作效率,充分利用资源,减少不必要的人力、物力和财力的支出,方便宿舍管理部门的工作人员全面地掌握学生住宿情况等目的,为宿舍管理部门开发设计专用系统学生宿舍信息管理系统来进行管理学生宿舍信息,使学生宿舍信息实

2、现标准化的管理和规范化的制度是十分必要的。2、经济可行性分析如今是信息化时代,信息化管理可以使学生宿舍管理更加系统化,全面化,快速化,这样可以为学校带来高效的工作效益和经济效益,开发出本系统可以减少宿舍管理人员人数,而且管理方便,各功能实现迅速,数据有效的管理。这些效益和管理上的便捷远远超过了开发本系统的成本,所以在经济上具有完全的可行性。四、总体设计:根据系统要求,即本系统具有信息的录入,显示,查找,删除,从文件中读入数据、循环写入数据、结束程序等功能,先设计出详细的系统流程图,然后将源代码输入程序,进行编译调试即可。 程序总体分九个项目:输入记录、显示记录、按房间号排序并显示、按学号排序并

3、显示、插入一条记录并按学号排序并显示、按姓名查找、删除一条记录、查找并显示一个记录、从文件中读入数据、循环写入数据以及结束程序。五、详细设计:1、系统流程图如图5-1所示开始输出界面选择操作选择1选择2选择3选择4选择5选择6选择7选择8选择9选择0输入记录是是显示记录否否否否否否否否否退出系统结束按床位排序显示按学号排序显示是是是是插入一个记录查找删除记录查找显示记录从文件输入写入文件保存是是是是否图5-1 系统流程图2、根据流程图,将程序源代码输入到编译环境中,按照提示选择进行记录的输入,输入一个数据后提示是否继续输入,直到结束程序为止。输入主菜单如下:输出("tt学生宿舍管理系

4、统n"); 输出("tt§ 1. 输入记录 §n");输出("tt§ 2. 显示记录 §n");输出("tt§ 4. 按学号排序并显示 §n");输出("tt§ 5. 插入一条记录按学号排序并显示 §n");输出("tt§ 6. 按姓名查找,删除一条记录 §n");输出("tt§ 7 查找并显示一个记录 §n");输出("tt§

5、 8. 从文件中读入数据 §n");输出("tt§ 9. 循环写入数据 §n");输出("tt§ 0. 结束程序 §n");输出("ttn");输出("tt请选择您要运行的选项按(0-9):");将程序编译生成“学生宿舍管理系统.exe”。运行该文件如图5-2所示。图5-2 输出界面图输入记录采用循环输入while(sign!='n'&&sign!='N') 输出("tt房间号:"); 输

6、入("tt%s"&,roomn+i.roomnum);输出("tt床位号:");输入("tt%s",&roomn+i.bednum);输出("tt学号:");输入("tt%s",&roomn+i.num);输出("tt姓名:");输入("tt%s",&roomn+);gets(x); /*清除多余的输入*/输出("tt是否继续输入?(Y/N)");输入("tt%c",&am

7、p;sign); i+;返回(n+i);按照提示选择“1”进行记录的输入如图5-3所示:图5-3 输入记录显示图 按房间号排序采用冒泡排序法。 int i,j,*p,*q,s; char t10; for(i=0;i<n-1;i+) /*冒泡法排序*/for(j=0;j<n-1-i;j+)if(strcmp(roomj.roomnum,roomj+1.roomnum)>0) 比较(t,roomj+1.roomnum);比较(roomj+1.roomnum,roomj.roomnum);比较(roomj.roomnum,t);比较(t,roomj+1.bednum);比较(ro

8、omj+1.bednum,roomj.bednum);比较(roomj.bednum,t);比较(t,roomj+1.num);比较(roomj+1.num,roomj.num);比较(roomj.num,t);比较(t,roomj+1.name);比较(roomj+1.name,);比较(,t);连续输入多组数据后,按“n”结束输入,提示按任意键继续,按任意键后选择“2”进行记录的显示如图5-4所示。图5-4 按房间号排序并显示图按学号排序采用冒泡排序法比较(t,roomj+1.bednum);比较(roomj+1.bednum,roomj.bednu

9、m);比较(roomj.bednum,t);比较(t,roomj+1.num);比较(roomj+1.num,roomj.num);比较(roomj.num,t);比较(t,roomj+1.name);比较(roomj+1.name,);比较(,t);显示后提示按任意键继续,选择“4”进行按学号排序并显示,如图5-5所示。图5-5 按学号排序显示图插入记录采用交互式输入:输出("tt输入他(她)的姓名:"); 输入("tt%s",&s);while(strcmp(,s)!=0&&

10、amp;i<n) i+; 如果(i=n)输出("tt对不起没找到该学生!n"); return;输出("tt他(她)的房间号:%sn",roomi.roomnum); 输出("tt他(她)的床位号:%sn",roomi.bednum);输出("tt他(她)的学号:%sn",roomi.num);显示后提示按任意键继续,选择“5”按提示步骤插入一条记录,如图5-6所示。图5-6 插入一条记录图六、系统测试将源代码输入至编译环境中,将程序编译连接后生成“学生宿舍管理系统.exe”运行该文件,则显示主菜单:1、输入

11、记录2、显示记录3、按房间号排序并显示4、按学号排序并显示5、插入一条记录并按学号排序显示6、按姓名查找,删除一条记录7、查找并显示一个记录8、从文件中读入数据9、循环写入数据0、结束程序请选择您要运行的选项按(0-9):按照提示选择“1”进行记录的输入,则在主菜单下显示:输入记录房间号:101床位号:1学号:21姓名:xiaoning是否继续输入?(Y/N)-按N结束,按任意键后选择“2”进行记录的显示,则在主菜单下显示:房间号 床位号 学号 姓名101 1 21 xiaoning314 2 12 xiaozhang203 2 32 xiaoli417 5 41 xiaowang请按任意键继

12、续选择“5”插入一条记录,则在主菜单下显示:学生房间号:513学生床位号:4学生学号:52学生姓名:xiaoguan插入记录成功!房间号 床位号 学号 姓名101 1 21 xiaoning314 2 12 xiaozhang203 2 32 xiaoli417 5 41 xiaowang513 4 52 xiaoguan请按任意键继续七、结论这次课程设计我做的还不是很完善,因为功能不是很多,如果以后有机会完善的话,应该对管理员和用户登录时做进一步完善。学生的信息还不够完整,如学生的宿舍长,系别,一些费用以及学生的成绩等待相关详细信息。如果使次系统再详细些,需添加更多的管理员以及管理员权限,还

13、有学生的更多信息,如果有必要的话,添加一些有关教师的信息,以及教师登录的界面。在这次课程设计的过程中,我们体会到要想开发一个系统软件,不仅需要相当的专业技术知识,还要有严谨缜密的思维能力。只有思想上清晰了,编程才有意义,否则就是白费力气。同时还要善于捕获细小的方面,因为那往往是这个程序的致命因素。这次课程设计培养了我的细心和耐性,更树立了一种科学的态度。附录:源代码#include<stdio.h> /*引用库函数*/#include<stdlib.h>#include<ctype.h>#include<string.h>typedef stru

14、ct /*定义结构体数组*/char roomnum4; /*房间号*/char bednum2; /*床位号*/char num10; /*学号*/char name20; /*姓名*/Student;Student room11000; /*结构体数组变量*/int menu_select() /*菜单函数*/char c;dosystem("cls"); /*运行前清屏*/printf("tt学生宿舍管理系统n"); /*菜单选择*/printf("tt§ 1. 输入记录 §n");printf("

15、tt§ 2. 显示记录 §n");printf("tt§ 4. 按学号排序并显示 §n");printf("tt§ 5. 插入一条记录按学号排序并显示 §n");printf("tt§ 6. 按姓名查找,删除一条记录 §n");printf("tt§ 7 查找并显示一个记录 §n");printf("tt§ 8. 从文件中读入数据 §n");printf("

16、tt§ 9. 循环写入数据 §n");printf("tt§ 0. 结束程序 §n");printf("ttn");printf("tt请选择您要运行的选项按(0-9):");c=getchar(); /*读入选择*/while(c<'0'|c>'9');return(c-'0'); /*返回选择*/int Input(Student room,int n) /*输入若干条记录*/int i=0;char sign,x10;

17、/*x10为清除多余的数据所用*/while(sign!='n'&&sign!='N') /*判断*/printf("tt房间号:"); /*交互输入*/scanf("tt%s"&,roomn+i.roomnum);printf("tt床位号:");scanf("tt%s",&roomn+i.bednum);printf("tt学号:");scanf("tt%s",&roomn+i.num);printf

18、("tt姓名:");scanf("tt%s",&roomn+);gets(x); /*清除多余的输入*/printf("tt是否继续输入?(Y/N)");scanf("tt%c",&sign); /*输入判断*/i+;return(n+i);void Display(Student room,int n) /*显示所有记录*/int i;printf("tt-n"); /*格式头*/printf("tt房间号 床位号 学号 姓名 n");print

19、f("tt-n");for(i=1;i<n+1;i+) /*循环输入*/printf("tt%-10s%-10s%-10s%-20sn",roomi-1.roomnum,roomi-1.bednum,roomi-1.num,);if(i>1&&i%10=0) /*每十个暂停*/printf("tt-n");/*格式*/printf("tt");system("pause");printf("tt-n"); printf(&q

20、uot;tt");system("pause");void Sort_by_num(Student room,int n) /*按学号排序*/int i,j,*p,*q,s;char t10;for(i=0;i<n-1;i+) /*冒泡法排序*/for(j=0;j<n-1-i;j+)if(strcmp(roomj.num,roomj+1.num)>0)strcpy(t,roomj+1.bednum);strcpy(roomj+1.bednum,roomj.bednum);strcpy(roomj.bednum,t);strcpy(t,roomj+

21、1.num);strcpy(roomj+1.num,roomj.num);strcpy(roomj.num,t);strcpy(t,roomj+1.name);strcpy(roomj+1.name,);strcpy(,t);void Sort_by_roomnum(Student room,int n) /*按房间号排序*/int i,j,*p,*q,s;char t10;for(i=0;i<n-1;i+) /*冒泡法排序*/for(j=0;j<n-1-i;j+)if(strcmp(roomj.roomnum,roomj+1.roomnum

22、)>0)strcpy(t,roomj+1.roomnum);strcpy(roomj+1.roomnum,roomj.roomnum);strcpy(roomj.roomnum,t);strcpy(t,roomj+1.bednum);strcpy(roomj+1.bednum,roomj.bednum);strcpy(roomj.bednum,t);strcpy(t,roomj+1.num);strcpy(roomj+1.num,roomj.num);strcpy(roomj.num,t);strcpy(t,roomj+1.name);strcpy(roomj+1.name,roomj.

23、name);strcpy(,t);int Insert_a_record(Student room,int n) /*插入一条记录*/char x100; /*清除多余输入所用*/printf("tt学生房间号:"); /*交互式输入*/scanf("tt%s",&roomn.roomnum);printf("tt学生床位号:");scanf("tt%s",&roomn.bednum);printf("tt学生学号:");scanf("tt%s&qu

24、ot;,&roomn.num);printf("tt学生姓名:");scanf("tt%s",&);gets(x);n+;Sort_by_num(room,n); /*调用排序函数*/printf("tt插入记录成功!n"); /*返回成功信息*/return(n);int Delete_a_record(Student room,int n) /*按姓名查找,删除一条记录*/char s20;int i=0,j;printf("tt输入他(她)的姓名:"); /*交互式问寻*/

25、scanf("%s",s);while(strcmp(,s)!=0&&i<n) i+; /*查找判断*/if(i=n)printf("tt对不起没找到该学生!n"); /*返回失败信息*/return(n);for(j=i;j<n-1;j+) /*删除操作*/strcpy(roomj.roomnum,roomj+1.roomnum);strcpy(roomj.bednum,roomj+1.bednum); strcpy(roomj.num,roomj+1.num);strcpy(,roo

26、mj+1.name);printf("tt删除记录成功!n"); /*返回成功信息*/return(n-1);void Query_a_record(Student room,int n) /*查找并显示一个记录*/char s20;int i=0;printf("tt输入他(她)的姓名:"); /*交互式输入*/scanf("tt%s",&s);while(strcmp(,s)!=0&&i<n) i+; /*查找判断*/if(i=n)printf("tt对不起没找到该学生!

27、n"); /*输入失败信息*/return;printf("tt他(她)的房间号:%sn",roomi.roomnum); /*输出该学生信息*/printf("tt他(她)的床位号:%sn",roomi.bednum);printf("tt他(她)的学号:%sn",roomi.num);int AddfromText(Student room,int n) /*从文件中读入数据*/int i=0,num;FILE *fp; /*定义文件指针*/char filename20; /*定义文件名*/printf("t

28、t输入文件名:");scanf("tt%s",&filename); /*输入文件名*/if(fp=fopen(filename,"rb")=NULL) /*打开文件*/printf("tt无法打开该文件n"); /*打开失败信息*/printf("tt");system("pause");return(n);fscanf(fp,"%d",&num); /*读入总记录量*/while(i<num) /*循环读入数据*/ fscanf(fp,&q

29、uot;%s%s%s%s",roomn+i.roomnum,roomn+i.bednum,roomn+i.num,roomn+);i+;n+=num;fclose(fp); /*关闭文件*/printf("tt读入成功!n");printf("tt");system("pause");return(n);void WritetoText(Student room,int n) /*将所有记录写入文件*/int i=0;FILE *fp; /*定义文件指针*/char filename100; /*定义文件名*/p

30、rintf("tt循环写入数据n"); /*输入文件名*/printf("tt输入文件名:");scanf("tt%s",&filename);if(fp=fopen(filename,"w")=NULL) /*打开文件*/printf("tt无法打开该文件n");system("pause");return;fprintf(fp,"%dn",n); /*循环写入数据*/while(i<n)fprintf(fp,"%-10s%-10

31、s%-10s%-10sn",roomi.roomnum,roomi.bednum,roomi.num,);i+;fclose(fp); /*关闭文件*/printf("写入成功!n"); /*返回成功信息*/void main() /*主函数*/int n=0;for(;)switch(menu_select() /*选择判断*/ case 1:printf("tt输入记录n"); /*输入若干条记录*/n=Input(room1,n);break; case 2: printf("tt显示记录n"); /*显示所有记录*/ Display(room1,n); break; case 3: printf("tt按房间号排序并显示n"); Sort_by_roomnum(room1,n);

温馨提示

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

评论

0/150

提交评论