190132向栋才《Java程序设计》课程设计报告.docx
- 文档编号:24710732
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:22
- 大小:134.92KB
190132向栋才《Java程序设计》课程设计报告.docx
《190132向栋才《Java程序设计》课程设计报告.docx》由会员分享,可在线阅读,更多相关《190132向栋才《Java程序设计》课程设计报告.docx(22页珍藏版)》请在冰豆网上搜索。
190132向栋才《Java程序设计》课程设计报告
武汉工商学院
项目名称:
Java手机通讯录系统
学生姓名:
向栋才
学号:
1203090132
班级:
12计科本1
指导教师:
喻晓陈涛
2014年5月27日
目录
1.选题的背景1
1.1国内外选题现状1
1.2开发技术概述1
1.3系统流程分析2
2.功能设计3
2.1从技术角度分析实现的功能3
2.2从系统角度分析实现的功能4
3.详细设计4
3.1界面设计4
3.2关键代码说明9
4.系统测试18
总结19
参考文献20
1.选题的背景
1.1国内外选题现状
随着计算机科学技术的飞速发展,人们的通讯方式也发生了翻天覆地的变化。
以前的烽火台,信鸽,骑马等通信方式完全退出了历史舞台,手机通讯成为了现代人通信的主要方式,因此,设计一个好的手机通讯录软件能够及时更新和管理自己的联系人资料。
目前国内外在这方面外做的比较好的主要有谷歌,360,搜狗。
我选择手机通讯录这个课题主要是为了锻炼自己的实践动手能力,加上自己对手机软件的浓厚兴趣。
我的这个系统可以实现一个简易的手机通讯录功能,优点包括:
在编辑状态下含有添加,查询,修改,删除,排序功能;在信息显示的状态下可以按照分组(包括同学,亲人,朋友,同事,全部)显示;但也还有待完善的地方:
如果输入两个联系人的姓名相同,在添加第二个联系人时不会弹出“已有该联系人”的提示,而是直接按照两个不一样的联系人处理;在查找、修改、删除联系人的时候只能通过姓名来实现,方式比较单一。
1.2开发技术概述
1.本系统使用的技术概述
(1)图形用户界面
本系统用到了图形用户界面的知识,包括java中AWT包和Swing包中的相关知识:
主要用到了窗口,面板,对话框,按钮,标签,菜单,文本框,文本区,密码框,容器,布局管理,事件处理器(监听器)以及颜色字体的设置和系统自带方法等,使得界面比较整齐。
(2)输入输出流简介
在该系统中必须要不断管理联系人的资料,因此必定会用到文件中的字符读写(Filewriter和FileReader),文件缓存(BufferReader,BufferedWriter)以及文件的关闭等知识。
(3)其他知识
在该系统还用到了以下知识:
try-catch异常处理,if条件分支语句,字符串的处理,数组排序等。
2.系统测试环境
a.被测试软件系统的名称
课程设计项目——Java手机通讯录
b.系统任务提出者
喻晓、陈涛老师
c.系统开发者
12801班:
向栋才
d.系统用户及安装此软件的计算中心
3-104机房、1-710机房、1-709机房
e.测试环境与实际运行环境之间的差异以及这些差异对测试结果的影响
测试环境:
WindowsXP、Windows7、Windows8、Windows8.1、JDK1.6、JDK1.7。
1.3系统流程分析
图1-1系统流程图
该系统流程图包括整个系统总体流程,当用户进入界面后,可以直接选择
相应的功能选项进行相应的操作。
2.功能设计
2.1从技术角度分析实现的功能
(1)图形用户界面设计中的功能
表2-1控件对象表
序号
功能内容
控件
对象名
备注
1.
Input
JMenuItem
Edit1
录入
2.
Research
JMenuItem
Edit2
查找
3.
revise
JMenuItem
Edit4
修改
4.
delete
JMenuItem
Edit3
删除
5.
sort
JMenuItem
Edit5
排序
(2)文件操作设计中的功能
表2-2文件对象表
序号
文件内容
类名
类对象名
备注
1
文件读
FileReader
file
2
读缓冲流
BufferedReader
in
3
文件写
FileWriter
fileWriter
4
写缓冲流
BufferedWriter
out
2.2从系统角度分析实现的功能
图2-1系统功能图
该图是手机通讯录系统的总体功能图,主要功能有编辑和显示两个模块,其中编辑下拉菜单中包括添加、查找、修改、删除、排序功能,信息显示部分包括分组显示信息。
用户可以直接在“edit”菜单中选择相应的功能编辑,编辑完成可以继续选择其他功能编辑也可以选在“show”菜单中的选项进行信息显示浏览。
3.详细设计
3.1界面设计
图3-1用户进入界面首图
这是用户进入系统界面的窗口显示图。
图3-2添加联系人界面
当用户点击用户界面的添加下拉菜单的时候就会显示该信息框,用户即可填写相应的信息,添加完成,点击按钮“OK”即可保存。
图3-3查找联系人界面
该界面是联系人查找的界面,当选择下拉菜单的“search”选项时就会显示该界面,然后在文本框中输入你要查找的联系人。
图3-4修改联系人界面
该界面是联系人修改的界面,当选择下拉菜单的“revise”选项时就会显示该界面,然后在文本框中输入你要修改的联系人。
图3-5删除联系人界面
该界面是联系人删除的界面,当选择下拉菜单的“delete”选项时就会显示该界面,然后在文本框中输入你要删除的联系人。
图3-6全体人员信息显示界面
该界面是全体人员信息显示的界面,但选择下拉菜单的“all”选项时就会显示该信息显示界面。
图3-7按照同学分组信息显示界面
该界面是按照同学分组的信息显示的界面,但选择下拉菜单的“student”选项时就会显示该信息显示界面。
图3-8按照同事分组信息显示界面
该界面是按照同事分组的信息显示的界面,但选择下拉菜单的“colleague”选项时就会显示该信息显示界面。
图3-9按照朋友分组信息显示界面
该界面是按照朋友组别的信息显示的界面,但选择下拉菜单的“friend”选项时就会显示该信息显示界面。
3.2关键代码说明
//监听同学
show1.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
newPrint("student",1);
}
});
//监听同事
show2.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
newPrint("colleague",1);
}
});
//监听朋友
show3.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
newPrint("friend",1);
}
});
//监听亲戚
show4.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
newPrint("relative",1);
}
});
//监听全体人员
show5.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
newPrint("all",0);
}
});
}
//排序
if(n==2)
try
{inti,j,k;
String[]all;
all=newString[1000];
BufferedReaderread=newBufferedReader(newFileReader("D:
\\AddressBook.txt"));
area.append("Name"+'\t'+"Group"+'\t'+"Birthday"+'\t'+"Phone"+'\t'+"Email"+'\t'+"Other"+'\n');
intz=1,count=0;
while(z==1){
for(i=0;i<1000;i++){
Stringstr=read.readLine();
if(str!
=null)
{all[i]=str;count++;}
elsez=0;
}
}
String[]bll;
bll=newString[count];
for(i=0;i bll[i]=all[i]; getSortOfChinese(bll); for(i=0;i area.append(bll[i]+'\n'); read.close(); }catch(FileNotFoundExceptione1){ e1.printStackTrace(); }catch(IOExceptione2){ e2.printStackTrace(); } //删除代码 if(n==3){ certain.addActionListener(newActionListener() { publicvoidactionPerformed(ActionEvente) { try{ Filefile=newFile("D: \\AddressBook.txt"); Scannerfind=newScanner(file); FileWriterfile1=newFileWriter("D: \\AddressBook.txt",true); PrintWriterwrite=newPrintWriter(file1); while(find.hasNext()){ Strings=find.next(); if(! (s.equals(Tname.getText()))){ write.print(s+'\t'); write.print(find.next()+'\t'); write.print(find.next()+''); write.print(find.next()+''); write.print(find.next()+'\t'); write.print(find.next()+'\t'); write.print(find.next()+'\t'); write.println(find.next()); } else{ find.next();find.next();find.next();find.next(); find.next();find.next();find.next(); } } //file.close(); find.close(); file.delete(); write.close(); file1.close(); Filefile2=newFile("D: \\AddressBook1.txt"); file2.renameTo(newFile("D: \\AddressBook.txt")); JOptionPane.showMessageDialog(null,"deletesuccess", "theresultofdelete",JOptionPane.INFORMATION_MESSAGE); }catch(FileNotFoundExceptione1){ //TODOAuto-generatedcatchblock //e1.printStackTrace(); JOptionPane.showMessageDialog(null,"Thefilewasnotfound"); }catch(IOExceptione2){ //TODOAuto-generatedcatchblock //e2.printStackTrace(); System.out.print("Thepeoplewasnotfound"); } } }); } //给按钮"OK"设置监听器 certain.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente)//用匿名内部类实现监听器 { if(Tname.getText().equals(""))//姓名录入为空 JOptionPane.showMessageDialog(null,"Failureoftheinput,namemustfillout! ",//使用一个弹出窗口信息提示框 "theresultsofinput",JOptionPane.INFORMATION_MESSAGE); else{ try{ FileWriterAddressBook=newFileWriter("k: \\MobileAddressBook.txt",true);//写入字符位置 PrintWriteradd=newPrintWriter(AddressBook);//直接转换为系统默认编码下对应的字符输出 Strings1,s2,s3,s4; //定义group和birthday的默认显示为“无” if(Tname.getText().equals(""))s1="无";elses1=Tname.getText(); if(Tphone.getText().equals(""))s2="无";elses2=Tphone.getText(); if(Temail.getText().equals(""))s3="无";elses3=Temail.getText(); if(Tother.getText().equals(""))s4="无";elses4=Tother.getText(); //添加默认显示“无” add.println(s1+'\t'+Cgroup.getSelectedItem()+'\t'+Cbirthyear.getSelectedItem()+ ''+Cbirthmonth.getSelectedItem()+''+Cbirthday.getSelectedItem()+ '\t'+s2+'\t'+s3+'\t'+s4); add.close(); AddressBook.close();//关闭通讯录 z=1;//设置以为标志位 }catch(IOExceptione1){ e1.printStackTrace();//输出异常信息 } if(y==0){ JOptionPane.showMessageDialog(null,"inputsuccess", "theresultofinput",JOptionPane.INFORMATION_MESSAGE); } else{ JOptionPane.showMessageDialog(null,"revisesucces", "theresultofrevise",JOptionPane.INFORMATION_MESSAGE); } //文本框为空 Tname.setText(""); Tphone.setText(""); Temail.setText(""); Tother.setText(""); } } }); //给按钮“cannel”设置监听器 cancel.addActionListener(newActionListener() { publicvoidactionPerformed(ActionEvente)//用匿名内部类实现监听器 { frame.dispose(); z=0; } }); //录入 classTypeinimplementsActionListener{ publicstaticintz=2; publicstaticinty=0; //设置标签 publicJLabelLname,Lgroup,Lbirthday,Lphone,Lemail,Lother,Lnote; publicJTextFieldTname=newJTextField(10),Tphone=newJTextField(15), Temail=newJTextField(15),Tother=newJTextField(15); publicChoiceCgroup=newChoice(),Cbirthyear=newChoice(),Cbirthmonth=newChoice(), Cbirthday=newChoice(); publicJButtoncertain,cancel; publicJFrameframe=newJFrame("Enterthecontactinformation"); publicTypein(){ //添加组别的下拉选项 Cgroup.addItem("none"); Cgroup.addItem("student"); Cgroup.addItem("colleague"); Cgroup.addItem("friend"); Cgroup.addItem("relative"); //信息录入方法 publicvoidtypein(){Containerc=frame.getContentPane(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(500,300); frame.setLayout(newGridLayout(5,1,5,5)); frame.setVisible(true); //录入面板的信息设置 Lname=newJLabel("Name: "); Lgroup=newJLabel("Group: "); Lbirthday=newJLabel("Birthday: "); Lphone=newJLabel("Phone: "); Lemail=newJLabel("Email: "); Lother=newJLabel("Other: "); Lnote=newJLabel("Tip: ”other“Caninputinformationyoudeemimportant"); certain=newJButton("OK"); cancel=newJButton("Cancel"); JPanelpane1=newJPanel(); JPanelpane2=newJPanel(); JPanelpane3=newJPanel(); JPanelpane4=newJPanel(); JPanelpane5=newJPanel(); //添加信息显示面板 c.add(pane1); c.add(pane2); c.add(pane3); c.add(pane4); c.add(pane5); //标签和对应的文本框放置 pane1.add(Lname); pane1.add(Tname); pane1.add(Lgroup); pane1.add(Cgroup); pane2.add(Lbirthday); pane2.add(Cbirthyear); pane2.add(Cbirthmonth); pane2.add(Cbirthday); pane2.add(Lphone); pane2.add(Tphone); pane3.add(Lemail); pane3.add(Temail); pane3.add(Lother); pane3.add(Tother); pane4.add(Lnote); 4.系统测试 本系统在每完成一个功能后,都会有一个弹出对话框给出信息提示,如果操作正确会弹出“操作成功”弹出框提示,如果操作不当,系统不会进入下一步,会让你选择重新输入。 输入完毕,可以直接关闭窗口或者点击“取消”按钮返回。 同时,该系统也进行了修改前和修改后的对比测试,修改前程序不完整,占用内存大,修改后程序很快,结果正确。 图4-1信息录入成功界面 联系人信息录入成功,弹出该提示对话框。 图4-2信息录入失败界面 联系人信息录入失败,弹出该提示对话框。 总结 经过系统测试,“Java手机通讯录系统”实现了基本手机通讯录的功能,达到了设计目标;系统实现了手机通讯录的联系人编辑(联系人信息添加,查找,修改,删除,排序),信息显示(按分组显示),信息保存功能,该系统进一步完善可以增加以下功能: 查找联系人可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java程序设计 190132 Java 程序设计 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)