oracle课程设计员工管理子系统

上传人:仙*** 文档编号:30279517 上传时间:2021-10-10 格式:DOC 页数:28 大小:5.48MB
收藏 版权申诉 举报 下载
oracle课程设计员工管理子系统_第1页
第1页 / 共28页
oracle课程设计员工管理子系统_第2页
第2页 / 共28页
oracle课程设计员工管理子系统_第3页
第3页 / 共28页
资源描述:

《oracle课程设计员工管理子系统》由会员分享,可在线阅读,更多相关《oracle课程设计员工管理子系统(28页珍藏版)》请在装配图网上搜索。

1、1目目 录录1业务需求.32 命名规范.33 概念设计.43.1 概念模型特点.43.2 设计 E-R 图技术步骤.43.3 规则和约束.54 逻辑结构设计.55 E-R 模型图.66 数据库设计.66.1 数据字典设计.66.2 部门表设计.76.3 员工表设计.76.4 设计触发器.86.4.1 插入触发器.86.4.2 修改触发器.106.5 设计函数.116.5.1 员工编号函数.116.5.2 部门编号函数.127 运行测试.137.1 登录界面.137.2 登录成功.147.3 管理部门界面.147.4管理民族界面.167.5 管理岗位界面.177.6 管理员工界面.177.7 管

2、理员工简历界面.187.8 查看信息界面.208 总结.227 附录代码.2321.1. 员工管理子系统的业务需求员工管理子系统的业务需求 数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,达到有效地存储数据以满足用户信息要求和处理要求。 员工管理子系统实现的功能是:用户登录后能够对本企业员工的基本信息进行管理,包括浏览员工信息、查询或统计某一条件下的员工信息,修改某员工信息等。 本系统的应用需求: (1)员工实体至少包括编号、姓名、性别、出生日期、参加工作日期、民族、部门、简历和照片。 (2)一个部门有多个员工,每个员工仅属于一个部门。 (3)部门实体至少包

3、括部门编号、部门名称、部门地址、部门负责人。 (4)部门之间有上下级关系 (5)员工编号的构成为 XXXX-XXX,前 4 位为参加工作日期的年份,后 3 位为该年份的流水号,员工编号可以自动产生,也可以手工录入。 (6)部门名称是唯一的。(7)性别只能取男、女。2.2. 命名规范命名规范 数据库对象的命名必须有统一的标准,一般使用具有含义的英文全称。下面给出本员工管理子系统实例的命名规范:(1)所有的表名用具有实际含义的英文单词组成,且首个字母必须大写,如Employee。(2)所有的属性名用具有实际含义的英文单词组成,且首个字母必须大写,如EmployeeName。(3)所有的主键名用“表

4、名_PK”表示,例 Employee_PK。(4)所有的唯一索引名用“列名_Unique”表示,如DepartmentName_Unique。(5)所有的约束名用“列名_Check”表示,如 BirthDay_Check。3(6)所有的外键名用“本表外键表_FKn”表示,如 EmployeeDepartment_FK1(7)所有的函数名用 fun+具有实际含义的英文单词组成,如 funEmployeeNo。(8)所有的存储过程名用 pro+具有实际含义的英文单词组成,如proEmployeeNo。(9)所有的触发器名用“表名+Update/Insert/Delete”组成,如EmployeeI

5、nsert。(10)所有的变量、属性、约束、规则必须给出详细的注解3.3. 概念设计概念设计 通过对用户需求进行综合、归纳与抽象,形成一个独立于具体 DBMS 的概念模型,并可以转换为计算机上某一 DBMS 支持的特定数据模型。3.13.1 概念模型特点概念模型特点 (1) 具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识。 (2) 应该简单、清晰、易于用户理解,是用户与数据库设计人员之间进行交流的语言。3.23.2 设计设计 E-RE-R 图技术步骤图技术步骤定义实体定义联系确定实体间的联系是 1:1、1:n 还是 m:n 的联系。定义码确定唯一标识每个实体的侯选码,再从侯选

6、码中确定主码。定义属性确定属性的非空及非多值规则。检查完全依赖函数规则和非传递依赖规则,保证一个非主码属性必须依赖于主码,满足关系理论第三范式的属性集。定义其他对象和规则4定义属性的数据类型、长度、精度、非空、缺省值、约束规则等。定义触发器、存储过程、视图等对象信息。员工管理子系统的 E-R 模型图3.33.3 规则和约束规则和约束所有的编号唯一,且员工编号的构成为 XXXX-XXX,前 4 位为参加工作日期的年份,后 3 位为该年份的流水号,对编号建立主键。部门名称唯一,对部门名称建立唯一索引。性别只能取男、女,建立性别的检查约束。是否作废用数字 0 和 1 表示,建立是否作废的检查约束。部

