个人通讯录管理系统软件综合实训设计报告文档格式.docx
《个人通讯录管理系统软件综合实训设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《个人通讯录管理系统软件综合实训设计报告文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
管理员会定期审查违章信息,并且进行数据统计以及对公共联系人进行操作,从而是让用户使用个人管理系统,有更好的体验。
2.需求分析
2.1组织机构操作方式上的可行性
我们团队的成员都是同一个班级的,相互之间也很熟悉,所以很有利于相互之间的交流和探讨,更好的完成系统设计工作。
因为团队的个人学习水平及擅长的不同,但我们很好地分配了任务。
我们的组长范志俊,平时学习非常刻苦,功底也比较扎实,技术水平也很高,所以由他担任我们的组长,来管理和给我们成员分配任务,管理我们系统的设计工作。
我们团队的其他成员非常善于合作服从管理,也对工作尽职尽责。
我们团队内部各尽其责,竭尽全力,共同完成系统工作。
所以在组织机构操作方式上是可行的。
2.2基础数据的可行性
个人通讯录管理系统所需的数据、资料等大部分都可以从图书馆相关书籍中获取,同时有些相关数据可以通过教材以及周围的同学、朋友获取,所以在基础数据上是可行的。
2.3经济上的可行性
我们小组是以分工形式来进行本次课程设计,保证了项目的开发周期,节约了时间成本,也极大缩短了成员对开发、实现本系统的培训环节。
所以我们的经济成本是极低的,所以在经济上是可行的。
2.4技术上的可行性
软件需求:
操作系统Windows
数据库:
SqlSever2008
E_R制图部分:
亿图
配置需求:
计算机(配置要求不高)
因为我们系统界面设计采用C#+WPF语言、VS20013软件实现,并且这些软件所能实现的基本功能所需的知识我们基本都有所了解,所以在技术上是可行的。
2.6目标分析
个人通信录管理系统通过计算机技术给用户对其通讯录的管理带来便利。
3.数据库外部设计
3.1标识符和状态
数据库软件的名称:
数据库的名称为:
DB_PER_ADDRESSLIST
3.2命名约定
3.2.1表命名命名
全部以T_为开头,加上表所存储数据所代表的意义的英文名。
用户登录表:
T_UserLogin
(id,user_name_user_password,type,user_pic,warn_num,delete_tf,register_time)
联系人表:
T_Linkman
(id,first_name,last_name,phone_number,mobile_number,e_mail,group_id,user_id,linkman_pic,first_py,last_py,delete_tf)
公共联系人表:
T_Common_Linkman
(id,linkman_name,tel_number,name_py)
组别表:
T_Group
(id,name,user_id)
好友表:
T_Friend
(id,first_uid,second_uid)
信息表:
T_Message
(id,send_id,receive_id,messgae,subtle,datetime,warn_tf)
敏感词表:
T_Subtle
(id,subtle_name)
汉字首拼字库:
T_Word_PY
(id,hz,py,zm)
3.2.2触发器命名
全部以TRI_为开头,加上对应的表名以及进行的操作类型,二者之间用下划线分割。
公共联系人Insert触发器:
TRI_Name_Py_Set_Insert
联系人Insert触发器:
TRI_Firstname_Lastname_Py_Set_Insert
信息Inset触发器:
TRI_Message_Inset
3.2.3存储过程命名
全部以Pro_作为开头,加上进行操作的所对应的英文名。
敏感词去重:
Pro_Distinct_Subtle
联系人与组别表联合查询:
Pro_Select_Linkman_GroupId
用户违章数:
Pro_User_Warn_Num
所有的数据库命名都是以具体表的英文词汇组成,这样能够统一数据库表的命名,也能够更好的规范数据库表命名。
3.3设计约定
所有数据库的设计,采用面向对象的设计方法,首先进行对象实体的设计,最后将对象持久化到数据库中,所有的表和表之间的关联,这样能够将整个系统的设计和数据库设计有机的结合起来。
4.数据库结构设计
4.1概念结构设计
概念结构是独立于实际数据模型的信息结构,必须将其转化为逻辑结构后才能进行数据库应用的设计。
也就是要将概念上的结构转化为数据库系统所支持的实际数据模型。
第一种转化是将实体转化为关系表。
这种转化较简单,需要将实体的属性定义为表的属性即可。
第二种转化是联系的转化。
即将各个实体之间的联系转化为表格之间的关系,如外部键的定义。
数据库概念结构设计是在需求分析的基础上,设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。
这个阶段不用考虑所采用的数据库管理系统、操作系统类型、机器类型等问题。
这阶段可用的工具很多。
用的最多的是E-R图(Entity-Relation,实体-关系图),另外还有许多计算机辅助工具(Computer
Aided
Software
Engineering,
CASE)可以帮助进行设计。
本系统采用了E-R图的方法进行数据库概念结构设计。
E-R图是描述数据实体关系的一种直观描述工具。
这种图中有:
(1)实体:
用方框表示,方框内为实体的名称。
(2)实体的各种属性:
用椭圆表示,椭圆内为属性名称。
使用线段将其和响应的实体连接起来。
(3)实体之间的联系:
用菱形表示,菱形内为联系的名称。
实体和实体之间的联系较多,比较常见的联系有l:
1,l:
N和M:
N这三种。
在上面工作的基础上归纳出人员管理数据库表格的组成之间的联系等等。
该数据库系统具有以下方面的特点:
结构合理,对一个人员建立多条记录。
所建立的数据冗余度小,独立性强。
建档、修改、查询、统计快速而准确。
保密性好、可靠性好。
个人通讯录管理系统中要有登陆,登陆是管理系统中密不可分的部分,因此要创建一用户登录实体,用来保存登陆用户的详细信息。
用户登录实体属性图如图4-1所示。
图4-1
用户登录实体属性图
联系人是个人通讯录管理系统重要组成部分之一,这里创建了一个联系人信息实体,用来存储联系人的详细信息。
联系人信息实体E-R图如图4.2所示。
图4-2
联系人信息实体属性图
公共联系人是个人通讯录管理系统重要组成部分之一,这里创建了一个公共联系人实体,用来存储公共联系人的详细信息。
公共联系人实体E-R图如图4.3所示。
图4-3公共联系人信息实体属性图
组别是个人通讯录管理系统重要组成部分之一,这里创建了一个组别信息实体,用来存储联系人组别的详细信息。
组别信息实体E-R图如图4.4所示。
图4-4组别信息实体属性图
好友是个人通讯录管理系统通信模块重要组成部分之一,这里创建了一个好友信息实体,用来存储用户好友的详细信息。
好友信息实体E-R图如图4.5所示。
图4-5好友信息实体属性图
个人通讯录管理系统通信模块需要有信息记录,这里创建了一个通信信息实体,用来存储用户之间通信信息的详细信息。
通信信息实体E-R图如图4.6所示。
图4-6通信信息实体属性图
个人通讯录管理系统通信模块需要有敏感词过滤,这里创建了一个敏感词实体,用来存储敏感词的详细信息。
敏感词实体E-R图如图4.7所示。
图4-7通信信息实体属性图
个人通讯录管理系统联系人模块为了查找方便,我们设置了拼音首字母查找的功能,这里创建了一个汉子拼音字库实体,用来存储汉字对应的拼音的详细信息。
汉字拼音字库实体E-R图如图4.8所示。
图4-8汉子拼音字库实体属性图
实体-联系图
4.2逻辑结构设计
4.2.1用户登录表(T_UserLogin)
Id
id
autoincrement
int
PK
非空
user_name
用户名
varchar(50)
user_password
密码
type
用户类型
user_pic
用户头像
warn_num
违章信息数
delete_tf
是否删除
register_time
注册时间
datetime
(getdate())
4.2.2联系表(T_Linkman)
first_name
姓
varchar(4)
last_name
名
varchar(8)
phone_number
宅电
varchar(20)
mobile_number
手机
e_mail
邮箱
group_id
组id
FK
user_id
所属用户id
linkman_pic
联系人头像
first_py
姓首拼
varchar(5)
last_py
名首拼
Int
4.2.3公共联系表(T_Common_Linkman)
linkman_name
联系人名
tel_number
name_py
varchar(10)
4.2.4好友表(T_Friend)
first_uid
当期用户id
second_uid
好友id
4.2.5组别表(T_Group)
name
组别名
4.2.6信息表(T_Message)
send_id
发信人id
receive_id
接信人id
messgae
信息
varchar(max)
发信时间
subtle
warn_tf
是否违章
smallint
4.2.7组别表(T_Subtle)
subtle_name
敏感词名
4.2.8汉字首拼表(T_Word_PY)
hz
汉字
varchar
(2)
py
拼音
zm
字母
4.3物理结构设计
对于给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程为物理设计。
数据库的物理结构主要指数据库的存储记录格式、存储记录安排和存储方法,这些都依赖于所使用的系统。
在网状模型和层次模型系统中,这一部分内容较复杂,因为它们是用指针表示记录的联系。
关系模型系统比较简单一些,仅包含索引机制、空间大小、块的大小等内容。
在设计物理结构时,应先确定数据库的物理结构,然后对物理结构进行评价。
评价的重点是时间和空间的效率。
数据的存储决定了数据库占用多少空间,数据的处理决定了操作时间的效率。
物理结构设计应尽量减少存储空间的占用,也应尽量减少操作次数,做到相应时间越快越好。
如果评价结果满足原设计要求,则转向物理实施。
否则,就要重新修改或重新设计物理结构,有时甚至要回到逻辑设计阶段修改数据模型。
物理设计完成之后,就应该得到详细的磁盘分配方案、存储方案、各种基表的详细信息等。
根据这些信息就可以上机建立数据库。
数据库存储物理地址:
C:
\ProgramFiles\MicrosoftSQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\DATA
5.数据库实施
对数据库的物理设计初步评价完后,就可以开始建立数据库了。
数据库实施主要包括:
用DDL定义数据库结构,组织数据入库,编制与调试应用程序,数据库试运行。
所谓使用DDL定义数据库结构,就是使用DBMS的建库命令建立相应的用户数据库结构。
组织数据库入库就是将装载在其他介质上的数据输入到数据库中去。
为了完成相应的操作和检索,需要编制很多程序,形成一个程序系统来使用该数据库,这部分是程序设计的任务。
一切就绪之后,就可以试运行数据库了。
6.软件功能设计
6.1用户功能
用户可以通过注册,然后登录的方式进入个人通信录管理系统首页,首页设立如下功能链接。
6.1.1个人通讯录管理
增加联系人信息:
增加姓名,宅电,手机号,邮箱,下拉列表选择分组
删除联系人信息:
删除联系人会存入回收站
修改联系人信息:
修改姓名,宅电,手机号,邮箱,下拉列表修改分组
通讯录导出至Excel
6.1.2公共通讯录查看
可以查看公共通讯录中的电话名称和电话号码
6.1.3通讯
通信信息记录查看:
通过当前用户id查询信息表,获取通信记录
信息通信:
好友之间的信息发送
发送信息模块是通过本通讯录的好友功能,发送消息给自己的好友,本模块不使用网络通信,也并不用外接的发送短信的接口,只是将信息和收信息人的id存入数据库,并且也通过id查询自己已收到的信息,并且动态显示在界面上。
由于如果这么设计的化,考虑到不能实时显示的问题,若采取循环判断这种方法考虑到会占用大量系统资源,所以暂时增加了刷新按键,可以用户手动刷新,我们小组慢慢讨论解决这个问题,现在做的不是特别的完美。
6.1.4回收站
批量删除:
可以使用多选框选择多项,从而达到批量删除联系人的效果,使用delete直接删除
批量还原:
可以使用多选框选择多项,从而达到批量还原联系人的效果,通过修改联系人表中的delete_tf字段实现效果。
回收箱模块主要意图是防止用户操作失误,一时大意将联系人删除,从此无法恢复,本模块是将用户操作删除联系人后,将该联系人表的isdel字段设为1,先进行数据软删除,使用户在前台看不到该联系人,但此信息依然存在于数据库之中,回收箱里显示的就是已经被软删除的联系人,若用户还想恢复可点击恢复按钮,那么将把联系人表isdel字段设为0,可重新显示在用户界面上。
回收箱还做了清空回收箱,批量删除和还原的功能,操作方便快捷。
6.1.5好友
增加好友:
通过现有的用户表中,获取其他用户id,从而达到加好友的效果。
删除好友:
直接从好友表中,删除符合条件的数据
6.1.6联系人检索
组别检索:
每个联系人都有组别id,通过对联系人进行组别判断就能获得想要的数据结果
联系人姓首拼检索:
每个联系人都有对应的姓首拼和名首拼,可以通过对于想要条件的判断,从而得到想要的数据
直接查找电话号码或者姓名:
通过模糊查询的sql语句,从而可以的到想要的数据。
搜索联系人功能模块是通过用户输入联系人姓名或者手机号或者字母来查询联系人信息。
这里用了数据库模糊查询,将用户输入的用Like关键字进行查询,使得搜索更快捷,操作更方面,用户体验更好,功能更加实用,本次查询还考虑到了如果查询数量巨大,会用到多页显示的问题,本系统也应用了数据库查询分页的技术来解决此问题。
6.2管理员
管理员直接通过登录的方式进入个人通信录后台管理系统首页,首页设立如下功能链接。
用户可以使用的功能有:
6.2.1敏感词管理
删除:
删除导入数据中不符合条件的数据
修改:
修改导入的数据中不符合条件的数据
从Text中导入数据
6.2.2公共通讯录管理
增加公共通讯录:
增加名称,电话号码
删除公共通讯录:
删除不符合条件的数据
修改公共通讯录:
修改名称,电话号码,拼音首拼
6.2.3信息统计
今日注册用户数:
通过注册时间筛选统计,用户表中delet_tf为0的所有用户数
累计注册用户数:
统计用户表中,delet_tf为0的所有用户数
今日通讯信息数:
通过发信时间筛选统计,信息表中warn_tf为0的所有信息数
累计通讯信息数:
统计信息表中warn_tf为0的所有信息数
违章信息数:
统计信息表中warn_tf为1的所有信息数
6.2.4信息管理
用户管理:
删除违章信息数超过一定量的用户
违章信息审查:
人为审查违章信息
汉字首拼字库查看:
对于汉字首拼字库进行管理
7.界面设计
登录界面
通过Tab可以切换输入的文本框,同时也可以对管理员和用户身份的切换,对于输入框有非空判断处理。
注册界面
注册时会验证用户名是否存在,以免用户名重复,同时也有非空判断
用户登录首界面
添加联系人界面
回收箱界面
后台管理主界面
管理员登录后,进入的页面,可以查看近3天注册的用户信息,同时也可以查看已注册用户数,查看通信信息数,查看当天通讯详细信息,以及违章信息详细信息。
管理员可以通过功能选择,跳转到相应的管理功能页面。
公共联系人管理主页面
通过左侧的功能导航栏和首页的功能选择按钮都可以进入该界面,进行对于公共联系人的添加、修改、删除。
后台公共联系人添加主页面
后台公共联系人修改主页面
后台公共联系人删除主页面
后台用户管理管理页面
管理员可以通过勾选多选框从而实现对于用户的删除操作
8.结束语
功能设计并不是很完善,还有许多地方需要进行修改改进,时间有限是因素之一,其次是因为对于技术开发仍然有些不足。
需求分析,以前没有做过类似的,所以在开发过程中,产生了一个重大错误,也可以说不算错误,只能说当初思考功能结构的时候,没有将问题思考清楚,产生了一定的纰漏,最后通过添加好用功能模块,实现通信功能。
数据库,我们组所有人都是第一次接触触发器,虽然没有写多少个触发器,但是为了实现敏感词过滤,绞尽脑汁,最后实现想要的效果,虽然还存在一定几率的失败,最后只能通过人为审查弥补这个缺点。
不过可以通过分词技术处理后,能真正的实现这个功能模块,这个还需要学习学习,这可能会成为我们假期学习计划之一吧。
存储过程,我们组有些人以前写过几次,但是大部分人也都是第一次接触,所以发现数据库不仅仅只有增删改查,那只是冰山一角,所以激励我们好好学习数据库。
文档,第一次写这类型的文档,虽然有模板,还是很迷茫,通过我们组互相之间的沟通交流,基本完成文档。
逐步了解了数据库逻辑结构,数据结构,物理结构的书写内容,逐步了解,需求分析该如何书写。
几千行的文档,写完后,瞬间油然而生一种自豪感,对于毕业设计那一万字感觉到,不是太难,对以后的毕业设计更有信心完成了。
一个开发小组不需要很多人,只要大家各司其职,一个很大的管理系统,被细化为多个小部分,这种分而治之的思想,是的一个大问题,变成若干小问题而已,原本困难的事也变得简单了。
每个人把自己写的功能模块拼接在一起,一个大的个人通讯录管理系统就完成了。
9.参考文献
[1]王小科,王军,赵会东,C#项目开发案例全程实录(第2版)北京:
清华大学出版社,2011