1、 东北大学秦皇岛分校毕业设计(论文) 第 22 页 1 概述 1。1 系统开发背景与现状 随着时代的发展,计算机技术越来越深入各行各业,为广大的用户提供了更为周到和便捷的服务。目前各行各业广泛使用专用系统,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,设计开发好一个专用系统对一个机构(或部门)的发展十分重要。近年来,随着用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术的广泛应用,向用户提供的服务将越来越丰富,越来越人性化。 对于学校而言,学生宿舍管理是必不可少的组成部分.
2、目前仍然存在有学校停留在宿舍管理部门人员手工记录数据的阶段,手工记录对于规模小的学校来说勉强可以接受;但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的,而且当查找某条记录时,由于数据量庞大,只能依靠人工去一条一条地查找,这样不但麻烦而且浪费许多时间,工作效率比较低.采用计算机来管理宿舍和学生的信息,大大提高了查询的速度,节约了人力和物力资源,达到了预期的要求。今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面: 首先,计算机可以代替人工进行许多繁杂的劳动; 其次,计算机可以节省许多
3、资源; 第三,计算机可以大大的提高人们的工作效率; 第四,计算机可以使敏感文档更加安全,等等. 1.2 系统开发方法及目标 以Microsoft SQL Server2000为后台数据库,以Visual studio 2008为前端开发工具,以高校的宿舍管理需求为应用背景,开发一个典型的宿舍管理系统. 本系统既要满足用户的设计,也要满足设计员的设计目标。 1、用户的观点看,要求系统能够达到以下目标 1) 对信息的收集和保存信息。例如:输入宿舍的基本信息,宿舍的卫生信息等。 2)快速的传递信息。对那些共享的数据要快速的传递。 3)提供准
4、确的信息。要求比手工作业提供的更加准确和细致的数据,例如宿舍的所有卫生成绩。 2、设计员从技术观点看,要求系统能达到以下的目标: 1) 用户使用,具有较高的用户友好性。 2) 系统具有灵活、严格的权限设定功能,确保宿舍各类资料的可靠性和保密性,防止错误和违规操作。系统管理:可修改管理员密码 3) 能对基本信息进行插入、删除、修改等操作。完成宿舍的学生住宿分配,可以自动分配或手动分配.数据查询:按宿舍号、班级、学生等进行分类查询,能进行精确和模糊查询. 4)具有较强的可维护性和扩充性,能够适应用户的业务要求变化。 5)可退出系统,保证个人信息安全性。 2 需求分析 本系统的最
5、终用户为宿舍楼管理员。根据我们日常生活中的经验,结合对自己学校宿舍楼管理老师的咨询和对同宿舍楼同学的调查,得出用户的下列实际要求: 宿舍管理:添加、修改、删除宿舍 学生管理:学生入住、搬离 来访管理:来访登记、查询 水电管理:水电缴费、查询 卫生管理:卫生检查、查询 用户管理:用户注册、修改密码 根据如上得到的用户需求,我们将完善以下几功能: 1、 整体设计中,宿舍管理分为七大模块:宿舍管理模块、学生管理模块、报修管理模块、水电缴费管理模块、卫生管理模块、来访管理模块、用户管理模块.每个模块将实现不同的功能。 2、 对学生、宿舍信息等进行维护,可对已存在
6、的信息进行修改与删除操作,及时更改存储数据中存在的不足之处,便于对学校宿舍的管理。 3、 根据输入的查询条件可显示符合条件的学生、宿舍,拥有检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低的优点,可以极大地提高学生查宿舍的效率。 系统运行流程图 学生宿舍管理系统 宿舍信息管理 基本信息 宿舍查询 学生信息管理 学生入住 学生查询 卫生信息管理 添加检查 检查查询 水电收费管理 水电收费添加 水电收费查询 来访人员管理 来访登记 来访查询 报修管理 报修登记 报修查询 3 数据
7、库逻辑结构设计 1。学生信息表 该表用于存储学生基本信息 字段名 字段类型 主键 学号 文本 是 姓名 文本 否 性别 文本 否 班级 文本 否 宿舍号 文本 否 2。宿舍信息表 该表用于存储宿舍基本信息 字段名 字段类型 字段大小 主键 宿舍号 文本 10 是 电话 文本 10 否 住宿费 文本 10 否 床位数 数字 10 否 桌子数 数字 10 否 椅子数 数字 10 否 备注 文本 300 否 3.卫生检查信息表 该表用于存储卫生检查基本信息。 字段名 字段类型 主键
8、 检查编号 自动编号 是 宿舍号 文本 否 检查日期 日期/时间 否 检查情况 文本 否 备注 文本 否 4。用户信息表 该表用于存储用户基本信息 字段名 字段类型 主键 用户名 文本 否 密码 文本 否 4 程序核心代码及控件描述 4。1登录界面设计 显示登陆界面,提示用户输入账号、密码,若错误给出提示。 核心代码: staticvoid Main() { Application。Run(newLogin()); } privatevoid btAdd_Click(object sender, System。E
9、ventArgs 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(
10、"'”; 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=na
11、me。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 主界面设计
12、 显示系统主界面,显示用户登录信息并给出各个功能模块的选项。 核心代码: protectedoverridevoid Dispose( bool disposing ) { if( disposing ) { if(components != null) { components。Dispose(); } } base。Dispose( disposing ); } AddUser addUser; privatevoid menuItem9_Click(object sender, System。EventArgs e
13、 { 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; private
14、void menuItem10_Click(object sender, System。EventArgs e)
{
modifyCode = newModifyCode();
for(int x=0;x 15、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 16、e)
{
this.Close();
}
AddDorm addDorm;
privatevoid menuItem12_Click(object sender, System.EventArgs e)
{
addDorm = newAddDorm();
for(int x=0;x 17、 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();
18、
}
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 = 19、 (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 20、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。Even 21、tArgs 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;
priva 22、tevoid 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;
chec 23、k。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;
24、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. 25、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 26、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( 27、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.Eve 28、ntArgs 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; 29、
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. 30、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 31、 (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 32、)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)t 33、his。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。Md 34、iChildren[x];
tempChild。Close();
}
addCharge.MdiParent = this;
addCharge.WindowState = FormWindowState。Maximized;
addCharge.Show();
break;
case 4:
Form addRepair = newAddRepair();
for(int x=0;x 35、
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];
tempChi 36、ld.Close();
}
addRegis。MdiParent = this;
addRegis。WindowState = FormWindowState。Maximized;
addRegis。Show();
break;
}
}
4。3 学生信息管理页面设计
提示输入学生信息(宿舍号、学号、姓名、班级等),实现学生信息录入。
核心代码:
public AddStudent()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
this。 37、oleConnection1 = newOleDbConnection(DormMIS。database。dbConnection.connection);
//
// TODO: 在InitializeComponent 调用后添加任何构造函数代码
//
}
/// 38、mponents.Dispose();
}
}
base。Dispose( disposing );
}
#region Windows 窗体设计器生成的代码
///〈summary〉
/// 设计器支持所需的方法- 不要使用代码编辑器修改
/// 此方法的内容。
///〈/summary〉
privatevoid btSure_Click(object sender, System。EventArgs e)
{
if (textDormID.Text.Trim()==”"||textSID。Text。Trim()==””||textName. 39、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 40、
{
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
41、
{
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 42、Trim()+”’,”+
”’"+textClass.Text。Trim()+”',’”+textDormID.Text。Trim()+”’)”;
cmd。CommandText = sql;
cmd.ExecuteNonQuery();
MessageBox。Show(”添加成功",”提示”);
clear();
}
}
}
oleConnection1。Close();
}
}
privatevoid btClose_Click(object sender, System。E 43、ventArgs 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)
44、{
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。T 45、ext。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, 46、"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。 47、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]。T 48、oString().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。Row 49、Number][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()+"’同学成功",”提






