太原理工大学学生公寓管理系统

更新时间:2024-05-08 16:57:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章引言

第一章 引 言

学生宿舍管理系统对于一个学校来说是必不可少的组成部分。目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的。而且当查找某条记录时,由于数据量庞大,还只能靠人工去一条条的查找,这样不但麻烦还浪费了许多时间,效率也比较低。当今社会是飞速进步的世界,原始的记录方式已经被社会所淘汰了,计算机化管理正是适应时代的产物。信息世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并取代旧技术。21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。我们针对如此,设计了一套学生宿舍管理系统。学生宿舍管理系统采用的是计算机化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。由于数据库存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。本系统具有运行速度快、安全性高、稳定性好的优点,并且具备完善的报表生成、修改功能,能够快速的查询学校所需的住宿信息。

1

第二章 系统需求分析

目前,我们学校的宿舍管理采用的还是人工来进行管理的, 面对目前学校发展的实际状况,我们通过实地调研之后,对宿舍管理系统的设计开发做了一个详细的概述。 2.1功能需求 2.1.1 基本功能需求

本课题要实现的是高校学生宿舍管理系统,在设计该系统时,应尽可能的贴近学生,便于用户操作。系统在实现上应该具有如下功能:

1.系统要求用户必须输入正确的用户名和密码才能进入系统。 2.系统应该提供学生住宿情况的基本登记。 3.系统应提供学生每学期学生的离校处理。

4.系统应提供人员来访登记及结束访问的详细登记。 5.系统应提供学生在校期间物品出入宿舍楼的详细情况登记。 6.系统应提供查询功能,以方便用户对学生基本信息的查询(要实现按多种条件的查询)。

7.系统应提供增加、删除、修改用户帐户的功能。 8.系统还应具有添加、修改、删除学生基本信息的功能。

2.1.2 报表需求

学生宿舍管理系统的某些信息应当能够以报表形式打印出来。基本上应该能够实现扣分统计、和卫生评比的报表打印功能。 2.1.3 用户界面需求

学生宿舍管理系统应提供简单、层次关系明了、清晰的操作界面,使用户一目了然。尽可能的为用户的录入、查询等功能操作提供方便。快捷按钮的创建也是非常需要的,以方便用户操作。 2.2性能需求 2.2.1系统安全性

学生宿舍管理系统中的增加用户、学生毕业离校等的某些模块都是相联系在一起的,所以在系统的管理权限上应当进行严格控制,具体思想如下:

1.要想对该学生宿舍管理系统进行操作就应当具有某些操作权限。没有权限的用户将不能通过任何渠道来登录该系统,查看该系统的任何信息和数据,以确保系统的严密性和安全性。

2.在上述要求基础上可以为该系统设定三种登录方式,程序开始运行所有功能将是不可使用的,只有系统管理员登录、普通用户登录和只读用户三个窗口可以使用,没有系统管理员或者普通用户的用户名和密码任何人都不能登录该系统进行操作。

3.在具体实现时还应为系统管理员和普通用户设定不同的权限,系统管理员应当可以使用系统的所有模块,普通用户对于大部分的很关键的模块是无权使用的。只读用户只能观看数据对任何模块都无权

修改。 2.3数据库选择

数据库是数据管理的最新技术,是计算机科学的重要分支。十年来,数据库管理系统已从专用的应用程序包发展成为通用系统软件。由于数据库具有数据结构化、最低冗余度、较高的程序与数据独立性、易于扩充、易于编制应用程序等优点,较大的信息系统都是建立在数据库设计之上的。我们选用的是SQL Server 2008 R2。 2.4环境

本系统是以Windows系统为操作平台,用C#编程语言和SQL Server 2008 R2数据库来实现高校学生宿舍管理系统所需功能的。

第三章 宿舍管理系统概要设计

3.1系统功能模块图

