数据库程序设计大作业通讯录系统设计组长:陈卓2008920290826组员:詹莉莉2008920430826宋道城2008924850826唐诗慧2008931560826朱若敏20089330008262010/10/29-2-目录一、需求分析`````````````````````````````````````````````````````````````````````````````````````````````````3(需求分析文档,包括数据流图)二、概念结构设计``````````````````````````````````````````````````````````````````````````````````````````8(ER图,及对于实体及联系的说明)三、逻辑结构设计``````````````````````````````````````````````````````````````````````````````````````````9(关系模式,逻辑结构的数据表视图)四、物理结构设计`````````````````````````````````````````````````````````````````````````````````````````10(相关数据库对象的创建语句)五、程序说明``````````````````````````````````````````````````````````````````````````````````````````````````10(功能界面截图)六、组员分工``````````````````````````````````````````````````````````````````````````````````````````````````15(每个人主要负责的工作)七、体会```````````````````````````````````````````````````````````````````````````````````````````````````````````16八、参考资料``````````````````````````````````````````````````````````````````````````````````````````````````16-3-一、需求分析1.1引言本次作业为Java、软件工程与Oracle数据库三门课程的结合体,通过Java语言编写一份通讯录,并连接Oracle数据库,实现在本机上记录用户的通讯录的功能。深入了解Java、Oracle数据库和软件工程三门学科和相应工具。1.1.1编写目的在完成了针对通讯录管理系统的前期调查,同时与各位组员进行了全面深入地探讨和分析的基础上,提出了这份软件需求规格说明书。此需求规格说明书对《通讯录管理系统》软件做了通讯录管理系统的用户需求分析,明确所要开发的软件应具有的功能、性能与界面,使系统分析人员及软件开发人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。本说明书的预期读者为客户、业务或需求分析人员、测试人员、用户文档编写者、项目管理人员。本说明书是整个软件开发的依据,它对以后阶段的工作起指导作用。本文也是项目完成后系统验收的依据。1.1.2项目背景说明:a.待开发的软件系统的名称:通讯录系统。b.项目提出方:单世民老师、姜国海老师开发者:陈卓、宋道成、詹莉莉、朱若敏、唐诗慧用户:在校全体学生。c.项目与其他软件或其他系统的关系:从属与大连理工大学的校园网1.1.3定义需求:用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。Unpw-数据库addGroup-增加分组-4-delGroup-删除分组editGroup-编辑分组addContactor-增加联系人delContactor-删除联系人editContacto-编辑联系人export-导出联系人1.2综合描述1.2.1目标实现本地通讯录管理系统的基本功能,可以实现电话用户的建立、联系人的存储、联系人的添加及删除、联系人分组、添加及删除等功能,以方便人们的记录和通讯。1.2.2用户的特点该系统的用户分为:大连理工大学软件学院在校学生。提供给学生通讯录的相关功能,包括addGroup、delGroup、editGroup、addContactor、delContactor、editContacto、expor等功能;本软件为应用型软件,用户不需要任何技术背景。1.2.3运行环境●硬件平台;486或更高档PC台式机,笔记本电脑,或WindowsCE;安装所需硬盘:1MB;打印机:可选。●操作系统和版本:支持Windows系统●支撑环境(例如:数据库等)和版本:Oracle数据库●其它与该软件有关的软件组件:JDK●与该软件共存的应用程序:Oracle数据库1.2.4设计和实现上的限制●必须使用Oracle数据库、JavaJDK语言包。●不可多用户同时登录。-5-1.3外部接口需求1.3.1用户界面●界面风格简单、清晰,很容易操作;●界面将出现在屏幕中央,不是当前进程是将隐藏;●界面标准按钮:addGroup-增加分组delGroup-删除分组editGroup-编辑分组addContactor-增加联系人delContactor-删除联系人editContacto-编辑联系人export-导出联系人;●错误信息显示标准;出现错误信息时将弹出对话框予以提示。1.4系统功能需求1.4.1对功能的规定(1)登录退出:实现多用户的登录,但不可同时登录。可新建用户,以个人用户身份登录。退出系统时,直接退出即可。(2)用户管理:可通过新建用户来实现多用户的本地登录。(3)信息管理:对联系人信息的添加、删除、修改、分组的功能。包括:浏览功能、修改联系人、添加联系人、删除联系人功能、联系人组添加、删除功能。1.4.1.1对性能的规定数据精确度输入数据应符合数据特性时间特性一般操作相应时间在1秒内灵活性能适应Windows操作系统-6-1.4.1.2输入/输出数据●数据名称:联系人姓名、联系人邮箱、联系人电话;●数据类型char,char,char;●数据格式:例Lily,Note@gm.com,123321;1.4.2其它非功能需求安全性需求一次只能登陆一名用户,由于软件为本地软件,安全性较好,需要用户记住个人密码,每名用户都需注意跟人密码的安全性与保密性。1.5分析模型●数据流程图0层数据流图1层数据流图-7-2层数据流图-8-二、概念结构设计2.1ER图说明:用户登录储存登录系统的用户信息。分组信息储存某一个用户所拥有的分组。联系人信息储存某一分组下的联系人信息。每一个用户登录可以有一个或多个分组,也可以没有。每一个分组可以有一个或多个联系人,也可以没有。-9-三、逻辑结构设计3.1转换为关系模型:用户登录:{用户id,用户名,密码,昵称}分组信息:{分组id,用户id,分组名}联系人信息:{联系人id,分组id,联系人姓名,联系人邮箱,联系人电话}3.2建立逻辑模型图:(PowerDesigner实现)-10-四、物理结构设计表构造(此程序只用到表的构造,其他未涉及)创建表语句:Createtableunpw(IDNumber(8)notnull,NAMEVARCHAR2(50)notnull,PASSWORDVarchar2(20)notnull,NICKNAMEVarchar2(50)notnull,Primarykey(ID));CreatetableGROUPID(IDNumber(8)foreignkeyreferencesunpw(id)notnull,GROUPIDNUMBER(8)notnull,GROUPNAMEVarchar2(20)notnull,Primarykey(GROUPID));CreatetableContactor(NAMEVARCHAR2(20),EMAILVARCHAR2(20),TELEPHONEVARCHAR2(20),GROUPIDNUMBER(8)foreignkeyreferencesGROUPID(GROUPID)notnull,CIDNUMBER(8)notnull,Primarykey(CID));五、程序说明5.1登陆界面登陆界面采用访问ORACLE数据库,读出用户名和密码并与用户输入相匹配,正确方可登陆,并且每个用户有其唯一id表示,传入通讯录主界面中-11-5.2注册界面注册界面依然访问ORACLE数据库,对合乎标准的注册用户写入数据库中5.3主界面通讯录中Jlist中有默认添加的Alllinkman显示所有联系人,初始化将除addGroup按钮外其余按钮都无效化,添加当前用户的联系组进入Jlist-12-5.3.1addGroup按钮当触发action事件时,弹出对话框,得到新组名,将Jlist中的Model读出,加入新组名,重新setModel,并添加变量index标志当前最后的联系组的位置,在数据库的GROUPID表中添加该组名并自动赋给不重复的GROUPID5.3.2delGroup按钮当触发action事件时,得到当前Jlist选中的value,将其model中的该value删除,重新生成Jlist,设置被删除项的上一位为选中项,同时删除CONTACTOR-13-和GROUPID表中的有关项目5.3.3editGroup按钮action事件后弹出对话框获得修改后联系组名称,读出Jlist选中的value,在Jlist中将其修改,重新设置该值为选中值,并修改GROUPID表中的对应GROUPNAME5.3.4Jlist监听器发现Jlist中的选中值发生变化时访问数据库,查找所有GROUPID等于Jlist当前选中值的GROUPID的数据,在Jtable中输出5.3.5addContactor按钮读取当前联系组的GROUPID,然后弹出对话框接受name、email、telephone,插入数据库中,重新读取当前联系组的所有联系人,加入Jtable显示-14-5.3.6delContactor按钮读入当前选中的Jtable的行数和信息,在Jtable的Model中将其删除,并在数据库中也删除,然后重新读取当前联系组的所有联系人5.3.7editContactor按钮读入当前选中的Jtable的行数和信息,弹出对话框接受修改的信息并将其修改,最后显示-15-5.3.8export按钮使用多线程将当前选中的联系组以excel形式输出出来,使用excel相关的头文件六、组员分工:组长(陈卓):主要负责java通讯录程序编写。组员1(詹莉莉):主要负责详细的需求分析。确定项目。组员2(宋道城):主要负责根据需求分析设计ER图,优化处理整理出逻辑结构的数据表视图。组员3(朱若敏,詹莉莉):主要负责物理结构设计,建立合适的数据库。测试程序。说明界面功能。组员4(唐诗慧,宋道城):主要负责计划安排,报告整理。-16-七、体会:在组员分工里面写“主要负责”的原因是虽然每人都有自己负责的模块,但是在做的过程当中大家互相帮助,一起讨论,从数据库设计过程到程序最后完工,大家都有参与。感谢老师给我们提供了这次机会,让我们从中学习到了很多知识。对整个数据库开发也有比书面更深的理解。谢谢老师。九、参考资料《数据库系统概论》王珊,萨师煊。高教社。《数据库程序设计教程—综合运用PowerDesigner,Oracle与PL/SQLDeveloper》单世民,赵明砚,何英昊。清华大学出版社。