您好,欢迎来到小侦探旅游网。
搜索
您的当前位置:首页软件课程设计报告

软件课程设计报告

来源:小侦探旅游网


南 京 理 工 大 学

课程设计说明书

作 者

王安东 0806550128 丁 锋 0806550211 学院(系): 计算机科学与技术学院

专 业: 软件工程

题 目: 南京理工大学校团委综合管理系统

2010 年 9 月

1

目录

一、概述 ·················································3 二、需求分析··············································3

三、系统设计··············································9

四、系统实施···············································

五、系统测试···············································

六、收获和体会 ············································

七、附录··················································

八、参考文献·············································

2

一、概述

1、项目背景:

大学生活丰富多彩,各色社团五彩缤纷,而作为学校各类学生社团组织的“总上司”,南京理工大学校团委可谓任重而道远。

程序作者之一(王)作为校团委直属下的一个协会负责人,对校团委十分了解,在与各兄弟组织(尤其是人力资源中心)的交往中了解到他们在协会管理上还是缺乏一定的规范性与系统性,尤其希望有一个软件能够对协会常规简务进行相对简单的处理与汇总,以减少重复的工作量,提高协会相关人员的工作效率。 考虑到校团委的实际情况,我们选择利用这次软件课程设计的机会,开发出一个功能相对全面的所谓“综合管理系统”,对校团委的基本工作进行模拟。软件中的协会设置、介绍等等完全按照南理工校团委2010年现状,具有相对较强的针对性与实用性,但是限于作者水平,作品粗陋,缺陷较多,谨以功能完善为慰,请老师批评指正。 2、编写目的:

1)实用意义:通过这个完全按照校团委实际而写出的程序来实现校团委从主管老师、人资主任(管理员)、各组织负责人及成员、一般游客等相应的功能——即写一个针对性强、实用性强的原生态软件作品。

2)锻炼意义:作为软件工程的学生,设计与编码的基本功夯实打牢,通过这次软件课程设计,夯实基础,发现问题,提高能力并且养成求是作风,会让我们受益良多。 3、软件定义:

完全按照南京理工大学校团委实际而做的来实现校团委从主管老师、人资主任(管理员)、各组织负责人及成员、一般游客等相应的功能的“综合管理系统V1.0”。

3

4、开发环境:Windows7下的sql server2000+delphi7

二、需求分析

1、问题的提出:

南京理工大学校团委下设十个直属学生组织(四个“中心”,六个“协会”,除研究生会),每个组织下设大同小异的部门。校团委(包括各组织)需要介绍宣传,各组织需要档案管理与接受评价,团委成员(从主管老师到组织团再到干事)具有各自的职能同时接受评价与申诉,管理员可以操纵档案发布通知等等,种种事务,不一而足。试将各个功能体现在本次软设产品中。 2、系统的业务功能分析:

一个全面的综合管理系统需要在客观现实的基础上实现尽可能多的功能。南理工团委组织管理系统包括了对协会成员管理,协会管理,协会分数和协会成员分数的管理,团委老师管理,管理员管理,其中协会成员管理必须实现协会成员基本信息查询、录入、添加、删除、修改;协会管理包括了协会中的一些管理,包括最近访问管理;协会分数和协会成员分数的管理包括协会分数和协会成员分数的查询、录入、添加、删除、修改;团委老师管理包括团委老师信息的查询、录入、添加、删除、修改;管理员管理包括联系管理员表的录入和查看和管理员通知的录入和分权限查看。此外,还必须涵盖用户登陆的功能。其中用户的登陆和注册被设置权限,分为学生、团委老师、游客和管理员,不同的用户拥有不同类别的用户名,所能进行的功能也不尽相同。

3、需完成的功能:

协会成员

1、成员信息的查询、录入、添加、删除、修改;

2、协会成员表现分数的查询、录入、添加、删除、修改; 3、协会成员查看管理员通知,并且可以联系管理员;

4

团委老师

1、团委老师信息的查询、录入、添加、删除、修改; 2、团委老师打分信息的查询、录入、添加、删除、修改; 3、团委老师查看管理员通知,并且可以联系管理员; 协会

1、协会基本信息的查看;

2、协会分数的查询、录入、添加、删除、修改; 3、协会最近访问的录入和查看。 管理员

1.协会成员信息管理; 2.团委老师信息管理; 3联系管理员表的录入和查看; 4管理员通知的录入和分权限查看。

4、系统的业务流程分析:

开始 游客进入

