软件设计报告

时间:2024.4.21

通达学院

2013/20##学年    第二学期

软件设计  实验报告

   

专          业 Delphi软件设计

学  生  班  级     110023    

学  生  学  号    11002314    

学  生  姓  名     孙敏杰     

指  导  教  师     汪胡青     

网络聊天室

一、     实验操作

利用Delphi自带的TCPCLIENT组件和TCPSERVER组件,编写了一个简易的网络聊天室程序,这个程序将以同步的方式在服务器端和客户端进行通信,而且是多线程程序,可以处理多个连接的请求。程序运行后,在窗口上部填写远程主机地址、端口以及本地端口号,注意,两个端口号必须一致,否则无法完成监听。然后单击“改变主机设置”按钮,即可连接到远程主机。接着在窗口下部的MEMO文本框中填写发送的信息,单击“发送”按钮,即可将信息发送到远程主机窗口。程序界面效果如图所示。

二、     实验要点

1、tcpClient组件的应用;

2、tcpServer组件的应用。

三、     步骤详解

1、新建一个应用程序,在窗口中添加一个TPanel组件,align属性设置为alTop,然后在该面板中添加三个TLable组件和三个TEdit组件,分别用于设置远程主机和本地主机的地址、端口。接着再添加一个TButton组件,caption属性为“改变主机设置”。

2、在窗口中添加两个TPanel面板,然后分别在面板中添加一个TMemo多行文本编辑框,分别用于显示接收信息和发送信息,其中用于接收信息的memo组件的readonly属性设置为true。

3、最后在窗口中添加一个TButton组件,caption属性为“发送”,再从internet组件面板上分别拖放一个tcpClient组件和一个tcpServer组件到窗口中。

四、     代码添加与解释

1、打开代码编辑器,在接口部分添加一个自定义线程类:

//创建线程,以同步方式写入GUI窗口。必须这样,才能够同时处理多个连接的请求TClientDataThread = class(TThread)

private

 public

   ListBuffer :TStringList;

   TargetList :TStrings;

   procedure synchAddDataToControl;

   constructor Create(CreateSuspengded: Boolean);

   procedure Execute; override;

   procedure Terminate;

   end;

2、 在代码实现部分,添加线程类的实现代码:

//TClientDataThread线程类的实现代码

constructor TClientDataThread.Create(CreateSuspended: Boolean);

begin

inherited Create(CreateSuspended);

FreeOnTerminate := ture;

ListBuffer := TStringList.Create;

end;

procedure  TClientDataThread.Terminate;

begin

ListBuffer.Free;

inherited;

end;

procedure TClientDataThread.Execute;

begin

  Synchronize(synchAddDataToControl);                      //同步

  end;

procedure TClientDataThread.synchAddDataToControl;

begin

 TargetList.AddStrings(ListBuffer);

 end;

3、双击“改变主机设置”按钮,添加如下代码:

//改变服务器端配置

procedure TForm1.Button1Click(Sender: TObject);

begin

 TcpServer1.LocalPort := Edit1.Text;                          //指定端口

 TcpServer1.Active := True;

end;

4、双击“发送”按钮,添加如下代码:

//客户端发送信息

procedure TForm1.Button2Click(Sender: TObject);

var

I: Integer;

begin

  TcpClient1.RemoteHost := Edit1.Text;                       //远程主机地址

  TcpClient1.RemotePort := Edit2.Text;                       //远程主机端口

  try

     if TcpClient1.Connect then

     for I :=0 to Memo1.Lines.Count - 1 do

     TcpClient1.Sendln(Memo1.Lines[I]);                     //发送信息

     finally

     TcpClient1.Disconnect;                               //断开连接

end;

end;

5、双击tcpServer组件的onaccept事件,添加如下代码:

//服务器端接收到信息的处理

procedure TForm1.TcpServer1Accept(Sender: TObject;

   ClientSocket: TCustomIpClient);

   var

    s: string;

    DataThread: TClientDataThread;

Begin

//创建自定义线程

DataThread:=TClientDataThread.Create(true);

//将线程的TargetListset设置为同步显示信息的组件MEMO

DataThread.TargetList := Memo1.lines;

//加载线程的ListBuffer信息

    DataThread.ListBuffer.Add('***已经连接上远程主机并收到消息***');

    DataThread.ListBuffer.Add('远程主机: '  + ClientSocket.LookupHostName(ClientSocket.RemoteHost) +

'(' + ClientSocket.RemoteHost + ')');

