课程设计说明书
设计名称: 数据库课程设计
题 目: 工资管理系统的设计
学生姓名: 欧鹏英 专 业: 网络工程 班 级: 08网络工程(2)班 学 号: 2008394231 指导教师:龙滩,余智豪,杨文茵,丁伟雄 日 期: 2011 年 6 月 24 日
课程设计任务书
网络工程 专业 08网络工程 年级 2 班 欧鹏英
一、设计题目
工资管理系统的设计
二、主要内容
通过对人事管理管理部门中的职称、工资、员工、部门、工资类别等相关内容进行分析,完成具有人员管理、工资管理、部门管理等相关功能的小型数据库管理应用系统,系统需要具备增减工资中应发、应扣类别的灵活性,以适应将来需求的变化。
三、具体要求
1. 根据任务要求完成有关表的设计(表的设计需要遵循3FN)。 2. 完成进人员、部门、工资类别、职称表的维护。 3. 根据需要对工资类别进行添加。
4. 完成工资表的生成,并计算相关数据,进行查询。 5. 按部门计算平均工资。 6. 按人、年统计平均工资。 7. 完成用户管理功能。
四、进度安排
6月13日-6月14日:资料查找、系统分析,数据流程分析,概要设计。
1
6月15日-6月17日:系统详细设计、功能设计。 6月20日-6月23日:算法实现、编程调试。
6月24日:功能演示、资料整理、课程设计说明书编写。
五、完成后应上交的材料
1、课程设计说明书(数据流程图、E-R关系图、功能模块图、数据库表结构、核心算法等)
2、相关源程序文件
六、总评成绩
指导教师 签名日期 年 月 日 系 主 任 审核日期 年 月 日
2
佛山科学技术学院课程设计用纸
目 录
一.设计任务分析„„„„„„„„„„„„„„„„„„„„„„1
1.1目的及意义„„„„„„„„„„„„„„„„„„„„„1 1.2实验内容分析„„„„„„„„„„„„„„„„„„„„1 二.设计的基本思想„„„„„„„„„„„„„„„„„„„„„1 三.算法流程图„„„„„„„„„„„„„„„„„„„„„„„2 四.设计的数据流图和E-R图„„„„„„„„„„„„„„„„„3 五.所设计的表及定义„„„„„„„„„„„„„„„„„„„„4 六.系统功能说明和核心代码的说明„„„„„„„„„„„„„„5 七.实验结果„„„„„„„„„„„„„„„„„„„„„„„„6 八.个人总结„„„„„„„„„„„„„„„„„„„„„„„„7
8.1课程设计中遇到的主要问题和解决方法„„„„„„„„„7 8.2创新和得意之处„„„„„„„„„„„„„„„„„„„7 8.3设计中存在的不足及改进的设想„„„„„„„„„„„„8 8.4感想和心得体会„„„„„„„„„„„„„„„„„„„8 九.参考文献„„„„„„„„„„„„„„„„„„„„„„„„9
佛山科学技术学院课程设计用纸
一.设计任务分析
1.1目的及意义
本课程设计是为了熟悉并巩固《数据库系统》的基本概念和基本理论,加强对操作系统有关原理的理解;培养我们的自主学习、独立思考的能力,让我们学会查找资料并分析资料;培养我们严谨的工作作风,和学习团队合作;提高我们的独立设计、独立进行软件调试的能力;好让我们初步养成良好的系统软件分析和设计能力,形成良好的编程风格。
通过课程设计可以加深我们对数据库管理系统有关理论和概念的理解,掌握数据库应用软件开发的基本技术,能进行数据库设计,能进行数据库应用软件组成模块的设计和系统调试,提高工程设计和系统分析的能力,为毕业设计和以后的工程实践打下良好的基础。
1.2实验内容分析
我们组选择的人事管理系统的设计,其中要包含部门、职称、工资、员工、工资类别等相关内容,然后还要能实现基本的人员管理、工资管理、部门管理。但不用设计得太复杂,只是设计一个小型数据库管理应用系统就可以了,系统中还应具备灵活地增减工资中应发、应扣类别的能力,还应该有一定的通用性和易扩展性,以适应将来需求的变化。在设计的时候要考虑到规范化,建立一个较好的关系模型,减少数据冗余,和避免出现删除异常、插入异常和修改异常的情况。表的设计需要遵循3FN。
二.设计的基本思想
考虑到各自的约束和实际的应用中的情况,所以建立了3个关系模型:部门(部门名字,部门编号),工资(工资编号,职位名称,工
1
佛山科学技术学院课程设计用纸 资金额,扣减金额),工人(工号,名字,年龄,性别,工资编号,部门编号)。工人通过其部门编号和工资编号与其余两个模型建立一种逻辑关系,这样减少了数据冗余之外还可以避免增、删异常,修改起来也方便快捷。也可以提高INSERT、UPDATE语句的性能。使出现不一致性的几率更少,从而提高了数据库的紧凑性。
而程序方面就用了面向对象的java语言编写。因为java具有简单,面向对象,稳定,与平台无关的优点,而且它是解析型,多线程和动态的。除此以外,java还可以容易地实现较好的界面,也比较简单易学,而且是我们这个学期刚学完的一门课,所以就选择了用它来编写程序。
三.算法流程图
工资管理系统 人员信息管理 工资信息管理 部门信息管理 退出系统 增加人员信息 删除人员信息 修改人员信列出全部人信息 查询人员信息 返回上一级菜单 增加部门信息 删除部门信息 修改部门信列出全部部信息 查询部门信息 查询部门平均返回上一级菜息 员息 门工单 资 功能与人员信息管理类似,只是把“人员”变为“工资类别”
2
佛山科学技术学院课程设计用纸
四.设计的数据流图和E-R图
(1)数据流图:
用户输入数据 判断输入或修改的数据的合法性 数据库记录
部门编号 按部门计算平均工资 用户 数据库记录 职工编号 按人计算平均工资
(2)E-R图:
工资编号 职位名称 部门编号 工资金额 部门名字 部门 工资 1 1 工资扣减金额 所属 收入 n 工号 工人 n 性别 工人名字 年龄
3
佛山科学技术学院课程设计用纸
五.所设计的表及定义
(1)表的定义:
部门名称和部门编号表:
CREATE TABLE Department (
Dno int primary key, /* 列级完整性约束条件,Dno是主码 */ Dname char(20), );
工资类型、编号、工资、扣减表: CREATE TABLE Salary (
Sno int primary key, Job char (20), Sal int, Deduct int, );
工人资料表:
CREATE TABLE Worker (
Wno int primary key, Wname char(20), Wage smallint, Wsex char(2) ,
Sno int, Dno int,
FOREIGN KEY(Don) REFERENCES Department(Dno), FOREIGN KEY(Son) REFERENCES Salary(Sno), constraint C3 check (Wsex in(‘女’,‘男’) );
(2)表的形式:
Department表:
Dno 1 Salary表: Sno Job Sal Deduct Dname 人事部 4
佛山科学技术学院课程设计用纸 1 Worker表: Wno 1 经理 Wname 张三 Wage 26 6000 Wsex 男 Sno 1 1000 Dno 2 六.系统功能说明及核心代码的说明
(1)系统功能说明:
这个系统一开始就会显示菜单选项,让你选择是人员信息管理、工资信息管理、部门信息管理中的哪一个,如果有需要还可以通过选择退出来退出系统。进入相应的信息管理模块后,又会有相应的选择项目让你选择操作,比如增加、删除、修改、查询、显示功能,还可以返回上一级菜单。选择相应的命令后就会执行相应的功能,比如选择修改的话,程序会先一条条询问你修改后的信息的内容,还约束性的只给了男或女的选择来确定性别,然后寻找对应的记录,有该记录存在的话就修改。而且还可以用异常处理。 (2)代码说明:
dataBase包中的类图:
DataBaseConnection //数据库连接操作类 - String DBDRIVER; - String DBURL; - String DBUSER; - String DBPASSWORD; - Connection conn; + DataBaseConnection(); //数据库连接 + Connection getConnection(); + void close(); //关闭 object包中的类图(代表):
Worker //工人类 - String Wname; //工人名字 - int Wage; //工人年龄 - String Wsex; //工人性别 - int Sno; //工资类型编号
5
佛山科学技术学院课程设计用纸 - int Dno; //部门编号 + Worker(String Wname, int Wage, String Wsex, int Sno, int Dno); + String getWname(); + void setWname(String wname); + int getWage(); + setWage(int wage); + String getWsex(); + void setWsex(String wsex); + int getSno(); + void setSno(int sno); + int getDno(); + void setDno(int dno) operate包中的类图(代表): WorkerOperate //对工人的控制类 - DataBaseConnection dbc; //连接数据库 InputData input; //输入 + int PrimaryKeyWno(); + int ForeignKeySno(); + int ForeignKeyDno(); + boolean Create(Worker worker); + boolean Delete(); + boolean Update; + void findAll(); + void findById(); test包中的类图(代表): Menu //菜单类 - InputData input; - boolean wflag; //工人标志 - boolean sflag; //工资标志 - boolean dflag; //部门标志 + Menu(); + void showMain(); //显示主菜单 + void showWorker(); + void showSalary(); + void showDepartment(); 七.实验结果
6
佛山科学技术学院课程设计用纸 (1)工资管理部分功能截图:
(2)选择序号为4后显示的情况截图:
八.个人总结
8.1课程设计中遇到的主要问题和解决方法
①初时设计时表没达到3NF的要求,后来经过逐步修改,最后就可以使各个表之间不会出现增删异常。
②原本的程序没有触发器的功能,后来发现修改、删除什么的操作会对数据,特别是工资的值造成影响,所以后来就增加了类似于触发器功能的代码来使数值发生变化时,可以修改与其关联的数据的值。
③连接数据库的时候总了连接不上,后来发现是因为数据库建立的时候使用的名字跟程序中的相应名字不同,改正名字,并修改权限后就可以连接上数据库了。
8.2创新和得意之处
①功能齐全,增加、删除容易,容易操作。 ②显示界面整洁,功能表述清晰易懂。
7
佛山科学技术学院课程设计用纸 ③能随时返回,操作灵活。结构完整,程序写得通俗易懂。 8.3设计中存在的不足及改进的设想
①由于时间关系没有修饰界面,导致界面只是普通的演示界面。日后应该加强美工修养和编写图形用户界面的编程能力。
②题目考虑不够周到,有些信息跟现实情况有差别,且没有深入细化工资类别的内容,工资只是按职工的职位来区分,跟题目要求的工资中应发、应扣类别有点出入。以后还可以修改数据库的设计,增加一个工资类别的基本表,再与工人的数据关联,适当改进一下算工人工资的算法。
③由于考虑的时候默认为使用系统的就是合法用户,所以没有做到权限管理,以后应在设计的时候考虑周到点,加个权限管理的设置,还可以为不同权限的人设置不同的操作权限。
④程序有点重复,有些功能类似的类,但没有建立一个公用的父类,再把那些相似的类继承该父类。可以修改一下程序,使用继承的方法减少代码数量。
8.4感想和心得体会
通过两个星期的课程设计,在老师和同学的共同帮助下,顺利完成了该课程设计,收获颇大。课程设计使我学到了很多书本以外的东西,同时也提高了我们网上查阅资料的能力以及解决、分析具体问题的能力,具备了一定的新时代的基本技能。同时也培养了学生综合运用所学知识发现、提出、分析和解决实际问题,这是实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。也懂得了理论与实际相结合的重要性,仅仅有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从实践中得出结论,才能真正为社会大众服务,从而也提高了自己的实际动手能力和独立思考的能力。在设计
8
的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固以及自己在探索研究问题等方面的某些素质欠佳、有待改进。
九.参考文献
《数据库系统概论》 萨师煊 第3版 高等教育出版社 2000
9
因篇幅问题不能全部显示,请点此查看更多更全内容