高校 学生 公 寓管 理 系统 卫生评比 入住管理 宿舍管理 退宿管理 公物报修 信息查询 学生查询 用户帐号 帐号设置 退出系统 周查扣分 卫生评比 扣分统计 系统功能模块图

5

出入管理 来访登记 出入楼登记

公物报修登记窗口完成的是记录宿舍损坏公物的功能。操作人员可以通过在窗口中同时选中各项公物损失信息,然后利用“存盘”功能将信息保存到数据库中中。

4.3.3信息查询窗口详细设计

1.学生查询 按学号查询 显示查询结果 按姓名查询 按班级查询 按寝室号查询 学生信息查询 登录系统

显示查询结果 显示查询结果 显示查询结果 按学号进行查询、按姓名进行查询、按班级查询、按寝室号查询这4个查询功能在具体编程实现上基本上是一样的,因为都是针对学

16

生信息的查询。以下是这四个功能模块的详细实现过程。

具体实现:

1.按学号查询

设计思想:在按学号查询时首先要通过编程判断一下,数据库的学生信息表中是否存在该编号的学生,如果没有系统将不会显示数据所以只有存在学号才能进行查询。上述完成之后,输入所查询的学号,那么所需学生信息就会在下面表格中显示出来了。 2.按姓名进行查询

设计思想:按学生姓名实现的查询,虽然这样查出来的学生有可能不止一名,但在有些情况下(比如家人、朋友来访时,只记得学生姓名,在不清楚其学号、宿舍号的情况下,可以通过学生信息中的其它信息确定所要找的学生)可以调用此功能来实现。

3.按班级进行查询

设计思想:实现某个班级所有学生基本信息及住宿情况的查询。通过该功能模块我们可以统计某个班级的宿舍分配情况,这个班级的学生都住在哪些寝室中。

4.按寝室号查询

设计思想:在输入寝室号时可以把该宿舍所住的所有学生的信息都统计出来,方便详细了解某宿舍的学生住宿情况。 4.3.4卫生评比模块详细设计

调查扣分 管理员 登录系统 否 是 17 扣分统计 卫生评比

设计思想:

(1).由于需要和数据库表相关联,所以也添加了两个数据窗口控件实现两者之间的关联

(2).具有基本的增加、删除、保存、退出功能,由于考虑到数据被有意的、数据的输入与修改必须取得相应的权限。

(3).为方便对评比情况的统计,只要选择相应的排序条件,在窗口中显示结果。

4.3.5出入管理模块详细设计

1.来访登记与物品出入登记

来访登记出入管理 登录系统 18 物品出入登记

否 输入正是 显示并保存登记 输入正是 显示并保存登记 否 输入来访信息 输入物品信息

设计思想:

来访登记管理是对每栋宿舍楼来访人员或物品出入的基本信息进行录入,具体实现:

(1).由于需要和数据库表相关联,所以也添加了两个数据窗口控件实现两者之间的关联。

(2). 在具有在基本的增加、删除、保存、退出功能外还具有数据窗口共享,在下边的自由表内输入数据,上边的表只能对数据浏览,同时当鼠标在上边的表中选中一个人的信息,相应在下边的数据窗口的自由表中会出现和其相同的数据。

(3). 在具体实现时需要设置像楼房号这样的具有唯一确定性的字段是不能为空的。其他字段在输入时没有太大限制,录入人员在录入时需根据自身情况再进行添加。

19

数据库与数据表设计

数据库分析与创建 宿社管理系统主要记录一个学校中的所有学生的住宿情况。SQL Express数据库在安全性,准确性和运行速度方面有觉对的优势,并且处理数据量大、效率高,所以本系统采用了SQLExpress 数据库作为后台数据库。数据库命名为dormMISDataSet,其中包含了7张数据表,用于存储不同的信息,数据库详细信息如下图:

2 创建数据表

20

1. Student( 学生表)

2 . Repair(学生宿舍修理表)

3. Register(学生宿舍来访登记表)

