软件工程课程设计报告.docx

上传人:b****5 文档编号:3651463 上传时间:2022-11-24 格式:DOCX 页数:21 大小:369KB
下载 相关 举报
软件工程课程设计报告.docx_第1页
第1页 / 共21页
软件工程课程设计报告.docx_第2页
第2页 / 共21页
软件工程课程设计报告.docx_第3页
第3页 / 共21页
软件工程课程设计报告.docx_第4页
第4页 / 共21页
软件工程课程设计报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

软件工程课程设计报告.docx

《软件工程课程设计报告.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计报告.docx(21页珍藏版)》请在冰豆网上搜索。

软件工程课程设计报告.docx

软件工程课程设计报告

(此文档为word格式,下载后您可任意编辑修改!

目录

1问题定义1

2可行性研究2

2.1系统流程图2

2.2高层数据流图3

2.3可行性分析3

2.3.1技术可行性3

2.3.2操作可行性3

2.3.3经济可行性3

2.4开发计划4

3需求分析4

3.1ER图4

3.2细化的数据流图5

3.3数据字典6

3.4状态转换图7

4概要设计8

4.1系统层次图8

4.2IPO表8

4.3数据库设计9

5详细设计10

5.1人机界面设计10

5.2过程设计11

5.2.1修改员工信息模块代码11

5.2.2显示员工信息模块代码15

6测试报告17

6.1修改员工信息模块17

6.2显示员工信息模块18

7总结18

参考文献19

1问题定义

 

关于系统规模和目标的报告书

项目名称:

人事档案管理系统

问题:

人事档案管理系统的设计

项目目标:

对单位的人事情况进行管理,完成新职工的登记、职工信息的维护、调离和退休情况的登记,并能按指定的要求完成查询、统计、排序等功能。

项目规模:

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

详细设计

2

实现

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;}·

局部数据元素:

新员工信息Y

注释:

图4-2

(1)修改员工信息模块的IPO表

 

IPO表

系统:

人事档案管理系统

模块:

显示员工信息

编号:

2.1

作者:

任毅

日期:

2011.7.7

被调用:

信息查询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");

}

try{

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)

{

StringID=TID.getText();

Stringname=Tname.getText();

Stringsex=Tsex.getText();

Stringage=Tage.getText();

Stringdept=Tdept.getText();

Stringwages=Twages.getText();

Stringretire=Tretire.getText();

Stringworkyears=Tworkyears.getText();

sql="delete*frompersonwherepID='"+ID+"'";

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}

catch(ClassNotFoundExceptiona){

JOptionPane.showMessageDialog(null,"lianjieshibai");

}

try{

Connectioncon;

con=DriverManager.getConnection("jdbc:

odbc:

person1","","");

Statementsta=con.createStatement();

inti=sta.executeUpdate(sql);

if(i>0){

sql="INSERTINTOpersonVALUES('"+ID+"','"+name+"','"+sex+"','"+age+"','"+dept+"','"+wages+"','"+retire+"','"+workyears+"')";

sta.executeUpdate(sql);

JOptionPane.showMessageDialog(null,"更新成功");

}

else

JOptionPane.showMessageDialog(null,"更新失败");

}

catch(Exceptionee){JOptionPane.showMessageDialog(null,"jfkdalgj");};

}

}

publicstaticvoidmain(String[]args){

TODOAuto-generatedmethodstub

newEditperson();

}

}

5.2.2显示员工信息模块代码

importjava.awt.GridLayout;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.ResultSet;

importjava.sql.Statement;

importjavax.swing.JFrame;

importjavax.swing.JOptionPane;

importjavax.swing.JTextArea;

publicclassAllinfoextendsJFrame{

**

*

*

privatestaticfinallongserialVersionUID=1L;

privateJTextAreainfo=newJTextArea();

Stringsql="";

publicAllinfo(){

super("员工信息");

this.setSize();

this.setDefaultCloseOperation(HIDE_ON_CLOSE);

this.setVisible(true);

this.setLayout(newGridLayout(1,1));

this.add(info);

sql="select*fromperson";

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}

catch(ClassNotFoundExceptiona){

JOptionPane.showMessageDialog(null,"lianjieshibai");

}

try{

Connectioncon;

con=DriverManager.getConnection("jdbc:

odbc:

person1","","");

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");

info.append(rs.getString("pname")+"\t");

info.append(rs.getString("psex")+"\t");

info.append(rs.getString("page")+"\t");

info.append(rs.getString("pdept")+"\t");

info.append(rs.getString("pwages")+"\t");

info.append(rs.getString("pretire")+"\t");

info.append(rs.getString("pworkyear")+"\n");

}

}

catch(Exceptionee){JOptionPane.showMessageDialog(null,"jfkdalgj");};

}

}

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1