网上校友通讯系统--正文(附程序清单)

更新时间:2023-11-11 08:17:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

北京理工大学珠海学院计算机学院课程设计

课程设计成绩评定表

成绩评定权重 总成绩 姓 名 平时成绩报告成绩答辩成绩20 50 30 总分 (五分制)

I

北京理工大学珠海学院计算机学院课程设计

网上校友通讯系统

摘 要

校友通讯录信息网络化是应用信息技术及其产品的过程,是信息技术应用

于网路管理的过程。校友录具有功能强大、使用方便的特点。用户以个人的身份进入,搜索满足条件的班级,并可以在线注册个人资料,以便被查询;也可以在线留言,方便同学之间的沟通和交流。为了让人们更方便地进行同学之间的交流,可以相互的留言,加强同学、朋友直接的关系,建立一个,实现信息网络化。

网上校友通讯录系统是一项复杂但功能实用的信息系统,主要应用于当今社会的各大学校通讯,公司通讯和网络通讯等各个方面,牵涉的信息种类十分庞杂。利用网络资源优势和技术资源优势,通过提供完善的校友通讯录和规范校友通讯录的管理,以达到增进校友之间,校友与母校的感情,方便校友的联系,并以此加快信息化建设。我们小组在此基础上设计网上校友通讯录系统,意在通过数据库存储校友之间的信息,和管理校友之间的通讯,为用户提供人性化服务。

关键词:校友通讯系统 数据库 课程设计 存储校友信息 管理校友通讯

II

北京理工大学珠海学院计算机学院课程设计

目 录

一.需求分析 .......................................... 1 1.1调查用户需求 .................................. 1

1.1.1校友通讯录的组织机构情况 ...................... 1 1.1.2校友通讯录的业务活动情况 ...................... 1 1.1.3用户对系统的要求 .............................. 1 1.1.4确定系统的边界 ................................ 3

1.2 系统功能的设计和划分 .......................... 3 1.3数据流图 ...................................... 4 1.4数据字典 ...................................... 7 二.概念结构设计 ..................................... 10 2.1网上校友通讯系统分E-R图: .................... 10 2.2网上校友通讯系统总E-R图: .................... 11 三.逻辑设计 ......................................... 12 3.1以下是校友通讯录管理信息系统的关系模型: ...... 12 3.2性能优化 ..................................... 12

3.2.1关系优化..................................... 12 3.2.2视图 ........................................ 13 3.2.3存储过程..................................... 13 3.2.4函数 ........................................ 14

四.物理设计 ......................................... 15 4.1关系存取 ..................................... 15

III

北京理工大学珠海学院计算机学院课程设计

4.2确定数据的存储结构 ........................... 15 4.3评价物理结构 ................................. 15 五.数据库的实施 ..................................... 16 5.1 基础数据的录入 ............................... 16 5.2 数据库的试运行 ............................... 16

5.2.1数据录入..................................... 16 5.2.2数据库试运行 ................................. 18

六.数据的运行和维护 ................................. 26 6.1确定数据库的备份方案.......................... 26 6.2检查数据的安全性、完整性控制 .................. 26

6.2.1安全性控制 ................................... 26 6.2.2完整性控制 ................................... 27

6.3监视数据库性能,分析和优化性能 ................ 27

6.3.1数据库性能 ................................... 27 6.3.2数据库优化 ................................... 27

参考文献 ............................................ 28 心得 体会 .......................................... 29 教师 评语 ........................................... 30 附 录 ............................................... 31

IV

北京理工大学珠海学院计算机学院课程设计

一.需求分析

1.1调查用户需求

本系统的最终用户为学生,由于学生在校友通讯录的身份不同,因此根据我们日常生活中的经验,根据我们所做的其他询问和调查,得出用户的下列实际要求:

1.1.1校友通讯录的组织机构情况

与校友通讯录相关的组织机构有:普通用户,访客,班级管理员,系统管理员,校友通讯录的所有工作都是围绕这四个不同身份进行的。

校友通讯录里面的用户最基本的身份是普通用户,每个学生注册之后都是普通用户;若某个学生想对他感兴趣的人查询他的有关信息,这时这个学生的身份为访客;来自同一个班级的学生组成班级,里面需要一个班级管理员,来管理班级,处理信息;同理,一个校友通讯录需要一个总的管理员—系统管理员。 一个班级里面有若干个普通用户,一个用户只属于一个班级,然后一个班级只有一个管理员,一个通讯录只有一个系统管理员。

1.1.2校友通讯录的业务活动情况

通讯录根据需要分为三个子系统,供用户使用,普通用户子系统,班级管理

员子系统,访客子系统。

1.1.3用户对系统的要求

信息要求:

根据学生的身份不同,因此对系统的信息要求可分为以下几个方面:

1. 普通用户:可对个人信息和留言进行管理,例如:登录,注册,修改,

增加,查询。

2. 访客:可只能查询某个用户的信息(包含个人信息,留言信息)。

3. 系统管理员:可对校友通讯系统的信息进行管理,查询校友的信息,管

理校友留言管理系统,查询学校的详细信息,如地址,邮编等等。 4. 班级管理员:可对班级系统进行管理,注册班级功能,查询班级具体信

息,可根据认证条件增加(认证)成员,删除成员,公告(留言)信息,成员身份则只能查询同班成员的信息,非成员身份不能进入班级。

处理要求:

1

北京理工大学珠海学院计算机学院课程设计

由于校友通讯录系统包含的主要处理过程包括:(1)管理个人信息(2)用户 申请加入班级(3)检索同学和校友信息(4)用户留言管理(发表删除)(5)通讯录信息管理(用户)(6)班级的管理(班级管理员)(7)班级公告管理 所以对各个处理过程进行详细描述:

1)处理过程:管理个人信息(所以人员)

说明:管理员以及用户管理个人的信息,包括对个人信息的增删改查等 输入:用户信息,所在班级、学校信息、留言信息,班级公告信息

