1、数据库课程设计大连交通大学信息工程学院数据库课程设计题 目 职工信息管理系统 学生姓名 专业班级 网络工程08-2 指导教师 宋旭东 职称 讲师 所在单位 电气工程系 教学部主任 李峻 完成日期 2010年12月09日数据库课程设计任务书一、课程设计的目的数据库课程设计是软件工程专业(本科)教学大纲要求的重要实践性环节之一,是学习完数据库原理及应用和Oracle数据库应用两门课程后进行的一次数据库方面的综合练习。其目的在于:配合数据库原理及应用和Oracle数据库应用课程的教学,使学生能巩固和加深对数据库基础理论和基本知识的理解;掌握使用数据库进行软件设计的基本思想和方法;提高学生运用数据库理
2、论解决实际问题的能力;培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。二、课程设计的内容及要求内容:用一种高级语言和当前流行的数据库管理系统相结合,完成一个小型管理系统的设计与开发。所设计的小型管理系统应包含两个以上(不多于4个)的模块以及输入输出、查询、插入、删除等基本功能。根据课程设计2周时间的安排选择适当大小的设计课题,课题的选择可以是实际问题,也可以是虚构的问题。根据题目的基本需求,画出系统结构图,并对数据库进行详细设计,编写程序,同时写出关于本数据库管理系统的报告书。要求:(1) 要求学生按照数据库原理及应用和Oracle数据库应用相关知识以及数据库课程设计教学大纲
3、完成一个数据库设计,并撰写相应的课程设计报告。(2)提交课程设计报告。要求完成课程设计报告大约15页-20页,包括相应的模块设计文档、数据库设计文档、所承担模块的核心代码、测试过程分析与运行结果等。分组进行的同学共同完成基本设计与数据库设计,但每个人至少必须独立完成一个模块设计与实现,并写入课程设计报告中。三、课程设计时间课程设计时间为2周(10个工作日)四、课程设计分组一人一组五、课程设计的成果和形式1报告一篇建议论文按下列的提纲书写2符合设计要求的数据库应用系统一个指导教师签字:年 月 日1 系统需求分析 11.1 需求描述 11.2 技术可行性 11.3 操作可行性 21.4 数据流图
4、21.5 数据字典 22 数据库概念结构设计 42.1 全局E-R图 42.2 局部E-R图 53 数据库逻辑结构设计 63.1 初始关系模式 63.2 规范化处理 74 数据库物理结构设计 74.1 基于SQL Server的部分数据表设计 74.2 用户 85 数据库实施 85.1 关系图 86 系统(界面)设计 86.1 部分界面设计及主要代码 8参考文献 15附件一所有SQL运行代码 16附件二 181 系统需求分析1.1 需求描述 随着本世纪以来科学技术的突飞猛进和社会生产力的迅速发展,人们进行信息交流的深度与广度不断增加,信息量急剧增长,传统的信息处理与决策的手段已不能适应社会的需
5、要,信息的重要性和信息处理问题的紧迫性空前提高了,面对着日益复杂和不断发展,变化的社会环境,特别是企业间日趋剧烈的竞争形势,一个人、一个企业要在现代社会中求生存,求发展,必须具备足够的信息和强有力的信息收集与处理手段。电子计算机以强大的信息处理能力作为人类脑力劳动的有力助手登上历史舞台以后,出现了把人类从繁琐的脑力劳动下解放出来的现代信息革命。 为了适应现代企业或公司经营发展的需要,为提高企业工作效率、保证企业职工信息管理质量、快而准确地为企业制定好的经营方针与决策,我们有必要开发一个职工信息管理系统。 该系统应具备以下功能:增加 增加员工的基本信息、培训信息、奖罚信息、薪资信息删除 可根据员
6、工的编号及姓名等资料的删除修改 用户可以对员工的姓名和编号、进行修改。查询 用户可以根据姓名、编号,准确的查到要找的员工,也可以选择部门,查看选中的部门的所有员工。1.2 技术可行性1.Java 简介Java是1995年6月有Sun公司引进到这个世界的革命性的编程语言,它被美国的著名杂志PC Magazine评为1995年十大优秀科技产品。之所以称Java为革命性的编程语言,是因为传统的软件往往与具体的是想环境有关,一旦环境有所变化就需要对软件进行一番改动,耗时费力,而Java编写的软件能在执行码上兼容。这样,只要计算机提供了Java解释器,Java编写的软件就能在其上运行。2.SQL Ser
7、ver 2000 简介 SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统的一个版本。该版本继承了SQL Server 7.0 版本的优点同时又比它增加了许多更先进的功能,具有使用方便,可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。 1.3 操作可行性对于用户来说,本系统只要求使用者掌握一定的上网经验,经过仔细设计和测试之后的系统具有操作简单,方便灵活等优点,足可以满足各种用户的不同需求,同时也方便
8、了公司的内部管理。管理人员及用户一定会在短时间内掌握并熟练使用。只要动一动鼠标键盘就可以达到想要的效果。1.4 数据流图1.5 数据字典 表1.1数据字典库名(EmployeeInformationMS)用户信息表(UserInformation)字段类型说明大小是否为空User_ID Int 员工编号NOT NULLUser_Name varchar员工姓名20NOT NULLPasswordvarchar密码20NOT NULLPopedom varchar权限20NOT NULL部门信息管理(DepartmentInformation)字段类型说明大小是否为空D_Numberint部门编
9、号NOT NULLD_Countvarchar部门人数20NOT NULLD_Namevarchar部门名称20NOT NULL员工基本信息表(EmployeeInformation)字段类型说明大小是否为空E_Numberint员工编号NOT NULLE_Namevarchar姓名20NOT NULLE_Sexvarchar性别2NOT NULLE_BornDatevarchar出生日期30NOT NULLE_Marriagevarchar婚姻状态4NOT NULLE_PoliticsVisagevarchar政治面貌20NOT NULLE_SchoolAgevarchar学历20NOT N
10、ULLE_EnterDatevarchar进入公司时间30NOT NULLE_InDueFormDatevarchar转正时间30NOT NULLE_Departmentvarchar部门20NOT NULLE_Headshipvarchar职务20NOT NULLE_Estatevarchar状态20NOT NULLE_Remarkvarchar备注500NOT NULL培训信息表(TrainInformation)字段类型说明大小是否为空T_Numbervarchar培训编号20NOT NULLT_Contentvarchar培训内容100NOT NULLT_Namevarchar培训员工
11、姓名20NOT NULLT_Dateint培训天数NOT NULLT_Moneyint培训费用NOT NULL奖罚信息表(EncouragementPunishInformation)字段类型说明大小是否为空EP_Numberint员工编号NOT NULLEP_Namevarchar员工姓名30NOT NULLEP_Datevarchar奖罚时间30NOT NULLEP_Addressvarchar奖罚地点50NOT NULLEP_Causationvarchar奖罚原因200NOT NULLEP_Remarkvarchar备注500NOT NULL薪资信息表(WageInformation)
12、字段类型说明大小是否为空W_Numberint员工编号NOT NULLW_Namevarchar员工姓名30NOT NULLW_BasicWageint基本工资NOT NULLW_Boonint福利NOT NULLW_Bonusint奖金NOT NULLW_CountMethodvarchar计算方法50NOT NULLW_FactWageint实发工资NOT NULL2 数据库概念结构设计2.1 全局E-R图2.2 局部E-R图3 数据库逻辑结构设计3.1 初始关系模式用户(员工编号,员工姓名,密码,权限)部门(部门编号,部门人数,部门名称)员工(员工编号,姓名,性别,出生日期,婚姻状态,政
13、治面貌,学历,进入公司时 间,转正时间,部门,职务,状态,备注)培训(培训编号,培训内容,培训员工姓名,培训天数,培训费用)奖罚(员工编号,员工姓名,奖罚时间,奖罚原因,备注)薪资(员工编号,员工姓名,基本工资,福利,奖金,计算方法,实发工资)3.2 规范化处理经过对初始关系模式的规范化处理以下关系模式中不存在部分函数依赖和传递函数依赖,已经达到3NF。(=代表主码,代表外码)用户(员工编号,员工姓名,密码,权限)部门(部门编号,部门人数,部门名称)员工(员工编号,姓名,性别,出生日期,婚姻状态,政治面貌,学历,进入公司时 间,转正时间,部门,职务,状态,备注)培训(培训编号,培训内容,培训员
14、工姓名,培训天数,培训费用)奖罚(员工编号,员工姓名,奖罚时间,奖罚原因,备注)薪资(员工编号,员工姓名,基本工资,福利,奖金,计算方法,实发工资)4 数据库物理结构设计4.1 基于SQL Server的部分数据表设计图4-1部门表图4-2员工表4.2 用户 建立了管理员和admin两个用户。图4-3用户表5 数据库实施5.1 关系图图5-1关系图6 系统(界面)设计6.1 部分界面设计及主要代码1.登陆界面及代码 图6-1登陆界面/用户登陆类部分代码import java.awt.*;import java.awt.event.*;import javax.swing.*;import ja
15、va.sql.*;public class Land extends JFrame JFrame jf ; JTextField textName=new JTextField(); JPasswordField textage=new JPasswordField(); JLabel label = new JLabel(员工管理系统); JLabel labelName=new JLabel(用户名:); JLabel labelage=new JLabel(密码:); JButton buttonEnter=new JButton(登录); JButton buttoncancel=ne
16、w JButton(清空);public Land() jf=this; setTitle(登录); Font f = new Font(新宋体,Font.PLAIN,12); Container con = getContentPane(); con.setLayout(null); label.setBounds(95,10,110,20); label.setFont(new Font(新宋体,Font.PLAIN,14); con.add(label); labelName.setBounds(45,40,55,20); labelName.setFont(f); con.add(la
17、belName); textName.setBounds(95,40,120,20); con.add(textName); labelage.setBounds(45,70,45,20); con.add(labelage); labelage.setFont(f); textage.setBounds(95,70,120,20); con.add(textage); buttonEnter.setBounds(90,110,60,20); buttonEnter.setFont(f); con.add(buttonEnter); public static void main(String
18、 args) new Land(); 2.主界面及代码图6-2主界面/菜单添加及系统菜单的添加部分代码 public Main()/构造函数 setTitle(员工管理系统);/设置窗体标题 Container con = getContentPane(); con.setLayout(new BorderLayout();/创建一个布局 con.add(deskpane,BorderLayout.CENTER);/实例虚拟桌面的布局 Font f =new Font(新宋体,Font.PLAIN,12);/设置一个字体 JMenuBar mb = new JMenuBar();/实例化菜单栏
19、/实例化菜单开始 JMenu systemM = new JMenu(系统管理); systemM.setFont(f); JMenu manageM = new JMenu(信息管理); manageM.setFont(f); JMenu employeeMM = new JMenu(员工信息管理);/这个是信息管理的二级菜单 employeeMM.setFont(f); JMenu selectM = new JMenu(信息查询); selectM.setFont(f); JMenu employeeSM =new JMenu(员工信息查询);/这个是信息查询的二级菜单 employee
20、SM.setFont(f); JMenu aboutM=new JMenu(关于); aboutM.setFont(f);/实例化系统管理菜单的菜单项 JMenuItem password = new JMenuItem(密码修改); password.setFont(f); JMenuItem land = new JMenuItem(重新登陆); land.setFont(f); JMenuItem addDelete = new JMenuItem(添加/删除用户); addDelete.setFont(f); JMenuItem exit = new JMenuItem(退出系统);
21、exit.setFont(f); systemM.add(password); systemM.add(land); systemM.add(addDelete); systemM.add(exit);/为系统管理菜单加事件 password.addActionListener(new ActionListener()/密码修改监听 public void actionPerformed(ActionEvent e) System.out.println(AmendPassword); deskpane.add(new AmendPassword(); ); land.addActionLis
22、tener(new ActionListener()/重新登陆监听 public void actionPerformed(ActionEvent e) System.out.println(Land); setVisible(false); new Land(); ); addDelete.addActionListener(new ActionListener()/添加/删除用户监听 public void actionPerformed(ActionEvent e) deskpane.add(new AddDeleteUser(); ); exit.addActionListener(n
23、ew ActionListener()/退出系统监听 public void actionPerformed(ActionEvent e) setVisible(false); ); 3.系统管理图6-3系统管理系统管理部分主要完成了4部分主要功能,分别是密码修改、重新登录、添加/删除用户、退出系统。这部分功能主要方便管理员对账户的管理以及普通用户对整个系统的操作。4.信息管理图6-4信息管理信息管理部分可以分解为员工信息管理和部门信息管理两方面。其中员工信息管理方面又分为培训信息管理、基本信息管理、奖罚信息管理、薪资信息管理。这部分功能主要在于方便管理员对信息的管理,可以对数据库进行必要的添
24、加、删除、修改操作。5.信息查询图6-5信息查询信息查询部分可以分解为员工信息查询和部门信息查询两方面。其中员工信息查询方面又分为培训信息查询、基本信息查询、奖罚信息查询、薪资信息查询。这部分功能主要在于方便普通用户对信息的查询,可以对自身信息进行查询操作。 6.数据库联接/数据库联接代码import java.sql.*;public class Database public static Connection cn; public static Statement st; public static ResultSet rs; public static boolean joinDB()
25、 boolean joinFlag; try joinFlag = true; Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); cn = DriverManager.getConnection(jdbc:odbc:EmployeeInformationMS,); System.out.println(数据库连接成功); st = cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); return joinFlag; catch (SQLExcept
26、ion sqlEx) System.out.println(sqlEx.getMessage(); joinFlag = false; return joinFlag; catch (ClassNotFoundException notfoundEX) System.out.println(notfoundEX.getMessage(); joinFlag = false; return joinFlag; public static boolean executeSQL(String sqlString) boolean executeFlag; try st.execute(sqlStri
27、ng); executeFlag = true; catch (Exception e) executeFlag = false; System.out.println(sql exception: + e.getMessage(); return executeFlag; public static boolean query(String sqlString) try rs = null; rs = st.executeQuery(sqlString); catch (Exception Ex) System.out.println(sql exception: + Ex); return
28、 false; return true; 参考文献1 耿祥义,张跃平.Java2实用教程M.北京:清华大学出版 社,2006.82 钱雪忠,黄建华.数据库原理及应用M.北京:北京邮电大 学出版社,20073 钱雪忠,陶向东.数据库原理及应用实践指导M.北京:北京邮电 大学出版社,20054 达尔文.Java经典实例M.北京:中国电力出版社,20095 布鲁诺.Java实时编程M.北京:机械工业出版社,2010.1附件一:所有SQL运行代码1.CREATE DATABASE EmployeeInformationMS /创建数据库2.CREATE TABLE UserInformation( User_ID INT IDENTITY(1,1), User_Name VARCHAR(20) NOT NULL, Password VARCHAR(20) NOT NULL, Popedom VARCHAR(20) DEFAULT B, -权限) /创建用户信息表3.CREATE TABLE De
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1