DataThread.ListBuffer.Add('===== Begin message =====');

s := ClinetSocket.Receiveln;                          //取得客户端传递的信息

while s <> " do

begin

 DataThread.ListBuffer.Add(s);

 s := ClientSocket.Receiveln;

 end;

 DataThread.ListBuffer.Add('===== End of message =====');

//同步将ListBuffer中的信息显示在TargetList目标位置

 DataThread.Resume;

 end;

 end.

人事管理系统概述

1.1 人事管理系统简介

1.2 人事管理系统功能描述

需求分析:2.1 系统目标 2.2 业务流程2.3 数据流程2.4 数据字典

系统设计:3.1系统功能3.2 系统结构

数据库设计:4.1 E-R图

主窗体设计:5.1 主窗体设计5.2 功能导航栏设计

程序设计与编码:6.1 系统登陆窗体的设计 6.2 操作员管理窗体的设计

6.3 修改密码窗体的设计 6.4 人事信息窗体的设计

系统测试 :7.1 系统测试目的 7.2 系统测试

心得总结

1.1 人事管理系统简介

随着全球对知识和人才的重视,企业对人事管理重要性的认识逐渐深化,人才的全球化竞争使企业的人事管理面临前所未有的挑战。在新形势下,人事管理系统是一个企业单位不可缺少的部分,是适应现代企业制度,推动企业人事管理走向科学化、规范化、自动化的必要条件;是应对挑战、适应环境变化、提高企业管理效率、提升核心竞争力的关键措施。它所包含内容对于企业的决策者和管理者来说至关重要。目前市场上的人力资源系统很多,但要找到一款真正称心、符合公司实际情况的并不容易。由于存在这样那样的不足,使企业浪费了大量的人力、物力等大量资源,难以真正提升企业人力资源的管理水平,提高工作效率及降低管理成本的效果也不明显。因此,为了加快公司信息化的步伐,提高公司的管理水平,并在激烈的社会竞争中立于不败之地,建立及完善人事管理系统已变得十分必要和迫切。

人事管理系统主要是管理员工企业日常事务中的人事工作,使用人事管理系统会降低了资源管理成本,使管理者能集中精力在企业战略目标;另一方面,通过软件及时收集与整理分析大量的人事管理数据,为企业战略决策的生成与实施控制提供强有力的支持,以提高组织目标实现的可能性。

1.2 人事管理系统功能描述

人事管理系统就是要实现对某单位的职工进行管理,整个系统包括人事资料的录入、资料查询和资料删除等功能。

人事管理系统应该能够灵活有效的管理,体现多角色、多层次特色。不同的企业其人事管理业务与流程各不相同,随着管理要求的提高,人事管理软件需要具备人事业务流程的制订、修改、控制等操作。通过人事管理系统使得管理者快速高效地完成企业日常事务中的人事工作,降低了人事管理成本,使管理者能集中精力在企业战略目标;另一方面,通过软件及时收集与整理分析大量的人事管理数据,为企业战略决策的生成与实施控制提供强有力的支持,以提高组织目标实现的可能性。

需求分析

2.1 系统目标

人事管理系统就是要实现对某单位的职工进行管理,整个系统主要实现包括人事资料的录入、资料查询和资料删除等功能。

在应用系统使用中,为保证系统的安全,必须设置用户检测程序。合法用户可进入,非合法用户拒绝登陆。同时要能够设置用户的使用权限,用户登录后只能进行其权限所允许的操作。用户可以修改本人的密码,系统管理员可以修改、冻结或删除普通用户。

2.2 业务流程图

操作员管理业务流程图

2.3 数据流程图

2.4 数据字典

数据字典就是将数据元素、数据流、数据存储、处理功能和外部实体等的详细情况加以记录,并按照一定方式进行排列所形成的一部关于数据的字典。

数据字典是有关数据的信息的收集、维护和发布的机制,是有关数据的数据即元数据的中心仓库,数据字典是提供关于数据元素、元素组、记录信息的定义和使用机制,以及数据实体之间的联系。

2.4.1建立数据元素

表-1 操作员数据结构

表-2 人事信息数据结构

2.4.2建立数据流

数据流表明了数据的流动方向及其名称,是数据载体的表现形式之一。在数据字典中所定义的数据流有两类:一类是从外部实体输入到系统中的数据流,二是从系统输出到外部实体的数据流。

系统设计

3.1系统功能

1、用户管理模块。主要是实现操作用户的增加、删除、修改。

