《Java课程设计--学生通讯录.docx》由会员分享,可在线阅读,更多相关《Java课程设计--学生通讯录.docx(40页珍藏版)》请在优知文库上搜索。
1、第1章课题概述11.1 课题目的11.2 课题要求11 .2.1输入输出要求12 .2.2程序实现功能要求1第2章概要设计32.1 整个程序的模块结构及流程32.2 信息的存储方式32.3 3数据读取与数据初步处理42. 4各功能的设计思路描述42. 4.1显示全部功能43. 4.2修改功能44. 4.3添加功能45. 4.4删除功能56. 4.5查找功能57. 4.6排序功能5第3章程序功能的实现63. 1主界面的实现63.2主要功能模块的实现73. 2.1显示全部的实现74. 2.2修改的实现85. 2.3添加的实现146. 2.4删除的实现197. 2.5查找的实现268. 2.6排序的
2、实现30第4章调试及发现问题的解决32第5章程序测试及分析34第6章总结40参考文献41第1章课题概述本次JaVa课程设计题目是设计一个学生通讯录,可以进行显示全部、修改、添加、删除、查找、排序操作。1.1 课题目的通讯录是很普遍和实用的程序,它帮助人们记录大量信息,并供人们查找修改等。有了通讯录,人们可以更加快捷方便地查询到自己想要的人物信息。这就会节约人们很多时间,比起纸质的来说,这个更加高效。此学生通讯录用来记载每位同学的具体信息,如果当用户需要某位同学的信息的时候,可以通过查找迅速找到相关信息,也可以往其中不断添加新的学生。通过这些,来替自己管理学生信息,自然拥有很大的实际价值。1.2
3、 课题要求1.2. 1输入输出要求程序运行后应先输出一个图形界面菜单,其中有显示全部、修改、添加、删除、查找、排序功能来供用户选择,以便用户需求。用户在使用完一个功能后,可以返回到主界面,并且数据也在随时更新。用户在对通讯录进行添加、修改或是删除时,在实现完相应功能后,会保存到文件中,并在下次显示信息时有相应信息。当用户进行添加、修改或是删除时,在实现完相应功能后,会让文件中的信息立即更新,在不必重新运行程序的情况下,就可以即时显示最新信息。1.2.2程序实现功能要求显示全部功能需要显示所有已添加学生的信息,将文件中所保存的学生信息反序列化,然后将其以字符串的形式显示在文本域中。修改功能需要显
4、示出用户指定人物的信息,并允许用户对这些信息进行修改,在用户修改完毕后,能够将文件中相应人物的信息更新为修改后的信息,将原有的信息消除。添加功能需要显示一个包括姓名、性别、关系、电话、手机、地址、邮编、E-mail的信息添加项,并可以让用户逐一或者选择添加,在添加完成后将新的信息添加到文件中,并对其进行编号,即使程序重新启动也依然会显示相应信息。删除功能需要寻找到用户所指定的人物信息,并将其的所有信息在文件中移除。查找功能需要为用户提供两种查找方式,一种为按姓名查找,另一种为按关系查找,并且当用户根据提示进行相关操作后可以只显示出自己所需要的信息。排序功能需要实现将已有的人物信息,按照人物姓名
5、拼音字母的顺寻进行排序,并且将排序好的名字的信息按顺序显示出来。第2草概要设计2.1 整个程序的模块结构及流程根据课题要求,整个程序按功能可划分为显示全部、修改、添加、删除、查找、排序这六个主要模块。并在除显示全部和查找模块只有文件的读取外,其它四个模块都有文件的读取与写入模块,方便文件的及时更新。除了这六个模块外,为了让用户使用起来更加简单明确,还添加了一些提示性的对话框。并且还为每一个功能的窗口都提供了返回主界面的按钮,方便用户在不同功能之间来回使用。关ffl主菜总退出程序显示所将息关闭显示全部修改显示指定信息让用户修改显示多个信息添加项,让用户添加将用户指定的信录文件中消除显示用户指定的
6、信息将人名静音字母排序并显小信息图2-1整个程序各功能模块间的流程2.2 信息的存储方式用户在用完一系列功能后,不能让数据仅仅保存在内存中,在退出程序再重新打开查看时信息应该还在。这就需要将数据存在文件中,当用户再次查看时程序将会读取文件中的信息,这样就能保证数据的持久性。当完成添加、删除或修改功能后,需要更新数据,也就是在向文件中写入新信息。因为涉及到按姓名查找和按关系查找这两个功能,所以要采用HashMap这个类对信息进行存储。因为姓名和关系是索引,所以将这两项分别作为键,将具体信息分别作为这两个键的值。因为编辑序号以及排序功能的需要,还要将姓名存在AlTayLiSt中。如果直接用HaSh
7、MaP来在文本域中显示信息的话,会在重名的时候无法按顺序显示,所以还要用字符串对信息进行保存。最后将将这三类对象写入文件中,如此就完成了对于数据的更新和保存。2.3数据读取与数据初步处理当在使用某个功能时,程序会将文件中的数据读取。由于在写入文件时是按三种对象写的,所以在读取的时候也要一一对应,这样就可以将文件中的数据准确无误的读入内存,以备使用。用户输入的信息是字符串,并且窗口显示出的信息也同样是字符串,所以就要给HashMap和ArrayList用上泛型,也就是HaShMaPVStringXString和ArrayList,这样就可以避免在添加信息或是在类型转换的时候发生错误。2.4各功能
8、的设计思路描述2.4.1显小全部功能显示全部功能就是将所有文件中的学生信息一次性展示出来。因为实在文件中的数据,所以要先要有对文件进行读取的动作,之后将所读取出的信息的字符串显示在文本域中。如果在文件中没有任何人物信息,则需要在文本域中显示相应提示,告知用户这个通讯录为空。2.4.2修改功能修改功能的实质就是将就有的信息替换为新的信息,就是字符串内容的替换。首先,要读取文件数据,然后找到用户所想要改的人物信息,并将其显示在文本域中,然后用户根据自己的需求进行修改,如果没有此人,测显示查无此人。在修改结束后,将旧有的信息删除,将修改好的信息重新写入文件。2.4.3添加功能添加功能是所有功能的基础
9、,全都靠它来规范数据。首先,添加功能要在窗口中依次显示姓名、性别、关系、电话、手机、地址、邮编、E-mail这几项信息栏供用户来添加。并且当用户没有添加人名或关系时要有所提示。而性别和关系是指定的几项,来供用户进行选择。而对于E-mail的地址,邮箱类型时也会给用户进行选择,也可让用户自行填写。当用户完成添加之后,可以及时保存到文件中,并且会提示用户是否还要继续添加,是则返回删除界面,否则返回主界面。2 .4.4删除功能删除功能能在文件中消除用户指定的人物的信息。在删除界面,要提供给用户一个填写名字的文本域,然后程序根据所填写人名在文件中进行搜索,并将其删除。如果在文件中没有找到此人名,将会弹
10、出一个新窗口提示用户没有此人。当删除结束后,将会提示用户是否要继续删除,是则返回删除界面,否则返回主界面。3 .4.5查找功能查找功能是将用户想要的信息显示出来。查找功能分为按姓名查找和安关系查找方式。按姓名查找是用户输入一个人名,然后程序在文件中搜索,然后在文本域中显示相关信息。如果没有此人,则要提示用户查无此人。按关系查找是给用户三个选择项,分别是“同学”、“室友”、“老乡”。用户可以选一个或是多个关系,当用户选择完毕确定后,将在文本域中显示此关系下的所有人物信息。2. 4.6排序功能排序功能是将信息按指定顺序依次列出。在本程序中是按姓名的汉语拼音从a到Z依次显示。先将所有姓名按照此顺序排
11、好,然后再依次输出对应名字的信息。第3章程序功能的实现2.1 主界面的实现主界面有六个按钮,分别是显示全部、修改、添加、删除、查找、排序。中间是欢迎使用字样,为每个按钮添加监听器。当运行时,调用主方法就会出现主界面。主界面的主要代码如下:Filef=newFiIe(D:/MailLiSt.dat);publicMainFrmOMainf=newJFrame(学生通讯录);主窗口界面,在标题栏写有学生通讯录”字样对界面布局JPanelNjp=newJPanel();JPanelSjp=newJPaneK);分别在北区和南区添加JPancl组件以便于布置按钮Fontfo=newFont(黑体”,5
12、,50);JLabeljl=newJLabeI(欢迎使用,JLabcLCENTER);设置字体,在JLabel组件中心显示jl.setFont(fo);AlIbtn=newJButton(显示全部”);changebtn=newJBUttOn(修改”);addbtn=newJButton(添加”);dclbtn=newJButton(删除”);Serbtn=newJButton(查找”);SOrbtn=newJButton(排序);创建六个功能按钮Containerc=Mainf.getContentPane();BorderLayoutbl=newBorderLayOUt();将主界面设为B
13、OrderLayOUt布局Mainf.SetLayout(bl);Mainf.SetBounds(700,300,400,300);设置主界面出现位置和大小Njp.add(changcbtn);Njp.add(Allbtn);Njp.add(addbtn);Sjp.add(delbtn);Sjp.add(scrbtn);Sjp.add(sorbtn);c.add(Njp,blNORTH);c.add(jl,bl.CENTER);c.add(Sjp,bl.SOUTH);添加各组件AllbtnMonitorAllm=newAllbtnMonitor(Mainf,f);Allbtn.addActio
14、nListener(Allm);ChangebtnMonitorchangem=newChangebtnMonitor(Mainf,f);changebtn.addActionListener(changem);addbtnMonitoraddm=newaddbtnMonitor(Mainf,f);addbtn.addActionListener(addm);ClclbtnMonitordelm=newdelbtnMonitor(Mainf,f);dclbtn.addActionListener(delm);SerbtnMonitorserm=newSerbtnMonitor(Mainf,f)
15、;serbtn.addActionListener(serm);SorbtnMonitorsorm=newSorbtnMonitor(Mainf,f);sorbtn.addActionListener(sorm);添加点击监听器Mainf.SetDefaultcioscOperation(Mainf.EXITONCLOSE);Mainf.setVisible(true);)publicstaticvoidmain(Stringargs)newMainFrm();主方法,用于显示主界面)3. 2主要功能模块的实现3. 2.1显示全部的实现首先要构建一个子窗口,然后指定文件和主窗口。在显示全部界面中,添加一个文本域用于显示全部信息,最下方有一个返回键用于返回主界面。显示全部的主要代码如下:publicAllbtnMonitor(JFramejf,Eilef)用于指定此窗口的母窗口和使用文件this.jf=jf;this,f=f;)publicvoidac