JAVA课程设计通讯录管理软件.docx
《JAVA课程设计通讯录管理软件.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计通讯录管理软件.docx(21页珍藏版)》请在冰豆网上搜索。
JAVA课程设计通讯录管理软件
长春大学
课程设计任务书
题目名称通讯录管理软件
院(系)计算机科学技术学院
课程名称Java程序设计
班级网络10406
学生姓名
指导教师
起止日期
课程设计任务书
技术参数)及要求
题目名称(包括主要
题目:
通讯录管理软件
要求:
(1)只能使用Java语言,采用面向对象方法进行设计,要求源程序要有适当的注释,使程序容易阅读。
(2)程序必须与数据库进行通信。
(3)系统必须是图形用户界面的形式并连接数据库。
(4)学生可根据自身情况酌情增加新功能(视情况可另外加分)。
设计内容及工作量
(1)具有新用户注册功能。
(2)具有注册用户登录功能。
(3)具有数据的录入功能。
(4)具有数据查询功能,可以实现查询全部信息和按条件执行查询。
(5)具有按条件删除数据功能。
(6)具有统计功能
主要参考资料
1)《Java语法及网络应用设计》,徐迎晓编著,清华大学出版社
2)《 ThinkinginJAVA(ThirdEdition)》,BruceEckel,机械工业出版社
3)《Java2核心技术(第6版)卷I:
基础知识》,CayS.Horstmann,GaryCornell,程峰等译,机械工业出版社
4)《Java2参考大全(第四版)》,[美]HerbertSchildt著,张玉清、吴浦峰、尚勇等译,清华大学出版社
进度计划表
阶段
日期
计划完成工作量
指导教师检查意见
备注
第1天
按要求设计数据库、页面(窗口、命令行菜单)设计
第2天
登录、注册和录入信息
第3天
按条件删除信息、
查询信息
第4天
程序调试、系统完善及撰写文档
第5天
答辩
设计总结:
考核成绩及评语
指导教师签字年月日
教研室意见
教研室主任签字年月日
长春大学
课程设计说明书
题目名称通讯录管理系统
院(系)计算机科学技术学院
专业(班级)网络10406
学生姓名
指导教师
起止日期
一、设计目的…………………………………………………………………2
二、功能介绍…………………………………………………………………2
三、程序流程…………………………………………………………………3
四、设计步骤…………………………………………………………………3
1.数据库表的设计………………………………………………………3
2.详细设计………………………………………………………………4
五、设计总结…………………………………………………………………7
六、程序清单…………………………………………………………………8
七、参考文献…………………………………………………………………13
一、设计目的
本课程设计是java语言学习中很重要的实践性环节之一,是在学习完java课程后进行的一次全面的综合练习旨在巩固和加深我们对java语言的基本知识的理解和掌握,掌握java语言编程和程序调试的基本技能,利用java语言进行基本的软件设计,掌握书写程序设计说明文档的能力,提高运用java语言解决实际问题的能力。
通过课程设计,提高我们理论联系实际解决实际问题的能力;也使提高对基于面向对象的理论,在进行系统设计过程中的诸多具体问题有感性的认识和深入的理解。
随着人们生活水平的提高,通讯工具在平常百姓家中已经是非常常见。
要记住所有的联系方式似乎有些困难,所以我们希望设计一个通讯录系统,记录所有的联系方式,并且能方便的查找,增加和删除,方便大家记录联系人。
二、功能介绍
(1)具有新用户注册功能。
(2)具有注册用户登录功能。
(3)具有数据的录入功能。
(4)具有数据查询功能,可以实现查询全部信息和按条件执行查询。
(5)具有按条件删除数据功能。
(6)具有统计功能
三、程序流程
注册新用户
登录
通讯录管理系统
系
统
管
理
用户数据增添功能
用户数据查询功能
用户数据删除功能
用户数据统计功能
全部查询
按条查询
退出系统
录入数据库
4.1数据库表的设计
(1)普通用户数据表的设计,如表1
表1普通用户数据表
列名
数据类型
长度
是否为空
username(key)
varchar
20
否
password
char
10
是
(2)记录信息数据表,如表2
表2记录信息数据表
列名
数据类型
长度
是否为空
name(key)
varchar
20
否
sex
char
20
是
birthday
datatime
8
是
Email
char
20
是
tel
char
8
否
4.2详细设计
1、登录功能界面
图1-1登陆功能展示图
LoginAction类,封装的信息由密码和账户名,以及登录失败时抛出的异常方法。
Stringexecute()函数继承了Exception类,如果登录密码不匹配,则会抛出异常,提示Error登录失败。
在登录模块中有管理员用户和普通用户,管理员可以对系统中的信息添加,修改,删除等功能,普通用户只进行查找操作。
2、添加功能界面
图2-1添加功能展示图
LoginAction类继承ActionSuporrt类,封装有name,sex,birthday,email,tel属性,封装有成员函数set_name(),set_sex(),set_birthday(),set_email(),set_tel()用来添加各个属性值,提示操作失败信息用Stringexecute()函数抛出异常。
3、删除功能界面
图3-1删除功能展示图
DeleAction类继承ActionSuporrt类,get_name()方法用于得到所要删除的信息的主码。
封装的数据成员包括name,封装有isSuccess()函数,用于判断删除成功与否。
删除模块中,用户可以根据某一关键字或多个关键字进行删除,删除信息后会自动提示。
4、查询功能界面
图4-1查询功能展示图
FindAction类继承ActionSuporrt类的属性及方法,setInput()方法将输入的信息传递给FindAction类内的相应属性,getInput()方法用于返回输入值,封装的成员函数包括getlist()用于返回查询到的元组列表。
图5显示可以通过姓名,性别,出生日期,email地址对联系人进行查询。
5、统计功能界面
图5-1查询全部功能展示图
点击文件“编辑—查找全部”,则会弹出一个空白的查找结果界面,这是因为在程序设计中默认的是不显示所得的信息
然后点击“显示查询结果”,即可显示出全部查询结果。
如图4-19:
图5-2查询全部功能展示图
五、设计总结
通过这次课程设计我加深了对于java语言应用与实践之间的连接,能更好的使用java语言!
在小组成员的分工配合下,我们完成了题目。
只有通过合作,才能更高效率的完成任务。
实践非常的重要。
很多东西在理论层面是行的通的,但到实际中就行不通了。
所以要多实践,在不断的修改调试过程中巩固知识。
六、程序清单
//登录系统
packagecom.ibm.etp.addressbook.action;
importjava.util.HashMap;
importjava.util.List;
importcom.ibm.etp.addressbook.pojo.User;
importcom.ibm.etp.addressbook.service.LoginService;
importcom.opensymphony.xwork2.ActionSupport;
publicclassLoginActionextendsActionSupport{
privatestaticfinallongserialVersionUID=1L;
publicStringusername;
publicStringpassword;
privateStringmessage;
@Override
publicStringexecute()throwsException{
HashMap
Listlist=null;
System.out.println(username);
if(username==null||username.trim().length()==0){
result.put("success",false);
result.put("msg","login.username.empty");
}elseif(password==null||password.trim().length()==0){
result.put("success",false);
result.put("msg","login.password.empty");
}else{
LoginServicels=newLoginService();
list=ls.checkLogin(username);
}
if(list==null){
result.put("success",false);
result.put("msg","error.user.not.exist");
}elseif(list.get(0).getPassword().equals(password)){
result.put("success",true);
result.put("msg","login.success");
}else{
result.put("success",false);
result.put("msg","error.password.wrong");
}
if((Boolean)result.get("success")){
message=(String)result.get("msg");
return"success";
}else{
message=(String)result.get("msg");
return"error";
}
}
publicStringgetMessage(){
returnmessage;
}
publicvoidsetMessage(Stringmessage){
this.message=message;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
publicStringgetUsername(){
returnusername;
}
publicStringgetPassword(){
returnpassword;
}
}
//增加记录
packagecom.ibm.etp.addressbook.action;
importjava.util.HashMap;
importjava.util.List;
importcom.ibm.etp.addressbook.pojo.User;
importcom.ibm.etp.addressbook.service.LoginService;
importcom.opensymphony.xwork2.ActionSupport;
publicclassLoginActionextendsActionSupport{
privatestaticfinallongserialVersionUID=1L;
publicStringusername;
publicStringpassword;
privateStringmessage;
publicStringexecute()throwsException{
HashMapresult=newHashMap();
Listlist=null;
System.out.println(username);
if(username==null||username.trim().length()==0){
result.put("success",false);
result.put("msg","login.username.empty");
}elseif(password==null||password.trim().length()==0){
result.put("success",false);
result.put("msg","login.password.empty");
}else{
LoginServicels=newLoginService();
list=ls.checkLogin(username);
}
if(list==null){
result.put("success",false);
result.put("msg","error.user.not.exist");
}elseif(list.get(0).getPassword().equals(password)){
result.put("success",true);
result.put("msg","login.success");
}else{
result.put("success",false);
result.put("msg","error.password.wrong");
}
if((Boolean)result.get("success")){
message=(String)result.get("msg");
return"success";
}else{
message=(String)result.get("msg");
return"error";
}
}
publicStringgetMessage(){
returnmessage;
}
publicvoidsetMessage(Stringmessage){
this.message=message;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
publicStringgetUsername(){
returnusername;
}
publicStringgetPassword(){
returnpassword;
}
}
//删除记录
packagecom.ibm.etp.addressbook.action;
importjava.util.ArrayList;
importcom.ibm.etp.addressbook.pojo.Record;
importcom.ibm.etp.addressbook.service.DeleService;
importcom.opensymphony.xwork2.ActionSupport;
publicclassDeleActionextendsActionSupport{
privateintid[];
publicStringmessage;
privatebooleansuccess=true;
publicbooleanisSuccess(){
returnsuccess;
}
privateArrayListlist=newArrayList();
publicArrayListgetList(){
returnlist;
}
publicintgetId(inti){
returnid[i];
}
publicint[]getId(){
returnid;
}
publicvoidsetId(int[]id){
this.id=id;
}
publicStringgetMessage(){
returnmessage;
}
publicvoidsetMessage(Stringmessage){
this.message=message;
}
publicStringexecute()throwsException{
DeleServiceds=newDeleService();
list=ds.removeRecord(this);
try{
success=true;
returnSUCCESS;
}catch(Exceptione){
success=false;
returnERROR;
}
}
}
//修改记录
packagecom.ibm.etp.addressbook.action;
importcom.ibm.etp.addressbook.service.UpdateService;
importcom.opensymphony.xwork2.ActionSupport;
publicclassUpdateActionextendsActionSupport{
privateintid;
privateStringname;
privateStringphone;
privateStringemail;
privateStringbirthday;
privateStringsex;
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetPhone(){
returnphone;
}
publicvoidsetPhone(Stringphone){
this.phone=phone;
}
publicStringgetEmail(){
returnemail;
}
publicvoidsetEmail(Stringemail){
this.email=email;
}
publicStringgetBirthday(){
returnbirthday;
}
publicvoidsetBirthday(Stringbirthday){
this.birthday=birthday;
}
publicStringgetSex(){
returnsex;
}
publicvoidsetSex(Stringsex){
this.sex=sex;
}
publicStringexecute()throwsException{
UpdateServiceus=newUpdateService();
if(us.setRecord(this)!
=null)
returnSUCCESS;
else{
returnERROR;
}
}
}
//查找记录行
packagecom.ibm.etp.addressbook.action;
importjava.sql.SQLException;
importjava.util.List;
importcom.ibm.etp.addressbook.pojo.Record;
importcom.ibm.etp.addressbook.service.FindService;
importcom.opensymphony.xwork2.ActionSupport;
publicclassFindActionextendsActionSupport{
privateStringfield;
privateStringinput;
privateintsize;
privateStringsort;
privateListlist;
privatebooleansuccess=true;
publicbooleanisSuccess(){
returnsuccess;
}
publicListgetList(){
returnlist;
}
publicvoidsetList(Listlist){
this.list=list;
}
publicStringgetField(){
returnfield;
}
publicvoidsetField(Stringfield){
this.field=field;