2、密码修改模块。该模块主要实现各操作用户修改自己的操作密码,系统管理用户

可以修改其他用户的密码。

3、系统初始化模块。主要用来实现初始化功能,即清除所有数据表中的信息,只在

operator.db数据表中保留一条默认的管理员信息。

4、退出模块。就是退出系统。

3.2 系统结构

数据库设计

4.1 E-R图

实体属性一览表:

管理员(用户名,密码,部门,联系电话,工资,职务,操作权限,查询权限,管理权限,最后操作时间)

职员(职工编号,职工姓名,性别,出生年月,身份证号,地址,联系电话,单位,工资,职务,专业,参加工作时间,离职时间)

部门(部门编号,部门名称,主管)

主窗体设计

5.1 主窗体设计

5.1.1界面设计

创建一个新的工程文件,保存源程序文件名为main.pas,工程文件名为rlzygl.dpr,在窗体中添加一个mainmenu组件,一个toolbar组件,在toolbar组件中添加6个toolbutton组件,一个imagelist组件,双击imagelist组件打开对话框添加6个图片程序设计界面

5.1.2属性设置

窗体所涉及的组件有mainmenu,toolbutton,toolbar等。其属性设置具体如下

第5.1节窗体属性设置 表5-1 窗体及组建的属性设置

5.1.3 程序设计

代码如下: var

main_Form:Tmain_Form; username:string; password:string; R1,R2,R3:boolean; implementation

uses login, Unit3, Unit4, Unit5, Unit6; {$R *.dfm}

procedure Tmain_Form.FormActivate(Sender: TObject);

begin

username:='';

password:='';

R1:=false;

R2:=false;

R3:=false;

F_login.showModal();

if username<>'' then

begin

if R1=true then

begin

n4.Enabled:=true;

n6.Enabled:=true;

toolbutton1.Enabled:=true; toolbutton3.Enabled:=true; end

else

begin

n4.Enabled:=false;

n6.Enabled:=false;

toolbutton1.Enabled:=false; toolbutton3.Enabled:=false; end;

if R2=true then

begin

n2.Enabled:=true;

toolbutton4.Enabled:=true; end

else

begin

n3.Enabled:=false;

toolbutton4.Enabled:=false; end;

if R3=true then

begin

n3.Enabled:=true;

toolbutton5.Enabled:=true;

end

else

begin

n3.Enabled:=false;

toolbutton5.Enabled:=false;

end;

end

else

close;

end;

procedure Tmain_Form.N3Click(Sender: TObject); begin

F_check.showModal();

end;

procedure Tmain_Form.N8Click(Sender: TObject); begin

close;

end;

procedure Tmain_Form.N2Click(Sender: TObject); begin

F_rsInfo.showModal();

end;

procedure Tmain_Form.N5Click(Sender: TObject); begin

F_changepw.showmodal();

end;

procedure Tmain_Form.N4Click(Sender: TObject); begin

F_operator.showmodal();

end;

procedure Tmain_Form.N6Click(Sender: TObject); var

Tabel1:TTable;

begin

Table1:=TTable.create(self);

Table1.DatabaseName:='RLZYGL';

Table1.TableName:='opertaor.db';

Table1.EmptyTable;

Table1.open;

Table1.Append;

Table1.fieldbyname('username').asstring:='admin'; Table1.fieldbyname('password').asstring:='admin';

Table1.fieldbyname('department').asstring:='计算机系'; Table1.fieldbyname('stamp').asdatetime:=date();

Table1.fieldbyname('right1').asboolean:=true;

Table1.fieldbyname('right2').asboolean:=true;

Table1.fieldbyname('right3').asboolean:=true;

Table1.post;

Table1.close;

Table1.Tablename:='info.db';

Table1.emptytable;

Application.MessageBox('初始化结束!','提示信息',mb_ok); end;

procedure Tmain_Form.Button1Click(Sender: TObject); begin

F_login.show;

end;

end.

程序设计与编码

6.1 系统登陆窗体的设计

图6-1 登陆窗口

用户名为:admin,密码为:admin进入人事管理系统,非法用户不可以进入系统。程序代码在附录里显示。

6.2 操作员管理窗体的设计

图6-2 操作员管理窗口

6.3 修改密码窗体的设计

图6-3 修改密码窗口

6.4 人事信息窗体的设计

图6-4 人事信息窗口

系统测试

7.1 系统测试目的

