G计算机101王雪萍221003124数据库课程设计.docx
- 文档编号:27472075
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:38
- 大小:482.77KB
G计算机101王雪萍221003124数据库课程设计.docx
《G计算机101王雪萍221003124数据库课程设计.docx》由会员分享,可在线阅读,更多相关《G计算机101王雪萍221003124数据库课程设计.docx(38页珍藏版)》请在冰豆网上搜索。
G计算机101王雪萍221003124数据库课程设计
淮海工学院计算机科学系
课程设计报告
设计名称:
数据库原理及应用课程设计
姓名:
王雪萍学号:
221003124
专业班级:
G计算机101
系(院):
计算机工程学院
设计时间:
2012.1.7--2013.1.18
设计地点:
计算机工程学院机房
成绩:
指导教师评语:
签名:
年月日
一、课程设计的目的
《数据库原理及应用》课程设计是计算机科学与技术专业集中实践性环节之一,是学习《数据库原理及应用》课程后进行的一次全面的综合练习。
本课程设计主要在于加深学生对数据库基础理论和基本知识的理解,掌握数据库应用系统设计开发的基本方法,达到进一步使学生综合运用所学知识和增强实际动手能力的目的。
二、课程设计任务与要求
2.1.课程设计任务
本系统结合企业的实际需要,通过JAVA开发工具、数据库以及SOL语言,主要完成人事管理系统的需求分析、数据库设计及前台程序简单设计与开发。
2.2.课程设计要求
通过对某企业人事管理进行分析,调查,设计该企业的人事管理系统。
主要实现以下功能:
档案管理:
添加员工,基本信息,姓名查询,编号查询
工资管理:
工资录入,修改工资,员工工资
考勤管理:
出勤率
备忘录:
帮助,详细信息
三、设计说明书
3.1概述
1、项目背景:
数据库原理课程设计
2、编写目的:
掌握数据库设计原理及相关软件的使用
3、软件定义:
企业人事管理
4、开发环境:
NetBeansIDE7.1.2
3.2系统需求分析
在当前的信息化管理浪潮下,企业正向着大型化、规模化发展,而对于大中型企业,员工、职称等信息随之急剧增加。
在这种情况下单靠人工来管理员工的信息不但要消耗大量的人力和物力,而且容易出错。
如何设计一个小型企业人事的数据库管理系统,由计算机代替人工执行一系列比如增加新员工,修改员工的信息,员工信息的查询等操作。
这样就使办工人员可以轻松完成人事管理工作。
利用计算机进行员工的管理工作,不仅能够保证员工信息快速准确无误输出,而且还可以利用计算机对职工的各种信息进行统计,同时计算机肯有手工管理所无法比拟的优点。
例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、长本低等。
这些优点能够极大地提高人事管理的效率,也是企业的科学化、正规化管理。
通过对某企业人事管理进行分析,调查,设计该企业的人事管理系统。
主要实现以下功能:
档案管理:
添加员工,基本信息,姓名查询,编号查询
工资管理:
工资录入,修改工资,员工工资
考勤管理:
出勤率
备忘录:
帮助,详细信息
3.3系统设计:
3.3.1.系统总体设计
本系统采用C/S体系结构,客户端负责提供表达式逻辑,显示用户界面信息,访问数据库服务器;采用NetBeansIDE7.1.2作为开发工具;服务器端则用于提供数据服务,采用SQLServer2005作为数据库管理系统.。
依据对以上企业人事管理系统功能的分析,可以将员工管理系统分为以下几个模块,下面是各个模块需要完成的功能。
档案管理:
添加员工,基本信息,姓名查询,编号查询
工资管理:
工资录入,修改工资,员工工资
考勤管理:
出勤率
备忘录:
帮助,详细信息
系统模块如图所示:
3.3.2企业人事管理系统的数据流图:
3.3.2.1数据流图
企业人事管理系统中的数据流主要贯穿于管理员工的基本信息,涉及到档案信息管理,工资信息管理,考勤管理,备忘录信息,用户信息,可以进得一些查询、修改、添加。
输入查询添加查询
返回结果结果
添加修改查询
返回结果结果
输入查询
返回结果结果
3.3.3数据字典
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
数据流图和数据字典共同构成系统的逻辑模型。
由企业人事管理系统的数据流图得到数据字典,举例如下:
(1)名字:
员工基本信息
描述:
保存员工的基本信息,如员工编号,姓名,性别,年龄,部门,职位。
定义:
员工编号为主健,不能为空。
位置:
员工基本信息表
(2)名字:
工资信息
描述:
保存,查询,修改工资的基本状况,如员工编号,基本工资,奖励,个人所得税,考勤扣除
主码为:
员工编号
位置:
工资信息表
(3)名字:
出勤率信息表
描述:
保存员工的出勤基本状况,如员工编号,缺勤时间,总勤时间,出勤率
定义:
员工编号主键
位置:
出勤率信息表
(4)名字:
备忘录信息表
描述:
保存员工的详细基本状况,如员工编号,情况
定义:
员工编号主键
位置:
备忘录信息表
3.3.4数据库设计
3.3.4.1数据库概念结构设计:
本系统主要有员工,工资,出勤,备忘录,登录,帮助这六个实体。
六个实体之间没有联系。
他们各自属于一个实体。
本系统的E-R图如图所示:
E—R图
3.3.4.2数据库逻辑结构设计:
根据关系模型的转换原则,上面的E-R图可以转换为如下所示的关系模型:
Users(ID,Name,Sex,Age,Department,Position)
其含义为:
员工(编号,姓名,性别,年龄,部门,职位)
Salary(ID,Basement,Reward,Tax,Deduction,Total)
其含义为:
工资(编号,基本工资,奖励,个人所得税,考勤扣除,总计)
Attendance(ID,AbsenceTimes,TotalTimes,AbsenceRate)
其含义为:
出勤率(编号,缺勤时间,总勤时间,出勤率)
Admin(AdminID,AdminPassword)
其含义为:
登录(登录名,登录密码)
Help(Action,About)
其含义为:
帮助(关于,事件)
Memorandum(ID,Context)
其含义为:
备忘录(编号,详细信息)
通过以上E-R图的设计和分析,可以为企业人事管理系统创建6张数据表,分别是员工信息基本表,工资信息表,出勤率信息表,登录信息表,帮助表,以及备忘录表。
本系统主要的数据表如下:
(1)员工信息表(Users):
列名
数据类型
长度
允许空
ID
nchar
10
否
Name
nchar
10
是
Sex
nchar
2
是
Age
int
\
是
Department
nchar
20
是
Position
nchar
10
是
(2)工资基本信息表(Salary)
列名
数据类型
长度
允许空
ID
nchar
10
否
Basement
float
\
是
Reward
float
\
是
Tax
float
\
是
Qqin
float
\
是
Deduction
float
\
是
Total
float
\
是
(3)出勤率(Attendance)
列名
数据类型
长度
允许空
ID
nchar
10
否
AbsenceTimes
int
\
是
TotalTimes
float
\
是
AbsenceRate
float
\
是
(4)用户登录表(Admin)
列名
数据类型
长度
允许空
AdminID
Char
5
否
AdminPassword
Char
10
是
(5)帮助信息表(Help)
列名
数据类型
长度
允许空
Action
nChar
100
否
About
nChar
100
是
(6)备忘录(Memorandum)
列名
数据类型
长度
允许空
ID
nchar
10
否
Context
nchar
50
是
3.4系统实施
结合NetBeansIDE7.1.2进行数据库应用开发的特点,设计过程可按如下步骤进行:
3.4.1创建应用数据库及应用对象
建立数据源,控制面板管理工具数据源(ODBC)添加SQLServer名称CompanyManagement服务器HP-PC\SQLEXPRESS更改默认的CompanyManagement数据库名,连接成功。
连接数据库的代码为:
Stringdriver="sun.jdbc.odbc.JdbcOdbcDriver";
Stringurl="jdbc:
odbc:
CompanyManagement";
Stringuser="";
Stringpwd="";
Stringnotes="数据库操作提示";
publicvoiddbconn()//数据库连接
{
try
{
Class.forName(driver);
conn=DriverManager.getConnection(url,user,pwd);
stmt=conn.createStatement();
}
catch(ClassNotFoundExceptionec)
{
System.out.println(ec);
}
catch(SQLExceptiones)
{
System.out.println(es);
}
catch(Exceptionex)
{
System.out.println(ex);
}
}
3.4.2菜单设计
(1)根据应用系统的功能要求,设计如下图所示的菜单结构,其中将菜单命名为Main.java,注释为“主界面”,里面的控件也是加的。
各菜单项标题、名称及相应的事件中的代码如下:
姓名查询:
privatevoidjMenuItem1ActionPerformed(java.awt.event.ActionEventevt)
{
this.dispose();
newSelect_name().setVisible(true);
}
编号查询:
privatevoidjMenuItem2ActionPerformed(java.awt.event.ActionEventevt)
{
this.dispose();
newSelect_id().setVisible(true);
}
添加员工:
privatevoidjMenuItem3ActionPerformed(java.awt.event.ActionEventevt)
{
newYuangongtianjia().setVisible(true);
this.dispose();
}
基本信息:
privatevoidjMenuItem9ActionPerformed(java.awt.event.ActionEventevt)
{
this.dispose();
newYuangongxinxi().setVisible(true);
}
工资录入:
privatevoidjMenuItem5ActionPerformed(java.awt.event.ActionEventevt)
{
this.dispose();
newPay().setVisible(true);
}
修改工资:
privatevoidjMenuItem6ActionPerformed(java.awt.event.ActionEventevt)
{
this.dispose();
newPay_fix().setVisible(true);
}
员工工资:
privatevoidjMenuItem10ActionPerformed(java.awt.event.ActionEventevt)
{
this.dispose();
newGongzichaxun().setVisible(true);
}
出勤率:
privatevoidjMenuItem4ActionPerformed(java.awt.event.ActionEventevt)
{
this.dispose();
newChuQinlv().setVisible(true);
}
出勤信息:
privatevoidjMenuItem11ActionPerformed(java.awt.event.ActionEventevt)
{
this.dispose();
newChuqinxinxi().setVisible(true);
}
帮助:
privatevoidjMenuItem8ActionPerformed(java.awt.event.ActionEventevt)
{
this.dispose();
newHelp().setVisible(true);
}
详细信息:
privatevoidjMenuItem7ActionPerformed(java.awt.event.ActionEventevt)
{
this.dispose();
newXiangxixinxi().setVisible(true);
}
退出界面:
privatevoidjButtonExitActionPerformed(java.awt.event.ActionEventevt)
{
dispose();
System.exit(0);
}
(2)姓名查询的界面,里面加了标签,文本框,文本域,两个按钮。
查询按钮的事件代码;
privatevoidjButtonSelect_idActionPerformed(java.awt.event.ActionEventevt){
//TODOaddyourhandlingcodehere:
booleanflag=false;
jTextArea1.setText(null);
Stringxuehaoid=jTextField1.getText().trim();
Stringname=jTextField2.getText().trim();
db.dbconn();
if(xuehaoid.trim().equals("")&&name.equals(""))
sql="select*fromUsersuinnerjoinSalarysons.ID=u.ID";
elseif(xuehaoid.trim().equals(""))
sql="select*fromUsersuinnerjoinSalarysons.ID=u.IDwhereu.Namelike'%"+name+"%'";
elseif(name.equals(""))
sql="select*fromUsersuinnerjoinSalarysons.ID=u.IDwhereu.ID='"+xuehaoid+"'";
else
sql="select*fromUsersuinnerjoinSalarysons.ID=u.IDwhereu.ID='"+xuehaoid+"'andu.Namelike'%"+name+"%'";
db.dbSelect(sql);JOptionPane.showMessageDialog(this,xuehaoid,"友情提醒",1);
try{
while(db.rs.next()){
try{
id=db.rs.getString("ID");
name=db.rs.getString("Name");
sex=db.rs.getString("Sex");
age=Integer.parseInt(db.rs.getString("Age"));
department=db.rs.getString("Department");
position=db.rs.getString("Position");
basement=db.rs.getString("Basement");
reward=db.rs.getString("Reward");
tax=db.rs.getString("Tax");
deduction=db.rs.getString("Deduction");
total=db.rs.getString("Total");
flag=true;
}
catch(SQLExceptione){}
jTextArea1.append("员工编号:
"+id+"");
jTextArea1.append("员工姓名:
"+name+"");
jTextArea1.append("性别:
"+sex+"");
jTextArea1.append("年龄:
"+age+"");
jTextArea1.append("部门:
"+department+"");
jTextArea1.append("职务:
"+position+"");
jTextArea1.append("基本工资:
"+basement+"");
jTextArea1.append("奖金:
"+reward+"");
jTextArea1.append("个人所得税:
"+tax+"");
jTextArea1.append("考勤扣除:
"+deduction+"");
jTextArea1.append("总计:
"+total+"\n");
}
if(flag==false)
JOptionPane.showMessageDialog(this,"你要查询的数据不存在","友情提醒",1);
}
catch(Exceptione){}
db.dbclose();
}
返回事件的代码:
privatevoidjButtonBcakActionPerformed(java.awt.event.ActionEventevt)
{
this.dispose();
newMain().setVisible(true);
}
(4)添加员工的界面,有标签,文本框,按钮
提交按钮的事件代码:
privatevoidjButtonSubmitActionPerformed(java.awt.event.ActionEventevt)
{
db.dbconn();
Stringid=jTextFieldID.getText();
Stringname=jTextFieldName.getText();
Stringposition=jTextFieldPosition.getText();
Stringdepartment=jTextFieldDepartment.getText();
intage=Integer.parseInt(jTextFieldAge.getText());
Stringsex;
if(jRadioButtonMan.isSelected())
sex="男";
else
sex="女";
sql="insertintoUsersvalues('"+id+"','"+name+"','"+sex+"',"+age+",'"+department+"','"+position+"')";
db.dbInsert(sql);
jLabelNote.setText("插入成功!
");
}
返回按钮的事件代码:
privatevoidjButtonBackActionPerformed(java.awt.event.ActionEventevt)
{
this.dispose();
newMain().setVisible(true);
}
(5)显示信息的界面,有标签,按钮,文本域
查询按钮的事件代码:
privatevoidjToggleButton1ActionPerformed(java.awt.event.ActionEventevt)
{
booleanflag=false;
jTextArea1.setText(null);
Stringtemp=jTextArea1.getText().trim();
db.dbconn();
Stringsql="select*fromUsers";
db.dbSelect(sql);//JOptionPane.showMessageDialog(this,temp,"友情提醒",1);
try{
while(db.rs.next()){
try{
id=db.rs.getString("ID");
name=db.rs.getString("Name");
sex=db.rs.getString("Sex");
age=Integer.parseInt(db.rs.getString("Age"));
department=db.rs.getString("Department");
flag=true;
}
catch(SQLExceptione){}
jTextArea1.append("员工编号:
"+id+"");
jTextArea1.append("员工姓名:
"+name+"");
jTextArea1.append("性别:
"+sex+"");
jTextArea1.append("年龄:
"+age+"");
jTextArea1.append("部门:
"+department+"\n");
}
if(flag==false)
JOptionPane.showMessageDialog(this,"你要查询的数据不存在","友情提醒",1);
}
catch(Exceptione){}
db.dbclose();
}
返回按钮的事件代码:
privatevoidjToggleButton2ActionPerformed(java.awt.event.ActionEventevt)
{
this.dispose();
newMain().setVisible(true);
}
(6)工资录入的界面,有标签,文本框,按钮
提交按钮的事件代码:
privatevoidjButtonSubmitActionPerformed(java.awt.event.ActionEventevt)
{
db.dbconn();
Stringid=jTextFieldID.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 101 王雪萍 221003124 数据库 课程设计