7、门之间有上下级关系。同一个民族、同一个岗位和同一个部门可以有多位员工,分别在这些表间建立外键约束。对员工实体建立触发4.4. 逻辑结构设计逻辑结构设计为了提高数据库系统的性能,通常以规范化理论为指导,确定数据依赖,消除冗余的联系;一般将关系分解为 3NF,即:表内的每一个值都只能被表达一次。表内的每一行都应该被唯一的标识(有唯一键)。表内不应该存储依赖于其他键的非键信息。本员工管理子系统实例采用 Oracle10g 数据库,其逻辑结构如下:岗位实体:岗位(岗位编号、岗位名称、是否作废)民族实体:民族(民族编号、民族名称、是否作废)部门实体:部门(部门编号、部门名称、负责人、上级部门、地址、电话

8、)5员工实体:员工(员工编号、员工名称、所属部门、所属岗位、所属民族、性别、出生日期、工作日期、照片、简历)带下划线的表示主键。5.5. E-RE-R 模型图模型图6.6. 数据库设计数据库设计 6.16.1数据字典设计数据字典设计 一般来说,管理信息系统会涉及大量的静态数据,如商品单位、所属民族、所在岗位、工资级别、所属国家、行政级别等,这些数据,其数据的组织结构基本一致,有少量的数据可能今后不用,为了便于查询,可以为静态数据设置一个是否作废的属性,该属性用于历史数据查询和统计,而在事务处理中,已作废的数据不被检索和使用。6民族字典民族字典 DCNationDCNation:属性名称属性名称

9、属性类型属性类型是否允许为空是否允许为空默认值默认值约束约束含义含义NationNoNationNochar(3)char(3)NOTNOT NULLNULL 主键主键民族编号民族编号NationNameNationNamevarchar2(30)varchar2(30)NULLNULL 民族名称民族名称IfVoidIfVoidNumber(1)Number(1)NOTNOT NULLNULL默认为默认为0 0只能取只能取 0 0和和 1 1是否作废是否作废岗位字典岗位字典 DCPostDCPost:属性名称属性名称属性类型属性类型是否允许为空是否允许为空默认值默认值约束约束含义含义PostN

10、oPostNochar(3)char(3)NOTNOT NULLNULL 主键主键岗位编号岗位编号PostNamePostNamevarchar2(30)varchar2(30)NULLNULL 岗位名称岗位名称IfVoidIfVoidNumber(1)Number(1)NOTNOT NULLNULL默认为默认为0 0只能取只能取 0 0和和 1 1是否作废是否作废6.26.2 部门表设计部门表设计部门表部门表 DepartmentDepartment:属性名称属性名称属性类型属性类型是否允许为是否允许为空空默认默认值值约束约束含义含义DepartmentNoDepartmentNochar(

11、3)char(3)NOTNOT NULLNULL 主键主键部门编号部门编号DepartmentNameDepartmentNamevarchar2(30)varchar2(30)NULLNULL 名称唯名称唯一一部门名称部门名称UpperDepartmentNoUpperDepartmentNochar(3)char(3)NULLNULL 上级部门上级部门ManagerManagervarchar2(20)varchar2(20)NULLNULL 负责人负责人AddressAddressvarchar2(30)varchar2(30)NULLNULL 地址地址TelphoneTelphonev

12、archar2(20)varchar2(20)NULLNULL 电话电话 6.36.3 员工表设计员工表设计 由于员工表中有照片和简历属性,这两个属性在业务处理中使用较少,本实例将这两个属性从员工表中分离出去。7员工基本表员工基本表 EmployeeEmployee:属性名称属性名称属性类型属性类型是否允许为是否允许为空空默认值默认值约束约束含义含义EmployeeNoEmployeeNochar(8)char(8)NOTNOT NULLNULL 主键主键员工编号员工编号EmployeeNameEmployeeNamevarchar2(30)varchar2(30)NOTNOT NULLNUL