4. CheckInfo(学生宿舍卫生检查表)

21

5. dorm(宿舍表)

6. userInfo(系统管理员表)

7. Charge(水电收费表)

22

3 数据表逻辑关系

23

第五章.创建项目

在Visual Studio 2010中创建项目

1. 运行Viual Studio 2010

2. 依次单击【文件】|【新建】|【空白解决方案】,打开新建项目对话框, 在【项目类型】中选择【Visual Studio解决方案】,填写合适的名称和位置, 单击确定按钮,建立一个空白解决方案。

3. 在【解决方案资源管理器】中,右击建立的解决方案,单击【添加】 |【新建项目】,打开添加新项目对话框,在左侧的【项目类型】中选择 【Visual C#项目】,在右侧的【模板】中选择【Windows应用程序】,填写合 适的名称,单击确定按钮,就建立了一个新的项目。

第六章.登录模块设计

6.1 设计登录窗体

本模块使用数据表:userInfo

登录模块主要是通过输入正确用户名和密码进入主窗体。他可以提高程序的安全性,保护数据资料不外泄。登录窗体如下图:

24

6.2 登录功能的实现

当用户输入用户名和密码正确时点击确定按钮便进入主窗体,若有错则提示用户。

详细代码如下: namespace DormMIS { public class Login : System.Windows.Forms.Form { private System.Windows.Forms.Button btClose;//取消按钮

25

private System.Windows.Forms.Button btAdd; private System.Windows.Forms.TextBox password; private System.Windows.Forms.TextBox name; private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label1;

public Login()

{

// Windows 窗体设计器支持所必需的 InitializeComponent(); this.oleConnection1=new

OleDbConnection(DormMIS.database.dbConnection.connection); } private void InitializeComponent() { this.btClose = new System.Windows.Forms.Button(); this.btAdd = new System.Windows.Forms.Button(); this.password = new System.Windows.Forms.TextBox(); this.name = new System.Windows.Forms.TextBox(); this.label3 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label(); this.SuspendLayout(); this.btClose.FlatStyle = System.Windows.Forms.FlatStyle.Popup; this.btClose.ForeColor = System.Drawing.Color.Black; this.btClose.Location = new System.Drawing.Point(168, 156); this.btClose.Name = \ this.btClose.TabIndex = 20; this.btClose.Text = \取消\ this.btClose.Click += new System.EventHandler(this.btClose_Click); this.btAdd.FlatStyle = System.Windows.Forms.FlatStyle.Popup; this.btAdd.ForeColor = System.Drawing.Color.Black; this.btAdd.Location = new System.Drawing.Point(48, 156);

26

// password this.password.BorderStyle

System.Windows.Forms.BorderStyle.FixedSingle; this.password.Location = new System.Drawing.Point(128, 116); this.password.Name = \ this.password.PasswordChar = '*'; this.password.TabIndex = 18; this.password.Text = \ // name this.name.BorderStyle

System.Windows.Forms.BorderStyle.FixedSingle; this.name.Location = new System.Drawing.Point(128, 76); this.name.Name = \ this.name.TabIndex = 17; this.name.Text = \

this.btAdd.Name = \this.btAdd.TabIndex = 19; this.btAdd.Text = \确定\

this.btAdd.Click += new System.EventHandler(this.btAdd_Click);

=

=

this.label1.Font = new System.Drawing.Font(\楷体_GB2312\18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134))); this.label1.ForeColor = System.Drawing.Color.Black; this.label1.Location = new System.Drawing.Point(40, 24); this.label1.Name = \ this.label1.Size = new System.Drawing.Size(208, 28); this.label1.TabIndex = 14; this.label1.Text = \宿舍管理信息系统\ // Login this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); this.BackColor = System.Drawing.Color.Ivory;

27

this.ClientSize = new System.Drawing.Size(296, 198); this.Controls.Add(this.btClose); this.Controls.Add(this.btAdd); this.Controls.Add(this.password); this.Controls.Add(this.name); this.Controls.Add(this.label3); this.Controls.Add(this.label2); this.Controls.Add(this.label1); this.MaximizeBox = false; this.MinimizeBox = false; this.Name = \ this.StartPosition

System.Windows.Forms.FormStartPosition.CenterScreen;

=

this.Text = \登录\ this.ResumeLayout(false); } #endregion /// 应用程序的主入口点。 static void Main() { Application.Run(new Login()); } private void btAdd_Click(object sender, System.EventArgs e) { if(name.Text.Trim()==\ MessageBox.Show(\请输入用户名和密码\提示\ else { oleConnection1.Open(); OleDbCommand cmd=new OleDbCommand(\ string sql=\* from userinfo where UName='\ cmd.CommandText=sql; if (null!=cmd.ExecuteScalar()) { this.Visible=false; //创建并打开主界面 Main main=new Main(); main.Tag=this.FindForm();

