中南大学《面向对象技术实验报告》姓名:学号:专业班级:指导教师:学院:实验题目:学生成绩管理系统一、设计目的掌握面向对象程序设计的基本思路和方法。利用所学的基本知识和技能,解决简单的面向对象程序设计问题。二、内容及要求主要功能如下:1.添加学生信息功能:添加一个学生的基本信息,包括学号、姓名,性别;2.添加课程信息功能:添加一个课程的基本信息,包括课程号、课程名称;3.添加考试成绩功能:添加考试成绩:输入一个学生的学号,输入一个课程号,输入分数;4.统计功能:输入姓名,能显示某学生各门科目的课程号和分数。注:自学《教材》前14章,利用所学到的Java编程知识和编程技巧,设计一个实际的应用软件,初步认识软件设计的基本方法,提高进行工程设计的基本技能及分析、解决实际问题的能力,为后续课程和以后的工程实践打下良好的基础。三、核心代码1、主类(程序的入口)publicclassMain{//程序入口,主函数publicstaticvoidmain(String[]args){Mainma=newMain();//实例化ma.zhiXing();//调用方法}/***执行,判断的方法*/publicvoidzhiXing(){System.out.println(\t欢迎来到徐兴豪学生成绩管理系统);//开始执行,致欢迎词operating();}/***选择操作和处理操作的方法*/privatevoidoperating(){choseOperating();//选择操作dealOperating();//处理操作}/***选择操作,可以在每次完成操作之后又出现*/privatevoidchoseOperating(){System.out.println(请选择你想要的操作(输入数字并按回车键):);//选择操作System.out.println(0:退出1:添加学生信息2:添加课程信息3:添加考试成绩4:统计);}/***处理操作,根据扫描的命令来执行相应的模块*/privatevoiddealOperating(){//生成一个扫描器,扫描用户输入的命令;System.in返回的是一个InputStreamScannersc=newScanner(System.in);inti=sc.nextInt();switch(i){case0:System.out.println(你已经退出系统了!!);System.exit(0);//退出系统break;case1:System.out.println(\t欢迎进入添加学生信息);addStudent();break;case2:System.out.println(\t欢迎进入添加课程信息);addCourse();break;case3:System.out.println(\t欢迎进入添加考试成绩);addGrade();break;case4:System.out.println(\t欢迎进入统计);tongji();break;default:System.out.println(输入有误,请重新输入);choseOperating();dealOperating();//调用本身,监听再次输入的结果break;}}/***添加学生的方法*扫描需要填入的信息*/privatevoidaddStudent(){Scannersc=newScanner(System.in);System.out.println(学号:);intsno=sc.nextInt();//int型的值System.out.println(姓名:);Stringsname=sc.next();//string型的值System.out.println(性别:);Stringsex=sc.next();inti=addOrNot(sc);if(i==1){//如果添加Studentstu=newStudent(String.valueOf(sno),sname,sex);//创建一个学生对象StringcontentStr=stu.contentStr();//返回连接的字符串booleanisSucceed=FileWrite.wirteIn2File(FileConfig.FILE_STUDENT,contentStr);//判断是否插入数据成功if(isSucceed){//如果成功System.out.println(添加数据成功:);//告诉别人成功了,选择其他操作System.out.println();//空一格operating();}else{//添加数据不成功,重新输入System.out.println(添加失败,请重新加入);addStudent();}}}/***添加课程的方法*扫描需要填入的信息*/privatevoidaddCourse(){Scannersc=newScanner(System.in);System.out.println(课程编号:);intcno=sc.nextInt();//int型的值System.out.println(课程名称:);Stringcname=sc.next();//string型的值inti=addOrNot(sc);if(1==i){//如果添加Coursecou=newCourse(String.valueOf(cno),cname);//创建一个课程对象StringcontentStr=cou.contentStr();//要插入的字符串booleanisSucceed=FileWrite.wirteIn2File(FileConfig.FILE_COURSE,contentStr);//判断是否插入数据成功if(isSucceed){//如果成功System.out.println(添加数据成功:);//告诉别人成功了,选择其他操作System.out.println();//空一格operating();}else{//添加数据不成功,重新输入System.out.println(添加失败,请重新加入);addCourse();}}}/***添加成绩的方法*扫描需要填入的信息*/privatevoidaddGrade(){Scannersc=newScanner(System.in);System.out.println(学生学号:);intsno=sc.nextInt();//int型的值System.out.println(课程编号:);intcno=sc.nextInt();//int型的值System.out.println(学科成绩:);floatgrade=sc.nextFloat();//int型的值inti=addOrNot(sc);if(1==i){//如果添加Gradegra=newGrade(String.valueOf(sno),String.valueOf(cno),String.valueOf(grade));//创建一个成绩对象StringcontentStr=gra.contentStr();//要插入的字符串booleanisSucceed=FileWrite.wirteIn2File(FileConfig.FILE_GRADE,contentStr);//判断是否插入数据成功if(isSucceed){//如果成功System.out.println(添加数据成功:);//告诉别人成功了,选择其他操作System.out.println();//空一格operating();}else{//添加数据不成功,重新输入System.out.println(添加失败,请重新加入);addGrade();}}}/***统计方法*扫描需要填入的信息*输入学生姓名,显示各门科目的课程号cno和成绩grade*/privatevoidtongji(){System.out.println(请输入需要统计的学生的姓名:);Scannersc=newScanner(System.in);Stringsname=sc.next();intresult=isStuIn(sname);if(0==result){System.out.println(该姓名不存在,请返回主目录创建该学生!!!);}elseif(-1==result){System.out.println(该姓名存在,但是没有相关的课程信息,请返回主目录创建成绩等信息!!!);}elseif(1==result){System.out.println(恭喜恭喜,查找成功,请选择其他操作!!!);}operating();//选择操作}/***判断是否列表中有这个学生的方法*除非存在该姓名,并且*返回值0:不存在该姓名1:正常可以输出*-1,存在姓名,但是不存在相应的数据*/publicintisStuIn(Stringsname){//获得学生列表ArrayListStudentstuList=FileRead.getStuList();for(inti=0;istuList.size();i++){if(stuList.get(i).getSname().equals(sname)){//如果存在该姓名Stringsno=stuList.get(i).getSno();//得到该学生的序号if(!isSnoInGra(sno)){//如果返回false说明有该学生姓名,没有相关的课程信息return-1;}elsereturn1;}}return0;}/***判断该学号是否在成绩列表中(要查的学生在学生列表中)*@paramsno*@return*/publicbooleanisSnoInGra(Stringsno){//获得成绩列表ArrayListGradegraList=FileRead.getGraList();ArrayListTongJitonList=newArrayListTongJi();for(inti=0;igraList.size();i++){if(sno.equals(graList.get(i).getSno())){//如果两个列表的学号相等则遍历该学生的信息TongJitj=newTongJi(graList.get(i).getCno(),graList.get(i).getGrade());tonList.add(tj);//加入到列表}}if(tonList.size()0){//如果有数据,则遍历打印出来//打印需要的信息System.out.println(----结果----);for(inti=0;itonList.size();i++){System.out.println(课程编号:+tonList.get(i).getCno()+学科成绩:+tonList.get(i).getGrade());}System.out.println();returntrue;}else//没有数据returnfalse;}/***是否添加学生,课程,成绩(3者可公用)*1表示添加,0表示取消*/privateintaddOrNot(Scannersc){System.out.println(输入1确认添加,输入0取消添加);inti=sc.nextInt();if(1==i){System.out.println(确认添加);}elseif(0==i){//若取消添加则返回上机System.out.println(取消添加);operating();}else{System.out.println(输入有误,请重新输入);addOrNot(sc);}returni;}}2、数据类(定义实现了各功能)(1)添加课程publicclassCourse{privateStringcno;//课程号privateStringcname;//课程名//构