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

下载本文档

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

文档简介

1、计算机程序设计根底(C语言)课程设计题目:学生宿舍管理系统设计班 级:计121号:123302120B04123336 12D303指导教师姓名:贾文超杨晓红X永康 陆秀禾廿X喜梅孙强X周瑜2013年7月1日信息工程学院信息技术教学与实验中心学生宿舍管理系统设计功能:实现简单的学生宿舍根本信息管理,宿舍的 根本信息包括楼号、房间号、面积、所容纳 人数、已入住人数等。根本要求:1. 设计简单的菜单,能够进展系统功能选择。2. 实现信息的录入功能。3. 在已有信息的根底上添加新的纪录。4. 删除指定房间号的记录。5. 修改指定房间号的记录。6. 实现信息的浏览功能。7. 按房间号查询功能。8. 按

2、已入住人数排序功能。 41.1 需求分析 41.2 根本功能 41.1管理流程图51.2管理员操作 51.1第一选择模块 61.2第二录入模块 71.3第三添加模块 81.4第四删除模块81.5第五修改模块 91.6第六浏览模块 91.7第七查询模块 1011 11 1111 12 1414 141.1对自己设计进展评价,指出合理和不足之处,提出改良的方案 14141.1小组成员信息 14高校学生宿舍管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以与前端应用程序的开发两个方面。对于前端应用程序的开 发如此要求应用程序能提供强大的数据操纵功能,界面友好、使用简单方便

3、等特 点。旧的手工纪录的宿舍管理方式已经不能适应高速 开展的信息化时代,新的宿 舍管理系统开发出来之后,学校的现有的宿舍信息管理将有很大的改观,由过去的人工方式转变为计算机方式,由效率低、数据冗余、易产生错误转变为检索迅 速、查找方便、可靠性高、存储量大。这些优点能够极大地提高效率,也是学校科学化、正规化管理的重要条件。学生宿舍管理系统对于一个学校来说是必不可少的组成局部。 对于学生信息 量比拟庞大,需要记录存档的数据比拟多的高校来说,人工记录是相当麻烦的, 而且当查找某条记录时,只能靠人工去一条条地查找,这样不但麻烦而且效率非 常低。当今社会是飞速进步的世界,计算机化管理正是适应时代的产物。

4、21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普与。 我们针对此,设计了一套学生宿舍管理系统。学生宿舍管理系统采用的是计算机 化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的 就是将数据输入到系统的数据库中去。 由于数据库存储容量相当大,而且比拟稳 定,适合较长时间的保存,也不容易丢失。这无疑是为信息存储量比拟大的学校 提供了一个方便、快捷的操作方式。本系统具有运行速度快、安全性高、稳定性 好的优点,还具有修改功能,能够快速的查询学校所需的住宿信息。1.2根本功能高校学生宿舍管理系统的开发主要包括后台数据库的建立和维护以与前端 应用程序的开发两个方

5、面,但本课题要实现的是前端应用程序的开发。在设计该 系统时,会尽可能地贴近我们学生,便于管理者操作。系统在实现上具有如下功 能:1 设计简单的菜单,能够进展系统功能选择2. 实现信息的录入功能。3 在已有信息的根底上添加新的记录。4. 删除指定房间号的记录。5. 修改指定房间号的记录6. 实现信息的浏览功能7. 按房间号查询功能8. 按已入住人数排序功能对系统可划分为三层流程图: 第一层流程图:输入宿舍信息房 间号、楼号、容纳 人数、手机号等第二层流程图:选择操作删除宿舍管理 系统记录修改第三层流程图:房间号对应 的宿舍信息选择查询信息原如学生宿舍 管理系统按已入住 人数排序添加输入修改房间号

6、roomfor循环,扫描 存储学生信息修改对应 学生信息1.6第六浏览模块与如下图1.7类似开始循环,扫 描存储信息选出居住人数最 小的宿舍与第一 个宿舍交换在余下居住人数 中选出最少的与 第二个宿舍交换以此类推,直至排序完成数据类型整形、实型、字符型、指针、数组、结构等;运算类型算术 运算、逻辑运算、自增自减运算、赋值运算等;程序结构顺序结构、判断选 择结构、循环结构;大程序的功能分解方法即函数的调用与使用等,利用 数组对宿舍的记录进展循环输入输出, 利用冒泡法记录进展排序,利用循环查找 数组中某个数据,对其进展显示,删除,读入和写入文档等操作。1、void insert()录入系统所需的数