28

}

}

}

} else

OleDbDataReader dr; cmd.CommandText=sql; dr=cmd.ExecuteReader(); dr.Read();

main.statusBarPanel2.Text=name.Text.Trim(); main.ShowDialog();

MessageBox.Show(\用户名或密码错误\警告\

}

oleConnection1.Close();

private void btClose_Click(object sender, System.EventArgs e) { this.Close(); }

第七章.系统主窗体设计

主窗体设计是程序操作过程中必不可少的,它是人机交互的重要环节。通过主窗体,用户可以调用系统相关的个子模块。主窗体被分为4个部分:最上面是系统菜单栏,通过它可以调用系统中的所有子窗体;菜单栏下面导航栏,它以按钮的形式使用户能够方便的调用最常用的子窗体;加下来是显示信息的窗体区;最下面是状态栏,用来显示当前登陆的用户名。主窗体如下图:

29

图:

7.1 设计菜单栏和工具栏

菜单栏和工具栏运行效果如图:

图:

图:

30

7.2 设计状态栏

状态栏的运行效果如图:

图:

第八章.其它各模块的设计

其他各模块的设计下面以宿舍检查窗体和添加宿舍的设计作为示范。

8.1 宿舍检查窗体如下:

31

8.2 宿社检查窗体的部分代码实现