对程序设计工作的检验是进行系统测试,是保证系统质量和可靠性的关键步骤。总之,测试的目的是发现软件中的错误,应该把查出新错误的测试看做是成功的测试,没有发现新错误的测试是失败的测试。但发现错误不是目的,目的是开发出高质量的完全符合用户需要的软件。

7.2 系统测试

系统测试是把经过测试的子系统装配成一个完整的系统然后进行测试。在这个过程中不仅能发现设计和编码的错误还能验证系统是否提供需求说明中指定的功能,而且能验证系统的动态特性是否预订要求。人事管理系统连接数据库正确,但是无法正常运行,也没有办法进行验证测试,功能没有实现。

心得总结

通过本次的软件设计,学到了很多关于Delphi的知识。程序主要是利用delphi来实现人事管理系统。 经过此次软件设计,我对的delphi语言有了一定的了解,delphi与编程很类似,界面设计较简单和代码编译速度相对也较快。在编程的过程中遇到了些问题,通过自己翻书,上网查资料及向老师同学们请教,这些问题也得到了解决。经历了软件设计,不仅对我的学习提供了帮助,而且在各方面也得到了锻炼。没有足够的耐力和信心就很难坚持对软件设计每一步的顺利进行。同时我还要非常感谢我的任课老师对此次软件设计的精心安排和耐心指导。在软件设计过程中,老师无论是在理论上还是在实践中,都给了我很大的帮助。使我在程序的开发等各个方面得到了很大的提高。老师治学态度严谨,工作态度认真负责,为人亲切和蔼,学术理论和实践经验丰富,是我们学习的好榜样。在开发系统的过程中,我们团结合作,充分发挥了集体的力量,很好的完成了此次的软件设计。

附 录

操作员管理代码

procedure TF_operator.SpeedButton1Click(Sender: TObject);

begin

Table1:=TTable.creat(self);

Table1.DatabaseName:='1220';

Table1.TableName:='opertaor.db';

Table1.open;

Table1.setkey;

Table1.Fieldbyname('name').asstring:=edit1.text;

if table1.gotokey then

begin

if Radiobutton1.Checked then

begin

Application.MessageBox('用户名相同,请检查!','提示信息',mb_ok); edit1.Text:='';

edit2.Text:='';

edit3.Text:='';

edit1.SetFocus;

end

else

if Radio2.checked then

begin

Table1.edit;

savetotable;

table1.post;

end

else

begin

Table1.edit;

table1.Delete;

table1.first;

loadfromtable;

end;

end

else

begin

if Radiobutton1.Checked then

begin

Table1.Append;

table1.edit;

savetotable;

table1.post;

end

else

begin

Application.MessageBox('没有该用户,请检查!','提示信息',mb_ok); edit1.Text:='';

edit2.Text:='';

edit3.Text:='';

edit1.SetFocus;

end;

end;

table1.close;

end;

procedure TF_operator.FormActivate(Sender: TObject);

begin

edit1.Text:='';

edit2.Text:='';

edit3.Text:='';

edit4.Text:='';

edit4.Readonly:=true;

edit4.Tabstop:=false;

checkbox1.Checked:=false;

checkbox2.Checked:=false;

checkbox3.Checked:=false;

edit4.Text:=datetostr(date());

Table1:=TTable.creat(self);

Table1.DatabaseName:='1220';

Table1.TableName:='opertaor.db';

Table1.open;

if not Table1.Eof then

LoadFormTable;

Table1.Close;

Radiobutton2.Checked:=true;

end;

procedure TF_operator.loadFormtable;

begin

edit1.text:=table1.fieldbyname('username').asstring;

edit2.text:=table1.fieldbyname('password').asstring;

edit3.text:=table1.fieldbyname('department').asstring;

edit4.text:=datetostr(table1.fieldbyname('stamp').asdatetime); checkbox1.checked:=table1.fieldbyname('right1').asboolean;

checkbox2.checked:=table1.fieldbyname('right2').asboolean;

checkbox3.checked:=table1.fieldbyname('right3').asboolean;

end;

procedure TF_operator.savetotable;

begin

table1.fieldbyname('username').asstring:=edit1.text;

table1.fieldbyname('password').asstring:=edit2.text;

table1.fieldbyname('department').asstring:=edit3.text;

table1.fieldbyname('stamp').asdatetime:=strtodate(edit4.text); table1.fieldbyname('right1').asboolean:=checkbox1.checked;

table1.fieldbyname('right2').asboolean:=checkbox2.checked;

