课程设计报告最终成品1.docx
《课程设计报告最终成品1.docx》由会员分享,可在线阅读,更多相关《课程设计报告最终成品1.docx(15页珍藏版)》请在冰豆网上搜索。
课程设计报告最终成品1
目录
1、需求分析...............................................................................................1
2、问题分析...............................................................................................1
3、概要设计...............................................................................................2
4、模块设计...............................................................................................3
4.1模块划分.......................................................................................4
4.2模块结构图..................................................................................4
5、详细设计...............................................................................................4
5.1登录界面设计.................................................................................4
5.2主界面设计.....................................................................................5
5.2.1查询模块设计...................................................................5
5.2.2删除模块设计.....................................................................8
5.2.3修改模块设计...................................................................8
5.2.4增加模块设计...................................................................9
5.2.5排序模块设计....................................................................10
6、调试分析和系统优化..........................................................................12
7、测试结果..............................................................................................14
参考文献......................................................................................................14
组员考勤表
职工管理系统
1、需求分析
随着计算机的飞速发展,它的应用已经十分广泛,它在人们的生产、生活、工作和学习中发挥着重要的作用。
例如一个现代化的公司,拥有数千名的员工,那么如何管理这么庞大的职工信息档案呢?
这时,开发一个功能完善的职工信息管理系统就必不可少了。
本文介绍了利用Delphi开发本系统的详细过程,提出了实现职工信息增加、查询、删除、修改及排序的基本功能并阐述系统概要设计和详细设计从软件工程的角度进行了科学而严谨的阐述。
从职工信息的查询到管理实现了自动化的模式,从而提高了工作效率。
设计系统实现对某单位的职工进行管理,包括插入、删除、查找、排序等功能。
其中职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。
要求实现的具体操作如下:
(1)新增一名职工:
将新增职工对象按姓名以字典方式职工管理文件中。
(2)删除一名职工:
从职工管理文件中删除一名职工对象。
(3)查询:
从职工管理文件中查询符合某些条件的职工。
(4)修改:
检索某个职工对象,对其某些属性进行修改。
(5)排序:
按某种需要对职工对象文件进行排序。
二、问题分析
本演示程序由Delphi编写,完成对某单位的职工进行管理,包括插入、删除、查找、排序等功能。
1、要实现职工管理系统的功能,首先要用Delphi程序中的DataSource组件建立ADOQuery与DBGrid的链接,再用ADOConnection组件将之与数据库表进行连接,最后用ADOQuary组件打开数据库表。
2、利用其中的小组件初步的完成这个系统的外框,再分别对插入、删除、查找、排序等小组件进行代码的书写,编译和运行。
3、当要插入员工信息时,若输入的信息在原先的职工表中存在,就显示已有该职工;若输入的信息是新的,则新增了一条记录。
4、当要删除一条员工信息时,只要选中该条信息,然后按删除即可。
5、当要查询员工信息时,输入要查询的员工信息,再点击查询就能显示该员工的信息。
6、可以在CmboBox组件中选择排序的类型,就能按照指定的进行排序。
7、测试数据:
A:
插入操作中依次输入0420,张三,男,1991-1-4,2011-8-5,服务员,1524963258,生成一条新信息
B:
删除操作中输入0406,信息就被删除
C:
查找操作中输入0416,就能查找到该条的详细信息
D:
排序操作中选择按职工编号,整张表就按编号进行排序
三、概要设计
概要设计基础是完成需求分析后提供的需求说明书,用概念数据模型表示数据及其相互间的关系,通过对企业员工管理内容、工资管理内容和过程的分析,本系统应设计的实体和属性如下:
实体:
职工
属性:
职工编号、性别、姓名、出生年月、工作年月、职务、住址、电话
数据库设计
(1)职工表
序号
字段名称
数据类型
1
职工编号
文本
2
姓名
文本
3
性别
文本
4
出生年月
日期/时间
5
工作年月
日期/时间
6
职务
文本
7
住址
文本
8
电话
数字
字段属性:
字段大小10
必填字段否
允许空字段符是
索引有(无重复)
Unicode压缩是
输入法模式开启
IME语句模式无转化
说明:
职工基本信息表用于存储员工基本信息,为保证数据的一致和历史资料的完整,表的记录在一般的情况不能被删除
(2)用户口令表
序号
域名
域中文名
1
xz
新增
2
sc
删除
3
cx
查询
4
xg
修改
5
Px
排序
说明:
为了便于用户管理该系统,建立此表,用于记录用户新增、删除、查询、修改、排序
四、模块设计
4.1模块划分
本企业员工管理系统大致分为五个部分:
(1)员工信息添加模块
添加新的员工信息,并可以设置权限。
(由管理员来添加新的员工)
(2)员工信息查询模块
在员工信息管理模块中,用户根据需要,可根据已有选项查询各种条件的员工。
(3)员工信息删除模块
删除不需要的员工信息。
(4)员工信息修改模块
有修改员工的个人信息和登陆密码等功能。
(5)员工信息排序模块
用户可根据需要根据员工的编号、姓名、出生年月、工作年月等条件进行递增或递减排序。
4.2模块结构图
下图是系统各模块的逻辑关系图,如图1-1所示:
图1-1系统模块图
五、详细设计
现在我们已经构建了职工管理系统的大体架构,也有了相应的数据库表zgb接下来,我们需要的就是进入物理的实现阶段。
5.1登录界面设计
首先,我们设计了一个职工管理系统的登录界面,上面有两个按钮,一个是进入职工管理系统,另一个是退出
进入职工管理系统按钮的代码如下:
procedureTForm1.Button1Click(Sender:
TObject);
begin
form2.show;
end;
退出按钮的代码:
begin
close;
end;
5.2主界面设计
当我们点击了进入职工管理系统按钮,就会跳出form2的内容。
在form2中,我们的界面如图1-2所示:
图1-2系统主界面
在这个界面中我们用到了四个相关的数据库组件,分别是adoconnection1,adoquery1,datesource1,dbgrid1.分别先要设置adoconnection1的build,根据数据库的位置进行连接,设置adoquery1的connection属性为adoconnection1,sql属性里编辑select*fromzgb,active属性设置为true。
datasource1的dataset属性设置为true。
最后把dbgrid1的datasource属性设置为datasource1
在这个界面中,我们可以实现对数据库表的增加,删除,修改,查询,排序功能,我们增加了一系列的BUTTON,EDIT,COMBOBOX,LABEL等组件,下面一一介绍他们的具体实现。
5.2.1查询模块详细设计
按条件查询按钮的代码:
begin
caseComboBox2.itemindexof
0:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*fromzgbwhere职工编号=:
a');
ADOQuery1.Parameters.ParamByName('a').Value:
=edit9.text;
ADOQuery1.Open;
end;
1:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*fromzgbwhere姓名=:
a');
ADOQuery1.Parameters.ParamByName('a').Value:
=edit9.text;
ADOQuery1.Open;
end;
2:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*fromzgbwhere性别=:
a');
ADOQuery1.Parameters.ParamByName('a').Value:
=edit9.text;
ADOQuery1.Open;
end;
3:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*fromzgbwhere出生年月=:
a');
ADOQuery1.Parameters.ParamByName('a').Value:
=edit9.text;
ADOQuery1.Open;
end;
4:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*fromzgbwhere工作年月=:
a');
ADOQuery1.Parameters.ParamByName('a').Value:
=edit9.text;
ADOQuery1.Open;
end;
5:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*fromzgbwhere职务=:
a');
ADOQuery1.Parameters.ParamByName('a').Value:
=edit9.text;
ADOQuery1.Open;
end;
6:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*fromzgbwhere地址=:
a');
ADOQuery1.Parameters.ParamByName('a').Value:
=edit9.text;
ADOQuery1.Open;
end;
7:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*fromzgbwhere电话=:
a');
ADOQuery1.Parameters.ParamByName('a').Value:
=edit9.text;
ADOQuery1.Open;
end;
end;
end;
5.2.2删除模块详细设计
删除按钮的代码:
ADOQuery1.delete;
5.2.3修改模块详细设计
要实现游标指导那里,就在相应的EDIT组件中显示数据库的记录,需要在adoquery1的afterscroll事件中编写如下代码:
begin
edit10.Text:
=ADOQuery1.Fields[0].Value;
edit11.Text:
=ADOQuery1.Fields[1].Value;
edit12.Text:
=ADOQuery1.Fields[2].Value;
edit13.Text:
=datetostr(ADOQuery1.Fields[3].Value);
edit14.Text:
=datetostr(ADOQuery1.Fields[4].Value);
edit15.Text:
=ADOQuery1.Fields[5].Value;
edit16.Text:
=ADOQuery1.Fields[6].Value;
edit17.Text:
=ADOQuery1.Fields[7].Value;
end;
然后修改按钮的代码:
begin
ADOQuery1.Edit;
ADOQuery1.Fields[0].Value:
=edit10.text;
ADOQuery1.Fields[1].Value:
=edit11.text;
ADOQuery1.Fields[2].Value:
=edit12.text;
ADOQuery1.Fields[3].Value:
=strtodate(edit13.text);
ADOQuery1.Fields[4].Value:
=strtodate(edit14.text);
ADOQuery1.Fields[5].Value:
=edit15.text;
ADOQuery1.Fields[6].Value:
=edit16.text;
ADOQuery1.Fields[7].Value:
=edit17.text;
ADOQuery1.Post;
ADOQuery1.ExecSQL;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*fromzgb');
ADOQuery1.Open;
end;
5.2.4增加模块详细设计
增加按钮的代码:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insertintozgbvalues(:
a,:
b,:
c,:
d,:
e,:
f,:
g,:
h)');
ADOQuery1.Parameters.ParamByName('a').Value:
=edit1.text;
ADOQuery1.Parameters.ParamByName('b').Value:
=edit2.text;
ADOQuery1.Parameters.ParamByName('c').Value:
=edit3.text;
ADOQuery1.Parameters.ParamByName('d').Value:
=strtodate(edit4.text);
ADOQuery1.Parameters.ParamByName('e').Value:
=strtodate(edit5.text);
ADOQuery1.Parameters.ParamByName('f').Value:
=edit6.text;
ADOQuery1.Parameters.ParamByName('g').Value:
=edit7.text;
ADOQuery1.Parameters.ParamByName('h').Value:
=edit8.text;
ADOQuery1.ExecSQL;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*fromzgb');
ADOQuery1.Open;
end;
5.2.5排序模块详细设计
最后,我们还要实现排序的功能
我们对递增按钮的代码设计:
begin
caseComboBox1.itemindexof
0:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.ADD('select*fromzgbOrderBy职工编号ASC');
ADOQuery1.Open;
end;
1:
begin
ADOQuery1.close;
ADOQuery1.sql.clear;
ADOQuery1.sql.Add('select*fromzgborderby姓名ASC');
ADOQuery1.open;
end;
2:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.ADD('select*fromzgbOrderBy性别ASC');
ADOQuery1.Open;
end;
3:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.ADD('select*fromzgbOrderBy出生年月ASC');
ADOQuery1.Open;
end;
4:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.ADD('select*fromzgbOrderBy工作年月ASC');
ADOQuery1.Open;
end;
5:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.ADD('select*fromzgbOrderBy职务ASC');
ADOQuery1.Open;
end;
6:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.ADD('select*fromzgbOrderBy住址ASC');
ADOQuery1.Open;
end;
7:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.ADD('select*fromzgbOrderBy电话ASC');
ADOQuery1.Open;
end;
end;
end;
递减按钮的代码相同,只要把代码的ASC改为DESC。
返回按钮代码:
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*fromzgb');
ADOQuery1.Open;
end;
最后,我们设计退出界面的代码:
begin
close;
end;
代码的设计大体上就是上述这些,接下来,我们就要做的就是系统的调试和优化。
六、调试分析和系统优化
通过调试系统,可以对职工信息进行增加、修改、删除、查询和排序操作。
但现实中企业的数据库信息是相当多的,我们又结合实际对自己的系统做了优化。
“按条件查询”的优化,在实际的查询中可能会因职工不存在或者输入错误,导致查询的职工不存在,系统中我们在查询语句中添加了showmessage消息提示框,代码如下:
ifADOQuery1.Locate('职工编号',edit9.Text,[])=falsethen
showmessage('没有该职工');
如图1-3所示:
图1-3消息提示框
“增加”的优化,在增加职工信息时为了保证主码的唯一性,不能添加重复的信息,所以在增加前要先对数据库查询是否有该职工存在,优化后的代码如下:
begin
ifADOQuery1.Locate('职工编号',edit1.Text,[])then
showmessage('已有该职工')
else
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insertintozgbvalues(:
a,:
b,:
c,:
d,:
e,:
f,:
g,:
h)');
ADOQuery1.Parameters.ParamByName('a').Value:
=edit1.text;
ADOQuery1.Parameters.ParamByName('b').Value:
=edit2.text;
ADOQuery1.Parameters.ParamByName('c').Value:
=edit3.text;
ADOQuery1.Parameters.ParamByName('d').Value:
=strtodate(edit4.text);
ADOQuery1.Parameters.ParamByName('e').Value:
=strtodate(edit5.text);
A