职工管理系统DELphi实现.doc_第1页
职工管理系统DELphi实现.doc_第2页
职工管理系统DELphi实现.doc_第3页
职工管理系统DELphi实现.doc_第4页
职工管理系统DELphi实现.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙江工商大学计算机与信息工程学院数据结构实验大作业报告专 业:物流管理班 级:物流1002学 号:1012600204姓 名:曹雅萍指导教师:庄毅2011 年 11 月一问题描述1.题目:设计一个系统,对单位的职工进行管理,包括插入、删除、查找、排序等功能。2.要求职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。(1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。(2)删除一名职工:从职工管理文件中删除一名职工对象。(3)查询:从职工管理文件中查询符合某些条件的职工。(4)修改:检索某个职工对象,对其某些属性进行修改。(5)排序:按某种需要对职工对象文件进行排序。3.实现提示职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。(1)由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。(2)对职工对象中的姓名按字典顺序进行排序。(3)对排序后的职工对象进行增、删、查询、修改、排序等操作。二系统设计简介:1.数据表结构: 系统总共建立了两个数据表,分别为staff和function。 staff储存了各个员工的基本信息,包括职工号(NO),职工姓名(NAME)、性别(SEX)、出生年月(BIRTHDAY)、工作年月(WORKDAY)、学历(EDUCATION)、住址(ADDRESS)、电话(NUMBER),还有一个职务代号(FUNCTION-KEY)。为了完成后面的排序,查找等操作,在这立职工号(NO)为主索引,姓名(NAME)为次索。 如图1所示图1 function储存了公司的职务类别(FUNCTION),职务代号(FUNCTION-KEY)。为了后面的表之间的参照完整性建立,在这里建立职务代号(FUNCTION-KEY)为主索引,职务(FUNCTION)为次索引。如图2所示 图2 两表的参照完整性建立:前面两表有一个公共属性为职务代号(FUNCTION-KEY),这里通过Lookup definition建立两表的参照完整性。这样做的目的是在表staff中建立职务(FUNCTION)的下拉列表,增加系统操作的便利性。之后隐藏表staff中的职务代号(FUNCTION-KEY)。这样我们便把两张表合二为一,而且在数据表staff中有职务(FUNCTION)的下拉列表。这里的数据表就是后面操作中的数据源。2. 数据交互跟踪: 系统中的数据一共经过了三个站点。首先,所有的数据信息都在数据库中保存,这是最底层的数据。在系统运行时,TTable或TQuery 读取数据,通过TDatasourse传递给TDBGrid,TDBEdit,TDBMemo等数据控制组件,为用户提供接口,让用户可以浏览和编辑数据。在这个过程中,TDatasourse充当了一个媒介的作用,把底层数据库和用户界面联系在一起。三使用说明系统运行时的界面,界面中一共有两个页面,分别为职工信息查询(图4)和职工基本信息(图3)。 图3 图4 职工信息查询中有两个功能区。 编辑区: 说明:在这个区域,用户可以编辑,修改,删除,添加员工信息 查找区:说明: 在这个区域可以查找职工基本信息中存在的员工的个人全部信息,当输入一个不存在的职工号获知职工姓名时,会提示“无此职工号”或者“无此职工姓名”。各项功能简介:l 添加信息:按工具栏中的,这时职工号,姓名,性别,出生日期,工作日期,学历,住址,电话号码,职务,个人说明栏全部清空,当输好一个员工的全部信息,且职务项有下拉列表存有备选项,方便我们操作。 点就可以添加到职工基本信息的表格中了。 还有一种方法是直接在表中添加,点击职工基本信息页中工具栏中的 ,输入信息,便可添加。l 查找信息:输入某个员工号或者员工姓名,按键,员工的全部个人信息便在编辑区全部显示。 也可以在职工基本信息页中的查找类别下拉列表中选择“按职工号查找”或者“按职工姓名查找”,然后点击右边的查询键l 删除信息:在职工基本信息页找到某员工信息,点工具栏中的l 排序:系统自动设置为按姓名首字母排序。 四检测l 查找:查找职工号为003的职工方法二:在“职工信息查询页”中查询 l 添加添加一条记录: 职工号008,姓名 Kelly,职务 财务总监,住址 杭州市江干区,学历 西安复旦大学研究生,生日 1990-1-1,工作日期 2000-9-9.输入:添加后:l 删除与添加相似l 在检测中遇到的问题是 1)在程序运行之初,职工信息查询页中是按姓名首字母排序的,但是经过一 次操作以后,职工信息查询页中的成员自动转换成按职工号排列。2)在查找的方法二中可以看到,当查找一个位于中间的职工时,表中出现了包括这个人以下的所有人的记录。5 改进l 改进:这个程序需要改进的地方是前面测试中发现的问题。1)员工的排序,虽然在程序运行的时候实现了按姓名的排序,但是当程序经过一次操作以后便恢复了按员工号排序,这里是代码有漏洞,在以后的学习与实践中争取改进这一缺点。2) 在职工信息查询页的查询中,虽然实现了查询,但是有缺点,希望能知显示所查找的那一项,这里也是代码不够严谨,会在以后的学习中逐步改进。3)这个程序中,排序方面不够严谨。可以试想,我们做一个排序的下拉列表,有按员工号排序和按姓名排序两项,根据需要灵活选择排序的方式。4)程序执行的过程中,如果有一项操作结束后,结束状态保留了运行时的信息。这里要改进查询处的代码,是程序更加完善。附录unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, DBTables, ComCtrls, StdCtrls, ExtCtrls, DBCtrls, Mask, Grids, DBGrids, Buttons, OleServer, ExcelXP, ColorGrd;type TForm1 = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; Table1: TTable; Table2: TTable; DataSource1: TDataSource; DataSource2: TDataSource; Table1NO: TStringField; Table1NAME: TStringField; Table1SEX: TStringField; Table1BIRTHDAY: TDateField; Table1WORKDAY: TDateField; Table1EDUCATION: TStringField; Table1ADDRESS: TStringField; Table1NUMBER: TStringField; Table1FUNCTIONKEY: TStringField; Table1REMARK: TMemoField; Table1FUNCTION: TStringField; DBEdit1: TDBEdit; DBEdit2: TDBEdit; DBEdit3: TDBEdit; DBEdit4: TDBEdit; DBEdit5: TDBEdit; DBEdit6: TDBEdit; DBEdit7: TDBEdit; DBEdit8: TDBEdit; DBMemo1: TDBMemo; DBLookupComboBox1: TDBLookupComboBox; DBNavigator1: TDBNavigator; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; SpeedButton1: TSpeedButton; MaskEdit1: TMaskEdit; MaskEdit2: TMaskEdit; DBGrid1: TDBGrid; Label10: TLabel; ComboBox1: TComboBox; Label11: TLabel; Label12: TLabel; Label13: TLabel; Query1: TQuery; DBNavigator2: TDBNavigator; Panel1: TPanel; Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; Label14: TLabel; Label15: TLabel; procedure FormCreate(Sender: TObject); procedure FormActivate(Sender: TObject); procedure DBComboBox1Change(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure TabSheet1Show(Sender: TObject); procedure TabSheet2Show(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure ComboBox2Change(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure ComboBox2Change(Sender: TObject); private Private declarations public Public declarations end;var Form1: TForm1;implementation$R *.dfmprocedure TForm1.FormCreate(Sender: TObject);beginedit1.Text:=;edit2.Text:=;query1.Open;end;procedure TForm1.FormActivate(Sender: TObject);beginlabel11.Caption:=;label12.Caption:=;maskedit1.Visible:=false;maskedit2.Visible:=false;table1.Open;table1no.DisplayLabel:=职工号;table1name.DisplayLabel:=姓名;table1sex.DisplayLabel:=性别;table1birthday.DisplayLabel:=出生日期;table1workday.DisplayLabel:=工作日期;table1function.DisplayLabel:=职务;table1address.DisplayLabel:=住址;table1number.DisplayLabel:=电话号码;table1education.DisplayLabel:=学历;combobox1.Items.Add(查询全部);combobox1.Items.Add(按职工号查询);combobox1.Items.Add(按职工姓名查询);combobox1.Text:=combobox1.Items0;combobox2.Items.Add(按职工号排序);combobox2.Items.Add(按职工姓名排序);combobox2.Text:=combobox1.Items0;end;procedure TForm1.DBComboBox1Change(Sender: TObject);beginif dbcombobox1.ItemIndex=0 then begin maskedit1.Visible:=true; maskedit2.Visible:=true; maskedit1.Text:=; maskedit1.Text:=; end else if dbcombobox1.ItemIndex=1 then begin maskedit1.Visible:=true; maskedit2.Visible:=false; maskedit1.Text:=按职工号查询; end else if dbcombobox1.ItemIndex=2 then begin maskedit1.Visible:=false; maskedit2.Visible:=true; maskedit2.Text:=按职工姓名查询; end else application.MessageBox(选择错误,请重新输入!,提示信息,mb_ok);end;procedure TForm1.ComboBox1Change(Sender: TObject);beginif combobox1.ItemIndex=0 then begin maskedit1.Visible:=false; maskedit2.Visible:=false; label11.Visible:=false; label12.Visible:=false; end else if combobox1.ItemIndex=1 then begin maskedit1.Visible:=true; maskedit2.Visible:=false; label11.Visible:=true; label12.Visible:=false; label11.Caption:=请输入职工号: ; maskedit1.Text:=; end else if combobox1.ItemIndex=2 then begin maskedit1.Visible:=false; maskedit2.Visible:=true; label12.Visible:=true; label11.Visible:=false; label12.Caption:=请输入职工姓名: ; maskedit2.Text:=; end else application.MessageBox(选择错误,请重新输入!,提示信息,mb_ok);end;procedure TForm1.TabSheet1Show(Sender: TObject);begintable1.Close;table1.ReadOnly:=false;table1.Open;end;procedure TForm1.TabSheet2Show(Sender: TObject);begintable1.Close;table1.ReadOnly:=false;table1.Open;end;procedure TForm1.SpeedButton1Click(Sender: TObject);beginif combobox1.ItemIndex=1 then begin table1.CancelRange; table1.IndexFieldNames:=NO; table1.SetRangeStart; table1.FieldByName(NO).AsString:=maskedit1.Text; table1.SetRangeEnd; table1.ApplyRange; end else if combobox1.ItemIndex=2 then begin table1.CancelRange; table1.IndexFieldNames:=NAME; table1.SetRangeStart; table1.FieldByName(NAME).AsString:=maskedit2.Text; table1.SetRangeEnd; table1.ApplyRange; end else begin table1.CancelRange; table1.Close; table1.Open; endend;procedure TForm1.Button2Click(Sender: TObject);beginquery1.Open;end;procedure TForm1.ComboBox2Change(Sender: TObject);beginif combobox2.ItemIndex=0 then begin query1.Close; query1.SQL.clear; query1.SQL.add(select * from staff order by NO ASC); query1.Open; end else if combobox2.ItemIndex=1 then begin query1.Close; query1.SQL.clear; query1.SQL.add(select * from staff order by NAME ASC); query1.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论