table1.fieldbyname('right3').asboolean:=checkbox3.checked;

end;

procedure TF_operator.SpeedButton2Click(Sender: TObject);

begin

close;

end;

procedure TF_operator.RadioButton1Click(Sender: TObject);

begin

edit1.Text:='';

edit2.Text:='';

edit3.Text:='';

edit4.Text:=datetostr(date());

checkbox1.Checked:=false;

checkbox2.Checked:=false;

checkbox3.Checked:=false;

edit1.setfocus;

end;

procedure TF_operator.Edit1Exit(Sender: TObject);

begin

if not Radiobutton1.checked then

begin

table1.open;

table1.setkey;

table1.Fieldbyname('name').asstring:=edit1.text;

if not table1.gotokey then

begin

Application.MessageBox('没有该用户,请检查!','提示信息',mb_ok); edit1.SetFocus;

end

else

loadformtable;

end;

table1.close;

end;

end.

更多相关推荐:
软件详细设计报告文档模板

软件详细设计报告文档模板1.引言1.1编写目的说明编写详细设计方案的主要目的。说明书编制的目的是说明一个软件系统各个层次中的每个程序(每个模块或子程序)和数据库系统的设计考虑,为程序员编码提供依据。如果一个软件…

软件详细设计报告

软件详细设计报告11编写目的2支撑环境222开发工具中间件以及数据库接口32114预期读者和阅读建议125多种支撑环境开发要点4词汇表51引言引言是对这份软件系统详细设计报告的概览是为了帮助阅读者了解这份文档如...

软件毕业设计报告

BBS系统设计报告学生姓名指导教师专业学院20xx年11月24日摘要BBS论坛系统是采用java语言进行设计实现的采用Tomcat作为后台服务器以SQLServer作为数据服务器使用接口实现类实体类JSP进行逻...

软件工程课程设计报告 之 总结性报告

总结性报告1.时间飞Q20xx项目从拟定好课题起,经过问题定义,可行性研究,需求分析,概要设计,详细设计,主要编程,分布测试,总体测试,到整体装配完成历时一个半月。2.人员主程序员(组长):王昌帅辅程序员:司吉…

软件详细设计报告

计算机学院实验中心----Android手机客户端学生姓名:**指导老师:**专业:计算机科学与技术102在移动互联网发展迅猛的今天,在Android完全开源及拥有庞大用户群的环境下,迫切需要为计算机学院实验中…

软件综合设计报告

软件综合设计分散报告学号目录一设计目的3二设计内容3三设计思想1数字PID及其算法32离散控制系统的数学描述5四界面简介6五各模块程序介绍及调试结果1程序介绍72调试结果展示113调试中遇到的问题14六心得体会...

软件设计报告

编号密级阶段标记页数编写校对审核标审批准北京国科环宇空间技术有限公司20xx年6月8日目录1时序板软件设计32时序板软件模块设计321数据接收发送模块详细设计3211I2C模块初始化3212I2C发送数据单片机...

软件工程课程设计报告(个人)20xx

软件工程课程设计报告个人课程设计题目研究生教务管理系统专业信息与计算科学班级报告人姓名学号课程教师实验指导教师实验地点完成起止日期正文一课程设计概述目的任务参考资料1项目的目的根据研究生管理部门的要求面向针对研...

软件工程课程设计报告书模板

课程设计报告书校园卡管理系统班级学号姓名指导教师娜某某大学四方学院20xx年6月22日一问题定义校园卡管理系统是一套针对大学校园食堂饮食交费一般消费等方面的信息管理系统它包括了同学在校内消费各方面内容刷卡消费查...

软件工程_餐厅管理系统设计报告

题目软件工程餐厅管理设计报告1目录错误未定义书签绪论第一章需求分析411设计任务412设计目标513要达到的技术要求5第二章总体设计721软件结构图722服务与处理的数据结构设计823安全设计9第三章数据库设计...

绘图软件_课程设计报告

windows应用程序编程与设计课程设计报告学院系专业班级学生姓名学号1007105230指导教师赵欢喜时间从20xx年1月4日到20xx年1月14日报告摘要本课程设计是利用C编程来实现绘图应用程序通信录应用程...

综合应用软件课程设计报告

综合应用软件课程设计报告题目图书管理系统学院名称Xxx专业名称班级学号xxxxxxxxxxxx20xx年10月8日时间至20xx年10月20日学生姓名指导教师一课程设计目的在数据库原理课程基础上培养学生综合运用...

软件设计报告(32篇)