13、L 员工名称员工名称DepartmentNoDepartmentNochar(3)char(3)NULLNULL 外键外键所属部门所属部门sexsexvarchar2(2)varchar2(2)NULLNULL 性别性别EmployeeDateEmployeeDatedatedateNULLNULL 出生日期出生日期WorkDateWorkDatedatedateNULLNULL 工作日期工作日期NationNoNationNochar(3)char(3)NULLNULL 外键外键所属民族所属民族PostNoPostNochar(3)char(3)NULLNULL 外键外键所属岗位所属岗位员工

14、附加表员工附加表 EmployeeOtherEmployeeOther:属性名称属性名称属性类型属性类型是否允许是否允许为空为空默认默认值值约束约束含义含义EmployeeNoEmployeeNochar(8)char(8)NOTNOT NULLNULL 主键、主键、外键外键员工编号员工编号EmployeeMemoEmployeeMemovarchar2(1000)varchar2(1000)NULLNULL 简历简历EmployeeImageEmployeeImageblobblobNULLNULL 照片照片6.46.4 设计触发器设计触发器为了保证员工编号的正确性,为员工表的插入和修改设计

15、触发器。6.4.16.4.1 插入触发器插入触发器 rem * 创建触发器 EmployeeInsrem * 功能:当插入员工编号时,编号必须满足为数字create or replace trigger EmployeeIns before insert on Employee for each rowdeclare myError exception; varLeft char(4); varMid char(4);8 varRight char(3); i number;begin if length(:new.EmployeeNo)!=8 then raise myError; end

16、if; varLeft:=substr(:new.EmployeeNo,1,4); varMid:=substr(:new.EmployeeNo,5,1); varRight:=substr(:new.EmployeeNo,6,3); if varMid!=- then raise myError; end if; for i in 1.4 loop if substr(varLeft,i,1)9 then raise myError; exit; end if; end loop; for i in 1.3 loop if substr(varRight,i,1)9 then raise m

17、yError; exit; end if; end loop; exception when myError then :new.EmployeeNo:=null;end;96.4.26.4.2 修改触发器修改触发器rem * 创建修改触发器 EmployeeUpdaterem * 功能:当修改编号时,编号必须满足为数字create or replace trigger EmployeeUpdate before update of EmployeeNo on Employee for each rowdeclare myError exception; varLeft char(4); va

18、rMid char(4); varRight char(3); i number;begin if length(:new.EmployeeNo)!=8 then raise myError; end if; varLeft:=substr(:new.EmployeeNo,1,4); varMid:=substr(:new.EmployeeNo,5,1); varRight:=substr(:new.EmployeeNo,6,3); if varmid!=- then raise myError; end if; for i in 1.4 loop if substr(varLeft,i,1)

19、9 then raise myError; exit; end if; end loop;10 for i in 1.3 loop if substr(varRight,i,1)9 then raise myError; exit; end if; end loop;exception when myError then :new.EmployeeNo:=:old.EmployeeNo; :new.EmployeeName:=:old.EmployeeName; :new.DepartmentNo:=:old.DepartmentNo; :new.sex:=:old.sex; :new.Emp

20、loyeeDate:=:old.EmployeeDate; :new.WorkDate:=:old.WorkDate; :new.NationNo:=:old.NationNo; :new.PostNo := :old.PostNo;end;6.56.5 设计函数设计函数6.5.16.5.1 员工编号函数员工编号函数rem *产生员工编号函数函数方法 rem * 功能:根据输入的员工入职年份,自动产生员工编号 rem * 输入参数:sYear 年份 rem * 返回值:员工编号create or replace function funEmployeeNo(sYear varchar2) re