输出:修改后的用户信息,对学校班级信息查看,留言信息,班级公告信息。 处理:对用户个人信息的更新或者查询处理 2)处理过程:用户申请加入班级 说明:用户申请加入所在班级 输入:用户信息 输出:班级信息

处理:班级管理员验证用户信息,通过则在班级信息中增加成员所在班级信息 3)处理过程:检索同学和校友信息

说明:输入要检索的校友或者同班同学的信息

输入:校友名字和同班同学的名字,或者其他检索方式。 输出:要检索的用户信息。

处理:系统从用户输入的校友录录信息检索符合条件的校友 4)处理过程:用户留言管理(发表删除)

说明:用户登录,对别人对自己的留言进行删除,或者自己对别的用户留言 输入:留言内容,留言者姓名,留言日期,留言ID 输出:更新后的留言信息

处理:在留言信息中增加一条留言记录(自己对别人留言)或者修改删除一条留言记录

5)处理过程:通讯录信息管理(用户)

说明:用户对查询通讯录(所在班级同学)的信息。 输入:学校、班级、普通用户信息

输出:通讯录信息(包含联系人电话,地址等) 处理:通过查询导出所在班级的所有人通讯信息 6)处理过程:班级的管理(班级管理员)

说明:班级管理员对班级进行管理(包含对班级人员的验证添加,删除) 输入:用户的验证信息(用户信息) 输出:更新的班级信息 处理:对用户进行信息的验证,若通过则在班级表中添加一行用户所在班级的信息,若不符合则需要拒绝加入。 7)处理过程:班级公告管理

说明:班级管理员对班级的公告进行管理(对本班班级公告的增删改查) 输入:班级管理员的登录信息,发布删除修改公告信息 输出:更新后的公告信息

处理:在公告信息中添加、修改、删除一条公告记录 安全性与完整性要求: 安全性要求:

a、系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其

2

北京理工大学珠海学院计算机学院课程设计

密码,保证

用户身份不被盗用;

b、系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容;

c、系统应对不同用户设置不同的权限,区分不同的用户,如访客,只能查询某个用户的信息(包含个人信息和留言信息)。 完整性要求:

a、各种信息记录的完整性,信息记录内容不能为空; b、各种数据间相互的联系的正确性; c、相同的数据在不同记录中的一致性。

1.1.4确定系统的边界

经对前面的需求调查和初步的分析,确定由计算机完成的工作时对数据进行各种管理和处理,具体的工作内容见第二部分, 由手工完成的工作主要有对原始数据的录入;不能由计算机生成的,各种数据的更新,包括数据变化后的修改,数据的增加,失效数据或无用数据的删除等;以及系统的日常维护。

1.2 系统功能的设计和划分

根据如上得到的用户需求,我们将本系统分成以下几个功能:

个人信息的管理 班级的管理 校友信息的管理 留言的管理 通信录的管理

各管理的功能如下:

1.个人信息的管理:用户登录并返回角色,修改,查询个人信息。

2.班级的管理:查询班级具体信息,若为班级管理员身份,有增加成员,删除成员,管理公告,成员身份则只能查询同班成员的信息。

3.校友信息的管理:查询校友信息,查询学校的详细信息,如地址,邮编等等。 4. 留言管理功能:个人能查看、删除或者不公开别人给自己的留言,以及对别人进行留言。

5.通信录管理,查询班级和校友的通信录

经上述分析,我们已经得到了对于该系统的基本要求和系统模块的划分,综上,我们对个人信息的管理,班级的管理,校友信息的管理,留言的管理,通信录的管理进行具体的数据库设计,在需求分析中形成的数据流图如下:

3

北京理工大学珠海学院计算机学院课程设计

1.3数据流图

1.总数据流图

主要功能有个人信息的管理,通信录管理,校友信息管理,留言管理,班级管理五大部分,其中包含了访客功能,数据流图如图1.3-1所示

图1.3-1总数据流图

2.校友信息的管理

实现对校友信息的管理其中包含查询校友信息,查询学校的详细信息,如地址,邮编等等。数据流图如图1.3-2所示

4

北京理工大学珠海学院计算机学院课程设计

图1.3-2校友信息的管理数据流图

3.个人信息的管理

个人信息的管理主要是对已注册登录的用户而言,包括普通的用户和班级管理员用户,注要功能是用户登录并返回角色,修改,查询个人信息。实现用户对个人信息的具体操作。数据流图如图1.3-3所示

图1.3-3个人信息的管理数据流图

4.班级的管理

主要实现班级管理员对班级的管理,查询班级具体信息,若为班级管理员身份,有增加成员,删除成员,管理公告,成员身份则只能查询同班成员的信息,数据流图如图1.3-4所示

图1.3-4班级管理数据流图

5.留言的管理

5

北京理工大学珠海学院计算机学院课程设计

留言管理功能实现对用户留言的管理,其中包含个人能查看、删除或者不公开别人给自己的留言,以及对别人进行留言,数据流图如图1.3-5所示

图1.3-5留言的管理数据流图

6.通信录的管理

通信录管理的主要功能是查询班级和校友的通信录信息,数据流图如图1.3-6所示

图1.3-6通信录的管理数据流图

6

北京理工大学珠海学院计算机学院课程设计

1.4数据字典

网上校友通讯录管理信息系统各实体及联系的数据字典

1. 普通用户表(Usr_id primary key)

表1.4-1普通用户表 列名 说明 数据类型 长度 用户编号 Usr_id Int 4 登录名 Log_name Varchar 30 密码 Password Varchar 30 真实姓名 Ture_name Varchar 30 性别 Sex Char 2 出生日期(年Birth Datetime 8 龄) 电子邮箱 Email Varchar 30 手机号码 Mobile Varchar 30 家庭电话 Home_ Varchar 30 telephone 工作单位 Work_address Varchar 50 入学时间 School_enter Datetime 8 住址 Address Int 50

约束 Notnull Notnull Notnull Notnull Notnull 2. 学校信息表(Sch_id primary key)

表1.4-2学校信息表

