14级物联网C语言课设宿舍管理系统.docx
《14级物联网C语言课设宿舍管理系统.docx》由会员分享,可在线阅读,更多相关《14级物联网C语言课设宿舍管理系统.docx(30页珍藏版)》请在冰豆网上搜索。
![14级物联网C语言课设宿舍管理系统.docx](https://file1.bdocx.com/fileroot1/2022-11/15/e07758d6-fd2e-4507-81b9-385920629dd6/e07758d6-fd2e-4507-81b9-385920629dd61.gif)
14级物联网C语言课设宿舍管理系统
摘要
学生宿舍管理系统是一个学校不可缺少的重要部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生宿舍管理系统应该为用户提供充足的信息和快捷的查询手段。
利用计算机能够对所有学生的住宿进行统一管理,并进行分析,大大减少学校工作者的工作量,提高工作效率,为教学办公带来了极大的方便。
本系统本着实用性、通用、开放和安全的原则,使用编程软件VISUALC++6.0制作,实现了学生住宿信息输入、删除、学生住宿管理、住宿查询等功能。
该设计方法易于推广至其它信息化管理系统的设计,充分利用计算机作为辅助工具,实现学生住宿从传统的手工管理到计算机管理,对提高管理效率和节约大量的人力、物力有一定的推动作用。
关键词:
管理;宿舍;学生宿舍管理系统
1绪论
1.1概述
宿舍管理系统是目前各所高校后勤管理之中的重要部分,如何能科学有效的开展好宿舍管理部分的工作,是当前高校领导人和后勤管理人员关心的问题.因此,宿舍管理部分工作的信息化和科学化管理有着十分重要的实践意义,本系统旨在实现对现有的宿舍管理系统中遇到的宿舍信息情况和大量数据进行数据库存储的基础上,设计并完成对其宿舍信息的分类;查询,添加,删除和修改,在深入研究的过程中,尽可能实现方便友好的操作界面。
1.2开发目的
学生宿舍信息管理涉及大量的数据处理,如果用手工来完成庞大的数据处理,将费时费力,还容易出错,为了满足学校对学生宿舍管理的需要,急需要一套学生宿舍信息管理系统来完成这项工作。
作为计算机应用的一部分,使用计算机对学生宿舍信息进行管理,具有着手工管理所无法比拟的优点.例如:
输入迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学生宿舍信息管理的效率,也是学生宿舍管理的科学化、正规化管理的重要条件。
1.3管理信息系统的开发的要求
要为用户体现完美的系统性能,就必须以应用为核心,以实用、易用、好用三大主线为出发点,有一个正确的设计指导思想,通过合理选择数据结构、网络结构、操作系统以及开发环境,构成一个完善的网络体系结构,全面兼顾技术、应用与发展的和谐统一,才能充分发挥办公系统的优势。
根据调查,本系统的设计按照下述原则进行。
(1)实用性原则系统以用户需求为目标,以方便用户为原则。
同时,根据用户实际的需求情况,增加了数据的备份和恢复。
(2)易用性原则。
1.4小组分工
本系统总共有7个模块,具体小组分工如表1.1所示:
表1.1小组分工
王树康
显示模块、追加模块、查询模块
王鹏
修改模块、删除模块
王丽梅
排序模块、统计模块
2系统总体设计
2.1总体功能设计
学生宿舍管理系统存放了每个学生的学号、姓名、性别、班级、电话号码及所住的宿舍栋号、房间号、校区、宿舍类别的数据库。
每个人的信息定义在一个结构体变量中。
其结构如下:
系统通过显示程序、追加程序、查询程序、删除程序、修改程序、统计程序、排序程序来实现学生信息管理系统的显示功能、追加功能、查询功能、删除功能、修改功能、统计功能、排序功能。
各个功能的调用通过主函数中的switch语句来实现。
switch(sele)
{
case1:
Disp();break;(显示模块)
case2:
Appe();break;(追加模块)
case3:
Modi();break;(修改模块)
case4:
Dele();break;(删除模块)
case5:
Query();break;(查询模块)
case6:
Sort();break;(排序模块)
case7:
Total();break;(统计模块)
case8:
Quit();sele=0;break;(退出模块)
}
2.2各模块功能设计
1.显示模块
通过设计一个模块,来实现学生信息的显示。
以便于浏览学生的信息。
2.追加模块
通过设计一个模块,当要加入新的学生的信息的时候,来实现新学生信息的加入。
3.查询模块
通过设计一个模块,这个模块可以按学生的学号、姓名来查询学生所有的信息,并显示学生的所有信息,以便查询者阅读。
4.删除模块
通过设计一个模块,当输入一个学生的学号或者姓名的时候,可以通过这个模块,将输入学号或者姓名的学生的所有信息从数据库中删除出去。
以后,这个学生的信息将不再会出现再数据库中。
5.修改模块
通过设计一个模块,当某个人的信息发生变化的时候,可以通过修改模块来进行修改。
修改模块时一具有多级子菜单的摸块。
使用十分的方便、灵活。
6.统计模块
通过设计一个模块,能按指定的校区、宿舍栋号统计入住该栋的学生人数,或统计制指定的班级入住某栋的人数,并能将统计的结果以及统计的人员的信息用表格显示出来,是浏览者一目了然。
7.排序模块
通过设计一个模块,来实现数据库的信息按宿舍类别的升序排列。
并显示所有信息,使浏览者一目了然。
2.3系统总体模块框图
本系统有9个函数,其中1个主函数,8个子函数。
如图2.3所示
图2.1系统总体模块框图
3系统详细设计
3.1总流程图
进入系统进行选择,选择1进入显示模块,选择2进入追加模块,选择3进入修改模块,选择4进入删除模块,选择5进入查询模块,选择6进入统计模块,选择7进入排序模块,选择8返回选择界面。
如图3.1所示:
图3.1总流程图
3.2各模块流程图
3.2.1统计模块
统计模块实现了将指定的校区、宿舍栋号统计入住该栋的学生人数,或统计制指定的班级入住某栋的人数,并能将统计的结果以及统计的人员的信息用表格显示出来,是浏览者一目了然。
如图3.2所示:
图3.2统计模块
3.2.2排序模块
排序模块实现了将所有学生数据库的信息按宿舍类别的升序排列。
并显示所有信息,使浏览者一目了然。
如图3.3所示:
图3.3排序模块
3.3系统各模块的实现
3.3.1显示模块
程序通过一个printf函数把输出信息的表头打印出来,再通过一个for循环把每一个学生的信息输出,在输出的时候,通过调用Print函数(一个专门用来输出的函数,且是用指向结构体数组的指针输出学生信息)输出所有学生信息。
3.3.2追加模块
结构体中间的成员之间用空格来隔开输入,通过回车键来实现追加。
且追加一个学生信息后可选择继续追加或退出。
3.3.3修改模块
程序定义一个变量num1,来确定到底输入的是学号还是姓名。
通过一个for循环来确定数据库到底是否含有此人的信息。
如果含有此人的信息,则把此人的序号赋值给变量k,把标识变量flag赋值为1;如果不含有此人信息,则标识变量flag值仍为0。
再通过if语句,如果标识变量flag为0,则打印“查无此人”。
如果flag的值为1怎进入下一级菜单,通过switch语句来选择是修改这个人的宿舍栋号、房间号、性别、班级、电话号码、校区还是宿舍类别。
修改完成后通过调用Print函数输出修改后的新的所有学生信息。
每次修改成功之后可通过选择“是”或者“否”来选择是否继续修改学生信息。
3.3.4删除模块
程序通过定义一个变量num,来确定输入到底是学号还是姓名,或者退出删除模块。
通过一个for循环来确定数据库到底是否含有此人的信息。
如果含有此人的信息,则通过一个for循环,把这个以后的信息依次前推来覆盖这个人的信息,而实现此人信息的删除。
如果不含此人的信息,则打印“查无此人”。
每次删除结束之后通过选择“是”或者“否”来选择是否继续删除学生信息。
3.3.5查询模块
程序通过输入一个变量num来实现是按学号还是按姓名来查找,或者退出查询。
当输入完学号或者姓名的时候,再通过一个for循环来实现此人信息的查找。
当含有这个人的信息的时候,把标识变量flag赋值为1,并立即输出此人信息。
如果不含这个人的信息的时候,标识变量flag仍为0。
再通过一个if语句,如果标识变量flag为0,则打印“查无此人”。
用while循环保证程序在模块中查询。
每次查询结束之后通过选择“是”或者“否”来选择是否继续查询学生信息。
3.3.6统计模块
程序通过输入一个变量t来选择是按校区、宿舍栋号统计该栋入住学生人数还是按班级统计入住某栋的人数,或者退出统计模块。
再通过一个for循环来实现目标信息的查找。
定义标识变量flag,在for循环查找信息前赋值为零。
当每找到一个目标信息的时,把标识变量flag赋值为1,用变量num累加人数并并把此人信息赋给另一个结构体成员。
如果不含这个人的信息的时,标识变量flag仍为0。
最后输出统计的人数并通过for语句输出这些学生的信息,再通过一个if语句,如果标识变量flag为0,则打印出“查无此信息”。
每次统计结束之后可通过选择“是”或者“否”来选择是否继续统计其他学的信息信息。
3.3.7排序模块
程序运用起泡排序方法(从第一个数开始依次对相邻两数进行比较,如次序对则不进行任何操作;如次序不对则使这两个数交换位置。
第一遍的(N-1)次比较后,最大数已放在最后,第二遍只需考虑(N-1)个数,以此类推直到第(N-1)遍后就可以完成排序。
)对所有学生按宿舍类别进行升序排列,并通过调用Print函数输出排序后的数据。
4程序调试
4.1统计模块
在主菜单下输入6并回车,将进入统计模块的菜单,然后输入1将进行按校区、宿舍栋号统计该栋入住学生人数统计,输入2将进行按班级统计入住某栋的人数统计,输入3将退出统计模块。
如图4.1所示:
图4.1统计模块
4.2排序模块
在主菜单下输入7并回车进入排序程序下的菜单,然后输入1将进行按宿舍类别排序(升序),输入2将返回原界面。
如图4.2所示:
图4.2排序模块
5总结与体会
这是我第一次做这么大型的且比较复杂的一个C程序,以前接触到的C程序设计都是最简单、最基本的编程,就连最后的期末考试也只是一些小程序,并不像课程设计这样庞大复杂。
小程序是考察我们对基本概念的熟识,而这种大程序则是考察了我们对整体构架的设计以及各种小程序的拼接,看似不难,实则会遇到许多意想不到的困难,当然,这过程当中我学到了许多。
刚开始接到任务书的时候我感到无从下手,知道应该注重链表但是仍旧无法从整体上设计出这个程序,后来经过网上的搜索资料以及和其他同学的讨论,对这个科研项目信息管理系统进行一些列分块,拆成几个部分,然后再逐个突破,这样显得有条理且方便。
接下来是真正开始动手写程序,随之而来的是一些列的问题,其中最困扰我的是十字链表,过去我们使用的一般是单向链表,虽然在此基础上建立十字链表并不困难,但是如何保存则成了一个难题,后来经过对书本的钻研解决了次问题,从中我更加了解各种文件操作函数的用法。
在所有内核做好之后,接下来就是界面的问题,最开始的时候我考虑做图形界面,但是由于时间比较紧迫,不得不放弃,只好做了一个简易菜单,菜单设计容易,可是将界面和程序内核结合起来却又是一个难题。
最后将这些函数和文件组合在一起后,终于形成了一个完整的可以运行的系统。
由于我只是C语言初学者,虽然啃过书本,但是仍能力有限,所以界面不够漂亮,有些功能也不够完善,但是我能够做出一个可以正确运行的科研项目信息管理系统已是很有成就感,尽管它不完善。
这次课程设计,巩固了我的C语言的知识,锻炼了我的动手能力,让我在这一方面有了进一步的提升。
其实,让我感触最深刻的是,学好C语言,不仅仅在于啃光书本上的知识,考试能得高分,最重要的是实践!
俗语云:
实践出真知。
只有动手了才会更快发现自己的错误,以便于及时改正,才能更快的提升自己的能力,纸上谈兵终究只是一段段空话,毫无实际意义!
当然,不仅仅是在学习这一门语言方面有了认知,在其他方面也有了一些认识,最大的收获是写课设让我更加细心,我往往由于一个符