最新版软件工程课程设计报告Word下载.docx
- 文档编号:22445166
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:22
- 大小:368.91KB
最新版软件工程课程设计报告Word下载.docx
《最新版软件工程课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《最新版软件工程课程设计报告Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
对单位的人事情况进行管理,完成新职工的登记、职工信息的维护、调离和退休情况的登记,并能按指定的要求完成查询、统计、排序等功能。
项目规模:
1000行代码左右
初步设想:
用Java语言编写一个简单的能达成项目目标的人事档案管理系统
可行性研究:
如下
2可行性研究
2.1系统流程图
图2-1人事档案管理系统流程图
2.2高层数据流图
图2-2人事档案管理系统数据流图
2.3可行性分析
2.3.1技术可行性
要求和目标:
本系统要求对单位的人事情况进行管理,完成新职工的登记、职工信息的维护、调离和退休情况的登记,并能按指定的要求完成查询、统计、排序等功能。
可能实现的方法:
本组准备采用java语言编写程序界面和数据处理部分,使用java链接数据库,用数据库完成人员信息的保存,修改。
用SQL语言完成对数据库中的内容进行查询排序等功能。
2.3.2操作可行性
本系统采用图形界面,有良好的中文提示和界面提示。
能保证用户能够正常使用该系统完成需求的功能。
2.3.3经济可行性
本系统为课程设计,不产生经济效益,故暂不考虑经济可行性
2.4开发计划
人事档案管理系统的粗略计划
阶段
要用的时间(天)
可行性研究
1
需求分析
3
概要设计
2
详细设计
实现
总计
10
3需求分析
3.1ER图
图3-1员工对象ER图
3.2细化的数据流图
图3-2细化的数据流图
3.3数据字典
名称:
员工信息
别名:
员工
描述:
员工的各项基本信息
定义:
员工信息=员工编号+姓名+所在部门+性别+年龄
+工资+是否退休+工龄
员工编号=4{数字}4
姓名=1{字符}4
所在部门=1{字符}10
性别=[男|女]
年龄=1{数字}2
工资=1{数字}10
是否退休=[是|否]
工龄=1{数字}2
数字=[0|1|2|3|4|5|6|7|8|9]
位置:
员工信息数据库,输出到程序界面
3.4状态转换图
图3-4人事档案管理系统状态转换图
4概要设计
4.1系统层次图
图4-1系统层次图
4.2IPO表
IPO表
系统:
模块:
修改员工信息
编号:
1.2
作者:
任毅
日期:
2011.7.7
被调用:
信息维护1.0
调用:
输入:
员工编号X
新员工信息Y
输出:
新员工信息
处理:
IFX存在;
THEN{删除编号为X的员工信息;
添加新员工信息Y,该员工编号为X;
}·
局部数据元素:
注释:
图4-2
(1)修改员工信息模块的IPO表
显示员工信息
2.1
信息查询2.0
员工信息表
显示全部员工信息
图4-2
(2)显示员工信息模块的IPO表
4.3数据库设计
此系统中为员工信息涉及一个名为person的数据库,数据库中包含一个名为person的表。
Person表含有8个字段,用来保存员工的各项信息。
分别为:
pID,员工编号
pname,姓名
psex,性别
pdept,所在部门
pwages,工资
pretire,是否退休
pworkyear,工龄
表设计如图:
图4-3数据库表设计
5详细设计
5.1人机界面设计
图5-1
(1)编辑员工信息模块界面图
图5-1
(2)显示员工信息模块界面图
5.2过程设计
图5-2
(1)修改员工信息模块的N-S图
图5-2
(2)显示员工信息模块的N-S图
5.2.1修改员工信息模块代码
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.Statement;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JTextField;
publicclassEditpersonextendsJFrameimplementsActionListener{
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
privateJLabelLID=newJLabel("
员工编号"
);
privateJTextFieldTID=newJTextField();
privateJLabelLname=newJLabel("
姓名"
privateJTextFieldTname=newJTextField();
privateJLabelLsex=newJLabel("
性别"
privateJTextFieldTsex=newJTextField();
privateJLabelLage=newJLabel("
年龄"
privateJTextFieldTage=newJTextField();
privateJLabelLdept=newJLabel("
所在部门"
privateJTextFieldTdept=newJTextField();
privateJLabelLwages=newJLabel("
工资"
privateJTextFieldTwages=newJTextField();
privateJLabelLretire=newJLabel("
是否退休"
privateJTextFieldTretire=newJTextField();
privateJLabelLworkyears=newJLabel("
工龄"
privateJTextFieldTworkyears=newJTextField();
privateJButtonBque=newJButton("
查询"
privateJButtonBedi=newJButton("
编辑"
Stringsql="
"
;
publicEditperson(){
super("
编辑员工信息"
this.setSize();
this.setDefaultCloseOperation(HIDE_ON_CLOSE);
this.setVisible(true);
this.setLayout(newGridLayout(9,2));
this.add(LID);
this.add(TID);
this.add(Lname);
this.add(Tname);
this.add(Lsex);
this.add(Tsex);
this.add(Lage);
this.add(Tage);
this.add(Ldept);
this.add(Tdept);
this.add(Lwages);
this.add(Twages);
this.add(Lretire);
this.add(Tretire);
this.add(Lworkyears);
this.add(Tworkyears);
this.add(Bque);
this.add(Bedi);
Bque.addActionListener(this);
Bedi.addActionListener(this);
}
@Override
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
if(e.getSource()==Bque)
{
StringID=TID.getText();
sql="
SELECT*FROMpersonWHEREpID='
+ID+"
'
try{
Class.forName("
sun.jdbc.odbc.JdbcOdbcDriver"
catch(ClassNotFoundExceptiona){
JOptionPane.showMessageDialog(null,"
lianjieshibai"
}
Connectioncon;
con=DriverManager.getConnection("
jdbc:
odbc:
person1"
"
Statementsta=con.createStatement();
ResultSetrs=sta.executeQuery(sql);
if(rs.next())
{
Stringname=rs.getString("
pname"
Stringsex=rs.getString("
psex"
Stringage=rs.getString("
page"
Stringdept=rs.getString("
pdept"
Stringwages=rs.getString("
pwages"
Stringretire=rs.getString("
pretire"
Stringworkyears=rs.getString("
pworkyear"
Tname.setText(name);
Tsex.setText(sex);
Tage.setText(age);
Tdept.setText(dept);
Twages.setText(wages);
Tretire.setText(retire);
Tworkyears.setText(workyears);
else
JOptionPane.showMessageDialog(null,"
失败"
}
catch(Exceptionee){JOptionPane.showMessageDialog(null,"
jfkdalgj"
};
}
if(e.getSource()==Bedi)
Stringname=Tname.getText();
Stringsex=Tsex.getText();
Stringage=Tage.getText();
Stringdept=Tdept.getText();
Stringwages=Twages.getText();
Stringretire=Tretire.getText();
Stringworkyears=Tworkyears.getText();
delete*frompersonwherepID='
inti=sta.executeUpdate(sql);
if(i>
0){
sql="
INSERTINTOpersonVALUES('
'
+name+"
+sex+"
+age+"
+dept+"
+wages+"
+retire+"
+workyears+"
)"
sta.executeUpdate(sql);
更新成功"
更新失败"
publicstaticvoidmain(String[]args){
newEditperson();
}
5.2.2显示员工信息模块代码
importjavax.swing.JTextArea;
publicclassAllinfoextendsJFrame{
privateJTextAreainfo=newJTextArea();
publicAllinfo(){
员工信息"
this.setLayout(newGridLayout(1,1));
this.add(info);
sql="
select*fromperson"
try{
Class.forName("
catch(ClassNotFoundExceptiona){
JOptionPane.showMessageDialog(null,"
Connectioncon;
con=DriverManager.getConnection("
Statementsta=con.createStatement();
ResultSetrs=sta.executeQuery(sql);
Stringtext="
ID\t姓名\t性别\t年龄\t所在部门\t工资\t是否退休\t工龄"
text+="
\n"
info.append(text);
while(rs.next()){
info.append(rs.getString("
pID"
)+"
\t"
catch(Exceptionee){JOptionPane.showMessageDialog(null,"
6测试报告
6.1修改员工信息模块
设定原数据库中含有如下图的员工信息:
图6-1
(1)数据库中原有信息
输入一个不存在的员工编号进行查询,显示查询失败:
图6-1
(2)输入错误员工号的结果
按下图所示修改存在的编号为0003的员工信息:
图6-1(3)修改员工信息
观察数据库,修改员工信息成功
图6-1(4)成功修改员工信息
6.2显示员工信息模块
能成功显示员工信息
图6-2显示员工信息
7总结
本系统基本能够完成需求分析中要求的各项功能,既能够对员工信息进行添加,编辑,、删除操作,能够查看员工信息,能够编号、年龄、工资、工龄四个条件对员工信息进行排序查看。
本系统还有很多能够改进之处。
比如本系统数据库中只设计了一个表用来存储员工信息,我设想还可以再设计一个部门信息的表,与员工信息表连接。
这样做能够更加完善系统结构,使系统更加实用。
而且,本系统还可以增加按性别,部门等条件查看员工信息的功能(比如查看开发部的所有员工)。
总之,虽然程序还有很多不足。
但是经过这次课程设计,我还是有很多收获。
在这次课程设计中,我第一次用java进行连接数据库操作,并且第一次设计比较复杂的程序界面。
使我对数据库的重要性和易用性有了更深的理解。
参考文献
[1]张海藩编著.软件工程导论(第5版).北京:
清华大学出版社,2008
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新版 软件工程 课程设计 报告