列名 说明 数据类型 学校编号 Sch_id Int 学校名 Sch_name Varchar 学校地址 Sch_addr Varchar 学校邮编 Sch_postcode Varchar 学校邮箱 Sch_emil Varchar 联系电话 Sch_telephone Varchar 所在城市 Sch_city Varchar 所在省份 Sch_province Varchar 网址 Sch_web Varchar

7

长度 4 50 50 10 30 30 18 18 60 约束 Notnull Notnull Notnull Notnull Notnull Notnull Notnull 北京理工大学珠海学院计算机学院课程设计

3. 校友通信录表(primary key (Usr_id,Sch_id))

表1.4-3校友通信录表

列名 说明 数据类型 长度 school ID号 Sch_id Int 4 USR ID号 Usr_id Int 4 约束 Notnull(外键)school(Sch_id) Notnull(外键)usr(Usr_id)

4.班级信息表(Class_id primary key)

表1.4-4班级信息表 列名 说明 数据类型 长度 约束 班级编号 Class_id Int 4 Notnull 班级名 Class_name Varchar 30 Notnull 所属学院 Institute Varchar 30 所属系 Department Varchar 30 年级 Grade Int 4 Notnull 班级 Class_num Int 4 Notnull 所属学校编Sch_id Int 4 Notnull(外键)号 school(Sch_id)

5.用户所在班级信息表(primary key (Usr_id,Class_id))

表1.4-5用户所在班级信息表 列名 说明 数据类型 长度 约束 用户ID Usr_id Int 4 Notnull(外键) usr(Usr_id) 班级ID Class_id Int 4 Notnull(外键)class(Class_id) usr的角色 Usr_role Int 4 Notnull

8

北京理工大学珠海学院计算机学院课程设计

6.公告表 (Ann_id primary key)

表1.4-6公告表

列名 说明 数据类型 长度 4 50 50 8 4 约束 Notnull Notnull Notnull(外键)class(Class_id) 公告编号 Ann_id Int 公告内容 Ann_contents Varchar 公告题目 Ann_title Varchar 公告时间 Ann_time Datetime 公告班Class_id Int 级

7.留言表(Note_id primary key)

表1.4-7留言表 列名 说明 数据类型 留言编号 Note_id Int 留言题目 Note_title Varchar 留言内容 Note_contents Varchar 留言时间 Note_time Datetime 留言者 Note_usr Int 长度 4 50 50 8 4 约束 Notnull Notnull Notnull(外键) usr(Usr_id)

8.留言管理表

表1.4-8留言管理表

列名 管理留言者编号 留言编号 是否公开 说明 Usr_id Note_id Note_public 数据类型 Int Int Varchar 长度 4 4 1 约束 Notnull(外键)usr(Usr_id) Notnull(外键) note(Note_id) Notnull

9

北京理工大学珠海学院计算机学院课程设计

二.概念结构设计

2.1网上校友通讯系统分E-R图

1. 游客、用户、班级管理员关系ER图

一个游客只能用唯一的用户名注册成一个唯一的用户,一个班级只能有一个管理员,ER分图见图2.1-1

图2.1-1游客、用户、班级管理员关系ER图

游客1注册1用户1注册1班级管理员

2.留言管理ER图

一个用户可以对多个用户留言,所以在留言表里有多个用户留言,此时的用户为留言者角色。当别人对自己留言时,此时用户为留言管理者角色,即用户可以管理别人对自己的留言。而留言表的记录属于留言管理表。见图2.1-2

图2.1-2留言管理ER图

1用户管理n留言管理表11留言nn留言表属于

3.校友信息管理ER图

多间学校信息和多个用户信息存在于一个校友信息管理表。其ER图关系见图2.1-3

图2.1-3校友信息管理ER图

4.班级管理ER图

10

北京理工大学珠海学院计算机学院课程设计

一个用户可以在多个班级,而一个班级可以有多个用户,一个学校有多个班级,而一个班级只能属于一个学校,班级管理员属于一个班级,一个班级只能存在一个班级管理员。班级管理ER图见图2.1-4

图2.1-4班级管理ER图

班级管理员11用户n属于n班级属于n属于1学校

2.2网上校友通讯系统总E-R图:

主要是对以上功能的整合,更清晰的将整个数据库的关系表示出来,总ER图见2.2-1

2.2-1总ER图

11

北京理工大学珠海学院计算机学院课程设计

三.逻辑设计

3.1以下是校友通讯录管理信息系统的关系模型:

1.普通用户(用户编号,登录名,密码,真实姓名,性别,出生日期,电子邮箱,手机号码,家庭电话,工作单位,班级编号,入学时间,留言编号)

2.班级信息(班级编号,班级名,所属学校编号,公告编号,所属学院,所属系)

3.学校信息(学校编号,学校名,学校地址,学校邮编,学校邮箱,联系电话)

4.留言(留言编号,留言题目,留言内容,留言时间,留言者)

5.管理员(用户编号,班级编号,公告编号,学校编号,属性)

6.班级公告(公告编号,公告内容,公告题目,公告时间,公告人Id)

3.2性能优化 3.2.1关系优化

用户班级关系优化:由于班级和用户都是一对多的关系,所以应该新建一个用户所在班级表

用户所在班级信息(用户编号,班级编号,用户角色)

原关系ER图

n用户属于n班级

优化ER图如下:

12

北京理工大学珠海学院计算机学院课程设计

用户所在班级11属于n班级属于n用户

用户留言关系优化:由于留言中应该存在一个留言者和一个留言的管理者,而留言表中只存在一个留言者,所以应该还应该新建一个留言管理表 留言管理(留言管理者编号,留言编号,是否公开留言)

3.2.2视图

视图如下:

visitors游客访问个人信息视图 select_ann公告视图 Sch_infos学校信息 Cs_infos班级视图

note_management_view留言管理视图

3.2.3存储过程

存储过程如下:

procedure visitors_pro1查询某个用户的个人信息和留言信息,所在学校 visitors_pro2查找学校信息 User_own_proc2查询个人信息

