资源描述
东北大学秦皇岛分校毕业设计(论文) 第 22 页
1 概述
1。1 系统开发背景与现状
随着时代的发展,计算机技术越来越深入各行各业,为广大的用户提供了更为周到和便捷的服务。目前各行各业广泛使用专用系统,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,设计开发好一个专用系统对一个机构(或部门)的发展十分重要。近年来,随着用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术的广泛应用,向用户提供的服务将越来越丰富,越来越人性化。
对于学校而言,学生宿舍管理是必不可少的组成部分.目前仍然存在有学校停留在宿舍管理部门人员手工记录数据的阶段,手工记录对于规模小的学校来说勉强可以接受;但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的,而且当查找某条记录时,由于数据量庞大,只能依靠人工去一条一条地查找,这样不但麻烦而且浪费许多时间,工作效率比较低.采用计算机来管理宿舍和学生的信息,大大提高了查询的速度,节约了人力和物力资源,达到了预期的要求。今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面:
首先,计算机可以代替人工进行许多繁杂的劳动;
其次,计算机可以节省许多资源;
第三,计算机可以大大的提高人们的工作效率;
第四,计算机可以使敏感文档更加安全,等等.
1.2 系统开发方法及目标
以Microsoft SQL Server2000为后台数据库,以Visual studio 2008为前端开发工具,以高校的宿舍管理需求为应用背景,开发一个典型的宿舍管理系统.
本系统既要满足用户的设计,也要满足设计员的设计目标。
1、用户的观点看,要求系统能够达到以下目标
1) 对信息的收集和保存信息。例如:输入宿舍的基本信息,宿舍的卫生信息等。
2)快速的传递信息。对那些共享的数据要快速的传递。
3)提供准确的信息。要求比手工作业提供的更加准确和细致的数据,例如宿舍的所有卫生成绩。
2、设计员从技术观点看,要求系统能达到以下的目标:
1) 用户使用,具有较高的用户友好性。
2) 系统具有灵活、严格的权限设定功能,确保宿舍各类资料的可靠性和保密性,防止错误和违规操作。系统管理:可修改管理员密码
3) 能对基本信息进行插入、删除、修改等操作。完成宿舍的学生住宿分配,可以自动分配或手动分配.数据查询:按宿舍号、班级、学生等进行分类查询,能进行精确和模糊查询.
4)具有较强的可维护性和扩充性,能够适应用户的业务要求变化。
5)可退出系统,保证个人信息安全性。
2 需求分析
本系统的最终用户为宿舍楼管理员。根据我们日常生活中的经验,结合对自己学校宿舍楼管理老师的咨询和对同宿舍楼同学的调查,得出用户的下列实际要求:
宿舍管理:添加、修改、删除宿舍
学生管理:学生入住、搬离
来访管理:来访登记、查询
水电管理:水电缴费、查询
卫生管理:卫生检查、查询
用户管理:用户注册、修改密码
根据如上得到的用户需求,我们将完善以下几功能:
1、 整体设计中,宿舍管理分为七大模块:宿舍管理模块、学生管理模块、报修管理模块、水电缴费管理模块、卫生管理模块、来访管理模块、用户管理模块.每个模块将实现不同的功能。
2、 对学生、宿舍信息等进行维护,可对已存在的信息进行修改与删除操作,及时更改存储数据中存在的不足之处,便于对学校宿舍的管理。
3、 根据输入的查询条件可显示符合条件的学生、宿舍,拥有检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低的优点,可以极大地提高学生查宿舍的效率。
系统运行流程图
学生宿舍管理系统
宿舍信息管理
基本信息
宿舍查询
学生信息管理
学生入住
学生查询
卫生信息管理
添加检查
检查查询
水电收费管理
水电收费添加
水电收费查询
来访人员管理
来访登记
来访查询
报修管理
报修登记
报修查询
3 数据库逻辑结构设计
1。学生信息表
该表用于存储学生基本信息
字段名
字段类型
主键
学号
文本
是
姓名
文本
否
性别
文本
否
班级
文本
否
宿舍号
文本
否
2。宿舍信息表
该表用于存储宿舍基本信息
字段名
字段类型
字段大小
主键
宿舍号
文本
10
是
电话
文本
10
否
住宿费
文本
10
否
床位数
数字
10
否
桌子数
数字
10
否
椅子数
数字
10
否
备注
文本
300
否
3.卫生检查信息表
该表用于存储卫生检查基本信息。
字段名
字段类型
主键
检查编号
自动编号
是
宿舍号
文本
否
检查日期
日期/时间
否
检查情况
文本
否
备注
文本
否
4。用户信息表
该表用于存储用户基本信息
字段名
字段类型
主键
用户名
文本
否
密码
文本
否
4 程序核心代码及控件描述
4。1登录界面设计
显示登陆界面,提示用户输入账号、密码,若错误给出提示。
核心代码:
staticvoid Main()
{
Application。Run(newLogin());
}
privatevoid btAdd_Click(object sender, System。EventArgs e)
{
if(name.Text。Trim()==""||password。Text.Trim()==””)
MessageBox。Show("请输入用户名和密码”,”提示”);
else
{
oleConnection1。Open();
OleDbCommand cmd=newOleDbCommand(””,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=newMain();
main。Tag=this。FindForm();
OleDbDataReader dr;
cmd.CommandText=sql;
dr=cmd。ExecuteReader();
dr.Read();
main.statusBarPanel2。Text=name。Text。Trim();
main.ShowDialog();
}
else
MessageBox。Show(”用户名或密码错误”,”警告");
}
oleConnection1。Close();
}
privatevoid btClose_Click(object sender, System.EventArgs e)
{
this.Close();
}
privatevoid Login_Load(object sender, EventArgs e)
{
}
4。2 主界面设计
显示系统主界面,显示用户登录信息并给出各个功能模块的选项。
核心代码:
protectedoverridevoid Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components。Dispose();
}
}
base。Dispose( disposing );
}
AddUser addUser;
privatevoid menuItem9_Click(object sender, System。EventArgs e)
{
addUser = newAddUser();
for(int x=0;x〈this。MdiChildren.Length;x++)
{
Form tempChild = (Form)this。MdiChildren[x];
tempChild。Close();
}
addUser。MdiParent = this;
addUser。WindowState = FormWindowState.Maximized;
addUser。Show();
}
ModifyCode modifyCode;
privatevoid menuItem10_Click(object sender, System。EventArgs e)
{
modifyCode = newModifyCode();
for(int x=0;x<this。MdiChildren。Length;x++)
{
Form tempChild = (Form)this.MdiChildren[x];
tempChild。Close();
}
modifyCode.MdiParent = this;
modifyCode。Tag = this.statusBarPanel2。Text。Trim();
modifyCode.WindowState = FormWindowState。Maximized;
modifyCode.Show();
}
privatevoid menuItem11_Click(object sender, System.EventArgs e)
{
((System。Windows。Forms。Form)this.Tag).Visible=true;
this.Close();
}
privatevoid menuItem8_Click(object sender, System.EventArgs e)
{
this.Close();
}
AddDorm addDorm;
privatevoid menuItem12_Click(object sender, System.EventArgs e)
{
addDorm = newAddDorm();
for(int x=0;x<this。MdiChildren。Length;x++)
{
Form tempChild = (Form)this。MdiChildren[x];
tempChild。Close();
}
addDorm。MdiParent = this;
addDorm。WindowState = FormWindowState.Maximized;
addDorm.Show();
}
Dorm dorm;
privatevoid menuItem13_Click(object sender, System。EventArgs e)
{
dorm = newDorm();
for(int x=0;x〈this.MdiChildren。Length;x++)
{
Form tempChild = (Form)this.MdiChildren[x];
tempChild.Close();
}
dorm。MdiParent = this;
dorm。WindowState = FormWindowState。Maximized;
dorm。Show();
}
AddStudent addStudent;
privatevoid menuItem14_Click(object sender, System。EventArgs e)
{
addStudent = newAddStudent();
for(int x=0;x〈this.MdiChildren。Length;x++)
{
Form tempChild = (Form)this。MdiChildren[x];
tempChild.Close();
}
addStudent.MdiParent = this;
addStudent。WindowState = FormWindowState.Maximized;
addStudent。Show();
}
Student student;
privatevoid menuItem15_Click(object sender, System.EventArgs e)
{
student = newStudent();
for(int x=0;x〈this.MdiChildren。Length;x++)
{
Form tempChild = (Form)this。MdiChildren[x];
tempChild.Close();
}
student.MdiParent = this;
student。WindowState = FormWindowState.Maximized;
student。Show();
}
AddCheck addCheck;
privatevoid menuItem16_Click(object sender, System。EventArgs e)
{
addCheck = newAddCheck();
for(int x=0;x〈this。MdiChildren.Length;x++)
{
Form tempChild = (Form)this。MdiChildren[x];
tempChild.Close();
}
addCheck。MdiParent = this;
addCheck。WindowState = FormWindowState.Maximized;
addCheck.Show();
}
Check check;
privatevoid menuItem17_Click(object sender, System。EventArgs e)
{
check = newCheck();
for(int x=0;x〈this.MdiChildren。Length;x++)
{
Form tempChild = (Form)this。MdiChildren[x];
tempChild。Close();
}
check。MdiParent = this;
check.WindowState = FormWindowState。Maximized;
check。Show();
}
AddCharge addCharge;
privatevoid menuItem18_Click(object sender, System。EventArgs e)
{
addCharge = newAddCharge();
for(int x=0;x〈this。MdiChildren.Length;x++)
{
Form tempChild = (Form)this。MdiChildren[x];
tempChild。Close();
}
addCharge。MdiParent = this;
addCharge。WindowState = FormWindowState。Maximized;
addCharge。Show();
}
Charge charge;
privatevoid menuItem19_Click(object sender, System。EventArgs e)
{
charge = newCharge();
for(int x=0;x〈this。MdiChildren.Length;x++)
{
Form tempChild = (Form)this.MdiChildren[x];
tempChild.Close();
}
charge。MdiParent = this;
charge.WindowState = FormWindowState。Maximized;
charge.Show();
}
AddRepair addRepair;
privatevoid menuItem20_Click(object sender, System。EventArgs e)
{
addRepair = newAddRepair();
for(int x=0;x<this.MdiChildren。Length;x++)
{
Form tempChild = (Form)this。MdiChildren[x];
tempChild。Close();
}
addRepair。MdiParent = this;
addRepair。WindowState = FormWindowState.Maximized;
addRepair。Show();
}
Repair repair;
privatevoid menuItem21_Click(object sender, System。EventArgs e)
{
repair = newRepair();
for(int x=0;x〈this.MdiChildren。Length;x++)
{
Form tempChild = (Form)this。MdiChildren[x];
tempChild。Close();
}
repair。MdiParent = this;
repair。WindowState = FormWindowState。Maximized;
repair.Show();
}
AddRegis addRegis;
privatevoid menuItem22_Click(object sender, System.EventArgs e)
{
addRegis = newAddRegis();
for(int x=0;x〈this。MdiChildren。Length;x++)
{
Form tempChild = (Form)this.MdiChildren[x];
tempChild。Close();
}
addRegis.MdiParent = this;
addRegis。WindowState = FormWindowState.Maximized;
addRegis。Show();
}
Register register;
privatevoid menuItem23_Click(object sender, System。EventArgs e)
{
register = newRegister();
for(int x=0;x〈this。MdiChildren。Length;x++)
{
Form tempChild = (Form)this。MdiChildren[x];
tempChild.Close();
}
register。MdiParent = this;
register。WindowState = FormWindowState.Maximized;
register.Show();
}
privatevoid toolBar1_ButtonClick(object sender, System。Windows.Forms.ToolBarButtonClickEventArgs e)
{
switch(toolBar1。Buttons。IndexOf(e。Button))
{
case 0:
Form addDorm = newAddDorm();
for(int x=0;x〈this.MdiChildren。Length;x++)
{
Form tempChild = (Form)this。MdiChildren[x];
tempChild。Close();
}
addDorm。MdiParent = this;
addDorm。WindowState = FormWindowState。Maximized;
addDorm.Show();
break;
case 1:
Form addStudent = newAddStudent();
for(int x=0;x〈this。MdiChildren。Length;x++)
{
Form tempChild = (Form)this。MdiChildren[x];
tempChild。Close();
}
addStudent。MdiParent = this;
addStudent。WindowState = FormWindowState.Maximized;
addStudent.Show();
break;
case 2:
Form addCheck = newAddCheck();
for(int x=0;x〈this。MdiChildren。Length;x++)
{
Form tempChild = (Form)this。MdiChildren[x];
tempChild。Close();
}
addCheck.MdiParent = this;
addCheck。WindowState = FormWindowState.Maximized;
addCheck。Show();
break;
case 3:
Form addCharge = newAddCharge();
for(int x=0;x〈this。MdiChildren。Length;x++)
{
Form tempChild = (Form)this。MdiChildren[x];
tempChild。Close();
}
addCharge.MdiParent = this;
addCharge.WindowState = FormWindowState。Maximized;
addCharge.Show();
break;
case 4:
Form addRepair = newAddRepair();
for(int x=0;x<MdiChildren。Length;x++)
{
Form tempChild = (Form)MdiChildren[x];
tempChild。Close();
}
addRepair。MdiParent = this;
addRepair。WindowState = FormWindowState.Maximized;
addRepair。Show();
break;
case 5:
Form addRegis = newAddRegis();
for(int x=0;x〈MdiChildren。Length;x++)
{
Form tempChild = (Form)MdiChildren[x];
tempChild.Close();
}
addRegis。MdiParent = this;
addRegis。WindowState = FormWindowState。Maximized;
addRegis。Show();
break;
}
}
4。3 学生信息管理页面设计
提示输入学生信息(宿舍号、学号、姓名、班级等),实现学生信息录入。
核心代码:
public AddStudent()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
this。oleConnection1 = newOleDbConnection(DormMIS。database。dbConnection.connection);
//
// TODO: 在InitializeComponent 调用后添加任何构造函数代码
//
}
///<summary〉
/// 清理所有正在使用的资源。
///</summary〉
protectedoverridevoid Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base。Dispose( disposing );
}
#region Windows 窗体设计器生成的代码
///〈summary〉
/// 设计器支持所需的方法- 不要使用代码编辑器修改
/// 此方法的内容。
///〈/summary〉
privatevoid btSure_Click(object sender, System。EventArgs e)
{
if (textDormID.Text.Trim()==”"||textSID。Text。Trim()==””||textName.Text。Trim()=="”)
MessageBox.Show(”请填写完整信息",”确定");
else
{
oleConnection1.Open();
string sql=”select * from dorm where dormID=’"+textDormID.Text。Trim()+"’";
OleDbCommand cmd = newOleDbCommand(sql,oleConnection1);
if (null==cmd.ExecuteScalar())
MessageBox。Show(”没有该房间号,请重新输入”,”提示");
else
{
sql = ”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("该房间已满",”提示”);
else
{
sql=”select * from student where SID='"+textSID。Text。Trim()+"’”;
cmd。CommandText = sql;
if (null!=cmd。ExecuteScalar())
MessageBox。Show("学号重复”,"提示”);
else
{
sql = ”insert into student values ('"+textSID.Text.Trim()+"',’"+textName。Text。Trim()+"’,'”+comboSex。Text.Trim()+”’,”+
”’"+textClass.Text。Trim()+”',’”+textDormID.Text。Trim()+”’)”;
cmd。CommandText = sql;
cmd.ExecuteNonQuery();
MessageBox。Show(”添加成功",”提示”);
clear();
}
}
}
oleConnection1。Close();
}
}
privatevoid btClose_Click(object sender, System。EventArgs e)
{
this.Close();
}
privatevoid clear()
{
textDormID。Text="";
textSID。Text=””;
textName。Text=””;
comboSex。Text="”;
textClass.Text=””;
}
显示学生信息查询界面,可根据学号、姓名、宿舍号等信息实现查找功能。
核心代码:
DataSet ds;
privatevoid btQuery_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;
else
{
if (textSID.Text.Trim()!=””)
sql=sql+” where SID=’”+textSID。Text。Trim()+"'”;
elseif (textName.Text.Trim()!=”")
sql=sql+” where SName=’”+textName。Text.Trim()+”’";
else
sql=sql+” where dormID=’”+textDormID。Text。Trim()+”'";
}
OleDbDataAdapter adp = newOleDbDataAdapter(sql,oleConnection1);
ds = newDataSet();
ds。Clear();
adp。Fill(ds,"student”);
dataGrid1。DataSource = ds。Tables[0].DefaultView;
dataGrid1。CaptionText = ”共有"+ds。Tables[0]。Rows.Count+”条记录";
oleConnection1.Close();
}
StudentModify studentModify;
privatevoid btAdd_Click(object sender, System。EventArgs e)
{
if (dataGrid1.DataSource!=null&&dataGrid1。CurrentRowIndex〉=0&&dataGrid1[dataGrid1.CurrentCell]!=null)
{
studentModify = newStudentModify();
studentModify。textSID。Text=ds.Tables[0].Rows[dataGrid1。CurrentCell.RowNumber][0].ToString()。Trim();
studentModify。textName。Text=ds。Tables[0].Rows[dataGrid1.CurrentCell。RowNumber][1]。ToString().Trim();
studentMboSex.Text=ds.Tables[0]。Rows[dataGrid1。CurrentCell。RowNumber][2]。ToString()。Trim();
studentModify.textClass。Text=ds。Tables[0]。Rows[dataGrid1。CurrentCell。RowNumber][3]。ToString()。Trim();
studentModify。textDormID。Text=ds.Tables[0]。Rows[dataGrid1。CurrentCell。RowNumber][4]。ToString()。Trim();
studentModify.ShowDialog();
}
}
privatevoid btDel_Click(object sender, System。EventArgs e)
{
if (dataGrid1。DataSource!=null&&dataGrid1。CurrentRowIndex>=0&&dataGrid1[dataGrid1.CurrentCell]!=null)
{
oleConnection1.Open();
string sql=”delete * from student where SID='”+ds。Tables[0]。Rows[dataGrid1。CurrentCell。RowNumber][0].ToString().Trim()+"’";
OleDbCommand cmd = newOleDbCommand(sql,oleConnection1);
cmd.ExecuteNonQuery();
MessageBox。Show(”删除'"+ds。Tables[0]。Rows[dataGrid1。CurrentCell。RowNumber][1].ToString().Trim()+"’同学成功",”提
展开阅读全文