资源描述
delphi课程设计报表
25
2020年4月19日
文档仅供参考
课程设计任务书
题目: 学生宿舍管理系统
学号: 12230312
姓名: 贺 言 君
专业: 计算机科学与技术
课程: delphi程序设计
指导教师: 燕孝飞 职称:
完成时间: 12月1日—— 12月27日
枣庄学院计算机科学系制
课程设计任务书及成绩评定
课程设计的任务和具体要求
在现代的高校宿舍管理工作中,由于高校扩招,学生人数巨增,传统的管理方法已经不适合高校宿舍管理的需要,以前在管理方面采用的管理系统有一些落后,随着学生人数的不断增加,该系统在数据管理方面有一些混乱,越来越不能适宜管理的需要,因此需要一个功能更完善,操作更方便,容量更大的管理信息系统。因此宿舍管理系统是各大高校所需要使用的一个管理系统.由于宿舍系统是一个比较大型的信息管理系统,它需要专业的工作人员才能完成复杂的功能,而且不同的高校的管理内容和方式有所不同.信息系统分析与设计是学习完《信息系统分析与设计》课程后进行的一次全面的综合练习。其目的在于加深对信息系统基础理论和基本知识的理解,初步掌握使用信息系统分析、设计的基本内容和方法,提高解决实际问题的能力。作为学习,我们设计这个管理系统不可能作一个标准的应用系统,而只是制作了一个有一般代表意义的小型宿舍管理系统.这样既深化了理论知识也提高了实践能力.
指导教师签字:__________ 日期:__________
指导教师评语
成绩:_______ 指导教师签字:_______ 日期:_______
课程设计所需软件、硬件等
此管理系统采用delphi7设计前台界面,SQL Server 开发数据库因此
采用的软件及语言如下:
系统:Windows XP
语言:SQL语言、Pascal语言
开发工具:SQL Server ,delphi7等
课程设计进度计划
起至日期
工作内容
备注
12月1日—5日
12月6日—9日
12月10日—11日
12月12日—23日
12月24日—27日
确定课题并搜集相关资料
分析后台数据库需求
总体功能的设计
各个功能模块的设计
撰写课程设计
略
参考文献,资料索引
序号
文献、资料名称
编著者
出版单位
[1]李目海, delphi应用程序设计, 枣庄学院计算机科学系
[2]陈豫龙 何旭洪, delphi数据库系统开发实例导航(第二版), 人民邮电出版社
[3]刘子锐, delphi数据开发自学教程,人民邮电出版社
一、摘要
宿舍管理系统是当前各所高校后勤管理之中的重要部分,如何能科学有效的开展学生公寓管理工作,是当前高校领导人和后勤管理人员关心的问题。因此, 公寓管理工作的信息化和科学化有着十分重要的实践意义,此次开发的大公寓管理信息系统, 旨在实现对现有的宿舍管理系统中遇到的宿舍信息情况和大量数据进行数据存储的基础上,设计并完成对其宿舍信息的分类、查询,添加,删除,修改和打印报表在深入研究的过程中,尽可能实现方便友好的操作界面和数据报表。
该系统运用 DELPHI7技术, 以 Microsoft SQL Server 为后台数据库, 开发了一套为高校服务的公寓管理信息系统。利用该系统大大的加强管理部门的相互沟通能力,提高工作效率,减少不必要的重复劳动,加速信息的记录、查阅以及传播速度,实现人性化管理和沟通服务管理的一种实用型管理软件。
管理信息系统是一个由人和计算机软件硬件资源组成的人机系统,能进行管理信息的收集、传递、加工、保存、维护和使用,提供信息支持单位的运行、管理和决策的功能。在强调管理、调信息的现代社会中,管理信息系统变得越来越普及,能够说它是一门新的学科,跨越了若干个领域,如管理科学、系统科学、统计学以及计算机科学等,并在这些学科的基础上,形成信息收集和加工的方法,从而形成一个纵横交织的系统。
在传统的业务流程中,数据信息附着于业务流程之上,这是一种效率很低的数据处理方法;实现了办公自动化之后,虽然很多业务数据电子化了,可是不借助数据库的帮助,数据信息依然附着于业务流程之上,虽然能够以文件等形式将电子化的数据存储,可是数据的再利用效率很低,而且也无法从这些无序的数据中提取进一步的信息;当建立了数据库系统之后,数据终于脱离业务流程而独立存在。人们不但能够经过管理信息系统将其储存于数据库之中,而且还能够对其方便地再利用。
随着社会对人才需求的增加,以及高校的全面扩招,在校学生人数剧增,这给高校的后勤管理,特别是对学生公寓的管理带来很大的压力。学生公寓的管理是一项非常烦琐的工作,但又是高校发展毕不可少的一部分。在学生公寓管理工作中,很大一部分是重复性的劳动,完全能够经过计算机信息技术来取代人工进行这些工作,从而是管理人员将更多的精力集中在如何提高服务质量方面。学生公寓管理系统就是为了满足这个需求而开发的一个管理信息系统。
二、目录
1. 摘要 ………………………………………… 4
2. 目录 ………………………………………… 5
3. 正文 ………………………………………… 6
3.1 系统功能设计 ……………………… 6
3.2 数据库设计 ………………… 7
3.3 系统主界面设计 ………………… 7
3.4 系统功能模块设计 ………………… 7
3.5 其它设计功能 ………………… 15
4. 实验中出现的问题及解决方法 …… 16
5. 结束语 ……………………………… 16
三、正文
1.系统功能设计
用户登录界面
系控制界面
查询管理模块:
学生信息查询
宿舍信息操作
离校学生查询
来访信息查询
夜归学生查询
用户管理
退出系统
宿舍管理
来访管理
学生管理
查询管理
打印
报表
帮助信息
图1-1 系统功能模块图
右图为查询管理子模块:
在本系统中,将实现以下功能:
★ 学生住宿信息管理.
★ 删除记录管理.
★ 学生综合信息查询.
2. 数据库设计
在sql server 中建立了一个学生宿舍管理数据库,数据表如下所示:
用户信息表(账户,密码,身份)
住宿学生(学号,姓名,性别,专业,宿舍号,入住时间)
宿舍(宿舍号,宿舍电话)
夜归(学号,宿舍号,晚归时间,晚归原因)
离校(学号,宿舍号,离校时间,返回时间)
来访者(姓名,身份证,来访时间,离开时间)
3. 系统主界面设计
包括菜单栏(mainmenu)、状态栏(toolbar)、工具栏(statusbar)三大部分,其中还添加了imagelist,timer等组件,进行辅助的设计。
4.系统功能模块设计
1)用户登录模块
用户登录窗体如图所示:
各组件的添加省略,下面只给出主要的代码:
“管理员登录”按钮代码:
procedure TForm2.Button3Click(Sender: TObject);
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from user_info where user_na='''+uname.Text+''' and user_pwd='''+pword.Text+''' and user_des='''+combobox2.Text+'''');
adoquery1.Open;
if (uname.Text='') or (pword.Text='') or (combobox2.Text='') then
showmessage('输入的用户名或密码不能为空')
else if adoquery1.Recordset.RecordCount=0 then
showmessage('用户名或密码输入错误')
else
begin
form2.FreeOnRelease;
form2.Visible:=false;
form1.MainMenu1.Items[4].Visible:=false;
form1.ShowModal;
end;
end;
“游客登录”按钮代码:
procedure TForm2.ComboBox2Click(Sender: TObject);
begin
if combobox2.Text='游客' then
begin
button3.Enabled:=false;
button1.Enabled:=true
end
else
begin
button1.Enabled:=false;
button3.Enabled:=true;
end;
end;
2)添加用户功能模块
用户管理窗口
“添加用户”按钮代码:
procedure TForm4.Button2Click(Sender: TObject);
begin
With ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('Insert Into user_info(user_na,user_pwd,user_des)');
SQL.Add('Values('''+edit1.Text+''','''+edit2.Text+''','''+combobox1.Text+''') ');
ExecSQL;
showmessage('添加成功');
end;
end;
3)管理功能模块
下面宿舍信息管理子功能为例,其它管理只给出窗体设计功能代码类似。
宿舍管理
“插入”按钮代码:
procedure TForm9.Button2Click(Sender: TObject);
begin
if (edit1.Text='') or (edit2.Text='') then
showmessage('不能为空')
else
begin
adotable1.append;
ADOTable1.FieldByName('dorm_no').asstring:=vartostr(edit1.Text);
ADOTable1.FieldByName('dorm_tel').asstring:=vartostr(edit2.Text);
adotable1.post;
end
end;
“显示所有”按钮代码:
procedure TForm9.Button6Click(Sender: TObject);
begin
adotable1.Filtered:=false;
MessageBox(handle,'查询完毕!','提示',MB_OK or MB_ICONINFORMATION);
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
end;
“查找”按钮代码:
procedure TForm9.Button5Click(Sender: TObject);
begin
if adotable1.Active then
begin
if not ADOTable1.Locate('dorm_no',Edit3.Text,[loCaseInsensitive, loPartialKey]) then
showmessage('对不起,没有您要查找的记录!')
else
begin
ADOTable1.Filter:='dorm_no='+QuotedStr(Edit3.Text);
ADOTable1.Filtered := True;
end
end
else showmessage('系统错误');
end;
“删除”按钮代码:
procedure TForm9.Button3Click(Sender: TObject);
begin
if messagedlg('确实要删除吗?',mtinformation,[mbyes,mbno],0)=mryes then
adotable1.Delete
else
edit3.Text:='';
end;
“返回”按钮代码:
procedure TForm9.Button1Click(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
FreeOnRelease;
form9.Visible:=false;
form1.Show;
end;
来访者管理子模块功能与上面的累类似,在此省略介绍。
下面是分别是离校学生管理与夜归学生管理两个子模块,都采用了DBnavigator组件,设置较简单,省了编写代码,具体设置在此不做介绍。
下面是学生信息管理子模块,与宿舍管理模块功能类似。
4)查询功能模块
下面是查询功能模块,首先是学生信息查询,主要同过label组件与edit组件进行分类查找,来访信息查询与宿舍信息查询由于数据单一,因此只进行单方面的查找,离校与夜归学生查询采用了combobox组件与edit组件配合,实现分类查寻,具体代码设计如下:
第一个“查找”按钮代码:
procedure TForm10.Button2Click(Sender: TObject);
begin
if adotable1.Active then
begin
if not ADOTable1.Locate('s_no',Edit1.Text,[loCaseInsensitive, loPartialKey]) then
showmessage('对不起,没有您要查找的记录!')
else
begin
ADOTable1.Filter:='s_no='+QuotedStr(Edit1.Text);
ADOTable1.Filtered := True;
end
end
else showmessage('系统错误');
end;
“显示所有”按钮代码:
procedure TForm10.Button5Click(Sender: TObject);
begin
adotable1.Filtered:=false;
MessageBox(handle,'查询完毕!','提示',MB_OK or MB_ICONINFORMATION);
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
end;
以上两个模块的功能与第一个类似,在此省略介绍。
“查找”按钮代码:
procedure TForm15.Button1Click(Sender: TObject);
begin
if adotable1.Active=true then
begin
if combobox1.Text='学号' then
if adotable1.Locate('s_no',edit1.Text,[loCaseInsensitive, loPartialKey]) then
begin
ADOTable1.Filter:='s_no='+QuotedStr(Edit1.Text);
ADOTable1.Filtered := True
end
else
showmessage('对不起,没有您要查找的记录!');
if adotable1.Active=true then
if combobox1.Text='姓名' then
if adotable1.Locate('s_name',edit1.Text,[loCaseInsensitive, loPartialKey]) then
begin
ADOTable1.Filter:='s_name='+QuotedStr(Edit1.Text);
ADOTable1.Filtered := True
end
else
showmessage('对不起,没有您要查找的记录!');
if adotable1.Active=true then
if combobox1.Text='宿舍号' then
if adotable1.Locate('s_dorm_no',edit1.Text,[loCaseInsensitive, loPartialKey]) then
begin
ADOTable1.Filter:='s_dorm_no='+QuotedStr(Edit1.Text);
ADOTable1.Filtered := True;
end
else
showmessage('对不起,没有您要查找的记录!');
end;
end;
此模块设计与上面的类似,在此省略介绍。
5) 报表的设计
主要采用Ehlib组件包进行开发,只要设置一些组件的属性即可,简单易懂,在此省略具体设计步骤,设计图如上面所示。
6)其它设计功能
采用互斥对象方法避免应用程序重复启动
var
mutex:THandle;
begin
mutex:=createmutex(NIL,TRUE,'form1');
if getlasterror<>ERROR_ALREADY_EXISTS then
begin
Application.Initialize;
Form3:=TForm3.Create(application);
Form3.Show;
form3.Update;
sleep(100);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm16, Form16);
Application.CreateForm(TForm17, Form17);
form1.StatusBar1.Panels[1].Text:=' 小贺';
Application.CreateForm(TForm4, Form4);
Application.CreateForm(TForm6, Form6);
Application.CreateForm(TForm8, Form8);
Application.CreateForm(TForm9, Form9);
Application.CreateForm(TForm10, Form10);
Application.CreateForm(TForm11, Form11);
Application.CreateForm(TForm12, Form12);
Application.CreateForm(TForm13, Form13);
Application.CreateForm(TForm14, Form14);
Application.CreateForm(TForm15, Form15);
form3.Free;
Application.Run;
end;
else
showmessage('应用程序已启动!');
releasemutex(mutex);
4. 实验中出现的问题及解决方法
技术水平不是很扎实。有很多的新的控件、新的知识要学习、因此做起来没想象中的容易,不过最终能够克服。
在调试的过程中遇到了许多错误,话费了大量时间进行修改、整理,浪费了整体的开发时间。幸好,最终问题都得到了解决,并按预期时间完成了设计工作。
5. 结束语
经过此次课程设计,不但复习、巩固了delphi课程的有关知识,而且还总结了许多软件设计的经验,其中,自己感觉最重要的就是:在软件设计的初期一定要构思好软件的框架,设计好各个功能模块,具体的功能界面设计等等,总之,要花费大量时间设计好总体构思,在此基础上再进行开发设计。
展开阅读全文