课程设计Ⅳ课程设计说明书在线通讯录的开发学生姓名贾长辉学号1118042025班级计算机专升本1101班成绩指导教师任民宏数学与计算机科学学院2012年3月2日课程设计Ⅳ课程设计评阅书题目在线通讯录的开发学生姓名贾长辉学号1118042025指导教师评语及成绩指导教师签名:年月日答辩评语及成绩答辩教师签名:年月日教研室意见总成绩:室主任签名:年月日课程设计任务书2011—2012学年第2学期专业:计算机科学与技术学号:1118042025姓名:贾长辉课程设计名称:课程设计Ⅳ设计题目:在线通讯录的开发完成期限:自2012年2月20日至2012年3月2日共2周设计依据、要求及主要内容(可另加附页):系统采用C/S结构,用JAVA语言开发,后台数据库采用SQLServer2000。系统具有注册、登记、登录、浏览和后台管理功能。用户登录后,可通过登记功能将自己的通信信息加入到系统,浏览系统中的通信录信息。后台管理功能包括删除用户和删除通信录中的记录功能。贾长辉在本次课程设计中完成需求分析、系统设计、系统实现和测试。在课程设计过程中可参考以下文献:[1]齐治昌,谭庆平,宁洪.软件工程[M].北京:高等教育出版社,2004.[2]陈强.会当凌绝顶:java开发修行实录[M].北京:电子工业出版社,2011[3]黄明,梁旭,曹利超.Java信息系统设计与开发实例[M].北京:机械工业出版社,2005指导教师(签字):教研室主任(签字):批准日期:年月日摘要通讯工具在平常百姓家中已经是非常常见。于是,用Java语言开发这个后台带SQL2000数据库的强大通讯录。以实现我们对大量的人员的通信信息予以记录。以便我们使用方便。我们可以往这个通信录系统中添加数据,也可以对记录进行修改,删除。这样大大提高了我们的通信管理效率。关键词:通讯录;Java;SQL2000目录1课题描述..............................................................12设计过程.............................................................22.1软件结构........................................................22.2数据库设计......................................................22.2.1数据库概念结构设计.........................................22.2.2数据库逻辑结构设计.........................................32.2.3数据库物理结构设计.........................................32.3系统实现........................................................32.3.1建立数据库.................................................32.3.2登录界面...................................................42.3.3通讯记录界面...............................................52.3.4修改联系人界面.............................................62.3.5删除联系人界面.............................................72.3.6添加联系人记录界面.........................................83系统测试............................................................10总结..................................................................13参考文献..............................................................14第1页1、课题描述随着人们生活水平的提高,通讯工具在平常百姓家中已经是非常常见。有些家庭人员众多,有的家庭成员甚至有好几个联系方式,在这种情况下,要记住所有的联系方式似乎有些困难,所以我们希望设计一个家庭通讯录,记录所有家庭成员的联系方式,并且能方便的查找,增加和删除。本课题利用Java语言开发这个后台带SQL2000数据库的强大通讯录。开发工具:MyEclipse8.5;SQL2000第2页2.设计过程2.1软件结构图2.1程序流图2.2数据库设计2.2.1数据库概念结构设计采用自底而上的设计方法。先自顶向下地进行需求分析,对在线通讯录的需求进行逐步细化;然后再自底而上地设计概念结构,最终将各个局部应用的概念结构集合成为全局概念结构。通过对局部应用的选择,逐一设计出分E-R图,并对各个分E-R图进行合并,生成初步E-R图,消除不必要的系统冗余,可以得出以下在线通讯录系统E-R图。如图2.2所示。图2.2系统E-R图联系人姓名电话号码QQ号码邮箱号码用户用户名密码登录m1第3页2.2.2数据库逻辑结构设计将上E-R图转化为如下的关系模型,其中下划线为主码:联系人(姓名,电话号码,QQ号码,邮箱号码)用户(用户名,密码)对上面的关系模型进行优化设计,该系统模型属于3NF。2.2.3数据库物理结构设计(1)用户数据表的设计,如表2.1。表2.1用户数据表列名数据类型长度是否为空namenvarchar50否passWordnvarchar50否(2)记录信息数据表,如表2.2。表2.2记录信息数据表列名数据类型长度是否为空name(key)nvarchar50否tellNumbernvarchar50否qqNumbernvarchar50是mailnvarchar50是2.3系统实现2.3.1建立数据库在SQL2000中,创建数据库,如图2.3所示。图2.3线通讯录数据库第4页2.3.2登录界面登录界面,如图2.4所示。图2.4登录界面在登录界面中,用户可以输入正确的用户名,密码,从而进入通讯录。只有登录成功才可以浏览通讯录的信息,以及添加新的联系人,修改联系人等操作。主要代码如下:privatevoidokButtonActionPerformed(java.awt.event.ActionEventevt){//TODOaddyourhandlingcodehere:IStudentDaodao=newStudentDao();IUserDaouserDao=newUserDao();Stringname=nameField.getText().trim();Stringpassword=String.valueOf(passwordField.getPassword());IUseruser=newUser(name,password);booleanresult=false;try{result=userDao.isContain(user);if(result==false){JOptionPane.showConfirmDialog(null,账号或密码错误!,登录提示,JOptionPane.CLOSED_OPTION);passwordField.setText(null);}else{MainWindowmainWindow=newMainWindow(dao);mainWindow.setVisible(true);this.setVisible(false);第5页}}catch(Exceptione){JOptionPane.showMessageDialog(this,e.getMessage(),登录失败!,JOptionPane.ERROR_MESSAGE);}}2.3.3通讯记录界面通讯录界面,如图2.5所示。图2.5通讯记录界面在通讯录界面,用户可以浏览所有的联系记录。主要代码如下:publicMainWindow(IStudentDaodao){initComponents();setResizable(false);setLocationRelativeTo(this);this.dao=dao;updateView();}//更新视图privatevoidupdateView(){第6页ListStudentstudents=dao.getAllStudent();model=newDefaultTableModel();model.addColumn(姓名);model.addColumn(电话号码);model.addColumn(QQ号吗);model.addColumn(邮箱号码);for(IStudenteach:students)model.addRow(newObject[]{each.getName(),each.getTellNumber(),each.getQqNumber(),each.getMail()});table.setModel(model);setButtonEnabled(false);}2.3.4修改联系人界面修改界面,如图2.6所示。图2.6修改联系人界面用户可以根据需要修改信息,修改完毕后,点击确定按钮,修改后的信息将存入数据库。主要代码如下:publicModifyStudent(java.awt.Frameparent,booleanmodal,IStudentDaodao,IStudentoldStuedent){super(parent,modal);initComponents();setLocationRelativeTo(parent);第7页setResizable(false);this.dao=dao;this.oldStudent=oldStuedent;nameTextField.setText(oldStudent.getName());tellNumber.setText(String.valueOf(oldStudent.getTellNumber()));qqNumber.setText(String.valueOf(oldStuedent.getQqNumber()));mail.setText(String.valueOf(oldStuedent.getMail()));setVisible(true);}privatevoidokButtonActionPerformed(java.awt.event.ActionEventevt){Stringname=nameTextField.getText().trim();Stringtell=tellNumber.getText().trim();Stringqq=qqNumber.getText().trim();StringmailString=mail.getText().trim();IStudentoldStudent=newStudent(name,tell,qq,mailString);dao.update(oldStudent);setVisible(false);}2.3.5删除联系人界面删除界面,如图2.7所示。图2.7删除联系人界面用户可以根据自己的需求删除通讯录中无用的信息。选中要删除的行,点击删除按钮,单击第8页确定,根据提示确定删除,即可删除信息。主要代码如下:@SuppressWarnings(static-access)privatevoiddeleteButtonActionPerformed(java.awt.