《数据库课程设计宿舍管理信息系统.doc》由会员分享,可在线阅读,更多相关《数据库课程设计宿舍管理信息系统.doc(14页珍藏版)》请在三一办公上搜索。
1、1 概述1.1 系统开发背景与现状 随着时代的发展,计算机技术越来越深入各行各业,为广大的用户提供了更为周到和便捷的服务。目前各行各业广泛使用专用系统,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,设计开发好一个专用系统对一个机构(或部门)的发展十分重要。近年来,随着用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术的广泛应用,向用户提供的服务将越来越丰富,越来越人性化。 对于学校而言,学生宿舍管理是必不可少的组成部分。目前仍然存在有学校停留在宿舍管理部门人员手工记录数据的阶段,手工记录对于规模小的学校来说勉强可以接受;但对于学
2、生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的,而且当查找某条记录时,由于数据量庞大,只能依靠人工去一条一条地查找,这样不但麻烦而且浪费许多时间,工作效率比较低。采用计算机来管理宿舍和学生的信息,大大提高了查询的速度,节约了人力和物力资源,达到了预期的要求。今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面: 首先,计算机可以代替人工进行许多繁杂的劳动; 其次,计算机可以节省许多资源; 第三,计算机可以大大的提高人们的工作效率; 第四,计算机可以使敏感文档更加安全,等等.1.2 系统开发方法及目
3、标以Microsoft SQL Server2000为后台数据库,以Visual studio 2008为前端开发工具,以高校的宿舍管理需求为应用背景,开发一个典型的宿舍管理系统。本系统既要满足用户的设计,也要满足设计员的设计目标。1、用户的观点看,要求系统能够达到以下目标 1) 对信息的收集和保存信息。例如:输入宿舍的基本信息,宿舍的卫生信息等. 2)快速的传递信息。对那些共享的数据要快速的传递。 3)提供准确的信息。要求比手工作业提供的更加准确和细致的数据,例如宿舍的所有卫生成绩. 2、设计员从技术观点看,要求系统能达到以下的目标:1) 用户使用,具有较高的用户友好性。2) 系统具有灵活、
4、严格的权限设定功能,确保宿舍各类资料的可靠性和保密性,防止错误和违规操作。系统管理:可修改管理员密码3) 能对基本信息进行插入、删除、修改等操作。完成宿舍的学生住宿分配,可以自动分配或手动分配。数据查询:按宿舍号、班级、学生等进行分类查询,能进行精确和模糊查询。4)具有较强的可维护性和扩充性,能够适应用户的业务要求变化。5)可退出系统,保证个人信息安全性。2 需求分析本系统的最终用户为宿舍楼管理员。根据我们日常生活中的经验,结合对自己学校宿舍楼管理老师的咨询和对同宿舍楼同学的调查,得出用户的下列实际要求:宿舍管理:添加、修改、删除宿舍学生管理:学生入住、搬离来访管理:来访登记、查询水电管理:水
5、电缴费、查询卫生管理:卫生检查、查询用户管理:用户注册、修改密码根据如上得到的用户需求,我们将完善以下几功能: 1、 整体设计中,宿舍管理分为七大模块:宿舍管理模块、学生管理模块、报修管理模块、水电缴费管理模块、卫生管理模块、来访管理模块、用户管理模块。每个模块将实现不同的功能。 2、 对学生、宿舍信息等进行维护,可对已存在的信息进行修改与删除操作,及时更改存储数据中存在的不足之处,便于对学校宿舍的管理。 3、 根据输入的查询条件可显示符合条件的学生、宿舍,拥有检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低的优点,可以极大地提高学生查宿舍的效率。系统运行流程图学生宿舍管理系统
6、宿舍信息管理基本信息宿舍查询学生信息管理学生入住学生查询卫生信息管理添加检查检查查询水电收费管理水电收费添加水电收费查询来访人员管理来访登记来访查询报修管理报修登记报修查询3 数据库逻辑结构设计1.学生信息表该表用于存储学生基本信息字段名字段类型主键学号文本是姓名文本否性别文本否班级文本否宿舍号文本否2.宿舍信息表该表用于存储宿舍基本信息字段名字段类型字段大小主键宿舍号文本10是电话文本10否住宿费文本10否床位数数字10否桌子数数字10否椅子数数字10否备注文本300否3.卫生检查信息表该表用于存储卫生检查基本信息。字段名字段类型主键检查编号自动编号是宿舍号文本否检查日期日期/时间否检查情况
7、文本否备注文本否4.用户信息表该表用于存储用户基本信息 字段名字段类型主键用户名文本否密码文本否4 程序核心代码及控件描述4.1登录界面设计显示登陆界面,提示用户输入账号、密码,若错误给出提示。核心代码: static void Main() Application.Run(new Login();private void btAdd_Click(object sender, System.EventArgs e)if(name.Text.Trim()=|password.Text.Trim()=)MessageBox.Show(请输入用户名和密码,提示);elseoleConnection1
8、.Open();OleDbCommand cmd=new OleDbCommand(,oleConnection1);string sql=select * from userinfo where UName=+name.Text.Trim()+ and PWD=+password.Text.Trim()+;cmd.CommandText=sql;if (null!=cmd.ExecuteScalar()/隐藏登录窗口this.Visible=false; /创建并打开主界面Main main=new Main();main.Tag=this.FindForm();OleDbDataReade
9、r dr;cmd.CommandText=sql;dr=cmd.ExecuteReader();dr.Read();main.statusBarPanel2.Text=name.Text.Trim();main.ShowDialog(); elseMessageBox.Show(用户名或密码错误,警告);oleConnection1.Close();private void btClose_Click(object sender, System.EventArgs e)this.Close(); private void Login_Load(object sender, EventArgs
10、e) 4.2 主界面设计显示系统主界面,显示用户登录信息并给出各个功能模块的选项。核心代码:protected override void Dispose( bool disposing )if( disposing )if(components != null)components.Dispose();base.Dispose( disposing );AddUser addUser;private void menuItem9_Click(object sender, System.EventArgs e)addUser = new AddUser();for(int x=0;xthis.
11、MdiChildren.Length;x+)Form tempChild = (Form)this.MdiChildrenx;tempChild.Close();addUser.MdiParent = this;addUser.WindowState = FormWindowState.Maximized;addUser.Show();ModifyCode modifyCode;private void menuItem10_Click(object sender, System.EventArgs e)modifyCode = new ModifyCode();for(int x=0;xth
12、is.MdiChildren.Length;x+)Form tempChild = (Form)this.MdiChildrenx;tempChild.Close();modifyCode.MdiParent = this;modifyCode.Tag = this.statusBarPanel2.Text.Trim();modifyCode.WindowState = FormWindowState.Maximized;modifyCode.Show();private void menuItem11_Click(object sender, System.EventArgs e)(Syst
13、em.Windows.Forms.Form)this.Tag).Visible=true;this.Close();private void menuItem8_Click(object sender, System.EventArgs e)this.Close();AddDorm addDorm;private void menuItem12_Click(object sender, System.EventArgs e)addDorm = new AddDorm();for(int x=0;xthis.MdiChildren.Length;x+)Form tempChild = (Form
14、)this.MdiChildrenx;tempChild.Close();addDorm.MdiParent = this;addDorm.WindowState = FormWindowState.Maximized;addDorm.Show();Dorm dorm;private void menuItem13_Click(object sender, System.EventArgs e)dorm = new Dorm();for(int x=0;xthis.MdiChildren.Length;x+)Form tempChild = (Form)this.MdiChildrenx;te
15、mpChild.Close();dorm.MdiParent = this;dorm.WindowState = FormWindowState.Maximized;dorm.Show();AddStudent addStudent;private void menuItem14_Click(object sender, System.EventArgs e)addStudent = new AddStudent();for(int x=0;xthis.MdiChildren.Length;x+)Form tempChild = (Form)this.MdiChildrenx;tempChil
16、d.Close();addStudent.MdiParent = this;addStudent.WindowState = FormWindowState.Maximized;addStudent.Show();Student student;private void menuItem15_Click(object sender, System.EventArgs e)student = new Student();for(int x=0;xthis.MdiChildren.Length;x+)Form tempChild = (Form)this.MdiChildrenx;tempChil
17、d.Close();student.MdiParent = this;student.WindowState = FormWindowState.Maximized;student.Show();AddCheck addCheck;private void menuItem16_Click(object sender, System.EventArgs e)addCheck = new AddCheck();for(int x=0;xthis.MdiChildren.Length;x+)Form tempChild = (Form)this.MdiChildrenx;tempChild.Clo
18、se();addCheck.MdiParent = this;addCheck.WindowState = FormWindowState.Maximized;addCheck.Show();Check check;private void menuItem17_Click(object sender, System.EventArgs e)check = new Check();for(int x=0;xthis.MdiChildren.Length;x+)Form tempChild = (Form)this.MdiChildrenx;tempChild.Close();check.Mdi
19、Parent = this;check.WindowState = FormWindowState.Maximized;check.Show();AddCharge addCharge;private void menuItem18_Click(object sender, System.EventArgs e)addCharge = new AddCharge();for(int x=0;xthis.MdiChildren.Length;x+)Form tempChild = (Form)this.MdiChildrenx;tempChild.Close();addCharge.MdiPar
20、ent = this;addCharge.WindowState = FormWindowState.Maximized;addCharge.Show();Charge charge;private void menuItem19_Click(object sender, System.EventArgs e)charge = new Charge();for(int x=0;xthis.MdiChildren.Length;x+)Form tempChild = (Form)this.MdiChildrenx;tempChild.Close();charge.MdiParent = this
21、;charge.WindowState = FormWindowState.Maximized;charge.Show();AddRepair addRepair;private void menuItem20_Click(object sender, System.EventArgs e)addRepair = new AddRepair();for(int x=0;xthis.MdiChildren.Length;x+)Form tempChild = (Form)this.MdiChildrenx;tempChild.Close();addRepair.MdiParent = this;
22、addRepair.WindowState = FormWindowState.Maximized;addRepair.Show();Repair repair;private void menuItem21_Click(object sender, System.EventArgs e)repair = new Repair();for(int x=0;xthis.MdiChildren.Length;x+)Form tempChild = (Form)this.MdiChildrenx;tempChild.Close();repair.MdiParent = this;repair.Win
23、dowState = FormWindowState.Maximized;repair.Show();AddRegis addRegis;private void menuItem22_Click(object sender, System.EventArgs e)addRegis = new AddRegis();for(int x=0;xthis.MdiChildren.Length;x+)Form tempChild = (Form)this.MdiChildrenx;tempChild.Close();addRegis.MdiParent = this;addRegis.WindowS
24、tate = FormWindowState.Maximized;addRegis.Show();Register register;private void menuItem23_Click(object sender, System.EventArgs e)register = new Register();for(int x=0;xthis.MdiChildren.Length;x+)Form tempChild = (Form)this.MdiChildrenx;tempChild.Close();register.MdiParent = this;register.WindowSta
25、te = FormWindowState.Maximized;register.Show();private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)switch(toolBar1.Buttons.IndexOf(e.Button)case 0:Form addDorm = new AddDorm();for(int x=0;xthis.MdiChildren.Length;x+)Form tempChild = (Form)this.MdiChild
26、renx;tempChild.Close();addDorm.MdiParent = this;addDorm.WindowState = FormWindowState.Maximized;addDorm.Show();break;case 1:Form addStudent = new AddStudent();for(int x=0;xthis.MdiChildren.Length;x+)Form tempChild = (Form)this.MdiChildrenx;tempChild.Close();addStudent.MdiParent = this;addStudent.Win
27、dowState = FormWindowState.Maximized;addStudent.Show();break;case 2:Form addCheck = new AddCheck();for(int x=0;xthis.MdiChildren.Length;x+)Form tempChild = (Form)this.MdiChildrenx;tempChild.Close();addCheck.MdiParent = this;addCheck.WindowState = FormWindowState.Maximized;addCheck.Show();break;case
28、3:Form addCharge = new AddCharge();for(int x=0;xthis.MdiChildren.Length;x+)Form tempChild = (Form)this.MdiChildrenx;tempChild.Close();addCharge.MdiParent = this;addCharge.WindowState = FormWindowState.Maximized;addCharge.Show();break;case 4:Form addRepair = new AddRepair();for(int x=0;xMdiChildren.L
29、ength;x+)Form tempChild = (Form)MdiChildrenx;tempChild.Close();addRepair.MdiParent = this;addRepair.WindowState = FormWindowState.Maximized;addRepair.Show();break;case 5:Form addRegis = new AddRegis();for(int x=0;xMdiChildren.Length;x+)Form tempChild = (Form)MdiChildrenx;tempChild.Close();addRegis.M
30、diParent = this;addRegis.WindowState = FormWindowState.Maximized;addRegis.Show();break;4.3 学生信息管理页面设计提示输入学生信息(宿舍号、学号、姓名、班级等),实现学生信息录入。核心代码:public AddStudent()/ Windows 窗体设计器支持所必需的/InitializeComponent();this.oleConnection1 = new OleDbConnection(DormMIS.database.dbConnection.connection);/ TODO: 在Initi
31、alizeComponent 调用后添加任何构造函数代码/ / 清理所有正在使用的资源。/ protected override void Dispose( bool disposing )if( disposing )if(components != null)components.Dispose();base.Dispose( disposing );#region Windows 窗体设计器生成的代码/ / 设计器支持所需的方法- 不要使用代码编辑器修改/ 此方法的内容。/ private void btSure_Click(object sender, System.EventArgs
32、 e)if (textDormID.Text.Trim()=|textSID.Text.Trim()=|textName.Text.Trim()=)MessageBox.Show(请填写完整信息,确定);elseoleConnection1.Open();string sql=select * from dorm where dormID=+textDormID.Text.Trim()+;OleDbCommand cmd = new OleDbCommand(sql,oleConnection1);if (null=cmd.ExecuteScalar()MessageBox.Show(没有该房
33、间号,请重新输入,提示);elsesql = select bedNum-(select count(*) from student where dormID = +textDormID.Text.Trim()+) from dorm +where dormID = +textDormID.Text.Trim()+;cmd.CommandText=sql;if (Convert.ToInt16(cmd.ExecuteScalar().ToString().Trim()=0)MessageBox.Show(该房间已满,提示);elsesql=select * from student where
34、 SID=+textSID.Text.Trim()+;cmd.CommandText = sql;if (null!=cmd.ExecuteScalar()MessageBox.Show(学号重复,提示);elsesql = insert into student values (+textSID.Text.Trim()+,+textName.Text.Trim()+,+comboSex.Text.Trim()+,+textClass.Text.Trim()+,+textDormID.Text.Trim()+);cmd.CommandText = sql;cmd.ExecuteNonQuery
35、();MessageBox.Show(添加成功,提示);clear();oleConnection1.Close();private void btClose_Click(object sender, System.EventArgs e)this.Close();private void clear()textDormID.Text=;textSID.Text=;textName.Text=;comboSex.Text=;textClass.Text=;显示学生信息查询界面,可根据学号、姓名、宿舍号等信息实现查找功能。核心代码:DataSet ds;private void btQuery_
36、Click(object sender, System.EventArgs e)oleConnection1.Open();string sql=select SID as 学号,SName as 姓名,SSex as 性别,class as 班级,dormID as 宿舍号from student;if (textSID.Text.Trim()=&textName.Text.Trim()=&textDormID.Text.Trim()=)sql=sql;elseif (textSID.Text.Trim()!=)sql=sql+ where SID=+textSID.Text.Trim()+
37、;else if (textName.Text.Trim()!=)sql=sql+ where SName=+textName.Text.Trim()+;elsesql=sql+ where dormID=+textDormID.Text.Trim()+;OleDbDataAdapter adp = new OleDbDataAdapter(sql,oleConnection1);ds = new DataSet();ds.Clear();adp.Fill(ds,student);dataGrid1.DataSource = ds.Tables0.DefaultView;dataGrid1.C
38、aptionText = 共有+ds.Tables0.Rows.Count+条记录;oleConnection1.Close();StudentModify studentModify;private void btAdd_Click(object sender, System.EventArgs e)if (dataGrid1.DataSource!=null&dataGrid1.CurrentRowIndex=0&dataGrid1dataGrid1.CurrentCell!=null)studentModify = new StudentModify();studentModify.te
39、xtSID.Text=ds.Tables0.RowsdataGrid1.CurrentCell.RowNumber0.ToString().Trim();studentModify.textName.Text=ds.Tables0.RowsdataGrid1.CurrentCell.RowNumber1.ToString().Trim();studentMboSex.Text=ds.Tables0.RowsdataGrid1.CurrentCell.RowNumber2.ToString().Trim();studentModify.textClass.Text=ds.Tables0.Rowsda