class_member班级成员可以查询同班成员的信息

change_usr_class若为班级管理员身份,有增加成员,删除成员,注:管理员用户不能删除自己

ann_management管理公告信息,插入公告 sch_info查询校友信息

Cs_info班级和校友通信录的存储过程

select_note_pro查询留言(可以为游客,本人或者其他用户) delete_note_pro删除留言 make_note_pro对别人进行留言

13

北京理工大学珠海学院计算机学院课程设计

3.2.4函数

1.表值函数class_select(@usrid int)

该函数为一个表值函数,输入参数变量为usr的编号,返回为一个表,主要功能为查询班级具体信息。 函数代码如下:

create function class_select(@usrid int) returns table as

return(

select Class_name '班级名',Institute '所属学院',Department '所属系',Grade '年级',Class_num '班级',school.Sch_name '学校' from school,usr_class left join class on usr_class.Class_id=class.Class_id

where Usr_id=@usrid and school.Sch_id=class.Sch_id )

2.标量值函数class_admin(@usrid int,@classid int)

该函数为判断是否为班级管理员,输入值为用户编号和班级编号,返回为一个值,当值为1时,为班级管理员,为0时,为非班级管理员 create function class_admin(@usrid int,@classid int) returns int as begin

declare @temp int

if( @usrid in (select Usr_id from usr_class where Class_id=@classid and Usr_role=1) )

--用户是所在班级是管理员 set @temp=1 else

set @temp=0 return @temp end

14

北京理工大学珠海学院计算机学院课程设计

四.物理设计

4.1关系存取

为了减轻对磁盘的操作以及隐藏某些重要的信息,创建了视图提高效率。表如下:用户信息表,学校信息表,校友通讯录表,班级信息表,usr所在班级信息表,公告表,留言表,留言管理表。视图如下:班级视图Cs_infos,留言管理视图note_management_view,学校信息Sch_infos,公告视图select_ann,个人信息视图Usr_own,访客访问视图visitors。

4.2确定数据的存储结构

确定数据库存储结构时要综合考虑存取时间、存储空间利用率和维护代价三方面的因素。这三个方面常常是相互矛盾的,例如消除一切冗余数据虽然能够节约存储空间,但往往会导致检索代价的增加,因此必须进行权衡,选择一个折中方案。本系统已从表中实现了相关的存储结构,如个人信息的管理,班级管理,校友信息的管理,通信录管理以及留言管理,其中不足之处就是没有涉及到用户权限的存储结构,如没有系统管理员来限定用户的权限以及班级管理员赋予成员一定的权限的功能,没创建相关的权限存储结构。存取时间上,表与表之间的连接过多,并且存在重复连接的情况。在关系DBMS中没有相关的聚簇功能和索引等,以致会降低效率

4.3评价物理结构

数据库物理设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,其结果可以产生多种方案,数据库设计人员必须对这些方案进行细致的评价,从中选择一个较优的方案作为数据库的物理结构。 物理数据库的评价方法主要是从定量估算各种方案的存储空间、存取时间和维护代价入手。由于本系统属于小型的数据库,并不需真正投入市场运行,只是作为数据库设计的锻炼过程,所以对于系统就不会存在太大的空间,而且本身不是面向大型的数据存储的数据库系统,而对于空间效率,某些方面可能存在效率较低的情况,存储时间可能会较长的问题。

15

北京理工大学珠海学院计算机学院课程设计

五.数据库的实施

5.1 基础数据的录入

根据以上需求分析、概念设计、逻辑设计、物理设计等各个阶段的分析与设计,我们数据库应用设计五人组进行了数据库的开发,主要采用SQL Server开发技术,系统运行在SQL Server2005之上。

5.2 数据库的试运行 5.2.1数据录入

(1) 用户信息表(图5.2.1-1)

图5.2.1-1用户信息表

(2) 学校信息表(图5.2.1-2)

图5.2.1-2学校信息表

(3) 校友通讯录表(图5.2.1-3)

16

北京理工大学珠海学院计算机学院课程设计

if ( @visitors_school not in (select Sch_name from school) ) print '没有相应的学校信息' else begin

select Sch_name '学校',Sch_addr '地址',Sch_postcode '邮政编码', Sch_emil '电子邮件',Sch_telephone '联系电话',

Sch_city '城市',Sch_province '省份',Sch_web '网址' from school

where Sch_name=@visitors_school end

return

--执行测试

declare @temp3 varchar(50) set @temp3='北理工'

execute visitors_pro2 @temp3

-------------------------2.个人信息的管理,登录,修改,查询。------------------------ --个人信息视图

create view Usr_own as

select Log_name '登录名',Ture_name '真实姓名',Sex '性别',Birth '出生日期', Email '电子邮件',Mobile '电话'

,Home_telephone '家庭电话',Work_address '工作地址',Address '住址',School_enter '大学入学时间' from usr

select * from Usr_own

--登录并返回角色(即是否为管理员用户) create procedure User_own_proc1 @username varchar(30), @Password varchar(30),

@IsValid TinyInt output, --返回用户名和密码验证是否成功 @Role int output --输出该用户的角色 1为管理员用户 0为普通用户 As

declare @temp int --临时变量存放usr ID

If( @username in (Select Log_name from usr) ) --是否存在用户 Begin

select @temp=Usr_id from usr where usr.Log_name=@username and Password = @Password --验证用户表中的密码、用户名

42

北京理工大学珠海学院计算机学院课程设计

IF @@Rowcount = 1 begin

select @IsValid =1 --登录成功

select @Role=sum(Usr_role) from usr_class where Usr_id=@temp IF((@temp in (select Usr_id from usr_class)) and @Role>0 ) --用户是否在班级所在信息表并且是管理员用户 set @Role=1 --1为管理员用户 else

set @Role=0 --0为普通用户 end Else

select @IsValid =0 end else

select @IsValid = 0

return GO

--执行测试

declare @temp1 int declare @temp2 tinyint execute User_own_proc1 output,@Role=@temp1 output if @temp2=1 begin