7、据;将录入的数据存储在文件中2、void seek()按要求对数据进展查询3、void modify()对数据进展更新操作4、void del()对数据进展删除操作5、void save()对指定数据进展统计并输出6、void sort()对指定数据排序并输出7、void reveal()对指定数据产生报表输出& void menu()功能目录显示请选择菜单编号请输入待增加的宿舍数请输入第1个宿舍的房间号输入4 11316请输入第1个宿舍的宿舍长请输入第1个宿舍的楼号请输入第1个宿舍的宿舍面积贾文超 1 40请输入第1个宿舍的房间容纳人数请输入第1个宿舍的宿舍成员6贾文超/陆秀和/杨晓

8、红/X永康/李正明/伟力请输入第1个宿舍的手机号请输入第1个宿舍的居住人数录入完毕!请选择菜单编号6结果:所有宿舍信息为:房间号宿舍长楼号宿舍面积房间容纳人数1316贾文超1406*宿舍成员手机号居住人数显示请选择菜单编号输入2请选择子菜单编号:1请输入要查询的宿舍的房间号:1316结果:房间号宿舍长楼号宿舍面积房间容纳人数1316贾文超1406*宿舍成员手机号居住人数显示输入请选择子菜单编号:8 6请选择菜单编号结果:房间号宿舍长楼号宿舍面积房间容纳人数请选择菜单编号请输入要修改的宿舍的房间号31316请输入新的宿舍面积请选择子菜单编号:501316贾文超1506*宿舍成员手机号居住人数调试

9、过程中,经常会出现输入或显示为乱码的情况,这往往是上下定义的数据类 型不同或定义数组长度不够所造成的。有时候程序中还会出现录入五个数据而只 显示四个的情况,这也往往是由于定义的结构体数组长度过低所造成的。像这类问题只要把数据类型都定义成字符型,并且定义一个合理的数组长度往往都能解 决。在调试过程中我遇到最大的问题出现在删除模块。在运用“打开文件并对某一数据进展删除后,往往显示会多显示一行数据。这是由于“写数据时只会 覆盖数据而不会去除原文件数据,因此文件最后一行数据总会保存在原文件中。 后来我先用“"打开文件并读取文件中的数据,然后再用“r"打开原文件将删除后的数据重新写入

10、文件,最终检测运行成功。1.1对自己设计进展评价,指出合理和不足之处,提出改良的方案本程序拥有很多的优点:第一,它具有作为一个宿舍管理系统的各个功能, 包括 录入信息、添加信息、修改信息、删除信息、查询信息、统计信息六大主要功能。可以方便的进展住宿学生信息的管理。 第二,它的各个功能模块在实现时非常方 便,例如:录入和添加学生信息可以自己控制录入和添加的人数;统计学生信息可以分学号、班级、专业等进展统计等等。“万事开头难这句话在我编写程序的过程中得到了真正的表现。在最初编写的几天里出现了这样那样的错误一大堆,这主要是由于我对根底知识掌握不扎实所 造成的。但是随后几天里,我对课本知识进展了回顾并

11、不时的向教师和同学进展 请教,慢慢的对编写程序也开始得心应手起来。程序的编写总归是一件费时费力 的事情,但只要我们认真编写和调试最后总能成功。短短的两周实习时间我收获颇多,我相信经过这次实习必将为我以后的深入 学习打下扎实的根底。某某院系班级学号贾文超信息工程学院机121120502陆秀和信息工程学院机121120506杨晓红信息工程学院机121120504X 永康信息工程学院机121120505参考文献:1.软件工程导论 第四版 清华大学出版2. C#开发实战宝典 王小科编著清华大学3. C#开发大全X丽霞编著清华大学出版5.C# 与.net开发网附录:源程序清单#include <s

12、tdio.h> /*1/0 函数 */#include <stdlib.h> /* 其它说明 */#include <string.h> /* 字符串函数 */#define BUFLENOO /* 缓冲区最大字符数 */#define LEN100 /*房间号和宿舍长最大字符数,实际请更改*/#define N1000 /*最大宿舍人数,实际请更改*/struct apartment /* 结构体 */char room LENH;/* 房间号 */char dormitoryleader LEN+1; /* 宿舍长 */int dormitory; /* 楼号

