数据库系统概论课程设计说明书
题目: 干部信息管理系统
学院(系): 电子与信息工程学院
专业班级:
学 号:
学生姓名:
指导教师:
教师职称:
起止时间:
大学课程设计(论文)任务书
院(系):电子与信息工程学院 教研室: 软件工程
说明:此表一式四份,学生、指导教师、教研室、系部各一份。可加附页。
20##年 7 月 8
目录
第一章 概述... 4
第二章 问题定义... 4
第三章 需求分析... 4
第四章 数据库设计... 6
第五章 界面设计... 7
第六章 代码... 9
第一章 概述
本系统本着一切为用户着想的设计指导思想,力求做到界面美观大方,操作简捷明了,而且具备一个实用的操作系统的良好容错性,在用户出现误操作时能尽量及时地给出警告,以便用户能够及时进行改正。
由于不同用户所使用的计算机资源总是会受到不同条件的限制,因此,我们就要充分利用的功能,在设计出自己的功能强大的软件的同时,尽可能地减少对系统资源的占用,并且还要力求做到通过使用本干部信息管理系统,尽量使单位的干部信息管理工作系统化、自动化和规范化,从而达到提高企、事业单位效率的目的。
本系统开发的总体设计目标是使企、事业单位的办公人员能够轻松、快捷地完成本单位的干部信息管理任务。
第二章 问题定义
工作人员:系统的录入人员,主要指管理各种档案的工作人员,需要通过密码才能进入。他们拥有对系统数据的录入、修改、查询、删除等操作权限。但不可以更改系统密码。
查询人员:权限最低的登入人员,他们拥有对相关数据的查询权限,但不能对数据进行修改和删除。
系统管理人员:指干部信息管理系统的管理人员,他们拥有所有权限,包括对系统数据的录入、修改、查询、删除等操作权限。可以对系统密码进行更改,可以管理用户信息、权限。
第三章 需求分析
一、主要功能:
本系统主要用于企事业单位的干部信息管理,采用面向对象的设计思想,以菜单和表单的形式进行各表单的调用,其系统功能分析是在系统开发的总体任务的基础上完成的。因此,本系统应该主要完成和实现如下功能:
初始化系统数据;录入干部的基本信息数据;干部基本信息数据的修改和删除;
干部信息的基本设定;浏览干部的信息;查询干部的具体参数;
干部信息: 在该项内容中将包括的数据库项有干部编号、干部姓名、职务、行政级别、年龄、性别、出生日期、政治面貌。
干部信息的基本设定:通过该模块可以设定干部编号、干部姓名、职务、行政级别、年龄、性别、出生日期、政治面貌。
二、数据流图(DFD):(略)
三、数据字典(DD):
干部信息=干部编号干部姓名+职务+行政级别+年龄+性别+出生日期+政治面貌;
应用在了:干部信息维护管理界面,干部信息录入界面
四、程序流程图
五、功能结构图:
干部管理系统模块
干部信息设定模块
第四章 数据库设计
一、概念设计:系统ER图
二、逻辑设计:
下面列出主要的数据库表设计:
干部信息表:
三、物理设计
建立索引是加快查询速度的有效手段。用户可以根据应用环境的需要,在基本表上建立一个或多个索引,以提供多种存取路径,加快查找速度。
一般说来,建立与删除索引由数据库管理员DBA或表的属主(owner),即建立表的人,负责完成。系统在存取数据时会自动选择合适的索引作为存取路径,用户不必也不能显示地选择索引。
在RDBMS中索引一般采用B+树、HASH索引来实现。B+树索引具有动态平衡的优点。HASH索引具有查找速度快的特点。索引是关系数据库的内部实现技术,属于内模式范畴。
用户使用CREATE INDEX语句定义索引时,可以定义索引是唯一索引、非唯一索引或聚簇索引。至于某一个索引是采用B+树,还是HASH索引则由具体的RDBMS来决定。
第五章 界面设计
一、登陆窗口如下所示:
若输入的密码不符合,即弹出对话框,提示该用户无法进入系统。
登陆界面
密码错误
密码正确
二、干部信息管理系统主界面
单击主菜单上的各个按钮,可以进入相应的界面中。
三、添加干部信息
先点击干部信息录入->录入新信息进行新干部信息的录入
然后输入添加的信息后点击“提交”
数据提交成功
四、查询干部信息
五、删除干部信息
六.更新干部信息
第六章 代码与注释
一、登录窗口代码
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB,unit2,unit3, jpeg, ExtCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
DataSource1: TDataSource;
Edit3: TEdit;
Edit4: TEdit;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
Var
strSQL:string;
begin
if (edit1.Text='')or(edit2.Text='') then
begin
showmessage('用户名或者密码不能为空');
end;
strSQL:='select 用户 from admin ';//查询用户
dm.admin_query.SQL.Clear;
dm.admin_query.SQL.Add(strSQL);
dm.admin_query.Open;
Form1.Edit3.Text:=dm.admin_query.FieldByName('用户').AsString;
strSQL:='select 密码 from admin ';//查询密码
dm.admin_query.SQL.Clear;
dm.admin_query.SQL.Add(strSQL);
dm.admin_query.Open;
Form1.Edit4.Text:=dm.admin_query.FieldByName('密码').AsString;
if (edit1.Text=edit3.Text)and(edit2.Text=edit4.Text) then
begin
showmessage('您是合法用户,欢迎进入!');
form1.Hide;
form3.Show;
end
else if(edit1.Text<>'')and(edit2.Text<>'') then
showmessage('用户名或密码错误!');
edit1.Text:='';
edit2.Text:='';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
end.
二、干部信息录入代码
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,unit2, DB;
type
TForm4 = class(TForm)
GroupBox1: TGroupBox;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Label5: TLabel;
Edit5: TEdit;
Label6: TLabel;
Edit6: TEdit;
Label7: TLabel;
Edit7: TEdit;
Label8: TLabel;
Edit8: TEdit;
DataSource1: TDataSource;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.dfm}
procedure TForm4.Button2Click(Sender: TObject);
begin
close;
end;
procedure TForm4.Button1Click(Sender: TObject);
var
str:string;
begin
if (edit1.Text='')or(edit2.Text='') then
begin
showmessage('干部编号或干部姓名不能为空!');
end;
if (edit1.Text<>'')and(edit2.Text<>'') then
begin
str:='select * from officer_info where 干部编号 = '+''''+edit1.Text;
str:=str+'''';
dm.information_query.SQL.Clear;
dm.information_query.SQL.Add(str);
dm.information_query.Open;
if(dm.information_query.RecordCount>0) then
begin
showmessage('数据库中已经有该人的信息,请核对后重新输入!');
end;
if(dm.information_query.RecordCount=0) then
begin
str:= 'insert into officer_info values(' ;
str:= str+''''+edit1.Text+''''+',';
str:= str+''''+edit2.Text+''''+',';
str:= str+''''+edit6.text+''''+',';
str:= str+''''+edit7.Text+''''+',';
str:= str+''''+edit3.Text+''''+',';
str:= str+''''+edit4.Text+''''+',';
str:= str+''''+edit5.Text+''''+',';
str:= str+''''+edit8.Text+'''';
str:= str+')';
dm.information_query.SQL.Clear;
dm.information_query.SQL.Add(str);
dm.information_query.ExecSQL();
showmessage('数据提交成功!');
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
edit6.Text:='';
edit7.Text:='';
edit8.Text:='';
end;
end;
end;
end.
三、干部信息维护(包括查询、修改、删除)代码
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,unit2, Grids, DBGrids, StdCtrls, DB;
type
TForm5 = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
DataSource1: TDataSource;
Button1: TButton;
Button2: TButton;
Button3: TButton;
GroupBox3: TGroupBox;
DBGrid1: TDBGrid;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Label5: TLabel;
Edit5: TEdit;
Label6: TLabel;
Edit6: TEdit;
Label7: TLabel;
Edit7: TEdit;
Label8: TLabel;
Edit8: TEdit;
Button4: TButton;
procedure DBGrid1CellClick(Column: TColumn);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
{$R *.dfm}
procedure TForm5.DBGrid1CellClick(Column: TColumn);
begin
edit1.Text:=dm.information_query.FieldByName('干部编号').AsString;
edit2.Text:=dm.information_query.FieldByName('干部姓名').AsString;
edit3.Text:=dm.information_query.FieldByName('职务').AsString;
edit4.Text:=dm.information_query.FieldByName('行政级别').AsString;
edit5.Text:=dm.information_query.FieldByName('年龄').AsString;
edit6.Text:=dm.information_query.FieldByName('性别').AsString;
edit7.Text:=dm.information_query.FieldByName('出生日期').AsString;
edit8.Text:=dm.information_query.FieldByName('政治面貌').AsString;
end;
procedure TForm5.Button1Click(Sender: TObject);
Var
strSQL:string;
begin
if (edit1.Text<>'') then
begin
strSQL:='select * from officer_info where 干部编号='+'''';
strSQL:=strSQL+Edit1.Text+'''';
dm.information_query.SQL.Clear;
dm.information_query.SQL.Add(strSQL);
dm.information_query.Open;
end;
if (edit1.Text='') then
strSQL:='select * from officer_info';
dm.information_query.SQL.Clear;
dm.information_query.SQL.Add(strSQL);
dm.information_query.Open;
end;
procedure TForm5.Button2Click(Sender: TObject);
Var
strSQL:string;
begin
if (edit1.Text<>'') then
begin
strSQL:='delete * from officer_info where 干部编号='+'''';
strSQL:=strSQL+Edit1.Text+'''';
dm.information_query.SQL.Clear;
dm.information_query.SQL.Add(strSQL);
dm.information_query.ExecSQL;
showmessage('删除成功!');
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
edit6.Text:='';
edit7.Text:='';
edit8.Text:='';
end;
if (edit1.Text='') then
showmessage('请输入要删除人员的干部编号!');
end;
procedure TForm5.Button3Click(Sender: TObject);
var
strSQL:string;
begin
if(edit1.Text='') then
begin
showmessage('请输入要更新人员的干部编号!');
end;
if(edit1.Text<>'') then
begin
strSQL:='update officer_info set 干部编号='+'''';
strSQL:=strSQL+edit1.Text+''''+',';
strSQL:=strSQL+'干部姓名 = '+''''+edit2.Text+''''+',';
strSQL:=strSQL+'职务 = '+''''+edit3.Text+''''+',';
strSQL:=strSQL+'行政级别 = '+''''+edit4.Text+''''+',';
strSQL:=strSQL+'年龄 = '+''''+edit5.Text+''''+',';
strSQL:=strSQL+'性别 = '+''''+edit6.Text+''''+',';
strSQL:=strSQL+'出生日期= '+''''+edit7.Text+''''+',';
strSQL:=strSQL+'政治面貌 = '+''''+edit8.Text+'''';
strSQL:=strSQL+' where 干部编号 = '+''''+edit1.Text+'''';
dm.information_query.SQL.Clear;
dm.information_query.SQL.Add(strSQL);
dm.information_query.ExecSQL;
showmessage('更新成功!');
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
edit6.Text:='';
edit7.Text:='';
edit8.Text:='';
end;
end;
procedure TForm5.FormShow(Sender: TObject);
var
i:integer;
begin
for i:=0 to 7 do
begin
DBGrid1.Columns.Items[i].Width:=90;
end;
end;
procedure TForm5.Button4Click(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
edit6.Text:='';
edit7.Text:='';
edit8.Text:='';
end;
end.
六、设计总结
本系统可完成基本的干部信息查询和添加删除其的相关信息,在登录系统的安全性方面也有着一定的保证,实现了干部信息的管理,包括添加,查询,删除等。
1)在界面设计方面,某些设计不是很合理,整个系统的界面设计不够美观,简洁;
2)在功能实现方面,比如信息修改等,由于时间原因,没有完善。
3)对表的设计很不完善,并且只有两个个表,所以表间的关系也没有实现。
总而言之,本系统基本上实现了干部信息管理的功能,但是附加功能没有,系统很不完善,其他细节可以逐步完善。这次课设中学到了不少东西,无论是编程还是数据库设计,受益匪浅。
参考文献:
[1]张世明主编.《Delphi程序设计基础——教程、试验、习题》.电子工业出版社,20##-3
[2]王珊 萨师煊主编《数据库系统概论》第四版.高等教育出版社,2006.5
[3]《数据库原理及应用》 钱雪忠主编 北京邮电大学出版社 2007,8 第二版
[4] 《数据库技术与联机分析处理》 王珊主编 北京科学出版社 1998
[5] 张龙祥.数据库原理与设计[M].成都:西南交通大学出版社,1994
[6] 张龙祥等.数据库原理与设计.北京:人民邮电出版社,2002
[7] 刘方鑫等.数据库原理与技术.北京:电子工业出版社,2002
[8] 韩庆兰.数据库技术.长沙:湖南科学技术出版社,2001