版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
题目四D2H:设计一个学生信息管理系统,包括学生基本信息、成绩信息等。提供输入、编辑、删除、查询的操作界面。数据库类型自选。1、问题分析。由题意得,这是一道数据库类型的题目,需要实现插入,修改,删除,查询四个功能。确立数据的存储结构,采取二叉树进行存储数据,每个结点包含学生的姓名与学生的成绩。通过二叉查找树进行插入、删除和查询工作。二叉查找树的特性是左子树关键字均小于根的关键字,而右子树的关键字均大于根的关键字。因此加入某一关键字只要逐一比较,依据关键字的大小往右或者往左,便可找到关键字插入的位置。二叉查找树的删除,当删除某一结点时,若删除的是叶结点,则直接删除,假若删除的不是叶结点,则在左子树找到最大的结点或者在右子树找到最小的结点,取代将被删除的结点。二叉查找树的查询,决定关键字X是否在二叉查找树中,首先X先与根去比较,若X等于根表示找到,如果乂大于树根,则往右子树查找;否则,到左子树查找。由于一个结点包含学生的姓名与成绩,题目要求要求编辑功能,学生的成绩具有可变性,所以结点的关键字选取为学生的姓名。对二叉树的遍历,写入数据,采取先序遍历:先遍历树根,然后遍历左子树,再遍历右子树。2、设计方案。根据问题分析,设计程序:构造函数,使根结点为空,加载函数,将数据文件BinSearchTree.dat加载到程序中;定义载入与保存方法,结点的名字初始为空,学生成绩为0,由于BinSearchTree.Dat正常情况下能够使用,所以采取JAVA中对异常的处理方法。使用try-throw-catch组合替代if-else语句。定义一个search方法,用来搜索某个结点,定义一个结点,当此结点不为根结点时,如果目标结点小于此结点的关键字,向此结点的左子树搜索,否则向右子树搜索。定义一个search_re_r方法,用来搜索右子树的替代结点,当替代结点的不为空并且替代结点的左子树不为空时,使用替代结点的左子结点作为替代结点。定义一个search_re_1方法,用来搜索左子树替代结点,当替代结点不为空并且替代结点的右子树不为空时,使用替代结点的右子结点作为替代结点,定义一个search_p方法,用来搜索父节点,当结点小于父节点,向左搜索,直到搜索到位置,否则向右搜索。定义一个preorder方法,用来以先序法写入档案,采取递归方式,先遍历树根,然后遍历左子树,再遍历右子树。定义一个access方法,用来将数据增加到二叉查找树中,调用search方法,当增加的结点与树中结点重复时,显示结点已存在,否则,将学生姓名与成绩存入结点,当树根为空时,结点保存为树根,当树根不为空时,寻找数据插入点,小于关键字向左查找,大于关键字向右查找,直至找到插入位置,将结点两端与树中其他结点相连。定义一个connect方法,用来调整二叉树的链接,调用search_p方法,寻找到父结点,当结点为父结点的左子树时,使父结点的左端与结点的右端相连,否则,父结点的左端为空,当结点为父结点的右子树时,使父结点的右端与结点的左端相连,否则,父结点的右端为空。定义一个replace方法,用来寻找删除非叶结点的替代结点,调用search_re_r、search_re_1和connect方法,先搜索右子树寻找替代结点,当替代结点在右子树存在时,将右子树的最小结点作为替代结点,当不存在时,搜索结点的左子树,讲左子树的最大结点作为替代结点,调用connect方法,将结点间连接。定义一个removing方法,用来将数据从二叉查找树中删除,调用search和replace方法,当找不到删除结点时,显示无法找到此结点;否则当此结点不为叶节点时,利用replace方法,寻找替代结点,当此结点为叶结点时,直接删除。定义插入(insert)方法,方法中要求用户输入学生姓名与成绩,方法中调用access方法,讲输入数据存入。定义删除(delete)方法,当树根为空时,系统输出没有学生记录,否则调用replace方法删除结点。定义编辑(modify)方法,当树根为空时,系统输出没有学生记录,否则,调用search方法,找出结点,重新对结点中学生成绩赋值。定义查询展示(show)方法,当树根为空时,系统输出没有学生记录,否则,调用search方法,找出此结点,系统输出结点的姓名与成绩信息。设计友好的界面,提示用户输入数字,并对系统输出的结果进行说明。寻找检查程序中的BUG。3、流程图。4.用户查询数据,show方法5.退出,save方法,保存数据Search_p方法Search-re-方法Search-re-方法Access方法Search方法Replac4.用户查询数据,show方法5.退出,save方法,保存数据Search_p方法Search-re-方法Search-re-方法Access方法Search方法Replac。方法加载函数,写入档案用户选择功能,调用相应方法—1.用户录入数据,1庭。1方法•2.用户删除数据,delet(方法*3.用户编辑数据,modify方法4、测试数据、测试结果、结果分析。Removing方法Connect方法rpreorder方法Fileloading...OK!Fileloading...OK!*******WelcometostudentscoreSystem**************<1>insert<2>delete<3><4>modify
searchquit*******Welcometo<5>*******WelcometostudentscoreSystem**************<1>insert<2>delete<3><4>modify
searchquit*******Welcometo<5>studentscoreSystem**************Enteryourchoice:Nostudentrecord*******WelcometostudentscoreSystem**************Enteryourchoice:Nostudentrecord*******WelcometostudentscoreSystem**************<1>insert ~<2>delete<3>modify<4>search<5>quit*******WelcometostudentscoreSystem**************Enteryourchoice:1======INSETINFORMATION======Enterstudent'sname:peterEnterstudent'sscore:1*******WelcometostudentscoreSystem**************<1>insert<2>delete<3>modify<4>search<5>quit*******WelcometostudentscoreSystem**************Enteryourchoice:3======MODIFYSTUDENTINFORMATION======Enterstudentname:peterOriginalStudentname:peterOriginalStudentscore:1Enternewstudent:2Informationofstudentpetermodified*******WelcometostudentscoreSystem**************<1>insert<2>delete<3>modify<4>search<5>quit*******WelcometostudentscoreSystem**************Enteryourchoice:4======SHOWSTUDENTINFORMATION======Enterstudentname:peterStudentname:peterStudentscore:2*******WelcometostudentscoreSystem**************<1>insert<2>delete<3>modify<4>search<5>quit*******WelcometostudentscoreSystem**************Enteryourchoice:2—DELETESTUDENTINFORMATION—™Enterstudent,sname:peterDataofstudentpeterdeleted!*******WelcometostudentscoreSystem**************<1>insert<2>delete<3>modify<4>search<5>quit*******WelcometostudentscoreSystem**************Enteryourchoice:5Filesaving...OK!当学生成绩为符点数时,系统无法识别,输入自然数能够满足题目中要求5、相关运行界面。=publicvotca i卜infbrmationmanage.java岂prihliavoidloa.d_f[|Stringnaune-=publicvotca i卜infbrmationmanage.java岂prihliavoidloa.d_f[|Stringnaune-intacore-'3;bnalEandonefHine;Systen..ocrt.print[^Faleleading...H);try{mflienewCacalnpucStrean.(new}catch(lOExceprlons|-{Sir5T:eni.s-rTrpilncln|^teilEd!")?Sysreni.s-TrrprincLnI^BlnSearclhlrtereturn;1wFiil€|done=talse>{try{naita=Uxtiie.raaimF(F;sccze=in£lle.reo!(llfj.c();)aatali.(ECFEjecepr1oelecf)<done=true:)cfttab(ICExaeptinne*i<}ifdar.e!—-tirus[iCEess|r.Brne,scare);}Byste-.otit-pziTitlnf'CX"R【try{inflie.elcjse();}catchrlOExcecitaaK巴卜{)FiIsInpccStrsaiii(rdeunor-rawidru旦xnhetrchrz-ee.dat[卜匚Dutline]ConsoleES '<|grnninaD&d>Bln&wrehTTi&ea)[JavaAppircaflton]c\pn.fI底•席回更)1/日F-ITq3DtLde!LGrecord***ftfr*fcSfeiCO3t=.COscuiencscoreaysrem***<1>iDsexr<2>i-lete<3>itodify<?>s-sazet:<5>rirfnflrfftH11>ZDIT^tQ3t'j.dentjscoreSyst—Enteryaurchaj.ze:™™I3£ETI3FCRMATID}]™"Enteratedertsnajr,e:wEnteratuien匚jsaccTe:1*******WelccoirecostcdencacoreSysrem***<1>inserr<2>lelete<3>moditj?<4>search<5>q;Qlc*******Welccarjecoadu.leticscoreSysrem.***EDtezyDUEeliaices3==^KCDIEYsnjrorrIZ-ITOBKiTIGK==EntersctuieeicEiams:ceceiCr±giEL!ail5tuMncr.air.e:petisrCx±gir.a±St%id-=r.tscare:LOOEnternewstudejit:ZCDIn±crn-atx=Dsf:3t匚注三二匚peter xed6、关键代码将新增数据添加到二叉树中:publicvoidaccess(Stringname,intscore){Studentnode,prev=null;if(search(name)!=null){System.out.println("Student"+name+"hasexisted!");return;)ptr=newStudent();ptr.name=name;ptr.score=score;ptr.llink=ptr.rlink=null;if(root==null)root=ptr;else{node=root;while(node!=null){prev=node;if(ptr.name.compareTo(node.name)<0)node=node.rlink;elsenode=node.rlink;)if(ptr.name.compareTo()<0)prev.llink=ptr;elseprev.rlink=ptr;))将数据从二叉查找树中删除:publicvoidremoving(Stringname){Studentdel_node;if((del-node=search(name))==null){System.out.println("Student"+name+"notfound!");return;)if(del-node.llink!=null||del_node.rlink!=null)del_node=replace(del_node);elseelseif(del_node==root)root=null;elseconnect(del_node,'n');if(del_node==root)root=null;elseconnect(del_node,'n');del_node=null;System.out.println("Dataofstudent"+name+ "deleted!");寻找非叶结点的替代结点:publicStudentreplace(Studentnode)Studentre_node;if((re_node=search_re_r(node.rlink))==null)re_node=search_re_l(node.llink);if(re_node.rlink!=null)connect(re_node,'r');elseif(re_node.llink!=null)connect(re_node, 'l');elseconnect(re_node, 'n');node.name=re_node.name;node.score=re_node.score;returnre_node;}调整二叉树的链接:publicvoidconnect(Studentnode,charlink){Studentparent;parent=search_p(node);if(node.name.compareTo(parent.name)<0)if(link=='r')parent.llink=node.rlink;elseparent.llink=null;elseif(link=='1')parent.rlink=node.llink;elseparent.rlink=null;}先序法将数据写入档案:publicvoidpreorder(Studentnode)if(node!=null){try{outfile.writeUTF();outfile.writeInt(node.score);}catch(IOExceptione){}preorder(node.llink);preorder(node.rlink);))搜索目标结点:publicStudentsearch(Stringtarget){Studentnode;no
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 热力学第二定律课件高二下学期物理人教版选择性必修第三册
- 2021年洛阳二中小升初内部测试卷及答案完整版
- 无经验也能过 2025幼儿园后厨面试题库及满分答案
- 2024威海银行校园招聘笔面试真题及得分要点答案
- 首创水务2022面试急救题库附1天突击版速记答案
- 2024年学校文员面试一周上岸必刷题库及考官版标准答案
- 菏泽医专2024年单招综评模拟题及答案 高频题型全覆盖
- 2023铆工安全考试裸考必背题及满分答案
- 无经验进学校当文员2024年面试必刷题库及满分答案
- 保密竞业协议书纠纷管辖
- 2026年南京大数据集团有限公司校园招聘考试参考试题及答案解析
- 2025年湖南省益阳市事业单位招聘笔试试题及答案解析
- 2026新疆喀什地区地直机关遴选公务员、事业单位选聘31人考试参考试题及答案解析
- 认识情绪拥抱阳光心态+-2026年高一下学期情绪管理与压力调节主题班会
- 2026年中国烟草招聘考试试题及答案
- 2026年浙江省衢州市六校联谊初三百日冲刺考试英语试题含解析
- 一次性使用止血套环产品技术要求北京中诺恒康生物
- 2026广东阳江市江城区招聘教师102人(编制)笔试模拟试题及答案解析
- XX医院关于2025年医保基金监管专项检查工作的整改报告
- 配电网工程典型设计10kV电缆分册参考模板
- 小学数学单位换算表
评论
0/150
提交评论