13、 */char area3; /* 宿舍面积 */char hold LENH;/* 房间容纳人数 */char member1000;/* 宿舍成员 */char tel LENH; /* 手机号 */char live number30;/* 居住人数 */stu Nint k=1,n,m; /* 定义全局变量*/void readfile(); /* 函数声明 */void seek();void modify();void insert();void del(); |void reveal();void save();void menu();int main()while (k)men

14、 u();system( "pause");return 0;void help()printf("n0.欢迎使用宿舍系统帮助!n”);printf( "n1.进入系统后,先刷新宿舍信息,再查询;n");printf("n2.按照菜单提示键入数字代号;n");printf("n3.增加宿舍信息后,切记保存按7;n");printf("n4.谢谢您的使用! n");void readfile() /* 建立信息 */char *p= "dormitory.txt" ;

15、FILE *fp;int i=0;if (fp=fopen( "dormitory.txt" , "r" )= NULLpri ntf("Ope n file %s error! Strike any key to exit!",p);system( "pause")订exit(O);while (fscanf(fp, "%s %s%d%s %s %s %s %sstui.room,stui.dormitoryleader,&stui.dorm itory,stui.area,stui.hold,

16、stui.member,stui.tel,stui.live number)=8)i+;i=i;fclose(fp); |n=i;printf("录入完毕! n");void seek() /* 查找 */int i,item,flag; |char s121;/*以宿舍长和房间号最长长度+1为准*/printf( "n");printf("1.按房间号查询-n");printf("2.按宿舍长查询-in");printf(-3.退岀本菜单-n");printf( "n");while

17、 (1)printf("请选择子菜单编号:");scanf( "%d",&item);flag=0;switch (item)case 1:printf("请输入要查询的宿舍的房间号:n");scanf( "%s",s1);for (i=0;i<n;i+)二|if (strcmp(stui.room,s1)=0)flag=1;printf("房间号宿舍长楼号宿舍面积房间容纳人数n");printf("-n");printf( "%0s %8s %3d

18、%7s %11s n" ,stui.room,stui.dormitoryleader,stui.dormitory, stui.area,stui.hold);printf( "*n");printf("宿舍成员手机号居住人数n”);printf("-n");printf( " %0s %20s %8sn" ,stui.member,stui.tel,stui.livenumber); if (flag=0)printf("该房间号不存在!n" ); break;case 2:printf(&

19、quot;请输入要查询的宿舍的宿舍长:n");scanf( "%s",s1);for (i=0;i<n;i+)|if (strcmp(stui.dormitoryleader,s1)=0)flag=1;printf("房间号宿舍长楼号宿舍面积房间容纳人数n");printf("-n");printf("%0s %8s %3d %7s %11s n" ,stui.room,stui.dormitoryleader,stui.dormitory,stui.area,stui.hold);printf(

20、"*n");printf("宿舍成员手机号居住人数n”);printf("-n");printf(" %0s %20s %8sn" ,stui.member,stui.tel,stui.livenumber);if (flag=0) |printf("该宿舍长不存在!n" ); break;case 3: return ;default :printf("请在 1-3 之间选择 n");void modify。/* 修改信息 */int i,item,num;char area13,s

21、1LENH,s2 LENH; /* 以宿舍长和房间号最长长度 +1为准*/printf("请输入要修改的宿舍的房间号:n");scanf( "%s",s1);for (i=0;i<n;i+)if (strcmp(stui.room,s1)=0) /* 比拟字符串是否相等 */n um=i;printf( "n");printf("1 .修改宿舍长n”);printf("2.修改楼号 n");printf("3.修改宿舍面积n" );"|printf("4.修改

22、房间容纳人数n");printf("5.修改宿舍成员n" ); |printf("6.修改手机号n”);printf("7.修改居住人数n" ); |printf("8.退岀本菜单n“);printf( "n");while (1)printf("请选择子菜单编号:");scanf( "%d",&item);switch (item)case 1:printf("请输入新的宿舍长:n");scanf( "%s",s2)

23、;strcpy(stunum.dormitoryleader,s2);break;case 2:printf("请输入新的楼号:n");scanf( "%d",&stunum.dormitory);break;case 3:printf("请输入新的宿舍面积:n");scanf( "%s",area1);strcpy(stunum.area,area1);break;case 4:printf("请输入新的房间容纳人数:n");scanf( "%s",s2);strc

24、py(stu num.hold,s2);break;case 5:printf(“请输入新的宿舍成员:n");scanf( "%s",s2);strcpy(stu num.member,s2);breakcase 6:printf( “请输入新的手机号:n");scanf( "%s",s2);strcpy(stunum.tel,s2);break;case 7:printf(“请输入新的居住人数:n");seanf( "%s",s2);strcpy(stu num.live number,s2);brea

25、k;ease 8: return ;default :printf("请在 1-8 之间选择 n");void sort() /*按居住人数排序*/int i,j,*p,*q,s;char temp100;for (i=0;i<n-1;i+)for (j=n-1;j>i;j-)if (strcmp(stuj-1.livenumber,stuj.livenumber)>0)strcpy(temp,stuj-1.room); | strcpy(stuj-1.room,stuj.room); strcpy(stuj.room,temp);strcpy(temp,

26、stuj-1.dormitoryleader);strcpy(stuj-1.dormitoryleader,stuj.dormitoryleader); strcpy(stuj.dormitoryleader,temp);strcpy(temp,stuj-1.area);strcpy(stuj-1.area,stuj.area); strcpy(stuj.area,temp);strcpy(temp,stuj-1.hold);strcpy(stuj-1.hold,stuj.hold);strcpy(stuj.hold,temp);strcpy(temp,stuj-1.member);strcp

27、y(stuj-1.member,stuj.member); strcpy(stuj.member,temp); strcpy(temp,stuj-1.tel);strcpy(stuj-1.tel,stuj.tel);|strcpy(stuj.tel,temp);strcpy(temp,stuj-1.live number);strcpy(stuj-1.live number,stuj.live number);strcpy(stuj.live number,temp);p=&stuj-1.dormitory;q=&stuj.dormitory;s=*q;*q=*p;*p=s;v

28、oid insert()/* 插入函数 */int i=n,j,flag;printf("请输入待增加的宿舍数:n");scanf( "%d",&m);doflag=1;while (flag)flag=0;printf("请输入第%d个宿舍的房间号:n" ,i+1);scanf( "%s",stui.room);for (j=0;j<i;j+)if (strcmp(stui.room,stuj.room)=0)printf("已有该房间号,请检查后重新录入!n");flag=1;

29、break; /*如有重复立即退岀该层循环,提高判断速度*/printf("请输入第 %d个宿舍的宿舍长:n" ,i+1);scanf( "%s" ,stui.dormitoryleader);printf("请输入第%d个宿舍的楼号:n" ,i+1);scanf( "%d",&stui.dormitory);printf("请输入第%d个宿舍的宿舍宿舍面积(mA2):n" ,i+1);scanf( "%s",stui.area);printf("请输入第%

30、d个宿舍的房间容纳人数:n" ,i+1);,i+1);scanf( "%s",stui.hold);printf("请输入第%d个宿舍的宿舍成员(注:人员之间加/):nscanf( "%s",stui.member);printf("请输入第%d个宿舍的手机号:n" ,i+1);scanf( "%s",stui.tel);printf("请输入第%d个宿舍的居住人数:n" ,i+1);seanf( "%s" ,stui.livenumber);if (fl

31、ag=O) "|i=i;i+;while (i<n+m);n+=m;printf("录入完毕! nn");sort();void del()int i,j,flag=O;char s1 LENH;printf("请输入要删除宿舍的房间号:n");scanf( "%s",s1);for (i=0;i<n;i+)二|if (strcmp(stui.room,s1)=0)flag=1;for (j=i;j<n-1;j+)stuj=stuj+1;if (flag=0) |printf("该房间号不存在!n

32、");if (flag=1) |printf("删除成功,显示结果请选择菜单6n");n-;void reveal()int i;printf("所有宿舍的信息为:n");printf("房间号宿舍长楼号宿舍面积房间容纳人数n");pr in tf("n");for (i=0;i<n;i+)二|printf("%0s %7s %5d %5s %9s n" ,stui.room,stui.dormitoryleader,stui.dormitory,stui.area,stui.hold);I*printf("宿舍成员手机号居住人数n");printf("-n");for (i=0;i<n;i+) _|printf( "%0s %10s %10sn" ,stui.member,stui.tel,stui.live

温馨提示

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

评论

0/150

提交评论