print '登录成功' if @temp1=1

print '角色为:为某班管理员' else

print '角色为:普通用户' end else

print '登录失败,请重新登录'

--修改 --密码

update usr

set Password='12345' where Log_name='usr1'

--性别(修改视图) update Usr_own

43

'usr2','1235',@IsValid=@temp2 北京理工大学珠海学院计算机学院课程设计

set 性别='女'

where 登录名='usr1'

--修改真实姓名 update Usr_own

set 真实姓名='wangchao' where 登录名='usr1'

--修改出生年月 update Usr_own

set 出生日期='19911111' where 登录名='usr1'

--修改电子邮件 update Usr_own

set 电子邮件='baidu@gmail.com' where 登录名='usr1'

--电话

update Usr_own set 电话='110110' where 登录名='usr1'

--家庭电话

update Usr_own

set 家庭电话='77777' where 登录名='usr1'

--工作地址

update Usr_own

set 工作地址='大道31号' where 登录名='usr1'

--住址

update Usr_own

set 工作地址='大道01号' where 登录名='usr1'

--大学入学时间 update Usr_own

set 大学入学时间='20090120' where 登录名='usr1'

44

北京理工大学珠海学院计算机学院课程设计

--查询个人信息

create procedure User_own_proc2 @username varchar(30) as

select * from Usr_own

where 登录名=@username return

execute User_own_proc2 'usr2'

------------------------3.班级管理,查询班级具体信息,若为班级管理员身份,--------------------------

------------------------有增加成员,删除成员,管理公告信息,成员身份则只能查询同班成员的信息,---------------- --公告视图

create view select_ann as

select

Ann_contents,Ann_title,Ann_time,Class_name,Institute,Department,Grade,Class_num,Sch_name from ann,class,school

where class.Sch_id=school.Sch_id and ann.Class_id=class.Class_id

select * from select_ann

--查询班级具体信息

create function class_select(@usrid int) returns table as

return(

select Class_name '班级名',Institute '所属学院',Department '所属系',Grade '年级',Class_num '班级',school.Sch_name '学校' from school,usr_class left join class on usr_class.Class_id=class.Class_id

where Usr_id=@usrid and school.Sch_id=class.Sch_id )

45

北京理工大学珠海学院计算机学院课程设计

--测试

declare @temp1 int set @temp1=1

select * from class_select(@temp1)

----判断是否为班级管理员(标量值函数)

create function class_admin(@usrid int,@classid int) returns int as begin

declare @temp int

if( @usrid in (select Usr_id from usr_class where Class_id=@classid and Usr_role=1) )

--用户是所在班级是管理员 set @temp=1 else

set @temp=0 return @temp end

--测试

declare @temp1 int declare @temp2 int set @temp1=1 set @temp2=2

if( (dbo.class_admin(@temp1,@temp2))=1) print '班级管理员' else

print '非班级管理员'

--班级成员可以查询同班成员的信息 create procedure class_member @usrid int as begin

if( (@usrid in (select Usr_id from usr)) and (@usrid in (select Usr_id from usr_class)) ) --用户存在并且是否有加入班级 begin

46

北京理工大学珠海学院计算机学院课程设计

6.2.2完整性控制

1.数据库的完整性是指数据的正确性和相容性。数据库是否具备完整性关系到数据库系统能否真实地反映现实世界,因此维护数据库的完整性是非常重要的。 2.完整性约束条件作用的对象可以有列级、元组级和关系级三种粒度。其中对列的约束主要指对其取值类型、范围、精度和排序等的约束条件。 3.完整性约束

普通用户Usr_id primary key 学校信息Sch_id primary key

校友通信录表primary key (Usr_id,Sch_id) 班级信息Class_id primary key

用户所在班级信息表primary key (Usr_id,Class_id) 公告 Ann_id primary key

留言Note_id primary key

6.3监视数据库性能,分析和优化性能 6.3.1数据库性能

(1)用户信息总用户数、活动用户数以及活动回话情况,反应数据用户的基本信息(2)服务器进程信息个数(3)后台进程信息与磁盘I/O 密切相关的后台进程(4)磁盘存储信息的使用情况 (5)主机信息用户 CPU 和内存使用率(6)执行语句所需要的时间(7)数据库执行时,系统资源的使用情况

6.3.2数据库优化

目的是更改系统的一个或多个组件,使其满足一个或多个目标的过程,是进行合理的资源配置,达到组件之间的均衡以改善其性能,即增加吞吐量、提高响应时间。

27

北京理工大学珠海学院计算机学院课程设计

参考文献

[1]灯芯工作室:《C#实战入门》[M],中国水利水电出版社第一版2002.1 [2]周红安:《21天学通C#》[M],电子工业出版社2009.2 [3]陈湘:《ASP.net与网站开发编程实战》[M],清华大学出版社第一版2002.5 [4]李明刚、肖建:《ASP.Net web站点高级编程范例》[M],清华大学出版社第一版2004.4 [5] 谭浩强:《C语言程序设计》[M],清华大学出版社第三版 [6]刘韬:《Web数据库开发》[M],化学工业出版社第一版2000.3 [7]王珊、萨师煊:《数据库系统概述》[M],高等教育出版社第四版2006.5 [8]房大伟:《SQL范例完全自学手册》[M],人民邮电出版社第一版2009.1 [9]张海藩:《软件工程导论》[M],清华大学出版社第五版2008.2 [10]曹衍龙:《c语言实例解析精粹》[M],人民邮电出版社第二版2008.2 [11]李雁翎:《数据库技术及应用—SQL Server》[M],高等教育出版社

28

北京理工大学珠海学院计算机学院课程设计

心得 体会

通过这几个星期的数据库实践,使我们熟悉了SQL Server的使用和操作,更

