通信录管理系统报告.docx

上传人:b****0 文档编号:17465483 上传时间:2023-07-25 格式:DOCX 页数:29 大小:417.27KB
下载 相关 举报
通信录管理系统报告.docx_第1页
第1页 / 共29页
通信录管理系统报告.docx_第2页
第2页 / 共29页
通信录管理系统报告.docx_第3页
第3页 / 共29页
通信录管理系统报告.docx_第4页
第4页 / 共29页
通信录管理系统报告.docx_第5页
第5页 / 共29页
通信录管理系统报告.docx_第6页
第6页 / 共29页
通信录管理系统报告.docx_第7页
第7页 / 共29页
通信录管理系统报告.docx_第8页
第8页 / 共29页
通信录管理系统报告.docx_第9页
第9页 / 共29页
通信录管理系统报告.docx_第10页
第10页 / 共29页
通信录管理系统报告.docx_第11页
第11页 / 共29页
通信录管理系统报告.docx_第12页
第12页 / 共29页
通信录管理系统报告.docx_第13页
第13页 / 共29页
通信录管理系统报告.docx_第14页
第14页 / 共29页
通信录管理系统报告.docx_第15页
第15页 / 共29页
通信录管理系统报告.docx_第16页
第16页 / 共29页
通信录管理系统报告.docx_第17页
第17页 / 共29页
通信录管理系统报告.docx_第18页
第18页 / 共29页
通信录管理系统报告.docx_第19页
第19页 / 共29页
通信录管理系统报告.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

通信录管理系统报告.docx

《通信录管理系统报告.docx》由会员分享,可在线阅读,更多相关《通信录管理系统报告.docx(29页珍藏版)》请在冰点文库上搜索。

通信录管理系统报告.docx

通信录管理系统报告

程序设计报告

题目:

信录管理系统告的设计

评分细则

评分项

优秀

良好

中等

遵守机房规章制度

上机时的表现

学习态度

程序准备情况

程序设计能力

团队合作精神

课题功能实现情况

算法设计合理性

用户界面设计

报告书写认真程度

内容详实程度

文字表达熟练程度

回答问题准确度

简短评语

评分等级

备注

评分等级有五种:

优秀、良好、中等、及格、不及格

通讯录管理系统

一、课题内容和要求

本课题是设计通信录管理系统。

从通信录的数据信息构成上,假设其有四项信息,数据类型均以字符串类型存储。

数据项:

姓名、地址、邮政编码、电话号码

数据类型:

均为String类

数据存储结构:

单链表结合文本文件

实现功能:

数据项存取、显示、删除记录、查询记录等功能。

功能细则:

增加功能:

通讯录文件中,当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;

显示功能:

可显示通讯录中所有联系人;

查询功能:

输入某个人的姓名时,可以查询联系人相关信息;

修改功能:

输入某个人的姓名时,可对此人在通讯录中的相应数据进行修改;

删除功能:

输入某个人的姓名时,可对此人在通讯录中的相应数据进行删除。

主界面提供菜单选择的方法选择实现某一功能,一次运行程序能进行多次选择执行不同的功能。

二、需求分析

本程序设计在Javaproject(H10000724)内共有两个类。

Linklist类:

实现了单链表的存储结构。

Fileimport类:

实现了主方法,以及各个功能的方法。

(对于主方法起名Fileimport表示抱歉,初衷只是想创建Import导入方法从文本文件向链表导入信息,后来思路改变,逐渐发展成主方法所在类)

主方法(publicstaticvoidmain(String[]args))为Switch-Case选择语句与do-while循环构成的菜单。

添加方法对应Addperson(),可以将新增联系人添加到链表的最后,当联系人重复则取消添加。

显示方法对应Display(),可以打印出所有联系人的信息。

搜索方法对应Search(),当输入联系人姓名时可以搜索相关信息。

修改方法对应Update(),当输入联系人姓名时,可以根据操作提示修改联系人信息。

删除方法对应Delete(),输入联系人姓名可以删除此人相关信息。

导入方法Import(),将源文件所在目录下文本文件中的信息导入到链表中。

导出方法Export(),将链表中的信息导出,存储在源文件所在目录下的文本文件中。

清空方法Clear(),将链表中的内容清空,便于下一次导入Import()。

三、概要设计

Linklist类

//此类构造链表类,数据域由Group类构成,包含Name,Number,Mailcode,和Address四个成员.

//地址域由Linknode类构成.

