资源描述
韶 关 学 院毕 业 论 文论文(设计)题目:基于ASP.NET的班组信息系统的设计与实现 学生姓名:陈奕林学 号:08101043018系 (院):计算机科学学院专 业:计算机科学与技术班 级:08级计算机教育03班 指导教师姓名及职称:刘鑑澄 讲师 起止时间:2011年11月 2012年 5 月(教务处制表)基于ASP.NET的班组信息系统的设计与实现 摘 要:本文论述了一个基于.NET平台、二层架构(C/S)的班组建设系统的设计原理、设计思想及具体的实现过程,对在设计过程中涉及到的关键算法及重要作业流程作了具体分析和介绍,并对各个模块的设计思想及设计过程作了详细阐述。本系统的设计采用了Microsoft最新的.NET技术,以Microsoft SQL Server 2008作为数据库支撑平台,应用到的技术包括ASP.NET,面向对象方法学、软件工程思想等。关键字:班组建设;面向对象;ASP.NET;B/SBased on the s teams and groups information system design and implementationAbstract:This passage discusses a based on platform, two storey structure (C/S) team construction system design principle, design idea and the realization process in detail, the design process related to key algorithms and important work flow was analyzed and introduced in detail and the design thought of each module and design process are described in detail. The system was designed using the latest M technology, with Microsoft SQL Server 2008 as the database support platform, applied to technology including the , object-oriented methodologies, software engineering idea, etc.Key word:. construction of teams and groups;object-oriented ;ASP.NET;B/S目录1.前言.(1)2.需求分析.(1)2.1开发目的.(1)2.2系统需求分析.(1)2.3建立数据模型.(3)3.系统架构设计.(3)3.1使用开发工具与运行环境.(4)3.2工作模式.(4)3.3后台系统结构.(4)3.4系统功能描述.(5)3.4.1部门管理功能模块.(5)3.4.2部门人员管理功能模块.(5)3.4.3记录管理功能模块.(5)3.4.4班组记录的查询功能模块.(6)3.4.5班组记录信息的管理功能模块.(6)3.4.6其他信息的管理功能模块.(6)3.5界面设计.(6)4.数据库设计.(7)4.1逻辑结构设计.(7)4.2建立关系模型.(7)4.3数据库具体实现.(9)5.详细设计.(11)5.1系统界面设计.(11)5.1.1管理员登陆.(11)5.1.2后台管理主页.(11)5.1.2.1记录管理.(12)5.1.2.2部门管理.(13)5.2程序关键源代码.(14)5.2.1管理员登陆部分代码.(14)5.2.2班组合并部分代码.(15)6.编码和调试.(20)7.测试.(21)7.1数据完整性测试.(22)7.2功能测试.(22)7.3用户界面测试.(22)8.展望与总结(23)致谢(24)参考文献(25)基于ASP.NET的班组信息系统的设计与实现 专业班级:计算机科学学院08级计算机科学与技术3班 学生姓名:陈奕林 指导老师:刘鑑澄(讲师)1 前言随着国家电力体制改革的不断深入,电力企业面临着日益激烈的市场竞争的严峻挑战,为了提高企业的综合竞争能力,扩展企业的生存发展空间,以追求最大经济效益为最终目标,就必须不断改进和加强企业管理,班组是企业的基础,班组管理水平的高低,将直接影响企业日常的生产和经营活动。由此可见,班组建设也是企业管理的重要课题之一。目前各发供电企业已经建立了企业内部的管理信息系统,它在安全生产管理、办公自动化等方面发挥了重大作用,其中虽然也包含一些班组管理的内容,但从班组建设管理的角度上来看,体现出不系统、不规范、不统一的特征,缺乏可比性和通用性,也完全没有实现信息的上传下达,在管理层与班组之间出现了管理信息的断层与脱节。2 需求分析2.1 开发目的本班组建设系统,是一个以电力企业为背景,开发一个可用于一般单位或公司的班组管理系统,实现班组管理的高效化,电子化。通过使用本系统,可以方便快捷地实现班组管理中的班组记录管理、班组管理、人员管理等操作,是企业的班组管理井井有条,为企业的健康发展创造条件。2.2 系统需求分析 班组建设系统是一个面向企业最基本单元管理信息系统,系统基本上解决的目前班组建设的各个方面的问题。并在逻辑上实现了从局到基层班组的多个层面的信息管理和信息互动。系统在浏览中体现出了特有的权限区分,可以限制有些基层班组重要内容的外泄。保证的班组信息的完整性、安全性、独特性。 图2-1 需求分析2.3 建立数据模型部门人员表用户序号用户姓名用户权限用户密码用户编号用户部门 图2-2部门人员表E-R图部门表部门编号部门名称 图2-3部门表E-R图详细记录表记录时间公司审核人公司审核时间记录序号记录人类型编号部门审核人公司审核评语记录主题记录内容部门审核评语部门审核时间审核状态 图2-4详细记录表E-R图记录类型表类型编号类型名称 图2-5记录类型表E-R图3 系统架构设计3.1 使用开发工具与运行环境开发工具:Microsoft SQL Server 2008,Microsoft Visual Studio 2010,IIS6.0。开发环境: Windows XP SP3服务器运行环境: Windows 2003 Server,Microsoft SQL Server 2008,Microsoft .NET Framework 4.0,IIS6.0客户端运行环境:操作系统Windows XP、Windows 7,浏览器:IE6.0 ,IE8.0 考虑在班组信息系统的的设计中采用了.NET平台进行设计,使用C#语言进行开发,有以下原因:1.开发工具IDE,Visual Studio涉及到GUI开发和企业应用的开发,一个强大的工具。2.C#保留了对底层操作系统API的直接调用和指针。3.在Windows平台上.Net CLR比Java的JRE速度快。4.企业开发方面,C#需要SQL Server,由于C#只管SQL Server和IIS,甚至只管IE浏览器,所以Visual Studio可以做的很方便,整个开发过程一体化,不用考虑其它的实现。3.2 工作模式 班组信息系统采用时下流行的B/S结构,BS网络结构模式是基于Intranet的需求而出现并发展的。Intranet是应用TCPIP协议建立的企事业单位内部专用网络,它采用诸如TCPIP、HTTP、SMTP和HTML等Internet技术和标准,能为企事业单位内部交换信息提供服务。同时,它具有连接Internet的功能和防止外界入侵的安全措施。另一方面,由于数据库具有强大的数据存储和管理能力,并且能够动态地进行数据输入和输出,如果把数据库应用于Intranet上,不仅可以实现大量信息的网上发布,而且能够为广大用户提供动态的信息查询和数据处理服务,进而加强企事业单位内部部门之间、上级部门与下级部门之间、企事业单位员工之间、企事业单位与客户之间以及企事业单位与企事业单位之间的信息交流,降低企事业单位的日常工作成本,提高企事业单位的经济效益。3.3 后台系统结构图3-1后台系统结构图3.4 系统功能描述3.4.1部门管理功能模块班组建设包括对部门信息的查询、部门信息的修改、删除部门。其中删除部门考虑到此部门人员的安排,而且要判断是否删除此部门下的所有部门;班组建设系统把已删除的部门下的人员迁移到一个固定的部门,如果需要此人员可对进行调职操作。3.4.2部门人员管理功能模块班组建设包括对部门人员信息的查询、人员信息的修改、删除人员、对其人员进行调职。系统可根据部门查询此部门的人员信息及修改人员信息,删除人员就将其安排的角色也并删除。对于人员的调职考虑到此人员权限的设置。3.4.3记录管理功能模块记录是用来记录班组日常事务的,记录分为班长工作日志、安全管理、民主生活、技术培训、班组荣誉五种,由班组里的不同角色进行写记录。记录保存之后要通过部门审核和公司审核,这是记录管理的主要内容。写记录,班长工作日志、民主生活、班组荣誉由班长填写,且班长工作日志每天一次;安全管理记录由安全员填写,每周一次;技术培训由技术员填写,每月一次或两次。审核记录,不同的部门的审核人要对此部门下的班组记录进行审核,班长工作日每月由班组的上级部门的部门领导进行部门审核,每季度由公司工会的班组建设管理员进行公司审核;安全管理由班组安全员对此进行记录,每月由班组的上级部门的部门审核人进行部门审核,每季度由公司审核人进行公司审核; 技术培训:每月由班组技术员组织技术培训工作,可以是学习或考试、描图等活动,由班组技术员对此进行记录,每月由班组的上级部门的部门审核人进行部门审核,每季度由公司审核人进行公司审核。3.4.4班组记录的查询功能模块管理员要对班组的记录进行管理,记录可以根据日期、记录类型、记录主题进行查询,这样才能及时了解班组的管理现状,才有可能使班组处在良好的运行状态。所以,班组管理过程中要提供班组的日志、安全、技术、生活等记录的查询功能,并且能够通过选择的不同部门进行记录查询,方便部门人员查看。3.4.5班组记录信息的管理功能模块班组要记录记录,关于这些记录本身的信息,对班级建设是非常重要的,例如,班组参加了什么活动,班组人员参加了什么技术培训等,所以,对记录本身的信息登记、管理是班级建设的重要内容。3.4.6其他信息的管理功能模块除了以上提到的一些功能外,班级建设系统还应该能对一些其他的信息进行管理。例如:班组迁移、班组合并等,对企业来说,这些变化是有可能的,而且班组的迁移和合并还要考虑到班组人员的安排,班组合并要考虑是合并的方式,本系统分为合并至要合并的部门的其中一个部门或合并至一个新部门。3.5界面设计本系统采用Browser Server(B/S)的模式结构,使用现在流行的WEB技术,将应用程序以及数据库和存放在WEB服务器中,用户使用浏览器来访问存放在WEB服务器中程序和数据,可以不借助第三方软件,可以随时随地访问所需的资源。同时系统的更新维护及数据的管理相当便捷,提高了工作效率,降低了维护难度,当需要增加系统新功能,只需更改Aspx页,扩充能力较Client/Server(C/S)模式强。本系统前台以蓝色作为主色调,后台以蓝白色作为主色调,系统功能模块设计合理、简单易用,信息导航使用便捷,信息浏览清晰明了。4 数据库设计4.1数据库介绍数据库名称Banzu备注:本系统主数据库表名部门人员表 部门表详细记录表记录类型表提示表管理员表角色表视图vwRecord记录信息vwRole人员信息proInsertRole增添角色proUpdateRole修改角色表 4.1数据库介绍4.2数据表设计表序号2表名部门表含义存储部门的基本信息序号属性名称数据类型长度说明约束1.部门编号VarChar255Not NULL主键2.部门名称Varchar255Not NULL表4.2 部门表表序号3表名部门人员表含义存储部门人员的基本信息序号属性名称数据类型长度说明约束1.用户序号Int4Not NULL主键2.用户编号VarChar255Not NULL3.用户姓名VarChar255Not NULL4.用户密码VarChar255Not NULL5.用户部门VarChar255Not NULL6.用户权限VarChar50表4.1 部门人员表表序号4表名Role含义存储部门人员角色的基本信息序号属性名称数据类型长度说明约束1.RoleIDint4Not NULL主键2.RoleNameVarchar50Not NULL3.Uidint4Not NULL表 2.4角色表表序号5表名记录详细表含义存储班组记录的详细信息序号属性名称数据类型长度说明约束1.记录序号int4Not NULL主键2.记录人VarChar50Not NULL3.记录类型int4Not NULL4.记录主题VarCharMax5.记录内容VarCharMax6.记录时间Datetime87.公司审核人VarChar508.公司审核评语VarCharMax9.公司审核时间Datetime810.部门审核人Varchar5011.部门审核评语VarcharMax12.部门审核时间Datetime813.审核状态VarChar50表 4.3记录详细表 表序号6表名记录类型表含义存储记录类型的基本信息序号属性名称数据类型长度说明约束1.类型编号int4Not NULL主键2.类型名称VarChar50Not NULL表 4.6记录类型表表序号7表名管理员表含义存储管理员的基本信息序号属性名称数据类型长度说明约束1.用户名VarChar50Not NULL主键2.用户密码VarChar10Not NULL表 4.7管理员表表序号8表名提示表含义存储提示信息序号属性名称数据类型长度说明约束1.提示编号int4Not NULL主键2.提示人VarChar50Not NULL3.记录编号VarChar104.提示内容VarCharMax 表 4.8提示表4.3 数据库具体实现图4.1部门表图4.2部门人员表图4.3管理员表图4.4记录类型表图4.5记录详细表图4.6角色表图4.7提示表5 详细设计5.1系统界面设计5.1.1管理员登陆管理员登陆后进入管理员主页面,注意用户与管理员的区别!系统保存管理员用户名。图5-1管理员登陆界面5.1.2后台管理主页后台管理主要包括设置管理、部门管理、记录管理、部门人员管理。图5-2后台管理主页5.1.2.1记录管理管理员可对所有的记录进行查询、修改、删除。对记录主题进行链接,可查看记录的详细信息,并修改记录信息。 记录详细信息图5-3记录管理/详细记录信息5.1.2.2部门管理管理员可对部门进行部门信息的查询、修改、删除,部门之间的合并与迁移,增加部门等操作。对部门的基本操作图5-4部门操作图5-5 班组合并5.2程序关键源代码5.2.1管理员登陆部分代码if (this.tbusername.Text = | this.tbpwd.Text = ) this.labmsg.Text = alert(用户名和密码不能为空!); else if (this.RadioButtonList2.Items0.Selected) sqlstr = select * from 管理员表 where 管理员= + this.tbusername.Text.Trim() + and 密码= + this.tbpwd.Text.Trim() + ; ds = db.getdatadysql(sqlstr); if (ds.Tables0.Rows.Count != 0) Sessionusername = this.tbusername.Text; Sessionlimit = 管理员; Response.Redirect(./HouTai/houindex.aspx); else this.labmsg.Text = alert(您的用户名或密码不正确,登录失败!); else sqlstr = select 用户权限,roleName from vwRole where 用户编号= + this.tbusername.Text.Trim() + and 用户密码= + this.tbpwd.Text.Trim() + ; ds = db.getdatadysql(sqlstr); if (ds.Tables0.Rows.Count != 0) Sessionusername = this.tbusername.Text; Sessionlimit = ds.Tables0.Rows00.ToString(); Sessionrole = ds.Tables0.Rows01.ToString(); Response.Redirect(Default.aspx); else this.labmsg.Text = alert(您的用户名或密码不正确,登录失败!); 5.2.2班组合并部分代码 bool result; int newid; string departmentid; sqlstr = select 部门编号 from 部门表 where 部门名称= + this.dropDep1.SelectedItem.Text + ; ds = db.getdatadysql(sqlstr); string depid1 = ds.Tables0.Rows00.ToString(); sqlstr = select 部门编号 from 部门表 where 部门名称= + this.dropDep2.SelectedItem.Text + ; ds = db.getdatadysql(sqlstr); string depid2 = ds.Tables0.Rows00.ToString(); if (this.rbcombineType.SelectedItem.Text = 重建部门) sqlstr = delete from 部门表 where 部门编号= + depid1 + or 部门编号= + depid2 + ; result = db.updatabysql(sqlstr); if (result = true) sqlstr = select 部门编号 from 部门表 where 部门编号 like + depid1 + %; ds = db.getdatadysql(sqlstr); if (ds.Tables0.Rows.Count 1) for (i = 0; i ds.Tables0.Rows.Count; i+) departmentid = ds.Tables0.Rowsi0.ToString(); newid = int.Parse(depid + departmentid.Substring(depid1.Length, departmentid.Length) + 1; newdepid = 00 + newid.ToString(); sqlstr = select * from 部门表 where 部门编号= + newdepid + ; ds = db.getdatadysql(sqlstr); if (ds.Tables0.Rows.Count != 0) newid = newid + 1; else sqlstr = update 部门表 set 部门编号= + newdepid + where 部门编号= + departmentid + ; result = db.updatabysql(sqlstr); if (result = true) sqlstr = update 部门人员表 set 用户部门= + newdepid + where 用户部门= + departmentid + ; result = db.updatabysql(sqlstr); if (result = false) Response.Write(alert(提交失败!);); else return; sqlstr = select 部门编号 from 部门表 where 部门编号 like + depid2 + %; ds = db.getdatadysql(sqlstr); if (ds.Tables0.Rows.Count 1) for (i = 1; i ds.Tables0.Rows.Count; i+) departmentid = ds.Tables0.Rowsi0.ToString(); newid = int.Parse(depid + departmentid.Substring(depid2.Length, departmentid.Length) + 1; newdepid = 00 + newid.ToString(); sqlstr = select * from 部门表 where 部门编号= + newdepid + ; ds = db.getdatadysql(sqlstr); if (ds.Tables0.Rows.Count != 0) newid = newid + 1; else sqlstr = update 部门表 set 部门编号= + newdepid + where 部门编号= + departmentid + ; result = db.updatabysql(sqlstr); if (result = true) sqlstr = update 部门人员表 set 用户部门= + newdepid + where 用户部门= + departmentid + ; result = db.updatabysql(sqlstr); if (result = false) Response.Write(alert(提交失败!);); else return; else if (this.rbcombineType.SelectedItem.Text = 合并至第二个部门) sqlstr = delete from 部门表 where 部门编号= + depid1 + ; result = db.updatabysql(sqlstr); if (result = true) sqlstr = select 部门编号 from 部门表 where 部门编号 like + depid1 + %; ds = db.getdatadysql(sqlstr); if (ds.Tables0.Rows.Count 1) for (i = 1; i ds.Tables0.Rows.Count; i+) departmentid = ds.Tables0.Rowsi0.ToString(); newid = int.Parse(depid2 + departmentid.Substring(depid2.Length, departmentid.Length) + 1; newdepid = 00 + newid.ToString(); sqlstr = select * from 部门表 where 部门编号= + newdepid + ; ds = db.getdatadysql(sqlstr); if (ds.Tables0.Rows.Count != 0) newid = newid + 1; else sqlstr = update 部门表 set 部门编号= + newdepid + where 部门编号= + departmentid + ; result = db.updatabysql(sqlstr); if (result = true) sqlstr = update 部门人员表 set 用户部门= + newdepid + where 用户部门= + departmentid + ; result = db.updatabysql(sqlstr); if (result = false) Response.Write(alert(提交失败!);); else return; else if (this.rbcombineType.SelectedItem.Text = 合并至第一个部门) sqlstr = delete from 部门表 where 部门编号= + depid2 + ; result = db.updatabysql(sqlstr); if (result = true) sqlstr = select 部门编号 from 部门表 where 部门编号 like + depid2 + %; ds = db.getdatadysql(sqlstr); if (ds.Tables0.Rows.Count 1) for (i = 1; i ds.Tables0.Rows.Count; i+) departmentid = ds.Tables0.Rowsi0.ToString(); newid = int.Parse(depid1 + departmentid.Substring(depid1.Length, departmentid.Length) + 1; newdepid = 00 + newid.ToString(); sqlstr = select * from 部门表 where 部门编号= + newdepid + ; ds = db.getdatadysql(sqlstr); if (ds.Tables0.Rows.Count != 0) newid = newid + 1; else sqlstr = update 部门表 set 部门编号= + newdepid + where 部门编号= + departmentid + ; result = db.updatabysql(sqlstr); if (result = true) sqlstr = update 部门人员表 set 用户部门= + newdepid + where 用户部门= + departmentid + ; result = db.updatabysql(sqlstr); if (result = false ) Response.Write(alert(提交失败!);); else return; else Response.Write(alert(合并失败!);); 5.3数据库连接设计其核心代码: SqlConnection con = new SqlConnection(); SqlCommand com = new SqlCommand(); SqlDataAdapter da = new SqlDataAdapter(); DataSet ds = new DataSet(); SqlDataReader dr; public DBClass() / / TODO: 在此处添加构造函数逻辑 / public string getconstr() string constr = Data Source=.SQLEXPRESS;AttachDbFilename=E:myweb毕业设计ASPApp_DataBanZu.mdf;Integrated Security=True;User Insta
展开阅读全文