选择社团 查看社团

给砸鲜鸡花 蛋

5

编辑协会成员信息

退出 结 开始 束 管理员登录 修改密码 编辑团委老师信息 查看社团成员 查看社团介绍 发布通知 查看联系管理员 输入密码 否 是否正确 是 输入新密码 否 是否一致 是 成功 退 出 结束 6

开始 社团老师进入 查看个人信息 选择社团 修改密码 联系管理员 修改头像 查看管理员通知 社团打分 查看协会介绍 查看协会成员 协会成员打分 退出 退出 7

查看管理员通知

开始 选择社团 协会成员登录 查看得分排名 查看个人信更改密码 职能 查看详情 修改个人信息 查看协会成员 了解我的社团 社团成员打分 是 是否是办公室成员 修改社团信息 否 8

退出 结束

5.数据流图:

团委老师 P1 打分处理 打分 P1 打分处理 录入 协会成员 录入 F1 协会分数、协会成员分数 5、数据字典 协会 管理员 发布通知 查看通知 P2 通知管理 录入 P2 通知管理 录入 管理员 协会成员 F2 通知信息 查看联系 管理员 P3 联系管理 录入 录入 P3 联系管理 编写联系 协会成员 9

三、系统设计

1、数据表: (1) E-R图

协会基本 信息

团委老师 协会打分 联系 管理 成员打分 访问 管理员 发布 成员打分 联系 管理员通知 访问 管理 拥有 访问 协会成员 编辑 10

管理员实体: 账号 密码

管理员

协会成员实体: 出生年月

学号

姓名

性别

备注

院系 协会成员 年级 政治面貌 省份

联系电协会 话 职务 部门

团委老师实体,协会成员实体与管理员实体之间的联系“联系”:

时间 内容

联系 管理员通知实体:

通知编号 通知名称

11

管理员通知

通知内容 通知等级

团委老师实体 :

通知时间办公室号码 账号

qq 团委老师

姓名 E-mail 密码

协会基本信息实体:

logo 简介

名称 协会基本信息 图片1 图片2 图片3

12

各实体对协会实体的联系“访问”: 时间

次数 访问

管理员实体: 宣传报道分数 组织建设分数 活动开展分数 鲜花 协会打分 评分次数 鸡蛋 管理员实体与协会成员实体以及协会成员实体对自己的联系“打分”:

平均分 评分次数

成员打分

13

(2)、数据库的关系模式: A.*关系模式设计分析:

原则:

a. 遵照ER图到关系的映射要求;

b. 考虑到团委实际,不拘泥于ER图,合并一些性质相同相似的物理表,以简化数据库设计。 B

1).由实体映射到关系:

协会成员(协会名称,学号,姓名,性别,出生年月,院系,年级,省份,部门,职务,联系电话,政治面貌,备注)

团委老师(姓名,账号,密码,办公室号码,qq,e-mail)

协会基本信息(名称,logo,简介,图片1,图片2,图片3)

管理员(账号,密码)

管理员通知(通知编号,通知名称,通知内容,通知等级,通知时间)

2).由联系映射到关系 协会分数(协会名称 ,评分老师, 宣传报告分数,活动开展分数,组织建设分数,次数,鲜花,鸡蛋)

成员分数(协会名称,成员学号,平均分,评分次数)

最近访问(协会,访客姓名,访客组织,次数,时间)

联系管理员(联系人组织,联系人姓名,内容,时间)

(3)、表的物理设计:

协会成员表 属性名 数据类型 协会名称 Varchar(15) 姓名 Varchar(15) 学号 Varchar(15)

是否主键 是 否 是 是否允许为空 是 否 否 缺省值 说明 外键 姓名 学号 14

性别 Varchar(15) 出生年月 datetime 院系 Varchar(15) 年级 Varchar(15) 省份 Varchar(15) 部门 Varchar(15) 职务 Varchar(15) 联系电话 Varchar(15) 政治面貌 Varchar(15) 分数 integer 备注 Varchar(15)

成员分数表 属性值 数据类型 协会名称 Varchar(15) 成员学号 Varchar(15) 评分次数 integer 平均分 integer 协会基本信息表 属性值 数据类型 名称 Varchar(15) logo Varchar(15) 简介 Varchar(15) 图片1 image 图片2 image 图片3 image 协会分数表 属性值 数据类型 协会名称 Varchar(15) 评分老师 Varchar(15) 宣传报告分integer 数 活动开展分integer 数 组织建设分integer 数 次数 integer 鲜花 integer 鸡蛋 integer 团委老师表 属性值 数据类型 姓名 Varchar(15)