publicclassLinklist{

publicstaticclassGroup{

Group类中包含四种联系人信息

//以下为Group的构造方法

publicGroup(Stringnewname,Stringnewnumber,Stringnewmail,Stringnewadress){

}

publicstaticclassLinknode{

}

//以下为Linknode的构造方法

publicLinknode(Groupnewperson,Linknodenewlink){

}

//四种对Linknode的数据域和地址域的操作方法定义

publicvoidsetGroup(Groupnewperson){

}

publicGroupgetGroup(){

}

publicvoidsetlink(Linknodenewlink){

}

publicLinknodegetlink(){

}

 

Fileimport类(流程图如上图)

此类包含程序运行各种方法和主函数入

Fileimport类各方法算法设计:

首先,要创建数据存储对象---单链表,这里声明了Start和Last两个节点,分别指向链表的头和尾。

主方法采用了循环和Switch-case语句的形式,采用菜单方式工作。

Export()方法

程序创建了一个源文件所在路径的TXT文件,user1.txt。

但是因为每次链表操作后数据都有变化,所以我们先写入一个空字符串,清空原来的文本信息,然后使用File类和BufferedWriter类从链表中向文件写入信息,以姓名,号码,邮编,地址的顺序各占一行写入,一个联系人信息完成后录入一个“*”字符作为结尾,录入原因在Import()中解释。

Import()方法

该方法就是从Export()创建的user1.txt中读取数据导入链表中。

由于文本文件中每四行存储一个联系人信息,且每行都是不同信息,所以在对Group类中的变量进行初始化时使用了循环和Switch-Case语句保证录入顺序不会错乱,并且为保证录入信息和所存储的节点一致,每个联系人结束后有一个“*”字符,它并不录入,而是起到调节循环的作用。

Clear()方法

因为每次菜单都会循环,上一次的链表中的信息会阻碍Import方法的导入,导致信息重复,所以定义清空链表的方法。

Addperson()方法

增加联系人在链表最后,先比较姓名如果姓名重复,在比较后会取消增加。

Searchperson()方法

就是查找所输入的联系人姓名,打印其所有信息。

如果不存在联系人,输出不存在。

Display()方法

对已经初始化好的链表进行遍历,并打印出所有信息。

Delete()方法

单链表的基本操作,如果不存在联系人,输出不存在。

Update()方法

在定位所要操作的联系人后,采用Switch-case语句选择所要修改的项目,用Group类所提供的方法给所要修改的信息赋值。

四、源程序代码

Linklist类

//此类构造链表类,数据域由Group类构成,包含Name,Number,Mailcode,和Address四个成员.

//地址域由Linknode类构成.

publicclassLinklist{

publicstaticclassGroup{

publicStringName=null;

publicStringNumber=null;

publicStringMailcode=null;

publicStringAddress=null;

//以下为Group的构造方法

publicGroup(Stringnewname,Stringnewnumber,Stringnewmail,Stringnewadress){

Name=newname;

Number=newnumber;

Mailcode=newmail;

Address=newadress;

}

}

publicstaticclassLinknode{

publicGroupperson=null;

publicLinknodelink=null;

//以下为Linknode的构造方法

publicLinknode(Groupnewperson,Linknodenewlink){

person=newperson;

link=newlink;

}

//四种对Linknode的数据域和地址域的操作方法定义

publicvoidsetGroup(Groupnewperson){

person=newperson;

}

publicGroupgetGroup(){

returnperson;

}

publicvoidsetlink(Linknodenewlink){

link=newlink;

}

publicLinknodegetlink(){

returnlink;

}

}

}

Fileimport类

importjava.io.BufferedReader;

publicclassFileimport{

staticLinklist.Groupstartperson=newLinklist.Group(null,null,null,null);

staticLinklist.LinknodeStart=newLinklist.Linknode(startperson,null);

staticLinklist.Grouplastperson=newLinklist.Group(null,null,null,null);

staticLinklist.LinknodeLast=newLinklist.Linknode(lastperson,null);

publicstaticvoidmain(String[]args){

inti;

do{

System.out.println("欢迎使用H10000724通讯录系统");

System.out.println("==========================");

System.out.println("1---------------------添加");

System.out.println("2---------------------修改");

System.out.println("3---------------------搜索");

System.out.println("4---------------------显示");

System.out.println("5---------------------删除");

System.out.println("0---------------------退出");

FileimportDemo=newFileimport();

Scannerkeyboard=newScanner(System.in);

i=keyboard.nextInt();

switch(i){

case1:

{Demo.Import();

Demo.Addperson();

Demo.Export();

break;

}

case2:

{Demo.Import();

Demo.Update();

Demo.Export();

break;

}

case3:

{Demo.Import();

Demo.Searchperson();

break;

}

case4:

{Demo.Import();

Demo.Display();

break;

}

case5:

{Demo.Import();

Demo.Delete();

Demo.Export();

break;

}

case0:

{

System.out.println("欢迎使用,谢谢~");

System.exit(0);

}

}

}

while(i!

=0);

}

//增加新联系人

publicvoidAddperson(){

if(Start.getlink()==null){

System.out.println("通讯录现在为空,准备添加");

System.out.println("请以姓名空格电话空格邮编空格地址回车键入方式录入。

");

Stringnewname1;

Stringnewnumber1;

Stringnewcode1;

Stringnewaddress1;

Scannerkeyboard=newScanner(System.in);

newname1=keyboard.next();

newnumber1=keyboard.next();

newcode1=keyboard.next();

newaddress1=keyboard.next();

Linklist.Groupnewperson1=newLinklist.Group(newname1,newnumber1,newcode1,newaddress1);

Linklist.Linknodenewnode1=newLinklist.Linknode(newperson1,null);

Start.setlink(newnode1);

Last=newnode1;

Last.setlink(null);

System.out.println("新增联系人录入成功!

");

}

else{

System.out.println("请以姓名空格电话空格邮编空格地址回车键入方式录入。

");

Stringnewname1;

Stringnewnumber1;

Stringnewcode1;

Stringnewaddress1;

Scannerkeyboard=newScanner(System.in);

newname1=keyboard.next();

newnumber1=keyboard.next();

newcode1=keyboard.next();

newaddress1=keyboard.next();

Linklist.Groupnewperson1=newLinklist.Group(newname1,newnumber1,newcode1,newaddress1);

Linklist.Linknodenewnode1=newLinklist.Linknode(newperson1,null);

Linklist.Linknodecurrentnode=Start.getlink();

do{

if((currentnode.getGroup().Name.equalsIgnoreCase(newname1))==true){

System.out.println("所添加的联系人已经存在,您可以使用修改功能更新原有信息");

break;

}

else{

currentnode=currentnode.getlink();

}

}

while(currentnode!

=null);

if(currentnode==null){

Last.setlink(newnode1);

Last=newnode1;

Last.setlink(null);

System.out.println("新增联系人录入成功!

");

}

}

}

//显示所有联系人

publicvoidDisplay(){

System.out.println("现在将联系人显示如下:

");

System.out.println("姓名电话邮编地址");

if(Start.getlink()==null){

Start=null;

System.out.println("通讯录为空,请选择添加,系统退出。

");

System.exit(0);}

Linklist.Linknodecurrentnode=Start.getlink();

while(currentnode!

=null){

System.out.print(currentnode.getGroup().Name+"");

System.out.print(currentnode.getGroup().Number+"");

System.out.print(currentnode.getGroup().Mailcode+"");

System.out.println(currentnode.getGroup().Address);

currentnode=currentnode.getlink();

}

}

//搜索联系人信息

publicvoidSearchperson(){

if(Start.getlink()==null){

Start=null;

System.out.println("通讯录为空,请选择添加,系统退出。

");

System.exit(0);}

System.out.println("请录入待查找人姓名,回车键结束");

Stringtarget;

Scannerkeyboard=newScanner(System.in);

target=keyboard.next();

Linklist.Linknodecurrentnode=Start.getlink();

do{

if((currentnode.getGroup().Name.equalsIgnoreCase(target))==true){

System.out.println("姓名电话邮编地址");

System.out.print(currentnode.getGroup().Name+"");

System.out.print((currentnode.getGroup().Number)+"");

System.out.print(currentnode.getGroup().Mailcode+"");

System.out.println(currentnode.getGroup().Address);

break;

}

else{

currentnode=currentnode.getlink();

}

}

while(currentnode!

=null);

if(currentnode==null){

System.out.println("联系人还未被存储,使用添加功能添加新联系人");

}

}

//修改联系人信息

publicvoidUpdate(){

if(Start.getlink()==null){

Start=null;

System.out.println("通讯录为空,请选择添加,系统退出。

");

System.exit(0);}

System.out.println("请输入要更新联系人姓名,以回车结束");

Stringtarget;

Scannerkeyboard=newScanner(System.in);

target=keyboard.next();

Linklist.Linknodecurrentnode=Start.getlink();

do{

if((currentnode.getGroup().Name.equalsIgnoreCase(target))==true){

System.out.println("更新联系人确定,准备接收更新信息");

System.out.println("1-----姓名");

System.out.println("2-----电话");

System.out.println("3-----邮编");

System.out.println("4-----地址");

inti;

i=keyboard.nextInt();

switch(i){

case1:

{

Stringnewname;

System.out.println("请输入新姓名,回车键结束");

newname=keyboard.next();

currentnode.getGroup().Name=newname;

System.out.println("修改成功!

");

break;}

case2:

{

Stringnewnumber;

System.out.println("请输入新号码,回车键结束");

newnumber=keyboard.next();

currentnode.getGroup().Number=newnumber;

System.out.println("修改成功!

");

break;

}

case3:

{

Stringnewmail;

System.out.println("请输入新邮编,回车键结束");

newmail=keyboard.next();

currentnode.getGroup().Mailcode=newmail;

System.out.println("修改成功!

");

break;

}

case4:

{

Stringnewadress;

System.out.println("请输入新地址,回车键结束");

newadress=keyboard.next();

currentnode.getGroup().Address=newadress;

System.out.println("修改成功!

");

break;

}

}

break;

}

else

currentnode=currentnode.getlink();

}

while(currentnode!

=null);

if(currentnode==null){

System.out.println("更新联系人还未被存储,请使用添加功能添加");

}

}

//删除联系人信息

publicvoidDelete(){

if(Start.getlink()==null){

Start=null;

System.out.println("通讯录为空,请选择添加,系统退出。

");

System.exit(0);

}

else{

System.out.println("请输入你要删除联系人姓名,回车键结束");

Scannerkeyboard=newScanner(System.in);

Stringtarget;

target=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2