加掌握了数据库的知识,体会了团结的力量。这次实践,我们组5个人负责做网上校友通讯系统,每个人都付出了很大的努力。一开始我们就分析了网上校友通讯系统这个实验的主要实现功能和面向的不用用户对象,然后我们分工合作,分别负责:1.访客功能,只能查询某个用户的信息(包含个人信息,留言信息),以及查找学校信息。2.个人信息的管理,用户登录并返回角色,修改,查询个人信息。3.班级管理,查询班级具体信息,若为班级管理员身份,有增加成员,删除成员,管理公告,成员身份则只能查询同班成员的信息4.校友信息的管理,查询校友信息,查询学校的详细信息,如地址,邮编等等。5.通信录管理,查询班级和校友的通信录6.留言管理功能,个人能查看、删除或者不公开别人给自己的留言,以及对别人进行留言。在这次实践中,我们明白了数据库应用系统开发的目标是建立一个满足用户长期需求的产品。开发的主要过程为:了解用户的需求,再把它们转变成有效的数据库设计,把设计的转变成实际的数据库,并且使得这些数据库带有功能完备和高效能的应用。除此之外,我们掌握了视图和存储过程的应用和作用,信息的管理包括:保存,添加,删除,更新。通过单独设计几个类来完成对数据库设计的表进行操作,也学会了SQL Server中表的操作与管理。把学习到的数据库知识充分地应用到实际中,很好的锻炼了我们编程和实现的能力。

29

北京理工大学珠海学院计算机学院课程设计

教师 评语

30

北京理工大学珠海学院计算机学院课程设计

附 录

计算机学院课程设计答辩记录表

专业学院 课程设计 题目 答辩日期 专业 姓名 学号 答辩时间 答 辩 提 问 及 其 回 答 记 录 31

北京理工大学珠海学院计算机学院课程设计

计算机学院课程设计答辩记录表

专业学院 课程设计 题目 答辩日期 专业 姓名 学号 答辩时间 答 辩 提 问 及 其 回 答 记 录 32

北京理工大学珠海学院计算机学院课程设计

计算机学院课程设计答辩记录表

专业学院 课程设计 题目 答辩日期 专业 姓名 学号 答辩时间 答 辩 提 问 及 其 回 答 记 录 33

北京理工大学珠海学院计算机学院课程设计

计算机学院课程设计答辩记录表

专业学院 课程设计 题目 答辩日期 专业 姓名 学号 答辩时间 答 辩 提 问 及 其 回 答 记 录 34

北京理工大学珠海学院计算机学院课程设计

计算机学院课程设计答辩记录表

专业学院 课程设计 题目 答辩日期 专业 姓名 学号 答辩时间 答 辩 提 问 及 其 回 答 记 录

35

北京理工大学珠海学院计算机学院课程设计

程序清单

--创建数据库

Create database Alumni_mail_list Go

--打开数据库,所有的数据表都在该数据库中创建 use Alumni_mail_list GO

--用户信息表

create table usr (

Usr_id int primary key not null, --ID号

Log_name varchar(30) unique not null, --登录名 Password varchar(30) not null, --密码

Ture_name varchar(30) unique not null, --真实姓名

Sex char(2) check(Sex in('男','女')) not null, --性别 Birth datetime, --出生年月 Email varchar(30), --电子邮件 Mobile varchar(30), --电话

Home_telephone varchar(30), --家庭电话 Work_address varchar(50), --工作地址 Address varchar(50), --住址

School_enter datetime, --大学入学时间 );

insert into usr

values(1,'usr1','1234','李勇','男','19910203','riozhang90@163.com','13725267852','0755-3888456','珠海唐家','珠海','20091010') insert into usr

values(2,'usr2','1235','张三','男','19920203','zhangsan90@163.com','13726259546','0765-3236542','珠海金鼎','珠海','20091010') insert into usr

values(3,'usr3','1237','小明','女','19900801','xiaoming90@163.com','13726259520','0765-3233867','珠海唐家','珠海','20091010') insert into usr

values(4,'usr4','1238','小鑫','男','19910405','xiaoxin90@163.com','13726259541','0765-3236725','珠海金鼎','珠海','20091010') insert into usr

