1、苏科院同学通信录管理系统课程设计说明书苏州科技学院电子与信息实验中心面向对象课程设计报告-同学通信录管理系统专业年级: 计算机科学与技术(专转本)2011 班 级: 计算机Z1111 学 号: 11200135103 11200134113 学 生: 张志虎、葛志强 成 绩: 指导老师: 陆卫忠 2018年10月26日目录同学通信录管理系统1. 概述1.1 选择目的与意义如今生活节奏日益加快,各种联系人也不短增多,但是很多人还是单纯的使用手机或纸质电话本来记录联系人的信息,这些记录的方式存在很多缺点,如:信息量少,查找不方便;容易丢失;存储照片不方便;安全性不高,隐私性不高这个通讯簿,可以帮助
2、用户更好的存储朋友的相关信息,易于添加、修改,存储和使用都很方便。同时这个系统需要登陆才能进入,提高了通讯簿的安全性和隐私性。通过实现通讯薄功能的实际编程了解基于Swing的图形用户界面开发和数据库操作原理,提高Swing和JDBC技术结合的综合运用能力。1.2 设计任务与要求编写一个同学通讯录管理系统。学生的信息包括姓名、性别、年龄、组别、电话、QQ、邮箱、备注。具体实现的功能:能过实现同学通讯记录文件的导入和导出、增加通讯录信息、删除通讯录信息、更改通讯录信息、删除通讯录信息、通讯录信息的排序(姓名)与分组查询等。1.3 开发环境以及工具系统编程基于JAVA Swing的图形用户界面开发,
3、数据信息连接后台为mysql数据库。系统运行环境为运行Windows的PC机,具有JDK1.6以上Java编译环境,Eclipse编辑环境,以及mysql数据库环境。2. 总体设计2.1 系统功能分析本系统主要实现我们信息的管理,包括我们平时朋友信息的添加、修改、查询和删除,及一些辅助项目的管理,如登录系统用户管理和用户组管理。并且将同学通讯录的文件从数据库中导入和导出。 整个系统模块划分如图2-1所示:图2-1 系统模块划分2.2 用例图及用例说明2.2.1同学通讯录用例(1)增加通讯录信息用例描述向通讯录中增加同学的通讯信息,是同学通讯录系统的一项基本功能。在同学通讯录系统的建模过程中,将
4、这一行为抽象为一个用例。在不考虑软件的具体实现细节基础上,给出如下的用例描述。表2-1增加通讯录信息用例描述Use Case 名称添加信息执行者用户前置条件读者通过系统验证后,成功登陆同学通讯录系统事件流A.输入要添加同学的姓名 若输入姓名为空,则提示“姓名不能为空!” 输入正确,则没有错误提示B.输入电话 若输入电话为空,则提示“电话不能为空!” 输入正确,则没有错误提示C.选择性别 若不选择,则默认为“男” 若选择“女”,单选按钮显示“女”被选中D. 选择组别 下拉列表显示所供选的组别,只可单选E. 同学信息填完整后,点击“确定”按钮后置条件同学的通讯信息添加成功,并且在下面的表格中显示出
5、信息。之前的文本框内容被清空(2)删除通讯录信息用例描述删除同学的通讯信息,是同学通讯录系统的一项基本功能。在同学通讯录系统的建模过程中,将这一行为抽象为一个用例。在不考虑软件的具体实现细节基础上,给出如下的用例描述。表2-2删除通讯录信息用例描述Use Case 名称删除信息执行者用户前置条件读者通过系统验证后,成功登陆同学通讯录系统事件流A.输入要删除同学的姓名 若输入姓名为空,则检索所有同学 输入的姓名不存在,则没有任何信息被检索出B.选择是否删除 若没有选择,则没有任何信息被删除 若选择,则删除对应的同学信息C. 选择删除 被选择的同学信息从数据库中被删除D. 选择全部删除 被选择的同
6、学信息从数据库中一次被删除后置条件同学的通讯信息删除成功,并且在下面的表格中不再显示被删除者的信息。之前的文本框内容被清空(3)更改通讯录信息用例描述更改同学的通讯信息,是同学通讯录系统的一项基本功能。在同学通讯录系统的建模过程中,将这一行为抽象为一个用例。在不考虑软件的具体实现细节基础上,给出如下的用例描述。表2-3更改通讯录信息用例描述Use Case 名称更改信息执行者用户前置条件读者通过系统验证后,成功登陆同学通讯录系统事件流A.输入要更改同学的姓名 下拉列表框选择要被更改的同学姓名B.点击“检索”按钮C.选择要修改的信息 直接在对应的文本框中修改D.点击“确定”按钮后置条件同学的通讯
7、信息更新成功,被修改的同学信息同时在数据库中被修改。之前的文本框内容保留着被修改后的信息(4)查询通讯录信息用例描述查询同学的通讯信息,是同学通讯录系统的一项基本功能。在同学通讯录系统的建模过程中,将这一行为抽象为一个用例。在不考虑软件的具体实现细节基础上,给出如下的用例描述。表2-4查询通讯录信息用例描述Use Case 名称查询信息执行者用户前置条件读者通过系统验证后,成功登陆同学通讯录系统事件流A.输入要查询同学的姓名 若输入姓名为空,没有错误提示,将检索所有同学 输入的姓名不存在,则没有任何信息被检索出B.选择组别 下拉列表框,选择要查询的组别C. 选择性别 若不选择,则默认为“男”和
8、“女” 若选择“男”,单选按钮显示“男”被选中,若选择“女”,单选按钮显示“女”被选中D.选择排序的对象 下拉列表框,选择要排序的类型(姓名、性别等)E.点击“升序”按钮F.点击“降序”按钮后置条件同学的通讯信息查询成功,并且在下面的表格中显示查询同学的通讯信息。之前的文本框内容被清空2.2.2同学通讯录整体用例图根据同学通讯录描述,画出同学通讯录系统整体用例图,见图2-2。图2-2 同学通讯录系统用例图3 系统设计3.1 系统类图图3-1 同学通讯录系统类图3.2 系统状态图图3-2 同学通讯录系统状态图3.3 系统时序图3.3.1 “用户登陆”时序图图3-2“用户登陆”时序图3.3.2“用
9、户操作”时序图图3-3“用户操作”时序图3.4 数据库设计本系统运行需要与后台数据库进行数据库访问,本系统采用mysql数据进行数据库读取访问。因此需要在建立数据库(classmateDB),并在数据库内建立2张表,以下为数据库中表信息。表3-1 数据库中表信息序号表名主要表字段名1 Users(用户表)用户编号、用户名、密码、身份证ID、备注等Classmates(同学表)编号、用户编号、姓名、性别、年龄、组别、电话、QQ、Email、备注等3.4.1 用户表表3-2 用户表表结构字段名称数据类型及长度可否为空约束条件说明u_idint主键用户ID(自动编号)usernamevarchar(
10、40)用户名passwordvarchar(20) 密码idvarchar(18)身份证ID3.4.2 同学表表3-4 同学表表结构字段名称数据类型及长度可否为空约束条件说明c_idint主键ID(自动编号)u_idint外键用户IDnamevarchar(40)姓名sexchar(2)性别ageint年龄integrityvarchar(20)组别telvarchar(11)电话qqvarchar(10)QQemailvarchar(50)Emailmemovarchar(200)备注3.5 系统框架设计本系统主要采用MVC模式。以下为系统文件结构图。图3-5 系统文件结构3.6 UI设计3
11、.6.1登录模块界面设计登录模块主要有登录,用户注册,找回密码。(1)登录界面设计登录界面主要用于用户输入有效用户名与密码进行登录的。登录界面设计效果如图所示:图3-6 登录界面设计(2)注册账号界面设计如果不是合法用户,可以通过登录界面上“注册账号”链接到“用户注册”界面进行用户注册。如图3-7所示:图3-7 注册账号界面设计(3) 找回密码界面设计密码丢失时可以点击“找回密码”进行密码找回。如果图3-8所示 :图3-8 找回密码界面设计3.6.2 主界面设计图3-9 主界面设计3.6.3系统管理模块界面设计系统管理模块界面设计主要包括,用户修改密码界面设计,注销,退出系统。(1)修改密码界
12、面设计如图3-10所示:图3-10 用户更新密码(2) 注销。如图3-11所示。图3-11 注册账号(3)退出系统。如图3-12所示。图3-12 退出系统3.6.4 文件管理模块界面设计文件管理界面设计,主要有导入excel文件,下载模版,导出excel和导出Text。(1) 导入excel文件界面计,如图3-13所示:图3-13 导入excel文件(2)下载模版界面设计如图3-14所示:图3-14 下载模版(3)导出excel界面设计如图3-15所示: 图3-15 导出excel文件(4)导出text界面设计如图3-16所示:图3-16 导出text文件3.6.5 操作管理模块界面设计操作管
13、理模块界面设计主要包括:通信记录增加、删除、修改、查询等界面的设计。(1)增加通信记录界面设计如图3-17所示:图3-17 添加通信记录界面设计(2)删除通信记录界面设计如图3-18所示:图3-18 删除通信记录界面设计(3)修改通信记录界面设计如图3-19所示:图3-19 修改通信记录界面设计(4) 查询通信记录界面设计如图3-20所示:图3-21 查询通信记录界面设计3.6.6其他界面设计主要包括:关于系统界面设计与帮助。(1)关于系统界面设计如图3-21所示图3-21系统关于(2)帮助界面设计如图3-22所示:图3-22 帮助界面设计4. 编码设计4.1 登录模块4.1.1登录功能描述:
14、用户输入用户名与密码,登录时系统进行用户合法性验证,验证合法后方可进入到系统主界面。在登录时可以选择记住密码与自动登录。核心代码:ing name=cobUserName.getSelectedItem().toString();/获取用户输入的用户名/输入用户名是否为空if(name.equals() JOptionPane.showMessageDialog( null, 用户名不能为空!, 登录失败, JOptionPane.INFORMATION_MESSAGE ); String password=new String(txtPassword.getPassword().trim()
15、;/获取用户输入的密码/输入密码是否为空if(password.equals() JOptionPane.showMessageDialog( null, 密码不能为空!, 登录失败, JOptionPane.INFORMATION_MESSAGE ); return;boolean isMemoryPWD= chbMemoryPWD.isSelected();boolean isAutoLogon=chbAutoLogon.isSelected();User user =new User(name,password);/用户是否存在if(user.userLogon() UserProper
16、ty userp=new UserProperty(user,isMemoryPWD,isAutoLogon); ReadWriteProperties.writeProperties(userp); dispose(); MainFrame mainframe=new MainFrame(user.selectByNamePWD();/启动主操作界面 mainframe.setVisible(true);else /提示失败信息 JOptionPane.showMessageDialog( null, 用户名或密码输入有误!, 登录成功, JOptionPane.INFORMATION_ME
17、SSAGE );cobUserName.setFocusable(true);/输入用户名的控件获得焦点txtPassword.setText(null);/输入密码的控件为空4.1.2 用户注册功能描述:通过用户注册,才能成为合法用户。通过输入用户名,密码与确认密码、身份证ID,进行用户注册。 核心代码:if(user.userRegist() /提示失败信息 JOptionPane.showMessageDialog( null, 注册成功!, 注册成功, JOptionPane.INFORMATION_MESSAGE ); dispose(); SuppressWarnings(unus
18、ed) LogonFrame logon =new LogonFrame(); else /提示失败信息 JOptionPane.showMessageDialog( null, 此注册用户已存在!, 注册失败!, JOptionPane.INFORMATION_MESSAGE ); txtUserName.setFocusable(true);4.1.3找回密码功能描述:用户记忆密码后,可以通过找回密码功能进行密码的找回。找回密码进行用户输入用户名与身份证ID,系统进行信息检测,返回用户相应信息,如果密码找回成功,显示自己的密码;否则给予相应错误信息提示。 核心代码:User userr=u
19、ser.userFindPwd();if(userr.getPassword()=null) JOptionPane.showMessageDialog( null, 用户名或身份证号有误!, 找回密码失败, JOptionPane.INFORMATION_MESSAGE );else JOptionPane.showMessageDialog( null, 用户名:+userr.getUsername()+rn密码:+new String(userr.getPassword().trim(), 找回密码成功, JOptionPane.INFORMATION_MESSAGE );4.2 系统管
20、理模块4.2.1 更改密码功能描述:通过输入原密码与新密码进行密码的修改。系统对用户输入的信息进行用效性检查,返回成功或失败相应的提示信息。 核心代码:if(!user.userUpdatePwd(newpassword) /失败 JOptionPane.showMessageDialog( null, 原密码输入有误!, 密码更改失败, JOptionPane.INFORMATION_MESSAGE );else/成功 JOptionPane.showMessageDialog( null, 密码更改成功, 密码更改成功, JOptionPane.INFORMATION_MESSAGE );
21、4.2.2 注销账号功能描述:点击后返回登录界。 核心代码:mntmLogoff.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) dispose(); SuppressWarnings(unused) LogonFrame frame = new LogonFrame(); );4.2.3 退出系统功能描述:点击关闭整个系统。 核心代码:mntmExit.addActionListener(new ActionListener() public void actionPer
22、formed(ActionEvent arg0) System.exit(0); );4.3.文件管理模块4.3.1 导入excel功能描述:用户选择或输入文件路径,点击导入后,系统进行路径合法性检查,不合法时提示相应的信息,合法后,读取文件中的相应信息显示到界面上的表格中。用户通过点击确定后进行数据插入数据库操作。 核心代码:if(v=null) JOptionPane.showMessageDialog( null, 导入失败,请选择文件进行导入, 导入数据, JOptionPane.INFORMATION_MESSAGE ); return;else Iterator it=v.iter
23、ator(); while(it.hasNext() Classmate cl=(Classmate)it.next(); cl.setU_id(user.getU_id(); cl.insertData(); JOptionPane.showMessageDialog( null, 数据导入成功, 导入数据, JOptionPane.INFORMATION_MESSAGE );4.3.2 下载模版功能描述:从服务器端把模版文件下载到本地。处理过程为把服务器端的文件打开,通过用户选择的保存的位置的文件路径进行创建文件,并把服务器端的文件内容复制到在本地创建的文件中。 核心代码:/下载服务器端模
24、版文件JFileChooser chooser = new JFileChooser();FileNameExtensionFilter filter = new FileNameExtensionFilter(*.xls,xls);chooser.setFileFilter(filter);chooser.setDialogTitle(下载模版);Calendar c=Calendar.getInstance();/获得系统当前日期String strDate=c.get(Calendar.YEAR)+(c.get(Calendar.MONTH)+1)+c.get(Calendar.DATE
25、)+c.get(Calendar.HOUR)+c.get(Calendar.MINUTE)+c.get(Calendar.SECOND);chooser.setSelectedFile(new File(通信记录模版+strDate+.xls); /设置默认文件名int returnVal = chooser.showDialog(getParent(), 保存文件);if(returnVal = JFileChooser.APPROVE_OPTION) filename = chooser.getSelectedFile().toString();/获取路径 if(filename.inde
26、xOf(.)=0) ExportData.exportExcel(filename, cVector); JOptionPane.showMessageDialog( null, 数据导出成功!, 通讯设录导出, JOptionPane.INFORMATION_MESSAGE ); return;else JOptionPane.showMessageDialog( null, 您还没同学通讯记录!, 通讯设录导出, JOptionPane.INFORMATION_MESSAGE ); return;4.3.4 导出Text功能描述:用户选择保存位置及文件名,系统合法性检查,提示相应的信息,系统把数据库中的信息抽取出来,保存到创建(在客户端)text文件中。核心代码:ExportData.exportText(filename,cVector);4.4.操作管理模块4.4.1 增加通信记录功能描述:通过用户输入相应的信息,系统进行有效性检查,提示相应信息,合法后进行数据库插入操作。 核心代码:Classmate classmate=new Classmate(user.getU_id(),name,sex, age,integrity,tel,qq,email,memo);cVector.add(classmate);if(classmat