资源描述
学号: 09416305
课程设计汇报
课 程 名 称: Delphi程序设计
题 目: 人事管理系统
姓 名:
学 院: 专业班级: 计算机091
指 导 教 师:
课程设计任务书
班级 计算机091 姓名 李琳蕊
一、设计题目:人事管理系统设计
二、设计内容:
本设计是制作一个人事管理系统,在该程序中具体功效要求见附件。
三、基础要求:
1、 对源程序编写要求:
(1)能够实现任务书中功效;
(2)尽可能使界面友好、直观、易操作;
(3)源程序要有合适注释,使程序轻易阅读。
2、 撰写“课程设计汇报”,撰写要求见附件实习汇报撰写排版要求。
3、 课程设计验收要求:
(1)运行所设计系统;
(2)回复相关问题;
(3)提交课程设计汇报和任务书;
(4)提交源程序
四、进度安排:
1、系统分析、设计准备阶段:4课时
2、编程调试阶段:32课时
3、总结和书写汇报阶段:2课时
4、考评阶段:2课时
指导老师: 刘俊 年 1 月 6 日
目 录
人事管理系统 3
1、需求分析 3
2、程序要求 3
1.功效模块图 3
2.系统界面 4
2:登陆界面 5
3: 8
4:更改界面 12
5:MDICHild 15
6: 17
3.创建数据库 24
1、数据库选择:ACCESS 数据库 24
2、建表 24
4、系统设计 29
5、系统使用说明 29
6、心得体会 29
7:致谢 30
参考文件 30
人事管理系统
1、需求分析
1.新职员资料输入。
2.自动分配职员号,而且设置初始用户密码,能够分配权限实施不一样模块。
3.人事变动具体统计,包含岗位和部门调整。
4.职员信息查询和修改,包含职员个人信息和密码等。
5.帮助。
2、程序要求
1.功效模块图
人事管理系统
依据权限登录
帮助
新职员档案输入
人事变更
职员档案查询修改
2.系统界面
1:进入界面;
代码:procedure Tqdform.FormCreate(Sender: TObject);
var
windowid:hwnd;
begin
windowid:=findwindow(nil,'F_main');
if windowid<>0 then
begin
MessageBox(handle,'错误:系统已经开启!','系统开启错误 ',MB_OK or MB_ICONERROR); // showwindow(foundwin,9);
halt;
end;
end;
end.
2:登陆界面
代码:unit login;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,Inifiles;
type
TF_login = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
i_server_add: TComboBox;
i_user: TEdit;
i_passwd: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
F_login: TF_login;
Inifile:TInifile;
implementation
uses DataModule, crypt, mainwin;
{$R *.DFM}
procedure TF_login.Button1Click(Sender: TObject);
var
passwd, passwrd:String;
begin
application.CreateForm(TDataModule1,DataModule1);
With DataModule1 do
begin
Database.Connected:=False;
Database.AliasName:=i_server_add.Text;
Database.Connected:=True;
T_user.Filter:='ID='''+i_user.Text+'''';
T_user.Filtered:=True;
T_user.Open;
if T_user.RecordCount=1 then
begin
passwd:=i_passwd.Text;
if length(passwd)>5 then
begin
passwd:=Copy(passwd+passwd,1,10);//统一密码长度
passwd:=Encrypt(passwd,123);//加密
end;
passwrd:=T_user['PASSWD'];
if (passwrd=passwd) and (T_user['AUTHORITY']='3') then
begin
F_main.login:=True;
end
else
Application.MessageBox('请重新输入密码。'+#13+'注意大小写!','密码错误',MB_OK);
end
else
Application.MessageBox('请确定用户名大小写是否正确!','无此用户',MB_OK);
T_user.Close;
end;
if F_main.login then F_login.Close
else DataModule1.Free;
end;
procedure TF_login.FormShow(Sender: TObject);
begin
self.i_server_add.SetFocus;
end;
procedure TF_login.FormCreate(Sender: TObject);
begin
Inifile:=TInifile.Create(extractfilepath(paramstr(0))+'SERVER.ini') ;
if fileexists(extractfilepath(paramstr(0))+'SERVER.ini') then
begin
i_server_add.Text:=inifile.ReadString('SERVER','SERVER NAME','');
i_user.Text:=inifile.ReadString('SERVER','USER NAME','');
end;
end;
procedure TF_login.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if not fileexists(extractfilepath(paramstr(0))+'SERVER.ini') then
Inifile:=TInifile.Create(extractfilepath(paramstr(0))+'SERVER.ini') ;
inifile.WriteString('SERVER','SERVER NAME',i_server_add.Text);
inifile.WriteString('SERVER','USER NAME',i_user.Text);
inifile.Free;
end;
End.
3:
代码:unit add;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
childwin, StdCtrls, DBCtrls, Mask, ExtCtrls;
type
TF_add = class(TMDIChild)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
i_department: TDBLookupComboBox;
i_job: TDBLookupComboBox;
i_edu_level: TDBLookupComboBox;
Button1: TButton;
i_user: TDBEdit;
i_name: TDBEdit;
i_birthday: TDBEdit;
i_specialty: TDBEdit;
i_address: TDBEdit;
i_tel: TDBEdit;
i_email: TDBEdit;
i_remark: TDBMemo;
i_passwd: TEdit;
i_sex: TDBRadioGroup;
DBLookupComboBox1: TDBLookupComboBox;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
procedure AddInit;
public
{ Public declarations }
end;
var
F_add: TF_add;
implementation
uses DataModule, mainwin, crypt;
{$R *.DFM}
procedure TF_add.AddInit;
var
counter:integer;
id:String;
begin
With DataModule1 do
begin
//生成职员号
T_counter.Filter:='ID=''P''';
T_counter.Filtered:=True;
T_counter.Open;
counter:=T_counter['COUNTER_VALUE'];
T_counter.Close;
id:='00000'+IntToStr(counter);
id:='P'+Copy(id,length(id)-4,5);
//增加新统计
T_add_user.Open;
T_add_user.Append;
T_add_user['ID']:=id;
T_add_user['SEX']:='M';
T_add_user['STATE']:='T';
i_passwd.Text:=id;
end;
end;
procedure TF_add.FormCreate(Sender: TObject);
begin
F_main.M_add.Enabled:=False;
F_main.TB_add.Enabled:=False;
Width:=272;
Height:=469;
datamodule1.T_department.Open;
With DataModule1 do
begin
if not T_department.Active then T_department.Open;
if not T_job.Active then T_job.Open;
if not T_edu_level.Active then T_edu_level.Open;
end;
AddInit;
end;
procedure TF_add.Button1Click(Sender: TObject);
var
passwd:String;
counter:Integer;
begin
if length(i_name.Text)>0 then
begin
passwd:=i_passwd.Text;
passwd:=Copy(passwd+passwd,1,10);
passwd:=Encrypt(passwd,123);
With DataModule1 do
begin
//累加职员编号计数器
T_counter.Filter:='ID=''P''';
T_counter.Filtered:=True;
T_counter.Open;
T_counter.Edit;
T_counter['COUNTER_VALUE']:=T_counter['COUNTER_VALUE']+1;
T_counter.Post;
T_counter.Close;
//增加职员个人信息统计
T_add_user.Edit;
T_add_user['PASSWD']:=passwd;
T_add_user.Post;
//获取人事变动统计号
T_counter.Filter:='ID=''C''';
T_counter.Filtered:=True;
T_counter.Open;
counter:=T_counter['COUNTER_VALUE'];
Inc(counter);
T_counter.Edit;
T_counter['COUNTER_VALUE']:=counter;
T_counter.Post;
T_counter.Close;
//追加人事变动统计
T_change.Open;
T_change.Append;
T_change['ID']:=counter;
T_change['PERSON']:=i_user.Text;
T_change['CHANGE']:='2';
T_change['RECORD_TIME']:=Now;
T_change['DESCRIPTION']:='加入企业。';
T_change.Post;
T_change.Close;
end;
AddInit;
end;
end;
procedure TF_add.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
F_main.M_add.Enabled:=True;
F_main.TB_add.Enabled:=True;
With DataModule1 do
begin
T_add_user.Cancel;
T_add_user.Close;
end;
end;
End.
4:更改界面
代码:unit change;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
childwin, StdCtrls, ExtCtrls, DBCtrls, Mask;
type
TF_change = class(TMDIChild)
Label1: TLabel;
i_id: TEdit;
GroupBox1: TGroupBox;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
i_change: TRadioGroup;
Button1: TButton;
Label5: TLabel;
i_department: TDBLookupComboBox;
i_name: TDBEdit;
i_job: TDBLookupComboBox;
Label6: TLabel;
i_description: TMemo;
i_time: TMaskEdit;
procedure i_idChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure ChangeInit;
public
{ Public declarations }
end;
var
F_change: TF_change;
implementation
uses DataModule, mainwin;
{$R *.DFM}
procedure TF_change.ChangeInit;
begin
i_id.Text:=''; //清空职员号输入框
DataModule1.T_user.Close; //关闭职员查询数据表
i_change.ItemIndex:=0; //默认职员变动为职务变更
i_time.Text:=DateToStr(Now); //加入目前时间
i_description.Clear; //清空描述
end;
procedure TF_change.i_idChange(Sender: TObject);
begin
With DataModule1 do
begin
T_user.Filter:='ID='''+i_id.Text+'''';
T_user.Filtered:=True;
T_user.Open;
end;
end;
procedure TF_change.FormCreate(Sender: TObject);
begin
F_main.M_change.Enabled:=False;
F_main.TB_change.Enabled:=False;
Width:=282;
Height:=429;
With DataModule1 do
begin
if not T_department.Active then T_department.Open;
if not T_job.Active then T_job.Open;
end;
ChangeInit;
end;
procedure TF_change.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited; //继承父类关闭事件
F_main.M_change.Enabled:=True; // 恢复菜单使用
F_main.TB_change.Enabled:=True; //恢复按钮使用
end;
procedure TF_change.Button1Click(Sender: TObject);
var
counter:integer; //保留计数器
begin
With DataModule1 do //设置默认前缀为DataModule1
begin
if T_user.RecordCount=1 then //判定是否存在该职员
begin
//获取人事变动统计号
T_counter.Filter:='ID=''C''';
T_counter.Filtered:=True;
T_counter.Open;
counter:=T_counter['COUNTER_VALUE'];
counter:=counter+1;;
T_counter.Edit;
T_counter['COUNTER_VALUE']:=counter; //把新计数器值写入表中
T_counter.Post; //保留表统计
T_counter.Close; //关闭表
//追加人事变动统计
T_user.Edit;
if i_change.ItemIndex=1 then
T_user['STATE']:='F'; //取消职员帐号
T_user.Post; //保留
T_change.Open; //修改人事变动统计
T_change.Append;
T_change['ID']:=counter;
T_change['PERSON']:=i_id.Text;
T_change['CHANGE']:=IntToStr(i_change.ItemIndex);
T_change['RECORD_TIME']:=StrToDate(i_time.Text);
T_change['DESCRIPTION']:=i_description.Text;
T_change.Post; //保留
T_change.Close; //关闭
ChangeInit; //在初始化表单
end
else
Application.MessageBox('请确定职员号!','输入错误',MB_OK);
end;
end;
End.
5:MDICHild
代码:unit Childwin;
interface
uses Windows, Classes, Graphics, Forms, Controls, StdCtrls;
type
TMDIChild = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$R *.DFM}
procedure TMDIChild.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
End.
6:
数据连接
代码:unit DataModule;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables;
type
TDataModule1 = class(TDataModule)
Database: TDatabase;
T_user: TTable;
T_add_user: TTable;
DS_add_user: TDataSource;
T_counter: TTable;
T_department: TTable;
DS_department: TDataSource;
T_job: TTable;
T_edu_level: TTable;
DS_job: TDataSource;
DS_edu_level: TDataSource;
T_change: TTable;
DS_user: TDataSource;
T_user_2: TTable;
DS_user_2: TDataSource;
T_change_list: TTable;
DS_change_list: TDataSource;
T_changed: TTable;
DS_changed: TDataSource;
private
{ Private declarations }
public
{ Public declarations }
end;
var
DataModule1: TDataModule1;
implementation
{$R *.DFM}
End.
7:主窗口设计
代码: About, login, DataModule, add, change, search;
procedure TF_main.M_aboutClick(Sender: TObject);
begin
AboutBox.ShowModal;
end;
procedure TF_main.M_connectClick(Sender: TObject);
begin
application.CreateForm(TF_login,F_login);
F_login.ShowModal;
if login then
begin
M_connect.Enabled:=False;
TB_connect.Enabled:=False;
M_disconnect.Enabled:=True;
TB_disconnect.Enabled:=True;
M_add.Enabled:=True;
TB_add.Enabled:=True;
M_change.Enabled:=True;
TB_change.Enabled:=True;
M_search.Enabled:=True;
TB_search.Enabled:=True;
StatusBar1.Panels[1].Text:='已经连接到服务器:'+F_login.i_server_add.Text;
end;
end;
procedure TF_main.FormCreate(Sender: TObject);
begin
//初始化
login:=False;
M_connect.Enabled:=True;
TB_connect.Enabled:=True;
M_disconnect.Enabled:=False;
TB_disconnect.Enabled:=False;
M_add.Enabled:=False;
TB_add.Enabled:=False;
M_change.Enabled:=False;
TB_change.Enabled:=False;
M_search.Enabled:=False;
TB_search.Enabled:=False;
StatusBar1.Panels[1].Text:='还未登录服务器!请按F2登录。';
end;
procedure TF_main.M_disconnectClick(Sender: TObject);
var
i:integer;
begin
for i:=MDIChildCount-1 downto 0 do
F_main.MDIChildren[i].Close;
DataModule1.Database.Connected:=False;
FormCreate(nil);
datamodule1.Free;
end;
procedure TF_main.M_exitClick(Sender: TObject);
begin
Close;
end;
procedure TF_main.M_addClick(Sender: TObject);
begin
Application.CreateForm(TF_add,F_add);
end;
procedure TF_main.M_changeClick(Sender: TObject);
begin
Application.CreateForm(TF_change,F_change);
end;
procedure TF_main.M_searchClick(Sender: TObject);
begin
Application.CreateForm(TF_search,F_search);
end;
End.
8:修改界面
代码:unit search;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
childwin, DBCtrls, Grids, DBGrids, StdCtrls, Mask, ExtCtrls, DBCGrids;
type
TF_search = class(TMDIChild)
Label1: TLabel;
Label2: TLabel;
i_id: TEdit;
Button1: TButton;
Label3: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
i_sex: TDBRadioGroup;
i_passwd
展开阅读全文