21、turn varchar2is x number;11 varEmployeeNo1 varchar2(8); varEmployeeNo2 varchar2(8);begin varEmployeeNo1:=; select nvl(max(EmployeeNo),0) into varEmployeeNo1 from Employee where EmployeeNo like sYear | %; if varEmployeeNo1=0 then varEmployeeNo2:=sYear|-001; else x:=to_number(substr(varEmployeeNo1,6,3

22、)+1; if x10 then varEmployeeNo2:=sYear|-00|ltrim(to_char(x); elsif x100 then varEmployeeNo2:=sYear|-|ltrim(to_char(x); end if; end if; return(varEmployeeNo2);end funEmployeeNo; 6.5.26.5.2 部门编号函数部门编号函数rem *产生部门编号函数函数方法 rem * 功能:根据当前部门编号的最大值,自动产生部门编号 rem * 返回值:部门编号create or replace function funDepartm

23、entNo return varchar2is x number; varDepartmentNo1 varchar2(3); varDepartmentNo2 varchar2(3);begin12 varDepartmentNo1:=; select nvl(max(DepartmentNo),0) into varDepartmentNo1 from Department; if varDepartmentNo1=0 then varDepartmentNo2:=001; else x:=to_number(varDepartmentNo1)+1; if x10 then varDepa

24、rtmentNo2:=00|ltrim(to_char(x); elsif x100 then varDepartmentNo2:=0|ltrim(to_char(x); end if; end if; return(varDepartmentNo2);end funDepartmentNo;7.7. 运行测试运行测试7.17.1 登录界面登录界面137.27.2 登录成功登录成功7.37.3 管理部门界面管理部门界面(1)主界面14(2)点击编辑,界面改变(3)点击增加,可以添加记录15(4)点击删除 022 对应行的删除167.47.4 管理民族界面管理民族界面更新、删除、增加的原理跟管理

25、部门相似。7.57.5 管理岗位界面管理岗位界面177.67.6 管理员工界面管理员工界面7.77.7 管理员工简历界面管理员工简历界面18(1)主界面。下拉列表里列有员工号,点击员工号,下面会显示有关那个员工的简历信息。(2)删除功能19(3)插入简历信息207.87.8 查看信息界面查看信息界面(1)主界面。(2)点击按钮,就会实现查询。21(3)输入年份,可以查询年前员工和年后员工。点击查询年前员工:点击查询年后员工:22(4)从下拉列表中可以选择查询启用或者作废的信息:点击查询民族:下拉列表选择作废,则出现:8.8. 总结总结经过将近一个星期的“自我挑战”终于完成大型数据库课程设计。通

26、过这次令人难忘的经历,我知道做课程设计不能急于求成,必须循序渐进。在动手以前,必须理解用户对于程序的要求,从而明确所要设计的系统的功能,还要明确 ASP.NET 编程思想。对程序有一个总体的构思、总体的框架以后,就开始在 ORACLE 上建表、建触发器和函数。在草稿纸上完成了总体设计之后,再进行详细设计、模块设计。VS 软件不是第一次用,但是其功能太强大,一用新控件就出现很多错误操作,经过一步一步耐心地调试,错误终于逐步解决,在这期间,同学给了我很大的帮助,帮我解决了很多编译错误的问题,教导我要耐心,不懂的问题要适当上网查询,因为很多知识书本上并没有。通过这次综合课程设计,我深刻体会到实践的重

27、要性,只有通过实践才能把书本上的知识充分落实到位并延伸到实际,还有同学之间的相互讨论也很重要。让我了解到了做系统不是一件易事。这次实践很开心,虽然有时候为了一些错误纠结半天,不断上网查找资料,不断测试,问同学,但是最后解决了问题之后,就非常兴奋,很有成就感!其实,编系统是一件快乐的事,虽然我界面不是很漂亮,但是我会去完善不足的。系统主界面我是用 FW 设计出来的,有些功能没有显示出来,有点失望,不过以后会去多研究的了。239.9. 附录代码附录代码Login.aspx.csLogin.aspx.csusing System;using System.Data;using System.Conf

28、iguration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.OracleClient;public partial class _Default : System.Web.UI.Page protected void Page_Load(object sender,

29、 EventArgs e) protected void Button1_Click(object sender, EventArgs e) string usetxt = this.TextBox2.Text; string pass = this.TextBox1.Text; if (usetxt = ) this.Response.Write(alert(用户名不能为空!);); return; if (pass = ) this.Response.Write(alert(密码不能为空!);); return; OracleConnection con = new OracleConne

30、ction(ConfigurationManager.ConnectionStringsConnectionString.ConnectionString); con.Open(); try OracleCommand cmd = new OracleCommand(); cmd.Connection = con;24 cmd.CommandText = select * from admin where adminid=:u and password=:p; cmd.Parameters.AddWithValue(:u,usetxt); cmd.Parameters.AddWithValue

31、(:p,pass); cmd.CommandType = CommandType.Text; if (cmd.ExecuteOracleScalar()!=null) Response.Write( alert(登录成功!); Response.Redirect(homepage.htm); return; else Response.Write( alert(密码错误!); finally con.Close(); protected void TextBox2_TextChanged(object sender, EventArgs e) protected void TextBox1_T

32、extChanged(object sender, EventArgs e) protected void Button2_Click(object sender, EventArgs e) TextBox2.Text=; TextBox1.Text=; Department.aspx.csDepartment.aspx.csusing System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using Syst

33、em.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;25using System.Data.OracleClient;public partial class Department : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) OracleConnection con = new OracleConnection(C

34、onfigurationManager.ConnectionStringsConnectionString.ConnectionString); protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) con.Open(); OracleCommand cmd = new OracleCommand(); GridViewRow row = GridView1.Rowse.RowIndex; string DepartNo = GridView1.DataKeyse.RowIndex.Valu

35、es0.ToString(); string sc = delete from Department where DepartmentNo= + DepartNo; OracleCommand mycommand = new OracleCommand(sc, con); mycommand.ExecuteNonQuery(); if (mycommand.ExecuteNonQuery() != -1) Response.Write( alert(删除成功!); return; con.Close(); protected void GridView1_RowUpdating(object

36、sender, GridViewUpdateEventArgs e) GridViewRow row = GridView1.Rowse.RowIndex; string DepartNo = GridView1.DataKeyse.RowIndex.Values0.ToString(); string gc = update Department set DepartmentName= + (TextBox)(row.Cells1.Controls0).Text.ToString().Trim() + ,UpperDepartmentNo= + (TextBox)(row.Cells2.Co

37、ntrols0).Text.ToString().Trim() + ,Manager= + (TextBox)(row.Cells3.Controls0).Text.ToString().Trim() + ,Address= + (TextBox)(row.Cells4.Controls0).Text.ToString().Trim() + ,Telphone= + (TextBox)(row.Cells5.Controls0).Text.ToString().Trim() + where DepartmentNo= + DepartNo; OracleCommand mycommand =

38、new OracleCommand(gc, con); con.Open(); mycommand.ExecuteNonQuery(); if (mycommand.ExecuteNonQuery() != -1)26 Response.Write( alert(更新成功!); return; con.Close(); protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) protected void GridView1_RowCommand(object sender, GridViewComman

39、dEventArgs e) if (e.CommandName = insert) OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStringsConnectionString.ConnectionString); con.Open(); OracleCommand cmd = new OracleCommand(); cmd.Connection = con; cmd.CommandText = select funDepartmentNo() from dual; cmd.Command

40、Type = CommandType.Text; string DNo = cmd.ExecuteScalar().ToString(); con.Close(); SqlDataSource1.InsertParameters.Clear(); SqlDataSource1.InsertParameters.Add(DEPARTMENTNO, DNo); SqlDataSource1.InsertParameters.Add(DEPARTMENTNAME, TextBox1.Text); SqlDataSource1.InsertParameters.Add(UPPERDEPARTMENTN

41、O, TextBox2.Text); SqlDataSource1.InsertParameters.Add(MANAGER, TextBox3.Text); SqlDataSource1.InsertParameters.Add(ADDRESS, TextBox4.Text); SqlDataSource1.InsertParameters.Add(TELPHONE, TextBox5.Text); SqlDataSource1.Insert(); Response.Write( alert(插入成功!); TextBox1.Text = ; TextBox2.Text = ; TextBo

42、x3.Text = ; TextBox4.Text = ; TextBox5.Text = ; protected void Button1_Click(object sender, EventArgs e) Response.Redirect(homepage.htm); 27Nation.aspxNation.aspx 无标题页 asp:SqlDataSource ID=SqlDataSource1 runat=server ConflictDetection=CompareAllValues ConnectionString= DeleteCommand=DELETE FROM DCNA

43、TION WHERE NATIONNO = :original_NATIONNO AND NATIONNAME = :original_NATIONNAME AND IFVOID = :original_IFVOID InsertCommand=INSERT INTO DCNATION (NATIONNO, NATIONNAME, IFVOID) 28VALUES (:NATIONNO, :NATIONNAME, :IFVOID) OldValuesParameterFormatString=original_0 ProviderName= SelectCommand=SELECT * FROM DCNATION UpdateCommand=UPDATE DCNATION SET NATIONNAME = :NATIONNAME, IFVOID = :IFVOID WHERE NATIONNO = :original_NATIONNO AND NATIONNAME = :original_NATIONNAME AND IFVOID = :original_IFVOID 请输入你要插入的民族信息 民族: 判断是否作废(或者):

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!