JAVA课程设计(论文)通讯录系统程序设计.doc
《JAVA课程设计(论文)通讯录系统程序设计.doc》由会员分享,可在线阅读,更多相关《JAVA课程设计(论文)通讯录系统程序设计.doc(23页珍藏版)》请在三一文库上搜索。
1、程序设计报告题 目:通信录管理系统 专 业 学 生 姓 名 班 级 学 号 指 导 教 师 指 导 单 位 计算机学院软件教学中心日 期 评 分 细 则评分项优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简 短 评 语教师签名: 评分等级备注评分等级有五种:优秀、良好、中等、及格、不及格通讯录管理系统一、 课题内容和要求本课题是设计通信录管理系统。从通信录的数据信息构成上,假设其有四项信息,数据类型均以字符串类型存储。数据项:姓名、地址、邮政编码、电话号码
2、数据类型:均为String类数据存储结构:单链表结合文本文件实现功能:数据项存取、显示、删除记录、查询记录等功能。功能细则:增加功能:通讯录文件中,当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入; 显示功能:可显示通讯录中所有联系人; 查询功能:输入某个人的姓名时,可以查询联系人相关信息;修改功能:输入某个人的姓名时,可对此人在通讯录中的相应数据进行修改;删除功能:输入某个人的姓名时,可对此人在通讯录中的相应数据进行删除。主界面提供菜单选择的方法选择实现某一功能,一次运行程序能进行多次选择执行不同的功能。二、 需求分析本程序设计在Java project(H10000724)内共
3、有两个类。Linklist类:实现了单链表的存储结构。Fileimport类:实现了主方法,以及各个功能的方法。(对于主方法起名Fileimport表示抱歉,初衷只是想创建Import导入方法从文本文件向链表导入信息,后来思路改变,逐渐发展成主方法所在类)主方法(public static void main(String args))为Switch-Case选择语句与do-while循环构成的菜单。添加方法对应Addperson(),可以将新增联系人添加到链表的最后,当联系人重复则取消添加。显示方法对应Display(),可以打印出所有联系人的信息。搜索方法对应Search(),当输入联系人
4、姓名时可以搜索相关信息。修改方法对应Update(),当输入联系人姓名时,可以根据操作提示修改联系人信息。删除方法对应Delete(),输入联系人姓名可以删除此人相关信息。导入方法Import(),将源文件所在目录下文本文件中的信息导入到链表中。导出方法Export(),将链表中的信息导出,存储在源文件所在目录下的文本文件中。清空方法Clear(),将链表中的内容清空,便于下一次导入Import()。三、 概要设计 Linklist 类/此类构造链表类,数据域由Group类构成,包含Name,Number,Mailcode,和Address四个成员./地址域由Linknode类构成.publi
5、c class Linklist public static class Group )Group类中包含四种联系人信息/以下为Group的构造方法 public Group(String newname,String newnumber,String newmail, String newadress) public static class Linknode /以下为Linknode的构造方法 public Linknode(Group newperson, Linknode newlink) /四种对Linknode的数据域和地址域的操作方法定义 public void setGroup
6、(Group newperson) public Group getGroup() public void setlink(Linknode newlink) public Linknode getlink() 开始3对应调用搜索方法4对应调用显示方法5对应调用删除方法1对应调用添加方法2对应调用修改方法键入想要操作所对应的值判断是否为0N欢迎使用,结束Y循环Fileimport 类(流程图如上图)此类包含程序运行各种方法和主函数入Fileimport类各方法算法设计:首先,要创建数据存储对象-单链表,这里声明了Start和Last两个节点,分别指向链表的头和尾。主方法采用了循环和Switch
7、-case语句的形式,采用菜单方式工作。Export()方法程序创建了一个源文件所在路径的TXT文件,user1.txt。但是因为每次链表操作后数据都有变化,所以我们先写入一个空字符串,清空原来的文本信息,然后使用File类和BufferedWriter类从链表中向文件写入信息,以姓名,号码,邮编,地址的顺序各占一行写入,一个联系人信息完成后录入一个“*”字符作为结尾,录入原因在Import()中解释。Import()方法该方法就是从Export()创建的user1.txt中读取数据导入链表中。由于文本文件中每四行存储一个联系人信息,且每行都是不同信息,所以在对Group类中的变量进行初始化时
8、使用了循环和Switch-Case语句保证录入顺序不会错乱,并且为保证录入信息和所存储的节点一致,每个联系人结束后有一个“*”字符,它并不录入,而是起到调节循环的作用。Clear()方法因为每次菜单都会循环,上一次的链表中的信息会阻碍Import方法的导入,导致信息重复,所以定义清空链表的方法。Addperson()方法增加联系人在链表最后,先比较姓名如果姓名重复,在比较后会取消增加。Searchperson()方法就是查找所输入的联系人姓名,打印其所有信息。如果不存在联系人,输出不存在。Display()方法对已经初始化好的链表进行遍历,并打印出所有信息。Delete()方法单链表的基本操作
9、,如果不存在联系人,输出不存在。Update()方法在定位所要操作的联系人后,采用Switch-case语句选择所要修改的项目,用Group类所提供的方法给所要修改的信息赋值。四、 源程序代码Linklist 类/此类构造链表类,数据域由Group类构成,包含Name,Number,Mailcode,和Address四个成员./地址域由Linknode类构成.public class Linklist public static class Group public String Name=null; public String Number=null; public String Mailc
10、ode=null; public String Address=null;/以下为Group的构造方法 public Group(String newname,String newnumber,String newmail, String newadress) Name=newname; Number=newnumber; Mailcode=newmail; Address=newadress; public static class Linknode public Group person=null; public Linknode link=null;/以下为Linknode的构造方法 p
11、ublic Linknode(Group newperson, Linknode newlink) person=newperson; link=newlink; /四种对Linknode的数据域和地址域的操作方法定义 public void setGroup(Group newperson) person=newperson; public Group getGroup() return person; public void setlink(Linknode newlink) link=newlink; public Linknode getlink() return link; File
12、import 类import java.io.BufferedReader;public class Fileimport static Linklist.Group startperson=new Linklist.Group(null, null, null, null);static Linklist.Linknode Start=new Linklist.Linknode(startperson, null);static Linklist.Group lastperson=new Linklist.Group(null, null, null, null);static Linkli
13、st.Linknode Last=new Linklist.Linknode(lastperson, null);public static void main(String args) int i;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-删除); Syst
14、em.out.println(0-退出); Fileimport Demo=new Fileimport(); Scanner keyboard=new Scanner(System.in); i=keyboard.nextInt(); switch(i) case 1: Demo.Import(); Demo.Addperson(); Demo.Export(); break; case 2: Demo.Import(); Demo.Update(); Demo.Export(); break; case 3:Demo.Import(); Demo.Searchperson(); break
15、; case 4:Demo.Import(); Demo.Display(); break; case 5:Demo.Import(); Demo.Delete(); Demo.Export(); break; case 0: System.out.println(欢迎使用,谢谢); System.exit(0); while(i!=0);/增加新联系人public void Addperson()if(Start.getlink()=null)System.out.println(通讯录现在为空,准备添加);System.out.println(请以姓名 空格 电话 空格 邮编 空格 地址
16、回车键入方式录入。);String newname1; String newnumber1; String newcode1; String newaddress1; Scanner keyboard=new Scanner(System.in); newname1=keyboard.next(); newnumber1=keyboard.next(); newcode1=keyboard.next(); newaddress1=keyboard.next(); Linklist.Group newperson1=new Linklist.Group(newname1, newnumber1,
17、newcode1,newaddress1); Linklist.Linknode newnode1 = new Linklist.Linknode(newperson1, null);Start.setlink(newnode1);Last=newnode1;Last.setlink(null);System.out.println(新增联系人录入成功!);elseSystem.out.println(请以姓名 空格 电话 空格 邮编 空格 地址 回车键入方式录入。);String newname1; String newnumber1; String newcode1; String new
18、address1; Scanner keyboard=new Scanner(System.in); newname1=keyboard.next(); newnumber1=keyboard.next(); newcode1=keyboard.next(); newaddress1=keyboard.next(); Linklist.Group newperson1=new Linklist.Group(newname1, newnumber1,newcode1,newaddress1); Linklist.Linknode newnode1 = new Linklist.Linknode(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 课程设计 论文 通讯录 系统 程序设计
链接地址:https://www.31doc.com/p-10386118.html