values(5,'usr5','1239','小欣','女','19900908','copyben90@163.com','13726255490','0765-3236981','珠海金

36

北京理工大学珠海学院计算机学院课程设计

鼎','珠海','20091010') select * from usr

--学校信息表

create table school (

Sch_id int primary key not null, --学校编号 Sch_name Varchar(50) unique not null, --学校名称 Sch_addr Varchar(50) not null, --学校所在地

Sch_postcode varchar(10) not null, --学校邮编 Sch_emil Varchar(30), --学校邮箱

Sch_telephone Varchar(30) not null, --联系电话 Sch_city Varchar(18) not null, --所在城市 Sch_province varchar(18) not null,--所在省份 Sch_web varchar(60) --网址 );

insert into school values(1,'北理工','金','455216','zhbit@163.com','0755-3465256','珠海','广','www.zhbit.com') insert into school values(2,'北师大','金','455216','beishida@163.com','0755-3423430','珠海','广','www.beishida.com')

select * from school

--校友通讯录表

create table address_book (

Sch_id int not null, --school ID号 Usr_id int not null, --USR ID号 primary key (Usr_id,Sch_id),

foreign key (Sch_id) references school(Sch_id), foreign key (Usr_id) references usr(Usr_id) );

insert into address_book

values(1,1) --1号usr加入1号学校(北理工) insert into address_book

values(2,2) --2号usr加入2号学校(北师大) insert into address_book

values(1,3) --3号usr加入1号学校(北理工)

37

鼎东

鼎东

北京理工大学珠海学院计算机学院课程设计

insert into address_book

values(2,4) --4号usr加入2号学校(北师大) insert into address_book

values(2,5) --5号usr加入2号学校(北师大) select * from address_book

--班级信息表

create table class (

Class_id int primary key not null,/*班级编号*/

Class_name varchar(30) not null,/*班级名(称号)*/ Institute varchar(30) ,/*所属学院*/ Department varchar(30),/*所属系*/

Grade int not null, --年级 (哪个年级) Class_num int not null,--班 (哪个班)

Sch_id int not null,/*所属学校编号*/

foreign key (Sch_id) references school(Sch_id) );

insert into class

values(1,'class 1','计算机学院','计算机系',1,1,1) --1年级1班(北理工)

insert into class

values(2,'class 2','外语学院','外语系',2,1,1) --2年级1班(北理工)

insert into class

values(3,'class 3','信息学院','信息系',3,1,1) --3年级1班(北理工)

insert into class

values(4,'class 4','机车学院','车辆系',4,1,1) --4年级1班(北理工)

select * from class

--usr所在班级信息表 create table usr_class (

Usr_id int not null, --USR

Class_id int not null, --Class ID

Usr_role int not null, --usr的角色(0代表班级普通成员,1代表班级管理员成员)

primary key (Usr_id,Class_id),

foreign key (Usr_id) references usr(Usr_id),

38

北京理工大学珠海学院计算机学院课程设计

foreign key (Class_id) references class(Class_id) );

insert into usr_class

values(1,1,1) --usr1为class 1(即1年级1班)管理员 (北理工) insert into usr_class

values(4,1,0) --usr4为class 1(即1年级1班)管理员 (北理工) insert into usr_class

values(2,2,1) --usr2为class 2(即2年级1班)管理员(北理工) insert into usr_class

values(3,3,1) --usr3为class 3(即3年级1班)管理员(北理工) select * from usr_class

--公告表

create table ann (

Ann_id int primary key not null, /*公告编号*/ Ann_contents varchar(50), /*公告内容*/ Ann_title varchar(50), /*公告题目*/

Ann_time datetime not null, /*公告时间*/ Class_id int not null, --公告班级

foreign key (Class_id) references class(Class_id) );

insert into ann

values(1,'会议','开会','20090102',1) insert into ann

values(2,'户外活动','活动','20090321',2) insert into ann

values(3,'党员会议','开会','20091002',3) select * from ann

--留言表

create table note (

Note_id int primary key not null, /*留言编号*/ Note_title varchar(50), /*留言题目*/ Note_contents varchar(50), /*留言内容*/ Note_time datetime not null, /*留言时间*/ Note_usr int not null, /*留言者*/

39

北京理工大学珠海学院计算机学院课程设计

foreign key (Note_usr) references usr(Usr_id) );

insert into note

values(1,'通知','党员开会','20110930',1) --usr1留的言 insert into note

values(2,'活动','班级户外活动','20110929',2) --usr2留的言 select * from note

--留言管理表

create table note_management (

Usr_id int not null, /*管理留言者*/ Note_id int not null, /*留言编号*/

Note_public varchar(1) not null,/*是否公开留言*/

foreign key (Usr_id) references usr(Usr_id), foreign key (Note_id) references note(Note_id) );

insert into note_management --usr1 的留言留给了usr2 values(2,1,'1')

select *

from note_management

left join note on note_management.Note_id=note.Note_id

---------------------------------------------------------- ---------------------------------------------------------- -------------------------功能实现------------------------- ---------------------------------------------------------- ----------------------------------------------------------

-------------------------1.访客功能------------------------ use Alumni_mail_list GO

--游客访问个人信息--视图

create view visitors(Log_name,Sex,Birth,Email,Mobile) as

select Log_name '登录名',Sex '性别',Birth '出生日期', Email '电子邮件',Mobile '电话'

40

北京理工大学珠海学院计算机学院课程设计

from usr

select * from visitors

use Alumni_mail_list GO

--存储过程1(查询某个用户的个人信息和留言信息,所在学校) create procedure visitors_pro1

@visitors_input int , --0代表为访客,1代表已注册 @visitors_Logname varchar(30) --登录用户名(unique) as

if @visitors_input=0 begin

--查询输入的用户的个人信息

select Log_name '登录名',Sex '性别',Birth '出生日期', Email '电子邮件',Mobile '电话' from visitors

where Log_name=@visitors_logname

--查询输入的用户所在学校信息

select Sch_name '学校',Sch_addr '地址',Sch_postcode '邮政编码', Sch_emil '电子邮件',Sch_telephone '联系电话',

Sch_city '城市',Sch_province '省份',Sch_web '网址' from address_book,school,usr where usr.Usr_id=address_book.Usr_id and school.Sch_id=address_book.Sch_id

and usr.Log_name=@visitors_logname end return

--执行测试

declare @temp1 int

declare @temp2 varchar(30) --print '输入要查询的用户名'

set @temp1=0 --0代表为游客 set @temp2='usr1' --要查找的用户信息 execute visitors_pro1 @temp1,@temp2

--存储过程2 查找学校信息

create procedure visitors_pro2

@visitors_school varchar(50) --要输入要查询的学校名(unique) as

41

北京理工大学珠海学院计算机学院课程设计

图5.2.1-3校友通讯录

(4) 班级信息表(图5.2.1-4)

图5.2.1-4班级信息表

(5) usr所在班级信息表(图5.2.1-5)

图5.2.1-5 usr所在班级信息表

(6) 公告表(图5.2.1-6)

图5.2.1-6公告表

(7) 留言表(图5.2.1-7)

17

北京理工大学珠海学院计算机学院课程设计

图5.2.1-7留言表

(8) 留言管理表(图5.2.1-8) --usr1 的留言留给了usr2

图5.2.1-8留言管理表

5.2.2数据库试运行

一、 访客功能

1.游客访问个人信息--视图(图5.2.2-1)

图5.2.2-1问个人信息—视图

2.存储过程(查询某个用户的个人信息和留言信息,所在学校)visitors_pro1 --执行测试

declare @temp1 int

declare @temp2 varchar(30) --print '输入要查询的用户名'

set @temp1=0 --0代表为游客 set @temp2='usr1' --要查找的用户信息 execute visitors_pro1 @temp1,@temp2 (图5.2.2-2)

18

北京理工大学珠海学院计算机学院课程设计

图5.2.2-2储过程(查询某个用户的个人信息和留言信息)

3.存储过程-查找学校信息(图5.2.2-3)

图5.2.2-3储过程-查找学校信息

二、 个人信息的管理,登录,修改,查询 1. 个人信息视图(图5.2.2-4)

图5.2.2-4人信息视图

2. 登录并返回角色(即是否为管理员用户) --执行测试

declare @temp1 int declare @temp2 tinyint

execute User_own_proc1 'usr2','1235',@IsValid=@temp2 output,@Role=@temp1 output if @temp2=1 begin

print '登录成功' if @temp1=1

19

北京理工大学珠海学院计算机学院课程设计

print '角色为:为某班管理员' else

print '角色为:普通用户' end else

print '登录失败,请重新登录' (图5.2.2-5)

图5.2.2-5录并返回角色

3. 查询个人信息(图5.2.2-6)

图5.2.2-6个人信息

三、 班级管理,查询班级具体信息,若为班级管理员身份,有增加成员,删

除成员,管理公告信息,成员身份则只能查询同班成员的信息 1. 公告视图(图5.2.2-7)

图5.2.2-7告视图

2.查询班级具体信息(图

5.2.2-8)

图5.2.2-8班级具体信息

20

北京理工大学珠海学院计算机学院课程设计

3. 判断是否为班级管理员(标量值函数) (图5.2.2-9) --测试

declare @temp1 int declare @temp2 int set @temp1=1 set @temp2=2

if( (dbo.class_admin(@temp1,@temp2))=1) print '班级管理员' else

print '非班级管理员'

图5.2.2-9是否为班级管理员

4. 班级成员可以查询同班成员的信息(图5.2.2-10)

图5.2.2-10级成员查询同班成员信息

5.若为班级管理员身份,有增加成员,删除成员 注:管理员用户不能删除自己

declare @result_temp varchar(3) execute change_usr_class

@usrid=4,@classid=1,@sign='del',@result=@result_temp output if( @result_temp ='1') print '操作成功' else

print '操作失败' (图5.2.2-11)

图5.2.2-11级管理员增加,删除成员

6.管理公告信息,插入公告(图5.2.2-12)

execute ann_management 'new','新公告','20111209',2

21

北京理工大学珠海学院计算机学院课程设计

图5.2.2-12理,插入公告

四、 校友信息的管理,查询校友信息,查询学校的详细信息 1.学校信息视图(图5.2.2-13)

图5.2.2-13信息视图

2.查询校友信息 查询usr1的校友 --执行测试

declare @temp1 int declare @temp2 int set @temp1=1 set @temp2=1

execute sch_info @temp1,@temp2 (图5.2.2-14)

图5.2.2-14查询校友信息

22

北京理工大学珠海学院计算机学院课程设计

五、 通信录管理,查询班级和校友的通信录 1. 班级视图(图5.2.2-15)

图5.2.2-15班级视图

2. 班级和校友通信录的存储过程 --执行测试

declare @temp1 int declare @temp2 int set @temp1=1 set @temp2=1

execute Cs_info @temp1,@temp2 (图5.2.2-16)

图5.2.2-16班级和校友通讯录的存储过程

六、 留言管理功能,个人能查看删除或者不公开别人给自己的留言,以及对

别人进行留言

1.公告管理视图(图5.2.2-17)

图5.2.2-17公告管理视图

23

北京理工大学珠海学院计算机学院课程设计

2.查询留言(可以为游客,本人或者其他用户) execute select_note_pro 2,'2' (图5.2.2-18)

图5.2.2-18查询留言

3.删除留言

create procedure delete_note_pro @usrid int, --留言所属者 @Noteid int --留言ID as begin

if(@usrid in (select Usr_id from note_management_view)) and (@Noteid in (select Note_id from note_management_view)) begin

delete from note_management where Note_id=@Noteid delete from note where Note_id=@Noteid end end

execute delete_note_pro 2,1 (图5.2.2-19)

图5.2.2-19班级信息表

4.不公开别人给自己的留言 declare @Noteid int set @Noteid=1

update note_management set Note_public='0' where Note_id=@noteid (图5.2.2-20)

24

北京理工大学珠海学院计算机学院课程设计

图5.2.2-20不公开别人给自己的留言

5.对别人进行留言

execute make_note_pro 2,1,'new','新留言','20111209','0' select *from note (图5.2.2-21)

图5.2.2-21对别人进行留言

25

北京理工大学珠海学院计算机学院课程设计

六.数据的运行和维护

6.1确定数据库的备份方案

在SQL Server备份窗口,可以通过调度设置,将当前进行的备份处理设置为定时自动处理的作用。具体的步骤如下: 1. 展开一个服务器组。

2. 展开一个服务器( SQL Server实例)。 3. 展开【数据库】,右单击要备份的数据库,在弹出的菜单中选择【所有任务】—〉【备份数据库】命令。

4. 在随后打开的SQL Server备份窗口中,设置备份的相关选项。参见前面的备份方案

单击【常规】选项卡,在【调度】项中,选中【调度】复选框,然后单击【调度】复选框后的【…】按钮。在随后出现的【编辑调度】对话框中,设置时间调度安排。

5. 设置完成后,单击【确定】按钮,SQL Server将执行备份操作,同时在【SQL Server 代理】—〉【作业 】中自动建立对应的作业。 6. 在【SQL Server 代理】—〉【作业 】窗口中,可以像处理普通作业一样修改或删除数据库备份窗口中定义的备份计划。

6.2检查数据的安全性、完整性控制 6.2.1安全性控制

1.安全性问题并不是数据库系统所独有的,所有计算机系统中都存在这个问题,只是由于数据库系统中存放了大量数据,并为许多用户直接共享,使安全性问题更为突出。安全措施一般是一级一级层层设置的

2.标识和鉴定一个用户最常用的方法是用一个用户名或者用户标识号来标明用户身份,系统鉴别此用户是否是合法用户。若是,则可进入下步的核实;若不是,则不能进入系统。 3.在关系系统中,就是为不同的用户定义不同的视图,通过视图机制把要保密的数据对无权存取这些数据的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。

26

本文来源:https://www.bwwdw.com/article/ifsv.html

Top