否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 是 是 是 是 计算机 性别 出生年月 院系 学生班级 省份 部门 职务 联系电话 政治面貌 分数 备注 是否主键 是 是 否 否 是否主键 是 否 否 否 否 否 是否主键 是 否 否 否 否 否 否 否 是否允许为空 否 否 否 否 是否允许为空 否 否 否 否 否 否 是否允许为空 否 否 否 否 否 否 否 否 缺省值 0 0 缺省值 缺省值 说明 外键 外键 评分次数 平均分 说明 名称 部门 职务 图片1 图片2 图片3 说明 外键 外键 宣传报告分数 活动开展分数 组织建设分数 次数 鲜花 鸡蛋 说明 院系 15

是否主键 是否允许为空 缺省值 否 否

账号 Varchar(20) 密码 Varchar(20) 办公室电话 Varchar(15) qq Varchar(15) E-mail Varchar(15) 最近访问表 属性值 数据类型 协会 Varchar(15) 访问姓名 Varchar(15) 访问组织 Varchar(15) 时间 datetime 次数 integer 管理员表 属性值 数据类型 账号 Varchar(15) 密码 Varchar(15)

联系管理员表 是 否 否 否 否 是否主键 否 否 否 否 否 否 否 否 否 否 是否允许为空 否 否 否 否 否 缺省值 账号 密码 办公室电话 qq E-mail 说明 外键 访问姓名 访问组织 时间 次数 是否主键 是否允许为空 缺省值 是 否 否 否 说明 账号 密码 属性值 联系人组织 联系人姓名 内容 时间 数据类型 Varchar(15) Varchar(15) 是否主键 否 否 可否为空 否 否 否 否 缺省值 说明 联系人的组织 联系人姓名 内容 时间 Varchar(1000) 否 datetime 否 管理员通知表 属性值 数据类型 通知编integer 号 通知名Varchar(15) 称 通知内Varchar(1000) 容 通知等integer 级 通知时datetime 间

2、软件功能表

是否主键 是 否 否 否 否 可否为空 否 否 否 否 否 缺省值 说明 通知编号 通知名称 通知内容 通知等级 通知时间 16

名称 系统登录 系统主窗体 信息录入 说明 输入正确的用户名和密码后才能进入管理系统主窗体,登录方式分为社团成员登录、社团老师登录、管理员登录。另外还有游客进入通道。 显示系统各管理项目并能按需求进入相应信息管理界面,不同的登录方式显示不同的管理项目 只有教师登录才能给各个社团打分。管理员可以修改社团老师信息。各个社团中只有办公室的成员才能修改本社团成员信息。各个社团中成员可以互相打分,可以查看自己的分数排名。游客可以给查看的社团送鲜花和砸鸡蛋。 所有用户登录都能查询信息,查询可以根据不同社团,不同部门,不同职务进行查询。只有教师登录才能打分,社团办公室成员才能修改和删除信息, 所有用户都可以在登录后或着在游客状态下查看社团。 给所有用户修改登录密码 社团成员或者团委老师都可以联系管理员并且留言,管理员可以查看留言。 管理员权限可以发布通知,通知有通知一级等级和二级等级,一级等级通知只有团委老师可以查看,而二级等级团委老师和协会成员都可以查看。 各个协会都有最近访问,同时来访问该协会的访客可以查看该协会最近访问。 信息查询、修改、删除 查看社团 修改密码 联系管理员 管理员发布通知 最近来访 四、系统实施

1).系统登录界面

17

 界面设计说明

①功能上,四种身份(游客、协会成员、团委老师、管理员)其中游客无需登录;

②数据库连接组件上,用的是BDE组件Tquery;

③额外视听功能,仅供怡悦:Tmediaplayer组件、TImage组件  主要事件代码:

以下代码实现登录功能:

procedure TForm1.BitBtn4Click(Sender: TObject); begin

ID:=Edit1.Text; psw:= Edit2.Text;

Assoc:=combobox1.Items[combobox1.ItemIndex]; if(trim(Edit1.Text)='') or (trim( Edit2.Text)='') then begin

Application.Messagebox('必须输入用户名和密码','提示',); Exit; end else begin

Query1.Close; if (Power=2) then