private void btQuery_Click(object sender, System.EventArgs e) { oleConnection1.Open(); ds = new DataSet(); string sql=\dormID as 宿舍号,CDate as 检查日期,CState as 检查情况,CRemark as 备注,CheckID as 检查编号 from checkinfo\ if (textDormID.Text.Trim()==\ sql=sql; else sql=sql+\ OleDbDataAdapter adp = new OleDbDataAdapter(sql,oleConnection1); ds.Clear(); adp.Fill(ds,\ dataGrid1.DataSource = ds.Tables[0].DefaultView; dataGrid1.CaptionText = \共有\条记录\ oleConnection1.Close(); } CheckModify checkModify; private void btAdd_Click(object sender, System.EventArgs e) { if

(dataGrid1.DataSource!=null&&dataGrid1.CurrentRowIndex>=0&&dataGrid1[dataGrid1.CurrentCell]!=null) { checkModify = new CheckModify(); checkModify.textDormID.Text=

ds.Tables[0].Rows[dataGrid1.CurrentCell.RowNumber][0].ToString().Trim(); checkModify.date1.Text=

ds.Tables[0].Rows[dataGrid1.CurrentCell.RowNumber][1].ToString().Trim(); checkModify.comboState.Text=

ds.Tables[0].Rows[dataGrid1.CurrentCell.RowNumber][2].ToString().Trim(); checkModify.textRemark.Text=

ds.Tables[0].Rows[dataGrid1.CurrentCell.RowNumber][3].ToString().Trim();

32

checkModify.Tag=

ds.Tables[0].Rows[dataGrid1.CurrentCell.RowNumber][4].ToString().Trim(); checkModify.ShowDialog(); } } private void btDel_Click(object sender, System.EventArgs e) { if

(dataGrid1.DataSource!=null&&dataGrid1.CurrentRowIndex>=0&&dataGrid1[dataGrid1.CurrentCell]!=null) { oleConnection1.Open(); string sql = \* from checkinfo where CheckID=\ OleDbCommand cmd = new OleDbCommand(sql,oleConnection1); cmd.ExecuteNonQuery();

}

}

MessageBox.Show(\删除成功\提示\oleConnection1.Close();

private void btClose_Click(object sender, System.EventArgs e) { this.Close(); }

8.3 添加宿舍的窗体如下:

33

8.4 宿舍添加的部分代码实现

private void btAdd_Click(object sender, System.EventArgs e) { if (textDormID.Text.Trim()==\ MessageBox.Show(\填写完整信息\提示\ else { oleConnection1.Open(); string sql = \* from dorm where dormID='\ OleDbCommand cmd = new OleDbCommand(sql,oleConnection1); if (null == cmd.ExecuteScalar()) { sql = \into dorm values ('\\ \

34

xtRemark.Text.Trim()+\ cmd.CommandText=sql; cmd.ExecuteNonQuery(); MessageBox.Show(\添加成功\提示\ clear(); } else MessageBox.Show(\宿舍号重复\提示\ oleConnection1.Close(); } } private void btClose_Click(object sender, System.EventArgs e) { this.Close(); } private void clear() { textDormID.Text=\ textPhone.Text=\ textMoney.Text=\ textBed.Text=\ textChair.Text=\ textDesk.Text=\ textRemark.Text=\ }

35

第九章 系统测试

9.1所遇问题

一个系统功能的实现,需要经过这么几步,首先把大致的骨架给设计好,然后根据系统要求写代码,接着是调试程序,最后完善总结。其中最重要的两步就是中间的两步。但是这次作业不用编程实现,省下了不少功夫。 但是还是遇到了很多的问题。

1. 软件的需求分析,由于我们都不理解学生宿舍管理系统的具体要求,所以只能上网查找,获取资源。

2. 将各个功能模块化,那些能需要合并在一起,那些功能必需独立,这也是我们在设计的时候,比较难解决的问题。 9.2 系统测试

此次作业不要求编程实现,测试略。

36

第十章 总 结

我们这次作业的任务是建立一个学生宿舍管理系统,它用到的开发工具是C#语言,SQL Server 2008 R2数据库。

在设计的开始阶段为了尽快获得学生宿舍管理系统的需求,我大量的在网上查找有关该方面的资料,对《软件工程》书中的基本理论知识逐章逐节地复习回忆。特别是对书中的一些典型实例,认真学习它的思想,吸取它的技巧,弄懂每句话的含义。在对所要应用的技术有了一个基本认识之后,就开始构思自己的系统设计。根据需求说明书的要求将整个系统分为几个模块,每个模块具体又要实现哪些功能,然后就逐个模块去一一详细设计,设计的过程中不时地翻阅资料,用一些巧妙的技术来优化。尽管这次作业不需要编程实现,但是也遇到了很多的问题,最后在老师和同学的帮助下,终于顺利完成了,自己也从中学到了不少东西。

总之,通过一个多星期的设计,让我感受了软件开发的部分过程。这不仅是对我在大学所学知识的一个综合运用,也是一次增长知识和经验的好机会,同时也使我学会了许多处理、解决问题的方法,大大提高了自己的动手能力,为将来的有关学习打下了良好的基础。

参考文献

[1] 李东生.崔东华.李爱萍 等《软件工程》.机械工业出版社,2012.7第一版 [2] 王珊.萨师煊《数据库系统概论》.高等教育出版社,2004.1.

37

本文来源:https://www.bwwdw.com/article/26wg.html

Top