基于C学生宿舍管理系统文献综述.docx
《基于C学生宿舍管理系统文献综述.docx》由会员分享,可在线阅读,更多相关《基于C学生宿舍管理系统文献综述.docx(19页珍藏版)》请在冰点文库上搜索。
![基于C学生宿舍管理系统文献综述.docx](https://file1.bingdoc.com/fileroot1/2023-6/22/d0445255-3ac0-4963-8103-ed4ee93d6560/d0445255-3ac0-4963-8103-ed4ee93d65601.gif)
基于C学生宿舍管理系统文献综述
基于C#的学生宿舍管理信息系统的
设计及实现
【摘 要】针对高校学生宿舍管理工作的特点,建立了高校学生宿舍管理信息系统,提出了宿舍信息管理工作的新途径,在大大提高管理工作效率的同时,为管理者提供真实可靠的决策支持。
同时并对该系统的结构、系统数据库的设计及复杂功能模块的实现做出较详细的叙述。
【关键词】学生宿舍,管理信息系统,数据库
一引言
宿舍,是大学生在高校校园里一个重要的学习、生活、交往的空间环境。
随着近几年高校招生人数的不断扩大,学生的宿舍管理工作也越来越繁重和琐碎。
比如:
一年一度的新生住宿安排[1];各种查询问题,如:
由某学生的姓名查出该生的宿舍号、班级等信息。
随着高校办学规模的扩大,在校学生的学历层次、思想状态、文化水平呈多样化、复杂化趋势,这在很大程度上给学生管理工作带来许多新的问题[2]。
随着学生人数的增多,高校学生宿舍管理的信息量日益庞大,而目前我国高校学生宿舍管理仍采用传统的工作方式——账本化的工作模式,这种模式获取信息慢,查阅困难,准确性差,很难适应高水平宿舍管理的需要。
学生宿舍信息管理具有程序性、规范性和技术性等确定性因素,利于通过计算机智能化辅助管理。
近年来有些高校开始建立并使用管理信息系统管理学生宿舍[3],但分析发现这些系统内容不够全面,基本不具备辅助决策的功能。
本文建立的高校学生宿舍管理信息系统在以往研究的基础上,增加了方法库和知识库,能够在管理大量信息的基础上,自动完成数据的统计分析,为管理者提供决策支持。
该系统的建立和使用,旨在提高后勤工作的效率和准确性,减少工作的盲目性,提高工作人员的专业素质,对后勤工作起指导和监督作用。
二系统的设计与实现
1.1总体设计思想
(1)应用原型方法进行开发。
原型方法将系统分析、设计、实施三个阶段融为一体,使操作者更便于使用该系统。
(2)选用灵活、方便、友好的用户界面。
首先,为操作者准备灵活的容错输入形式;其次,能使用户随时了解系统的动向并随时参与决策过程;第三,引入原型系统作为用户界面的重要组成部分。
(3)采用方法库管理系统对各种信息的处理方法进行管理。
方法库管理系统通常包括方法模型的生成、存放、分解、合成、选择等内容,借助于这一技术高效率地自动处理整个学生宿舍管理系统的各种数据和事务,随时对决策的产生提供支持。
(4)利用知识库辅助决策。
将各级机构下发给宿舍管理部门的规定、细则等文件分门别类地存储到相应物理位置,在完成各项工作时可以随时调出相应的文件进行察看,避免不必要的疏漏;按照文件的执行日期等关键信息进行提示,督促各项工作的按时开展。
(5)以开放性思想贯穿于整个设计。
开放性思想表现为作为系统基础的数据库、方法库和知识库的开放性和有关模型的开放性使用,采用开放性设计有利于模型的修改、调整和完善。
2.2结构设计
2.2.1总体结构
高校学生宿舍信息管理系统应由数据库管理系统、方法库管理系统和知识库管理系统组成。
其结构如图1所示。
2.2.2菜单结构
高校学生宿舍信息管理系统的菜单分为三个层次:
一级菜单,即系统的主菜单由系统维护、数据库管理系统、方法库管理系统、知识库管理系统以及帮助等菜单组成;二级菜单包括各个系统的具体业务,例如数据库管理系统包括住宿学生信息管理等5个二级菜单,方法库管理系统包括住宿人员统计方法等6个二级菜单;系统的三级菜单则具体体现每一项管理业务的操作和具体方法,例如住宿学生信息管理中包括的编辑、浏览、查询和报表打印等,住宿人员统计方法中包括总和法、平均值法等方法的管理菜单。
2.3数据库结构设计
结合天津大学学生宿舍管理实际,通过对学生宿舍信息管理所需数据文件的特点分析,本系统在设计时将学生宿舍管理信息系统数据库模块设计为住宿学生信息管理模块、学生宿舍使用信息管理模块、学生宿舍设备信息管理模块、学生宿舍卫生信息管理模块和宿管人员信息管理模块五个功能模块,上述各功能模块分别对应五种形式的Paradox7.0数据表。
例如,在住宿学生信息管理数据表中,通过对涉及此项内容的有关字段进行分类调整,并考虑到记录查询和编辑的方便,将住宿学生的基本信息(学号、姓名、房间号、性别、学院、专业、班级、籍贯、联系电话、指导教师等)分别存储于数据表中。
在学生宿舍设备信息管理数据表中,对宿舍的每一个设备进行编码,并存储各个设备的使用情况。
图1 学生宿舍信息管理系统结构简图
2.4系统的数据库
本系统中的方法库是一组数学模型和实施方法的集合,它的特点在于灵活性。
方法库管理系统中的各种统计方法和管理方法有着内在的相似性,原因在于它们将相同的计算数学模型作为计算核心。
当使用方法库的一个具体统计方法时,将该计算核心与相应的数据通过SQL语言结合在一起,完成特定的统计工作和管理工作,并将工作的结果返回到程序界面中供操作者参考。
方法库中的各个数学模型和管理方法可以根据具体的工作需要随时通过程序进行修改。
要使方法库真正达到各种方法和具体数据的交叉调用,需要与多种计算机手段联合使用。
由于本系统的计算和统计不需太繁琐,所以在设计时主要以Del2phi自编计算程序为主,Matlab计算程序为辅,其他一些管理方法的程序(如自动分配宿舍程序)也由Delphi自编程序完成。
通过Delphi主程序的数据库技术处理计算程序所需的参数,再通过计算程序计算。
可见,方法库的结构设计是特殊的,本系统将计算程序作为特殊的文件存储在计算机中随时调用,并将其所需的参数放在数据库中,例如,方法ID、名称、存储路径、参数序列等。
2.5知识库结构设计
知识库系统分四个类别,分别用于存放学校下达的各种管理规章、制度。
本系统的知识库是一种特殊的数据库,其操作对象是单位数据庞大的文件。
鉴于这种数据类型在Paradox数据库中不宜直接存取,在本系统的编制工作中将数据的主体部分以一般文件的形式存储在计算机中,将其它有关这些文件的信息存储于数据库中,例如文件的身份号、类别、名称、存取路径、下发单位、日期等,这样既有利于数据库的安全性和消除冗余,还能提高整个系统的运行速度。
三系统的功能
本文建立的高校学生宿舍管理信息系统是在管理信息系统的基础上,增加了方法库和知识库的管理,不仅能完成对日常工作数据的存储、编辑和浏览,还能对这些数据进行智能处理,并提高了文件的传递速度和保存效率。
本系统是管理信息系统的延伸,是决策支持系统的一个实例。
实际使用中,数据库管理系统和知识库管理系统是操作者最常用的。
方法库管理系统由系统的开发者按照使用者的意图对其中的方法做定期的修改,一般情况下,不需要操作者对此系统进行操作。
数据库管理系统主要用于学生宿舍管理信息系统数据库中所需基础数据和统计数据的增删、修改、浏览、查询及报表打印等操作,是整个系统的基础和功能核心。
在查询功能中,要用到方法库中的各种统计方法;在宿舍房屋使用信息管理功能中要用到方法库中的宿舍自动分配方法。
方法库管理较为简单,它的操作主要为数据库管理系统服务。
当需要增删或编辑方法库中的方法时,只需将这种方法的计算文件通过存取路径读取或存储。
当数据库管理系统用到某种方法时,将这种方法所需的参数传递给计算文件即可。
知识库则是独立于数据库和方法库存在的。
知识库中的文件以文档和图片的形式存在,当需要增删、编辑知识库中的文件时,只需将这个文件通过存取路径读取或存储。
对知识库进行操作时,要把每个知识文件的附属信息记录清楚,有利于日后对这些文件的查询、浏览。
系统还可以根据文件的执行日期自动为管理者提供日程安排。
四结论
本文介绍的高校学生宿舍管理系统已在天津大学学生宿舍管理中试运行,使用效果良好,初步取得了以下效果:
(1)操作简单,实用性强,能够快速地向管理者提供住宿学生的各种基本信息,大大提高了工作效率;
(2)编辑、浏览、查询及统计等均实现数据库管理,纸质文件的流转被电子邮件代替,节约了办公经费;(3)实现了对数据的智能处理,为领导决策起到了一定的辅助作用;(4)提高了工作人员的专业素质,使宿舍管理工作更加科学化和规范化。
#include/*I/O函数*/
#include/*其它说明*/
#include/*字符串函数*/
#defineBUFLEN100/*缓冲区最大字符数*/
#defineLEN15/*学号和姓名最大字符数,实际请更改*/
#defineN100/*最大学生人数,实际请更改*/
structrecord/*结构体*/
{
charcode[LEN+1];/*学号*/
charname[LEN+1];/*姓名*/
intage;/*年龄*/
charsex[3];/*性别*/
chartime[LEN+1];/*出生年月*/
charadd[30];/*家庭地址*/
chartel[LEN+1];/*电话号码*/
charmail[30];/*电子邮件地址*/
}stu[N];
intk=1,n,m;/*定义全局变量*/
voidreadfile();/*函数声明*/
voidseek();
voidmodify();
voidinsert();
voiddel();
voiddisplay();
voidsave();
voidmenu();
intmain()
{
while(k)
menu();
system("pause");
return0;
}
voidhelp()
{
printf("\n0.欢迎使用系统帮助!
\n");
printf("\n1.进入系统后,先刷新学生信息,再查询;\n");
printf("\n2.按照菜单提示键入数字代号;\n");
printf("\n3.增加学生信息后,切记保存按7;\n");
printf("\n4.谢谢您的使用!
\n");
}
voidreadfile()/*建立信息*/
{
char*p="student.txt";
FILE*fp;
inti=0;
if((fp=fopen("student.txt","r"))==NULL)
{
printf("Openfile%serror!
Strikeanykeytoexit!
",p);
system("pause");
exit(0);
}
while(fscanf(fp,"%s%s%d%s%s%s%s%s",stu[i].code,stu[i].name,&stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8)
{
i++;
i=i;
}
fclose(fp);
n=i;
printf("录入完毕!
\n");
}
voidseek()/*查找*/
{
inti,item,flag;
chars1[21];/*以姓名和学号最长长度+1为准*/
printf("------------------\n");
printf("-----1.按学号查询-----\n");
printf("-----2.按姓名查询-----\n");
printf("-----3.退出本菜单-----\n");
printf("------------------\n");
while
(1)
{
printf("请选择子菜单编号:
");
scanf("%d",&item);
flag=0;
switch(item)
{
case1:
printf("请输入要查询的学生的学号:
\n");
scanf("%s",s1);
for(i=0;iif(strcmp(stu[i].code,s1)==0)
{
flag=1;
printf("学生学号学生姓名年龄性别出生年月地址电话E-mail\n");
printf("--------------------------------------------------------------------\n");
printf("%6s%7s%6d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
if(flag==0)
printf("该学号不存在!
\n");break;
case2:
printf("请输入要查询的学生的姓名:
\n");
scanf("%s",s1);
for(i=0;iif(strcmp(stu[i].name,s1)==0)
{
flag=1;
printf("学生学号学生姓名年龄性别出生年月地址电话E-mail\n");
printf("--------------------------------------------------------------------\n");
printf("%6s%7s%6d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
if(flag==0)
printf("该姓名不存在!
\n");break;
case3:
return;
default:
printf("请在1-3之间选择\n");
}
}
}
voidmodify()/*修改信息*/
{
inti,item,num;
charsex1[3],s1[LEN+1],s2[LEN+1];/*以姓名和学号最长长度+1为准*/
printf("请输入要要修改的学生的学号:
\n");
scanf("%s",s1);
for(i=0;iif(strcmp(stu[i].code,s1)==0)/*比较字符串是否相等*/
num=i;
printf("------------------\n");
printf("1.修改姓名\n");
printf("2.修改年龄\n");
printf("3.修改性别\n");
printf("4.修改出生年月\n");
printf("5.修改地址\n");
printf("6.修改电话号码\n");
printf("7.修改E-mail地址\n");
printf("8.退出本菜单\n");
printf("------------------\n");
while
(1)
{
printf("请选择子菜单编号:
");
scanf("%d",&item);
switch(item)
{
case1:
printf("请输入新的姓名:
\n");
scanf("%s",s2);
strcpy(stu[num].name,s2);break;
case2:
printf("请输入新的年龄:
\n");
scanf("%d",&stu[num].age);break;
case3:
printf("请输入新的性别:
\n");
scanf("%s",sex1);
strcpy(stu[num].sex,sex1);break;
case4:
printf("请输入新的出生年月:
\n");
scanf("%s",s2);
strcpy(stu[num].time,s2);break;
case5:
printf("请输入新的地址:
\n");
scanf("%s",s2);
strcpy(stu[num].add,s2);break;
case6:
printf("请输入新的电话号码:
\n");
scanf("%s",s2);
strcpy(stu[num].tel,s2);break;
case7:
printf("请输入新的E-mail地址:
\n");
scanf("%s",s2);
strcpy(stu[num].mail,s2);break;
case8:
return;
default:
printf("请在1-8之间选择\n");
}
}
}
voidsort()/*按学号排序*/
{
inti,j,*p,*q,s;
chartemp[10];
for(i=0;i{
for(j=n-1;j>i;j--)
if(strcmp(stu[j-1].code,stu[j].code)>0)
{
strcpy(temp,stu[j-1].code);
strcpy(stu[j-1].code,stu[j].code);
strcpy(stu[j].code,temp);
strcpy(temp,stu[j-1].name);
strcpy(stu[j-1].name,stu[j].name);
strcpy(stu[j].name,temp);
strcpy(temp,stu[j-1].sex);
strcpy(stu[j-1].sex,stu[j].sex);
strcpy(stu[j].sex,temp);
strcpy(temp,stu[j-1].time);
strcpy(stu[j-1].time,stu[j].time);
strcpy(stu[j].time,temp);
strcpy(temp,stu[j-1].add);
strcpy(stu[j-1].add,stu[j].add);
strcpy(stu[j].add,temp);
strcpy(temp,stu[j-1].tel);
strcpy(stu[j-1].tel,stu[j].tel);
strcpy(stu[j].tel,temp);
strcpy(temp,stu[j-1].mail);
strcpy(stu[j-1].mail,stu[j].mail);
strcpy(stu[j].mail,temp);
p=&stu[j-1].age;
q=&stu[j].age;
s=*q;
*q=*p;
*p=s;
}
}
}
voidinsert()/*插入函数*/
{
inti=n,j,flag;
printf("请输入待增加的学生数:
\n");
scanf("%d",&m);
do
{
flag=1;
while(flag)
{
flag=0;
printf("请输入第%d个学生的学号:
\n",i+1);
scanf("%s",stu[i].code);
for(j=0;j
if(strcmp(stu[i].code,stu[j].code)==0)
{
printf("已有该学号,请检查后重新录入!
\n");
flag=1;
break;/*如有重复立即退出该层循环,提高判断速度*/
}
}
printf("请输入第%d个学生的姓名:
\n",i+1);
scanf("%s",stu[i].name);
printf("请输入第%d个学生的年龄:
\n",i+1);
scanf("%d",&stu[i].age);
printf("请输入第%d个学生的性别:
\n",i+1);
scanf("%s",stu[i].sex);
printf("请输入第%d个学生的出生年月:
(格式:
年.月)\n",i+1);
scanf("%s",stu[i].time);
printf("请输入第%d个学生的地址:
\n",i+1);
scanf("%s",stu[i].add);
printf("请输入第%d个学生的电话:
\n",i+1);
scanf("%s",stu[i].tel);
printf("请输入第%d个学生的E-mail:
\n",i+1);
scanf("%s",stu[i].mail);
if(flag==0)
{
i=i;
i++;
}
}
while(in+=m;
printf("录入完毕!
\n\n");
sort();
}
voiddel()
{
inti,j,flag=0;
chars1[LEN+1];
printf("请输入要删除学生的学号:
\n");
scanf("%s",s1);
for(i=0;iif(strcmp(stu[i].code,s1)==0)
{
flag=1;
for(j=i;jstu[j]=stu[j+1];
}
if(flag==0)
printf("该学号不存在!
\n");
if(flag==1)
{
printf("删除成功,显示结果请选择菜单6\n");
n--;
}
}
voiddisplay()
{
inti;
printf("所有学生的信息为:
\n");
printf("学生学号学生姓名年龄性别出生年月地址电话E-mail\n");
printf("--------------------------------------------------------------------\n");
for(i=0;i{
printf("%6s%7s%5d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
}
voidsave()
{
inti;
FILE*fp;
fp=fopen("student.txt","w");/*写入*/
for(i=0;i{
fprintf(fp,"%s%s%d%s%s%s%s%s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
fclose(fp);
}
voidmenu()/*界面*/
{
intnum;
printf("*********************系统功能菜单************************\n");
printf("友情提醒:
查询前请先刷新系统!
\n");
printf("--------------------------------------------\n");
printf("*********************************************\n");
printf("*0.系统帮助及说明**1.刷新学生信息*\n");
printf("********************