query1.SQL.Text:= 'select * from 团委老师登录信息表 where 账号=''' + ID + '''' else if (Power=1) then

query1.SQL.Text := 'select * from 管理员登录 where 账号=''' + ID + '''' else if(Power=3) and (trim(combobox1.Text)='请选择协会') then begin

Application.Messagebox('必须选择协会登录','提示',); Exit;

18

end else begin

sql_:= 'select * from ' + Assoc + ' where 学号='+ID+''; {sql_:= 'Select * From '+assoc+'';

sql_:= sql_+' where (学号='''+id+''')'; sql_:= sql_+';'; } query1.SQL.Text:=sql_ ; end;

query1.Open;

query1.Active:=true;

if query1.FieldByName('密码').AsString=psw then begin

query1.Close;

showmessage('登录成功!'); //form1.Visible:=false; case Power of 2: begin

Form3.show; assoc:='团委'; end;

1:Form2.Show; 3:Form4.Show; end; end else begin

query1.Close;

Application.Messagebox('请输入正确的用户名和密码','提示',); edit1.Text:=''; edit2.text:=''; end; end; end;

2).团委及协会介绍界面(游客及游客以上权限可浏览) ①团委简介界面

19

 界面设计说明

①功能上,四种身份(游客、协会成员、团委老师、管理员)都可以查看; ②组件布局特色:Trichedit组件介绍团委,(尝试了了两种实现,一为读文件,二为读数据库,经过巧妙设计文件名称,使前者十分容易实现,故编码上选择前者);Ttimer+Timage组件实现团委风采图片动态加载,模拟gif图,显得别致美观。

②选择协会以及给鲜花、砸鸡蛋界面

 界面设计说明

①功能上,A.选择协会,查看介绍; B.给协会人鸡蛋,给鲜花;

20

②数据库连接组件上,用的是BDE组件Tquery;  主要事件代码:

以下代码实现选择扔鲜花,砸鸡蛋功能:

procedure TForm5.BitBtn2Click(Sender: TObject); var a:integer; begin

Query1.Edit;

a := Query1.FieldByName('鲜花').Asinteger ; a:=a+1;

Query1.FieldByName('鲜花').Asinteger:=a; Query1.Post;

showmessage('插入数据成功'); end;

procedure TForm5.BitBtn3Click(Sender: TObject); var a:integer; begin

Query1.Edit;

a := Query1.FieldByName('鸡蛋').Asinteger ; a:=a+1;

Query1.FieldByName('鸡蛋').Asinteger:=a; Query1.Post;

showmessage('插入数据成功'); end;

③协会介绍界面

21

 界面设计说明

①功能上,四种身份(游客、协会成员、团委老师、管理员)都可以查看,并留下访问记录;

②组件布局特色:Trichedit组件介绍团委,(尝试了了两种实现,一为读文件,二为读数据库,经过巧妙设计文件名称,使前者十分容易实现,故编码上选择前者);Ttimer+Timage组件实现团委风采图片动态加载,模拟gif图,显得别致美观。

 主要事件代码:

A 以下代码实现界面布局以及访客记录功能

procedure TForm6.FormShow(Sender: TObject); var

txt_,logo_,pic_:string; mytime:Tdatetime; begin

AssocToIntro:=Viewassoc; //所选择的要介绍的社团 form6.Caption:= AssocToIntro+'欢迎您'; label1.Caption:= AssocToIntro+'欢迎您'; label2.Caption:= AssocToIntro+'风采';

txt_:='resources\\'+AssocToIntro+'.txt'; //社团简介文件路径 logo_:= 'resources\\'+AssocToIntro+'0.bmp';// logo路径 i:=1;

pic_:='resources\\'+AssocToIntro+intToStr(i)+'.bmp';// 照片路径 richedit1.Lines.LoadFromFile(txt_); logo.Picture.LoadFromFile(logo_);

22

image1.Picture.LoadFromFile(pic_); mytime:=time();

//table1.Database.LoginPrompt:=false; case Power of 2: begin

table1.Insert; table1.Edit;

table1.FieldByName('访客身份').AsString:='团委老师'; table1.FieldByName('访客名').AsString:=name_ ; table1.FieldByName('协会').AsString:='团委';

table1.FieldByName('访问时间').AsString:=datetostr(now)+' '+TimeToStr(mytime);; table1.post; end;

3:begin

table1.Insert; table1.Edit;

table1.FieldByName('访客身份').AsString:='协会成员'; table1.FieldByName('访客名').AsString:=name_ ; table1.FieldByName('协会').AsString:=ViewAssoc;

table1.FieldByName('访问时间').AsString:=datetostr(now)+' '+TimeToStr(mytime);; table1.post; end;

end; end;

B以下代码实现动图加载功能:

procedure TForm6.Timer1Timer(Sender: TObject); var

pic_:string; begin

if i=3 then i:=0; i:=i+1;

pic_:='resources\\'+AssocToIntro+intToStr(i)+'.bmp';// 照片路径 image1.Picture.LoadFromFile(pic_); end;

④最近访客界面

23

 界面设计说明

①功能上,四种身份(游客、协会成员、团委老师、管理员)都可查看 ②数据库连接组件上,用的是BDE组件Tquery,Ttable;  主要事件代码:

A以下代码实现查看记录功能功能:

procedure TForm15.FormShow(Sender: TObject); var sqlstr:string; i:integer; begin i:=0;

//query1.Database.LoginPrompt:=false;

sqlstr:= 'select * from 协会访问表 where 协会='''+ViewAssoc+''' order by 访问时间 desc '; Query1.SQL.Clear ; Query1.SQL.Add (sqlstr); Query1.Open;

while not query1.Eof do begin

// ComboBox1.items.add(query1.fieldbyname('姓名').asstring);//给dbComboBox1的items赋值

//dblistbox1.Items.Add(query1.fieldbyname('姓名').asstring); i:=i+1;

query1.next;

end;

label1.caption:=inttostr(i); label3.caption:=ViewAssoc; B以下代码动态加载时间

procedure TForm15.Timer1Timer(Sender: TObject); var

mytime:tdatetime; begin

mytime:=Time();

edit1.Text:=datetostr(now)+' '+TimeToStr(mytime);

24

end;

3).团委老师界面

①基本信息查看

 界面设计说明

①功能上,团委老师个人信息查看;

②数据库连接组件上,用的是BDE组件Tquery;

②社团工作评议

25

 界面设计说明

①功能上,团委老师各项功能实现;

②数据库连接组件上,用的是BDE组件Tquery,Tdbgrid; ③额外视听功能,仅供怡悦:Tmediaplayer组件、TImage组件  主要事件代码:

分界面

A.查看协会介绍,已在前面展示过,略; B.查看协会成员

26

以下代码实现登录功能:

C协会成员打分

 界面设计说明

①功能上,选择成员予以打分,动态更新显示;

②数据库连接组件上,用的是BDE组件Tquery;  主要事件代码:

以下代码实现选择姓名、成员打分,动态显示分数功能:

procedure TForm10.SpeedButton1Click(Sender: TObject); var sqlstr:string; begin

27

//edit1.text:=DBListBox1.Items.getText; edit1.Text:=combobox1.Text;

label2.Caption:='您要给'+edit1.Text+'打分,请输入分数:' ;

sqlstr:= 'select 姓名,总分,部门,职位,评分次数, 平均分 from ' + Assoc + ' where (姓名='''+edit1.Text+''')'; Query1.SQL.Clear ;

Query1.SQL.Add (sqlstr); Query1.Open; end;

procedure TForm10.BitBtn1Click(Sender: TObject); var

a:integer; b:integer; c:integer; d:integer; begin

if(trim(Edit2.Text)='') then begin

showMessage('请打分!'); end;

query1.Edit;

a := query1.FieldByName('评分次数').Asinteger ; a:=a+1;

query1.FieldByName('评分次数').Asinteger:=a;

query1.Post; query1.Edit;

b:= strtoint(edit2.text);

c := query1.FieldByName('总分').Asinteger ; c:=c+b;

query1.FieldByName('总分').Asinteger:=c; d:=trunc(c/a);

query1.FieldByName('平均分').Asinteger:=d;

query1.Post;

showmessage('ok~'); end;

D协会分工作给分

28

 界面设计说明

①功能上,对协会近期工作分项目打分;

②数据库连接组件上,用的是BDE组件Tquery,Tdbgrid;  主要事件代码:

以下代码实现协会打分、动态计算并且显示协会分数功能:

procedure TForm3.BitBtn2Click(Sender: TObject); var

a:integer; b:integer; c:integer; d:integer; begin

if(trim(maskEdit1.Text)='') or (trim( Edit4.Text)='') OR (trim( Edit5.Text)='') then begin

showMessage('请打分!'); end;

query2.Edit;

a := query2.FieldByName('组织建设次数').Asinteger ; a:=a+1;

query2.FieldByName('组织建设次数').Asinteger:=a;

query2.Post; query2.Edit;

29

b:= strtoint(maskedit1.text);

c := query2.FieldByName('组织建设总分').Asinteger ; c:=c+b;

query2.FieldByName('组织建设总分').Asinteger:=c; d:=trunc(c/a);

query2.FieldByName('组织建设平均分').Asinteger:=d;

query2.Post;

query2.Edit;

a := query2.FieldByName('活动开展次数').Asinteger ; a:=a+1;

query2.FieldByName('活动开展次数').Asinteger:=a;

query2.Post; query2.Edit;

b:= strtoint(maskedit1.text);

c := query2.FieldByName('活动开展总分').Asinteger ; c:=c+b;

query2.FieldByName('活动开展总分').Asinteger:=c; d:=trunc(c/a);

query2.FieldByName('活动开展平均分').Asinteger:=d; query2.Post; query2.Edit;

a := query2.FieldByName('宣传报道次数').Asinteger ; a:=a+1;

query2.FieldByName('宣传报道次数').Asinteger:=a; query2.Post; query2.Edit;

b:= strtoint(maskedit1.text);

c := query2.FieldByName('宣传报道总分').Asinteger ; c:=c+b;

query2.FieldByName('宣传报道总分').Asinteger:=c; d:=trunc(c/a);

query2.FieldByName('宣传报道平均分').Asinteger:=d;

query2.Post;

showmessage('评分成功'); end;

procedure TForm3.ComboBox1Change(Sender: TObject); var a:string;sqlstr:string; begin

a:= combobox1.Items[combobox1.ItemIndex];

30

sqlstr:='Select * From 协会分数 ';

sqlstr:=sqlstr+' where (名称='''+a+''')'; sqlstr:=sqlstr+';';

Query2.SQL.Clear ;

Query2.SQL.Add (sqlstr); Query2.Open; end;

③修改登录信息

 界面设计说明

①功能上,修改密码

②数据库连接组件上,用的是BDE组件Tquery;

 主要事件代码:

以下代码实现改密码功能:

procedure TForm3.Button1Click(Sender: TObject); //var a:string; b:string; c:string; d:string; var sqlstr:string;a:string; begin

sqlstr:='Select * From 团委老师登录信息表 '; sqlstr:=sqlstr+' where (密码='''+psw+''')';

31

sqlstr:=sqlstr+';'; Query1.SQL.Clear ;

Query1.SQL.Add (sqlstr); Query1.Open;

if(psw<>trim(edit1.Text))then begin

showmessage('原密码输入错误,请重新输入!'); exit; end

else if(trim(edit2.Text)='')then begin

showmessage('新密码不应为空,请重新输入!'); exit; end

else if (trim(edit2.Text)<>trim(edit3.Text)) then begin

showmessage('新密码输入不一致,请重新输入!'); exit; end ;

a:=edit2.text; Query1.Edit;

Query1.FieldByName('密码').Asstring:=a; Query1.Post;

showmessage('ok'); { table1.Edit;

Table1.FieldByName('账号').AsString:=id; a:= table1.FieldByName('姓名').AsString; b:= edit1.Text; if(a<>b)then begin

showmessage('密码错误!'); edit1.Clear; end;

c:=edit2.Text; d:=edit3.Text; if(c<>d)then begin

showmessage('新密码不一样!'); edit2.Clear; edit3.Clear; end else begin

32

Table1.FieldByName('账号').AsString:=id; table1.Edit;

table1.FieldByName('密码').AsString:=c; end; } end;

④ 通知管理员

 界面设计说明

①功能上,讲问题反馈给管理员;

②数据库连接组件上,用的是BDE组件Tquery;  主要事件代码:

以下代码实现通知管理员功能:

procedure TForm3.BitBtn1Click(Sender: TObject); var

_memo:string; begin

_memo:=memo1.Lines.GetText;

if query3.Active then query3.Close; query3.SQL.Clear;

query3.SQL.Add( 'insert into 联系管理员 (协会,姓名,留言) '); query3.SQL.Add( ' values(:协会,:姓名,:留言) '); query3.ParamByName('协会').AsString:= Assoc_ ; query3.ParamByName('姓名').AsString:= name_;

33

query3.ParamByName('留言').AsString:= _memo ; query3.ExecSQL;

Application.Messagebox('已经将问题反馈至管理员,谢谢','提示',); end;

分界面 A.1查看最新通知

A.2查看所有通知(可查看1级和2级的通知)

34

 界面设计说明

①功能上,查看通知,两种等级都可以看; ②数据库连接组件上,用的是BDE组件Tquery;

③额外视听功能,仅供怡悦:Tmediaplayer组件、TImage组件  主要事件代码:

以下代码实现显示最新通知和所有通知功能:

procedure TForm14.FormShow(Sender: TObject); var

sql_,sql_2:string; begin

//query1.Database.LoginPrompt:=false; //query2.Database.LoginPrompt:=false; if power=3 then begin

sql_:='select * from 管理员通知表 where 通知等级=2';

sql_2:='select top 1 通知编号,通知时间,通知名称,通知等级,通知内容 from

管理员通知表 where 通知等级=2 order by 通知时间 desc';

end else begin

sql_:= 'select * from 管理员通知表 ';

sql_2:='select top 1 通知编号,通知时间,通知名称,通知等级,通知内容 from

管理员通知表 order by 通知时间 desc';

end;

with query1 do begin close;

sql.Clear;

sql.add(sql_); open; end;

with query2 do begin close;

sql.Clear;

sql.add(sql_2); open;

memo1.Text:=fieldbyname('通知内容').AsString;

label3.Caption:=fieldbyname('通知名称').AsString; label5.Caption:=fieldbyname('通知等级').AsString; label7.Caption:=fieldbyname('通知时间').AsString; end;

35

4).协会成员界面

①个人表现界面(得分与组织内排名以及向管理员申诉)

 界面设计说明

①功能上,A.显示我的职务,得分,排名; B.可以将问题反馈管理员; C.可以查看具体排名

②数据库连接组件上,用的是BDE组件Tquery;

③额外视听功能,仅供怡悦:Tmediaplayer组件、TImage组件  主要事件代码:

以下代码实现显示排名、得分及其他信息读取功能功能:

procedure TForm4.FormShow(Sender: TObject); var sqlstr:string; a:string;

begin

a:='select count(1) +1 from ' + Assoc + ' cj1, ' + Assoc + ' cj2 where

(cj1.平均分 > cj2.平均分 and cj1.学号 ='+ID+')';

//query1.Database.LoginPrompt:=false; //query2.Database.LoginPrompt:=false;

36

Query2.SQL.Clear ; Query2.SQL.Add (a); Query2.Open; //Query2.edit;

statictext2.Caption:= inttostr(query2.FieldByName('column1').Asinteger); //Query2.post;

sqlstr:= 'select * from ' + Assoc + ' where 学号='+ID+''; Query1.SQL.Clear ;

Query1.SQL.Add (sqlstr); Query1.Open; Query1.edit;

StaticText1.Caption:=inttostr(query1.FieldByName('平均分').Asinteger); statictext3.Caption:=query1.FieldByName('姓名').AsString; name_:=query1.FieldByName('姓名').AsString;

statictext4.Caption:=query1.FieldByName('性别').AsString; statictext5.Caption:=query1.FieldByName('院系').AsString; statictext6.Caption:=query1.FieldByName('年级').AsString; statictext7.Caption:=query1.FieldByName('政治面貌').AsString; statictext8.Caption:=query1.FieldByName('学号').AsString; statictext9.Caption:=query1.FieldByName('省份').AsString; statictext10.Caption:=query1.FieldByName('部门').AsString; if(trim(statictext10.Caption)='办公室') then begin

BitBtn8.Enabled:=true; bitbtn8.Visible:=true; end;

statictext11.Caption:=query1.FieldByName('职位').AsString; statictext13.Caption:=query1.FieldByName('职位').AsString; statictext12.Caption:=query1.FieldByName('联系方式').AsString; Query1.post;

{sqlstr2:= 'select 姓名,性别 ,联系方式 ,省份 ,政治面貌, 院系, 年级 from ' +

Assoc + ' where 学号='+ID+'';

Query3.SQL.Clear ;

Query3.SQL.Add (sqlstr2); Query3.Open; //Query3.edit; Query3.post; } end;

②个人信息查看与修改界面

37

 界面设计说明

①功能上,编辑个人信息;

②数据库连接组件上,用的是BDE组件Tquery,Tdbgrid; ③更改密码

38

④个人职能界面

39

 界面设计说明

功能上,各种查看,仅仅办公室人员可以编辑成员信息;

分界面

A1.查看我的协会成员,已经在团委老师界面展示过,从略; A2.了解我的协会界面,已经在协会介绍界面展示过,从略; A3协会成员打分界面,已经在团委老师界面展示过,从略; A4.查询成员信息界面

40

 界面设计说明

①功能上,可以查询各个协会成员信息;

②数据库连接组件上,用的是BDE组件Tquery,Tdbgrid;  主要事件代码:

以下代码实现查询功能:

procedure TForm11.Button1Click(Sender: TObject);

begin

a:=combobox1.Items[combobox1.ItemIndex]; b:=combobox2.Items[combobox2.ItemIndex]; c:=combobox3.Items[combobox3.ItemIndex]; if(b='空')and(c='空') then begin

sqlstr:= 'select * from ' + a + ''; Query1.SQL.Clear ;

Query1.SQL.Add (sqlstr); Query1.Open; end else

if(b<>'空')and(c='空') then begin

sqlstr:= 'select * from ' + a + ' where 部门='''+b+''''; //query1.Database.LoginPrompt:=false; Query1.SQL.Clear ;

Query1.SQL.Add (sqlstr); Query1.Open; end else

if (b<>'空')and(c<>'空') then

41

begin

sqlstr:= 'select * from ' + a + ' where 部门='''+b+''' and 职位='''+c+''''; Query1.SQL.Clear ;

Query1.SQL.Add (sqlstr); Query1.Open; end else begin

sqlstr:= 'select * from ' + a + ' where 职位='''+c+''''; Query1.SQL.Clear ;

Query1.SQL.Add (sqlstr); Query1.Open; end;

A5.增加删除编辑协会成员信息界面(仅仅办公室成员可见可用)

A6.查看管理员通知界面(仅能查看2级通知),已经在团委老师界面展示过,从略;

5).管理员界面

①系统管理界面

42

分界面:

A1.查看协会介绍,已在协会介绍界面展示过,从略; A2.查看协会成员,已在团委老师界面展示过,从略; A3.查看留言界面

A4.编辑团委老师信息

43

A5.编辑协会成员信息

A6.发布通知界面 A6.1发布新通知

44

 界面设计说明

①功能上,发布通知;

②数据库连接组件上,用的是BDE组件Tquery;  主要事件代码:

以下代码实现发布通知功能:

procedure TForm13.BitBtn1Click(Sender: TObject); var

temp_sql:string; mytime: TDateTime; begin

if(trim(edit1.Text)='') or (trim(memo1.Lines.GetText)='') then begin

application.MessageBox('通知名称与通知内容都要填写!','错误',); exit; end

else if combobox1.ItemIndex=-1 then begin

application.MessageBox('请选择通知等级!','错误',); exit; end else

with query1 do begin close;

temp_sql:='insert into 管理员通知表 values(:编号,:名称,:等级,:内容,:时间) ' ; sql.Clear;

sql.Add(temp_sql);

45

mytime:=Time();

parambyname('编号').AsString:= edit2.Text; parambyname('名称').AsString:= edit1.Text;

parambyname('等级').AsString:= inttostr(combobox1.itemindex+1); parambyname('内容').AsString:= memo1.Lines.GetText;

//parambyname('时间').AsDateTime:=datetimepicker1.date;

parambyname('时间').asstring:=datetostr(now)+' '+TimeToStr(mytime); execSql; end;

application.MessageBox('发布通知成功!','提示',); end;

A6.2编辑通知

②修改密码界面

46

五、系统测试

(1)、给出单元测试的测试用例: ①密码输入检测

②密码修改检测

47

48

③管理员发布通知时通知完整性检测

(2)、给出系统测试的测试用例: 以协会成员丁晴为例,她的一系列操作 ①登陆检测,要求选择协会

49

②登陆成功后,显示职能

比如,她选择了查询协会成员信息

50

呵呵,她又选择了给协会成员打分,丁锋30分就够了。

③显示个人信息,可以修改

51

④显示排名情况

才排名十四,当然不满意啦!于是她决定申诉!

52

六、收获和体会 七、附录 八、参考文献

[1] 刘斌,李,等.Delphi 7数据库高级教程[M].清华大学出版社,2004. [2] 赵松涛.SQL Sever 2000应用及实例集锦[M]. 北京:人民邮电出版社,

2002.

[3] 周绪、管丽娜、白海波.SQL Server 2000 入门与提高[M].清华大学出

版社,2001.

[4] 杜军平、黄杰.SQL Server 2000数据库开发[M].机械工业出版社,2001. [5] 亚林,等.Delphi管理信息系统项目方案精解[M].航空工业出版社,

2006.

53

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务