Java综合性实验_学生成绩管理系统
JAVA学生成绩管理系统实验报告

中南大学《面向对象技术实验报告》姓名: 学号: 专业班级:指导教师: 学院:实验题目:学生成绩管理系统一、设计目的●掌握面向对象程序设计的基本思路和方法。
●利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
二、内容及要求主要功能如下:1.添加学生信息功能:添加一个学生的基本信息,包括学号、姓名,性别;2.添加课程信息功能:添加一个课程的基本信息,包括课程号、课程名称;3. 添加考试成绩功能:添加考试成绩:输入一个学生的学号,输入一个课程号,输入分数;4.统计功能:输入姓名,能显示某学生各门科目的课程号和分数。
注: 自学《教材》前14章,利用所学到的Java编程知识和编程技巧,设计一个实际的应用软件,初步认识软件设计的基本方法,提高进行工程设计的基本技能及分析、解决实际问题的能力,为后续课程和以后的工程实践打下良好的基础。
三、核心代码1、主类(程序的入口)public class Main {//程序入口,主函数public static void main(String[] args) {Main ma=new Main();//实例化ma.zhiXing();//调用方法}/*** 执行,判断的方法*/public void zhiXing(){System.out.println("\t欢迎来到徐兴豪学生成绩管理系统");//开始执行,致欢迎词operating();}/*** 选择操作和处理操作的方法*/private void operating(){choseOperating();//选择操作dealOperating();//处理操作}/*** 选择操作,可以在每次完成操作之后又出现*/private void choseOperating(){System.out.println("请选择你想要的操作(输入数字并按回车键):");//选择操作System.out.println("0:退出1:添加学生信息 2:添加课程信息 3:添加考试成绩 4:统计");}/*** 处理操作,根据扫描的命令来执行相应的模块*/private void dealOperating(){//生成一个扫描器,扫描用户输入的命令;System.in返回的是一个InputStreamScanner sc=new Scanner(System.in);int i=sc.nextInt();switch (i) {case 0:System.out.println("你已经退出系统了!!");System.exit(0);//退出系统break;case 1:System.out.println("\t欢迎进入<添加学生信息>");addStudent();break;case 2:System.out.println("\t欢迎进入<添加课程信息>");addCourse();break;case 3:System.out.println("\t欢迎进入<添加考试成绩>");addGrade();break;case 4:System.out.println("\t欢迎进入<统计>");tongji();break;default:System.out.println("输入有误,请重新输入");choseOperating();dealOperating();//调用本身,监听再次输入的结果break;}}/*** 添加学生的方法* 扫描需要填入的信息*/private void addStudent() {Scanner sc=new Scanner(System.in);System.out.println("学号:");int sno=sc.nextInt();//int型的值System.out.println("姓名:");String sname=sc.next();//string型的值System.out.println("性别:");String sex=sc.next();int i=addOrNot(sc);if(i==1){//如果添加Student stu=new Student(String.valueOf(sno),sname,sex);//创建一个学生对象String contentStr=stu.contentStr();//返回连接的字符串boolean isSucceed=FileWrite.wirteIn2File(FileConfig.FILE_STUDENT, contentStr);//判断是否插入数据成功if(isSucceed){//如果成功System.out.println("添加数据成功:");//告诉别人成功了,选择其他操作System.out.println();//空一格operating();}else{//添加数据不成功,重新输入System.out.println("添加失败,请重新加入");addStudent();}}}/*** 添加课程的方法* 扫描需要填入的信息*/private void addCourse() {Scanner sc=new Scanner(System.in);System.out.println("课程编号:");int cno=sc.nextInt();//int型的值System.out.println("课程名称:");String cname=sc.next();//string型的值int i=addOrNot(sc);if(1==i){//如果添加Course cou=new Course(String.valueOf(cno),cname);//创建一个课程对象String contentStr=cou.contentStr();//要插入的字符串boolean isSucceed=FileWrite.wirteIn2File(FileConfig.FILE_COURSE, contentStr);//判断是否插入数据成功if(isSucceed){//如果成功System.out.println("添加数据成功:");//告诉别人成功了,选择其他操作System.out.println();//空一格operating();}else{//添加数据不成功,重新输入System.out.println("添加失败,请重新加入");addCourse();}}}/*** 添加成绩的方法* 扫描需要填入的信息*/private void addGrade() {Scanner sc=new Scanner(System.in);System.out.println("学生学号:");int sno=sc.nextInt();//int型的值System.out.println("课程编号:");int cno=sc.nextInt();//int型的值System.out.println("学科成绩:");float grade=sc.nextFloat();//int型的值int i=addOrNot(sc);if(1==i){//如果添加Grade gra=newGrade(String.valueOf(sno),String.valueOf(cno),String.valueOf(grade));//创建一个成绩对象String contentStr=gra.contentStr();//要插入的字符串boolean isSucceed=FileWrite.wirteIn2File(FileConfig.FILE_GRADE, contentStr);//判断是否插入数据成功if(isSucceed){//如果成功System.out.println("添加数据成功:");//告诉别人成功了,选择其他操作System.out.println();//空一格operating();}else{//添加数据不成功,重新输入System.out.println("添加失败,请重新加入");addGrade();}}}/*** 统计方法* 扫描需要填入的信息* 输入学生姓名,显示各门科目的课程号cno和成绩grade*/private void tongji() {System.out.println("请输入需要统计的学生的姓名:");Scanner sc=new Scanner(System.in);String sname=sc.next();int result=isStuIn(sname);if(0==result){System.out.println("该姓名不存在,请返回主目录创建该学生!!!");}else if(-1==result){System.out.println("该姓名存在,但是没有相关的课程信息,请返回主目录创建成绩等信息!!!");}else if(1==result){System.out.println("恭喜恭喜,查找成功,请选择其他操作!!!");}operating();//选择操作}/*** 判断是否列表中有这个学生的方法* 除非存在该姓名,并且* 返回值 0:不存在该姓名 1:正常可以输出* -1,存在姓名,但是不存在相应的数据*/public int isStuIn(String sname){//获得学生列表ArrayList<Student> stuList=FileRead.getStuList();for(int i=0;i<stuList.size();i++){if(stuList.get(i).getSname().equals(sname)){//如果存在该姓名String sno=stuList.get(i).getSno();//得到该学生的序号if(!isSnoInGra(sno)){//如果返回false说明有该学生姓名,没有相关的课程信息return -1;}elsereturn 1;}}return 0;}/***判断该学号是否在成绩列表中(要查的学生在学生列表中)* @param sno* @return*/public boolean isSnoInGra(String sno){//获得成绩列表ArrayList<Grade> graList=FileRead.getGraList();ArrayList<TongJi> tonList=new ArrayList<TongJi>();for(int i=0;i<graList.size();i++){if(sno.equals(graList.get(i).getSno())){//如果两个列表的学号相等则遍历该学生的信息TongJi tj=newTongJi(graList.get(i).getCno(),graList.get(i).getGrade());tonList.add(tj);//加入到列表}}if(tonList.size()>0){//如果有数据,则遍历打印出来//打印需要的信息System.out.println("----结果----");for(int i=0;i<tonList.size();i++){System.out.println("课程编号:"+tonList.get(i).getCno()+" 学科成绩:"+tonList.get(i).getGrade());}System.out.println();return true;}else//没有数据return false;}/*** 是否添加学生,课程,成绩(3者可公用)* 1表示添加,0表示取消*/private int addOrNot(Scanner sc){System.out.println("输入1确认添加,输入0取消添加");int i=sc.nextInt();if(1==i){System.out.println("确认添加");}else if(0==i){//若取消添加则返回上机System.out.println("取消添加");operating();}else{System.out.println("输入有误,请重新输入");addOrNot(sc);}return i;}}2、数据类(定义实现了各功能)(1)添加课程public class Course {private String cno;//课程号private String cname;//课程名//构造函数public Course() {}public Course(String cno, String cname) {o = cno;ame = cname;}/*** 用于将Course类的属性的值封装在一个字符串内以便添加到文件中* @return:要写入文件的字符串* 写成以下格式以便利用String的正则匹配分解得到实体*/public String contentStr(){return cno+","+cname+"\n";}//覆盖toString方法,便于打印测试public String toString() {return"Course [cname=" + cname + ", cno=" + cno + "]";}//get和set方法public String getCno() {return cno;}public void setCno(String cno) {o = cno;}public String getCname() {return cname;}public void setCname(String cname) {ame = cname;}}(2)添加成绩public class Grade {private String sno;//学生学号private String cno;//课程编号private String grade;//成绩//构造函数public Grade() {}public Grade(String sno, String cno, String grade) {this.sno = sno;o = cno;this.grade = grade;}/*** 依据从文件中读取的一行字符串解剖成一个学生实体对象* @param contentStr*/public Grade(String contentStr){String[] field=contentStr.split(",");this.setSno(field[0]);this.setCno(field[1]);this.setGrade(field[2]);}/*** 用于将Grade类的属性的值封装在一个字符串内以便添加到文件中* @return:要写入文件的字符串* 写成以下格式以便利用String的正则匹配分解得到实体*/public String contentStr(){return sno+","+cno+","+grade+"\n";}//覆盖toString方法,便于打印测试public String toString() {return"Grade [cno=" + cno + ", grade=" + grade + ", sno=" + sno + "]";}//get和set方法public String getSno() {return sno;}public void setSno(String sno) {this.sno = sno;}public String getCno() {return cno;}public void setCno(String cno) {o = cno;}public String getGrade() {return grade;}public void setGrade(String grade) {this.grade = grade;}}(3)添加学生信息public class Student {private String sno;//学号private String sname;//学生姓名private String sex;//性别//构造函数public Student(){}public Student(String sno, String sname, String sex) { this.sno = sno;this.sname = sname;this.sex = sex;}/*** 依据从文件中读取的一行字符串解剖成一个学生实体对象* @param contentStr*/public Student(String contentStr){String[] field=contentStr.split(",");this.setSno(field[0]);this.setSname(field[1]);this.setSex(field[2]);}/*** 用于将student类的属性的值封装在一个字符串内以便添加到文件中* @return:要写入文件的字符串* 写成以下格式以便利用String的正则匹配分解得到实体*/public String contentStr(){return sno+","+sname+","+sex+"\n";}//覆盖toString方法,便于打印测试public String toString() {return"Student [sex=" + sex + ", sname=" + sname + ", sno=" + sno + "]";}// set和get方法public String getSno() {return sno;}public void setSno(String sno) {this.sno = sno;}public String getSname() {return sname;}public void setSname(String sname) {this.sname = sname;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}}(4)统计查成绩public class TongJi {private String cno;//课程编号private String grade;//成绩//重构函数public TongJi(String cno, String grade) {o = cno;this.grade = grade;}@Overridepublic String toString() {return"TongJi [cno=" + cno + ", grade=" + grade + "]";}//get和set方法public String getCno() {return cno;}public void setCno(String cno) {o = cno;}public String getGrade() {return grade;}public void setGrade(String grade) {this.grade = grade;}}3、FileIO类(对信息输入到文件和从文件读取数据)(1)写文件public class FileWrite {/*** 将内容写入文件的方法* @param filePath:要写入的目标文件* @param contentStr:要写入的内容* @return:写入的成败*/public static boolean wirteIn2File(String filePath,String contentStr){ File file=new File(filePath);//根据路劲实例化文件OutputStream ous;try {ous = new FileOutputStream(file,true);//true表示能够在文件的尾部追加内容DataOutputStream dos=new DataOutputStream(ous);//封装一下以便写入byte[] data=contentStr.getBytes();//得到字符串的字节dos.write(data, 0, data.length);//写入} catch (Exception e) {e.printStackTrace();return false;//若有什么异常则表示失败}return true;}}(2)读文件public class FileRead {/*** 获得学生信息列表的方法* @return*/public static ArrayList<Student> getStuList(){ArrayList<Student> stuList=new ArrayList<Student>();//创建链表对象DataInputStream dis=readFromFile(FileConfig.FILE_STUDENT);//得到文件数据输入流对象String txt;try {txt = dis.readLine();//一行一行的读while(txt!=null){Student stu=new Student(txt);//根据构造函数解剖成一个学生实体对象stuList.add(stu);//加入到列表txt = dis.readLine();//不为空就继续读取字符串}} catch (IOException e) {e.printStackTrace();}return stuList;}public static ArrayList<Grade> getGraList(){ArrayList<Grade> graList=new ArrayList<Grade>();DataInputStream dis=readFromFile(FileConfig.FILE_GRADE);String txt;try {txt = dis.readLine();while(txt!=null){Grade stu=new Grade(txt);graList.add(stu);txt = dis.readLine();}} catch (IOException e) {e.printStackTrace();}return graList;}/*** 依据文件路劲获得封装后的数据输入流的方法* @param filePath* @return*/public static DataInputStream readFromFile(String filePath){DataInputStream dis;File file=new File(filePath);try {InputStream ins=new FileInputStream(file);dis=new DataInputStream(ins);//传入InputStream对象实例化,得到数据流} catch (Exception e) {e.printStackTrace();return null;}return dis;}}四、运行结果1、添加学生信息2、添加课程信息3、添加成绩信息五、完整源代码package xxh.main;import java.util.ArrayList; import java.util.Scanner;import xxh.FileIO.FileConfig; import xxh.FileIO.FileRead; import xxh.FileIO.FileWrite; import xxh.datas.Course; import xxh.datas.Grade; import xxh.datas.Student; import xxh.datas.TongJi;/*** 程序入口类**/public class Main {//程序入口,主函数public static void main(String[] args) {Main ma=new Main();//实例化ma.zhiXing();//调用方法}/*** 执行,判断的方法*/public void zhiXing(){System.out.println("\t欢迎来到徐兴豪学生成绩管理系统");//开始执行,致欢迎词operating();}/*** 选择操作和处理操作的方法*/private void operating(){choseOperating();//选择操作dealOperating();//处理操作}/*** 选择操作,可以在每次完成操作之后又出现*/private void choseOperating(){System.out.println("请选择你想要的操作(输入数字并按回车键):");//选择操作System.out.println("0:退出1:添加学生信息 2:添加课程信息 3:添加考试成绩 4:统计");}/*** 处理操作,根据扫描的命令来执行相应的模块*/private void dealOperating(){//生成一个扫描器,扫描用户输入的命令;System.in返回的是一个InputStreamScanner sc=new Scanner(System.in);int i=sc.nextInt();switch (i) {case 0:System.out.println("你已经退出系统了!!");System.exit(0);//退出系统break;case 1:System.out.println("\t欢迎进入<添加学生信息>");addStudent();break;case 2:System.out.println("\t欢迎进入<添加课程信息>");addCourse();break;case 3:System.out.println("\t欢迎进入<添加考试成绩>");addGrade();break;case 4:System.out.println("\t欢迎进入<统计>");tongji();break;default:System.out.println("输入有误,请重新输入");choseOperating();dealOperating();//调用本身,监听再次输入的结果break;}}/*** 添加学生的方法* 扫描需要填入的信息*/private void addStudent() {Scanner sc=new Scanner(System.in);System.out.println("学号:");int sno=sc.nextInt();//int型的值System.out.println("姓名:");String sname=sc.next();//string型的值System.out.println("性别:");String sex=sc.next();int i=addOrNot(sc);if(i==1){//如果添加Student stu=new Student(String.valueOf(sno),sname,sex);//创建一个学生对象String contentStr=stu.contentStr();//返回连接的字符串boolean isSucceed=FileWrite.wirteIn2File(FileConfig.FILE_STUDENT, contentStr);//判断是否插入数据成功if(isSucceed){//如果成功System.out.println("添加数据成功:");//告诉别人成功了,选择其他操作System.out.println();//空一格operating();}else{//添加数据不成功,重新输入System.out.println("添加失败,请重新加入");addStudent();}}}/*** 添加课程的方法* 扫描需要填入的信息*/private void addCourse() {Scanner sc=new Scanner(System.in);System.out.println("课程编号:");int cno=sc.nextInt();//int型的值System.out.println("课程名称:");String cname=sc.next();//string型的值int i=addOrNot(sc);if(1==i){//如果添加Course cou=new Course(String.valueOf(cno),cname);//创建一个课程对象String contentStr=cou.contentStr();//要插入的字符串boolean isSucceed=FileWrite.wirteIn2File(FileConfig.FILE_COURSE, contentStr);//判断是否插入数据成功if(isSucceed){//如果成功System.out.println("添加数据成功:");//告诉别人成功了,选择其他操作System.out.println();//空一格operating();}else{//添加数据不成功,重新输入System.out.println("添加失败,请重新加入");addCourse();}}}/*** 添加成绩的方法* 扫描需要填入的信息*/private void addGrade() {Scanner sc=new Scanner(System.in);System.out.println("学生学号:");int sno=sc.nextInt();//int型的值System.out.println("课程编号:");int cno=sc.nextInt();//int型的值System.out.println("学科成绩:");float grade=sc.nextFloat();//int型的值int i=addOrNot(sc);if(1==i){//如果添加Grade gra=newGrade(String.valueOf(sno),String.valueOf(cno),String.valueOf(grade));//创建一个成绩对象String contentStr=gra.contentStr();//要插入的字符串boolean isSucceed=FileWrite.wirteIn2File(FileConfig.FILE_GRADE, contentStr);//判断是否插入数据成功if(isSucceed){//如果成功System.out.println("添加数据成功:");//告诉别人成功了,选择其他操作System.out.println();//空一格operating();}else{//添加数据不成功,重新输入System.out.println("添加失败,请重新加入");addGrade();}}}/*** 统计方法* 扫描需要填入的信息* 输入学生姓名,显示各门科目的课程号cno和成绩grade*/private void tongji() {System.out.println("请输入需要统计的学生的姓名:");Scanner sc=new Scanner(System.in);String sname=sc.next();int result=isStuIn(sname);if(0==result){System.out.println("该姓名不存在,请返回主目录创建该学生!!!");}else if(-1==result){System.out.println("该姓名存在,但是没有相关的课程信息,请返回主目录创建成绩等信息!!!");}else if(1==result){System.out.println("恭喜恭喜,查找成功,请选择其他操作!!!");}operating();//选择操作}/*** 判断是否列表中有这个学生的方法* 除非存在该姓名,并且* 返回值 0:不存在该姓名 1:正常可以输出* -1,存在姓名,但是不存在相应的数据*/public int isStuIn(String sname){//获得学生列表ArrayList<Student> stuList=FileRead.getStuList();for(int i=0;i<stuList.size();i++){if(stuList.get(i).getSname().equals(sname)){//如果存在该姓名String sno=stuList.get(i).getSno();//得到该学生的序号if(!isSnoInGra(sno)){//如果返回false说明有该学生姓名,没有相关的课程信息return -1;}elsereturn 1;}}return 0;}/***判断该学号是否在成绩列表中(要查的学生在学生列表中)* @param sno* @return*/public boolean isSnoInGra(String sno){//获得成绩列表ArrayList<Grade> graList=FileRead.getGraList();ArrayList<TongJi> tonList=new ArrayList<TongJi>();for(int i=0;i<graList.size();i++){if(sno.equals(graList.get(i).getSno())){//如果两个列表的学号相等则遍历该学生的信息TongJi tj=newTongJi(graList.get(i).getCno(),graList.get(i).getGrade());tonList.add(tj);//加入到列表}}if(tonList.size()>0){//如果有数据,则遍历打印出来//打印需要的信息System.out.println("----结果----");for(int i=0;i<tonList.size();i++){System.out.println("课程编号:"+tonList.get(i).getCno()+" 学科成绩:"+tonList.get(i).getGrade());}System.out.println();return true;}else//没有数据return false;}/*** 是否添加学生,课程,成绩(3者可公用)* 1表示添加,0表示取消*/private int addOrNot(Scanner sc){System.out.println("输入1确认添加,输入0取消添加");int i=sc.nextInt();if(1==i){System.out.println("确认添加");}else if(0==i){//若取消添加则返回上机System.out.println("取消添加");operating();}else{System.out.println("输入有误,请重新输入");addOrNot(sc);}return i;}}package xxh.datas;/*** 课程实体类**/public class Course {private String cno;//课程号private String cname;//课程名//构造函数public Course() {}public Course(String cno, String cname) {o = cno;ame = cname;}/*** 用于将Course类的属性的值封装在一个字符串内以便添加到文件中 * @return:要写入文件的字符串* 写成以下格式以便利用String的正则匹配分解得到实体*/public String contentStr(){return cno+","+cname+"\n";}//覆盖toString方法,便于打印测试public String toString() {return"Course [cname=" + cname + ", cno=" + cno + "]";}//get和set方法public String getCno() {return cno;}public void setCno(String cno) {o = cno;}public String getCname() {return cname;}public void setCname(String cname) {ame = cname;}}package xxh.datas;/*** 考试成绩实体类**/public class Grade {private String sno;//学生学号private String cno;//课程编号private String grade;//成绩//构造函数public Grade() {}public Grade(String sno, String cno, String grade) { this.sno = sno;o = cno;this.grade = grade;}/*** 依据从文件中读取的一行字符串解剖成一个学生实体对象* @param contentStr*/public Grade(String contentStr){String[] field=contentStr.split(",");this.setSno(field[0]);this.setCno(field[1]);this.setGrade(field[2]);}/*** 用于将Grade类的属性的值封装在一个字符串内以便添加到文件中* @return:要写入文件的字符串* 写成以下格式以便利用String的正则匹配分解得到实体*/public String contentStr(){return sno+","+cno+","+grade+"\n";}//覆盖toString方法,便于打印测试public String toString() {return"Grade [cno=" + cno + ", grade=" + grade + ", sno=" + sno + "]";}//get和set方法public String getSno() {return sno;}public void setSno(String sno) {this.sno = sno;}public String getCno() {return cno;}public void setCno(String cno) {o = cno;}public String getGrade() {return grade;}public void setGrade(String grade) {this.grade = grade;}}package xxh.datas;/*** 学生信息实体类**/public class Student {private String sno;//学号private String sname;//学生姓名private String sex;//性别//构造函数public Student(){}public Student(String sno, String sname, String sex) {this.sno = sno;this.sname = sname;this.sex = sex;}/*** 依据从文件中读取的一行字符串解剖成一个学生实体对象* @param contentStr*/public Student(String contentStr){String[] field=contentStr.split(",");this.setSno(field[0]);this.setSname(field[1]);this.setSex(field[2]);}/*** 用于将student类的属性的值封装在一个字符串内以便添加到文件中* @return:要写入文件的字符串* 写成以下格式以便利用String的正则匹配分解得到实体*/public String contentStr(){return sno+","+sname+","+sex+"\n";}//覆盖toString方法,便于打印测试public String toString() {return"Student [sex=" + sex + ", sname=" + sname + ", sno=" + sno + "]";}// set和get方法public String getSno() {return sno;}public void setSno(String sno) {this.sno = sno;}public String getSname() {return sname;}public void setSname(String sname) {this.sname = sname;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}}package xxh.datas;/*** 统计类* 其实可以用grade类,但是为了区分,还是单独用个类的好**/public class TongJi {private String cno;//课程编号private String grade;//成绩//重构函数public TongJi(String cno, String grade) {o = cno;this.grade = grade;}@Overridepublic String toString() {return"TongJi [cno=" + cno + ", grade=" + grade + "]";}//get和set方法public String getCno() {return cno;}public void setCno(String cno) {o = cno;}public String getGrade() {return grade;}public void setGrade(String grade) {this.grade = grade;}}package xxh.FileIO;/*** 文件路径的参数类*若以后要更换文件路径,可在这里修改*/public class FileConfig {//文件的路径public final static String FILE_STUDENT="E:\\student.txt"; //学生public final static String FILE_COURSE="E:\\course.txt"; //课程public final static String FILE_GRADE="E:\\grade.txt"; //成绩}package xxh.FileIO;import java.io.DataInputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import xxh.datas.Grade;import xxh.datas.Student;/*** 读取文件类**/public class FileRead {/*** 获得学生信息列表的方法* @return*/public static ArrayList<Student> getStuList(){ArrayList<Student> stuList=new ArrayList<Student>();//创建链表对象DataInputStream dis=readFromFile(FileConfig.FILE_STUDENT);//得到文件数据输入流对象String txt;try {txt = dis.readLine();//一行一行的读while(txt!=null){Student stu=new Student(txt);//根据构造函数解剖成一个学生实体对象stuList.add(stu);//加入到列表txt = dis.readLine();//不为空就继续读取字符串}} catch (IOException e) {e.printStackTrace();}return stuList;}public static ArrayList<Grade> getGraList(){ArrayList<Grade> graList=new ArrayList<Grade>();DataInputStream dis=readFromFile(FileConfig.FILE_GRADE);String txt;try {txt = dis.readLine();while(txt!=null){Grade stu=new Grade(txt);graList.add(stu);txt = dis.readLine();}} catch (IOException e) {e.printStackTrace();}return graList;}/*** 依据文件路劲获得封装后的数据输入流的方法* @param filePath* @return*/public static DataInputStream readFromFile(String filePath){ DataInputStream dis;File file=new File(filePath);try {InputStream ins=new FileInputStream(file);dis=new DataInputStream(ins);//传入InputStream对象实例化,得到数据流} catch (Exception e) {e.printStackTrace();return null;}return dis;}}package xxh.FileIO;import java.io.DataOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.OutputStream;/*** 将内容写进文件的处理类**/public class FileWrite {/*** 将内容写入文件的方法* @param filePath:要写入的目标文件* @param contentStr:要写入的内容* @return:写入的成败*/public static boolean wirteIn2File(String filePath,String contentStr){ File file=new File(filePath);//根据路劲实例化文件OutputStream ous;try {ous = new FileOutputStream(file,true);//true表示能够在文件的尾部追加内容DataOutputStream dos=new DataOutputStream(ous);//封装一下以便写入byte[] data=contentStr.getBytes();//得到字符串的字节dos.write(data, 0, data.length);//写入} catch (Exception e) {e.printStackTrace();return false;//若有什么异常则表示失败}return true;}}。
基于java的学生成绩管理系统的设计与实现

文章标题:基于Java的学生成绩管理系统的设计与实现一、引言学生成绩管理系统是学校管理系统中的重要组成部分,它可以帮助学校、老师和学生高效地管理和查询学生成绩信息。
基于Java的学生成绩管理系统的设计与实现是一个重要的课题,本文将从深度与广度两个角度来探讨这个主题。
二、学生成绩管理系统的基本要求学生成绩管理系统需要满足以下基本要求:1)能够实现学生信息的录入、修改和删除;2)能够实现课程信息的录入、修改和删除;3)能够实现成绩信息的录入、修改和删除;4)能够实现成绩的统计和排名功能;5)能够实现成绩的查询和导出功能。
三、基于Java的学生成绩管理系统的设计与实现1. 系统架构设计学生成绩管理系统可以采用三层架构设计,即用户界面层、业务逻辑层和数据访问层。
用户界面层负责与用户的交互,业务逻辑层负责处理业务逻辑,数据访问层负责与数据库进行交互。
2. 数据库设计数据库设计是学生成绩管理系统中的关键环节,需要设计学生信息表、课程信息表和成绩信息表,并建立它们之间的关联关系。
3. 功能模块设计学生成绩管理系统的功能模块包括学生信息管理、课程信息管理、成绩信息管理、成绩统计和排名以及成绩查询和导出功能。
四、基于Java的学生成绩管理系统的个人观点我认为基于Java的学生成绩管理系统的设计与实现不仅可以提高学校管理效率,也可以帮助老师更好地了解学生的学习情况,同时也能够让学生更方便地查询自己的成绩信息。
这个系统可以为学校管理和教学工作提供很大的便利,是非常值得推广和应用的。
五、总结与展望通过本文的探讨,我们深入了解了基于Java的学生成绩管理系统的设计与实现,从系统架构设计、数据库设计,功能模块设计等方面进行了全面的评估。
我们也共享了个人观点和理解。
希望本文能够为读者提供有价值的信息,同时也为学生成绩管理系统的推广应用提供一些借鉴和思路。
六、个人观点通过本次的撰写,我对基于Java的学生成绩管理系统的设计与实现有了更深入的了解,同时也对系统架构设计、数据库设计、功能模块设计等方面有了更全面的认识。
Java实操考核:编写一个简单的学生成绩管理系统

Java实操考核:编写一个简单的学生成绩管理系统简介学生成绩管理系统是一个常见的计算机实践项目,用于管理学生的课程成绩并进行基本的学生信息管理。
这个文档将指导你如何使用Java编写一个简单的学生成绩管理系统。
功能学生成绩管理系统应该具有以下功能: - 添加学生信息:包括学号、姓名、性别、年龄等基本信息。
- 添加课程成绩:包括课程名称和对应的分数。
- 查询学生信息:根据学号或姓名查询学生的基本信息和课程成绩。
- 修改学生信息:根据学号或姓名修改学生的基本信息和课程成绩。
- 删除学生信息:根据学号或姓名删除学生的信息。
设计思路学生成绩管理系统可以分为三个主要的类:Student、Course和Grade。
Student类表示学生,包含学生的基本信息,如学号、姓名、性别和年龄。
Course 类表示课程,包含课程名称和对应的分数。
Grade类表示学生成绩,包含学生的学号、课程名称和分数。
系统的主要逻辑如下: 1. 用户可以选择添加学生信息、添加课程成绩、查询学生信息、修改学生信息和删除学生信息等功能。
2. 添加学生信息时,用户需要输入学生的基本信息,并将其存储在一个学生列表中。
3. 添加课程成绩时,用户需要输入学生的学号和对应的课程名称及分数,并将其存储在一个成绩列表中。
4. 查询学生信息时,用户可以根据学号或姓名查询学生的基本信息和课程成绩。
5. 修改学生信息时,用户可以根据学号或姓名修改学生的基本信息和课程成绩。
6. 删除学生信息时,用户可以根据学号或姓名删除学生的信息。
实现步骤1.创建Student类,包含学生的基本信息(学号、姓名、性别、年龄)的成员变量和对应的get和set方法。
2.创建Course类,包含课程的名称和分数的成员变量和对应的get和set方法。
3.创建Grade类,包含学生的学号、课程名称和分数的成员变量和对应的get和set方法。
4.创建管理系统类,包含学生列表(ArrayList)和成绩列表(ArrayList)的成员变量。
用java写的一个简单的学生成绩管理系统(含代码)

用java写的一个简单的学生成绩管理系统一.简洁的需求描述学生成绩管理系统(以下简称系统)为教师和学生的信息交流提供了一个统一的平台,方便了教师对成绩的管理,学生对于成绩的查询等1.教师可以通过系统查询所授课程的信息以及课程所对应的学生的信息;教师通过系统管理学生分数信息,包括查询,输入,修改学生成绩。
2.学生用户仅仅拥有查询功能,查询的信息包括所选修课程信息和分数信息。
系统用例图:用例图解释系统功能大致上分为分数管理,课程管理,个人信息查询,分数查询四大块。
其中教师用户使用分数管理和课程管理功能,学生用户使用个人信息查询和分数查询功能。
细分来,分数管理指的是分数的录入,更新,查询;课程管理包括所授课程查询,课程信息录入,修改等;个人信息查询针对学生而言,包括姓名,学号,班级等;分数查询则指的是某一学期所有课程的分数信息的查询。
二.简单的设计说明2.1系统类图2009-04-12 18:38三。
简单的数据库设计ER图:数据库详细设计说明:1).数据库说明数据库取名为score_manage_system其中有五个表,分别为:TEACHER(TNO ,TNAME,SEX,TITLE,PASSWORD)..............教师信息表STUDENT (SNO,SNAME,SEX,CLASS,PASSWORD) .................学生信息表COURSE(CNO,CNAME,CXUEFEN,HOUR)..............................课程信息表TEACH(TNO,CNO)............................................................................教师授课信息表STUDY(SNO,CNO,SCORE)...........................................................学生选课信息表2009-04-12 18:412).字段说明3)TEACHER字段类型主码外码说明TNO CHAR(20) √ √ 教师代码TNAME CHAR(10) 教师姓名SEX CHAR(1) 教师性别TITLE CHAR(10) 职称PASSWORD CHAR(20) 登录密码STUDENT字段类型主码外码说明SNO CHAR(20) √ √ 学号SNAME CHAR(10) 学生姓名SEX CHAR(2) 性别CLASS CHAR(5) 班级PASSWORD CHAR(20) 登录密码DEPARTMENT CHAR(20) 学生所属院系SCHOOL CHAR(20) 学生所属学校COURSE字段类型主码外码说明CNO CHAR(20) √ √ 课程代码CNAME CHAR(10) 课程名称XUEFEN int 学分,取值大于0小于10HOUR int 学时,大于等于0YEAR CHAR(5) 学年TERM CHAR(1) 学分TEACH字段类型主码外码说明TNO CHAR(20) √教师代码CNO CHAR(20) √课程代码STUDY字段类型主码外码说明SNO CHAR(20) √学号CNO CHAR(20) √课程代码SCORE DOUBLE 分数,0--1003).建表语句TEACHER建表语句:create table TEACHER(TNO char(20) not null, TNAME char(10) not null, SEX char(1) not null,TITLE char(10) not null, PASSWORD char(20) not null, primary key (TNO),check(SEX in('男','女')));STUDENT建表语句:create table STUDENT(SNO char(20) not null, SNAME char(10) not null, SEX char(2) not null,CLASS char(5) not null, PASSWORD char(20) not null,DEPARTMENT char(20) not null,SCHOOL char(20) not null, primary key (SNO),check(SEX in('男','女')));COURSE建表语句:create table COURSE(CNO char(20) not null, CNAME char(10) not null, XUEFEN int not null, HOUR int not null, YEAR char(5) not null,TERM char(1) not null,primary key (CNO),check(XUEFEN > 0 and XUEFEN < 10 and HOUR >= 0 ));TEACH建表语句:create table TEACH(TNO char(20) not null, CNO char(20) not null, primary key (TNO, CNO)foreign key(TNO,CNO)REFERENCES TEACHER COURSE ,foreign key(CNO)REFERENCES COURSE);alter table TEACHadd constraint FK_TEACH_REFERENCE_TEACHER foreign key (TNO) references TEACHER (TNO)on update restricton delete restrict;alter table TEACHadd constraint FK_TEACH_REFERENCE_COURSE foreign key (CNO) references COURSE (CNO)on update restricton delete restrict;2009-04-12 18:41STUDY建表语句:create table STUDY(SNO char(20) not null, CNO char(20) not null,SCORE double ,primary key (SNO, CNO),check(SCORE >=0 and SCORE <= 100));alter table STUDYadd constraint FK_STUDY_REFERENCE_COURSE foreign key (CNO) references COURSE (CNO)on update restricton delete restrict;alter table STUDYadd constraint FK_STUDY_REFERENCE_STUDENT foreign key (SNO) references STUDENT (SNO)on update restricton delete restrict;2009-04-12 18:42四。
java成绩管理系统的实训总结报告

java成绩管理系统的实训总结报告Java成绩管理系统实训总结报告一、实训目标本次实训的目标是利用Java语言开发一个成绩管理系统,该系统能够实现对学校成绩的录入、查询、修改和删除等基本操作。
通过本次实训,我希望能够加深对Java语言的了解,提高编程能力,并熟悉软件开发的基本流程。
二、实训内容在本次实训中,我主要完成了以下几个部分的工作:1. 需求分析:首先对成绩管理系统的需求进行了详细的分析,确定了系统的基本功能和数据结构。
2. 系统设计:根据需求分析的结果,设计了数据库表结构和系统的主要功能模块。
3. 系统实现:使用Java语言实现了系统的各个功能模块,包括界面设计和后台逻辑处理。
4. 测试与调试:对系统进行了详细的测试,确保各个功能都能正常运行,并对出现的问题进行了调试和修复。
三、遇到的问题和解决方案在实训过程中,我遇到了以下几个问题:1. 数据库连接问题:最初在连接数据库时,出现了连接失败的情况。
经过检查,发现是连接字符串的配置出现了错误。
通过仔细检查并参考相关资料,最终解决了这个问题。
2. 界面设计问题:在界面设计中,最初版本的界面不够美观和易用。
通过学习和使用相关的UI设计工具和框架,我对界面进行了优化,使其更加美观和易用。
3. 数据验证问题:在处理数据时,没有对用户输入的数据进行有效的验证,导致出现了一些异常情况。
我通过添加数据验证代码,确保了数据的合法性和准确性。
四、实训收获与反思通过本次实训,我深入了解了Java语言在软件开发中的应用,提高了编程能力,并熟悉了软件开发的基本流程。
同时,我也意识到了在开发过程中需要注意的一些问题,如需求分析的准确性、代码的规范性和可维护性等。
在未来的学习和工作中,我将继续努力提高自己的技能和能力,以更好地适应社会和企业的需求。
此外,我也意识到了团队合作的重要性。
在实训过程中,我们需要相互协作、共同解决问题,才能按时完成项目。
在未来,我将更加注重团队合作,发挥每个人的优势,提高工作效率。
java学生成绩管理系统报告

Java学生成绩管理系统报告简介本文将介绍一个基于Java开发的学生成绩管理系统。
该系统旨在帮助学校和教师高效管理学生的成绩信息,包括录入、查询、统计和分析等功能。
开发环境和工具•Java编程语言•IntelliJ IDEA集成开发环境•MySQL数据库功能需求1. 学生信息管理•录入学生信息,包括学生姓名、学号、性别等基本信息。
•修改学生信息,如学号、班级等。
•删除学生信息。
2. 成绩录入和查询•录入学生的考试成绩,包括科目、分数、考试日期等。
•查询学生的考试成绩,可按照学生姓名、学号、科目等进行检索。
3. 成绩统计和分析•对学生的考试成绩进行统计,包括平均分、最高分、最低分等。
•根据科目、班级等条件进行成绩分析,生成成绩报表。
4. 数据备份与恢复•对学生信息和成绩数据进行备份,以防数据丢失或损坏。
•支持从备份中恢复数据。
数据库设计学生表(student)字段名类型备注学号int 主键姓名varchar(50)性别varchar(10)班级varchar(50)成绩表(score)字段名类型备注学号int 外键科目varchar(50)分数float考试日期date系统架构本系统采用Java MVC(Model-View-Controller)架构模式进行设计和开发。
•Model层:负责数据的处理和存储,包括与数据库的交互。
•View层:负责用户界面的展示和交互,使用Swing或JavaFX等GUI 库进行开发。
•Controller层:负责接收用户的请求,调用对应的Model方法进行数据处理,并更新View层的显示。
开发步骤1. 数据库连接和表设计使用JDBC连接MySQL数据库,并创建上述的学生表和成绩表。
2. 学生信息管理模块开发•创建学生类(Student)和学生管理类(StudentManager)。
•实现学生信息的录入、修改和删除功能。
3. 成绩录入和查询模块开发•创建成绩类(Score)和成绩管理类(ScoreManager)。
java学生成绩管理系统课程设计

Java学生成绩管理系统课程设计1. 简介Java学生成绩管理系统是一个用于管理学生课程成绩的应用程序。
它可以帮助学校、老师和学生轻松管理和查询学生的成绩信息,包括课程信息、学生信息和成绩信息。
该系统具有用户友好的界面和强大的功能,可以实现学生成绩的录入、修改、查询和统计等操作。
2. 功能需求Java学生成绩管理系统的主要功能如下:2.1 学生信息管理•学生信息的录入、修改和删除•学生信息的查询和显示•学生信息的批量导入和导出2.2 课程信息管理•课程信息的录入、修改和删除•课程信息的查询和显示•课程信息的批量导入和导出2.3 成绩信息管理•成绩信息的录入、修改和删除•成绩信息的查询和显示•成绩信息的批量导入和导出•成绩信息的统计和排名2.4 用户管理•用户的注册、登录和注销•用户密码的找回和修改•用户权限的管理3. 技术实现Java学生成绩管理系统使用Java语言开发,通过MySQL数据库存储数据,使用JDBC进行数据库操作。
系统采用MVC架构,将数据、视图和控制逻辑分离,提高了系统的可维护性和扩展性。
系统的界面采用Swing库进行设计,使用Java的GUI组件创建用户界面,并通过事件处理和监听器实现用户交互。
系统的数据存储和管理使用MySQL数据库,通过JDBC连接数据库,实现对数据的增删改查操作。
通过SQL语句对数据进行查询和统计,实现成绩信息的排名和统计功能。
系统的用户管理功能通过数据库存储用户信息,并提供注册、登录和注销功能。
用户密码的找回和修改通过邮件验证和安全问题验证实现。
4. 系统设计4.1 数据库设计系统的数据库设计包括以下表格:•学生表(Student):存储学生信息,包括学生编号、姓名、年龄、性别等字段。
•课程表(Course):存储课程信息,包括课程编号、课程名称、学分等字段。
•成绩表(Score):存储成绩信息,包括学生编号、课程编号、成绩等字段。
•用户表(User):存储用户信息,包括用户名、密码、邮箱等字段。
java学生成绩管理系统的实验目的

实验目的:通过设计和实现一个简单的Java学生成绩管理系统,加深对Java编程语言和面向对象编程的理解,提高编程能力和实践能力。
1. 理解面向对象编程的思想面向对象编程是一种程序设计范式,通过封装、继承和多态等特性,将现实世界中的实体抽象为对象,以对象为中心进行设计和开发。
通过实现学生成绩管理系统,能够更好地理解面向对象编程的思想,掌握对象的创建和使用,提高对对象和类的理解。
2. 提高对Java编程语言的熟练程度Java是一种广泛应用的面向对象编程语言,具有跨评台特性和丰富的类库。
通过实践设计和实现学生成绩管理系统,能够提高对Java编程语言的熟练程度,掌握Java的语法和特性,熟练使用类、对象、继承、多态等概念。
3. 学习软件开发流程和规范在开发学生成绩管理系统的过程中,可以学习软件开发的流程和规范,包括需求分析、系统设计、编码、测试和维护等各个阶段。
通过实践学习,更加全面地了解和掌握软件开发的流程和规范,提高对软件开发的整体把控能力。
4. 提高问题解决能力和创新能力在实验过程中,可能会遇到各种各样的问题和挑战,需要不断地解决和克服。
通过实践设计和实现学生成绩管理系统,能够提高对问题解决能力和创新能力,培养分析和解决问题的能力,锻炼独立思考和创新思维。
5. 培养团队合作精神和交流能力在实验过程中,可能需要与同学合作,共同完成学生成绩管理系统的设计和实现。
通过团队合作,可以培养团队合作精神和交流能力,学会与他人合作、协调和交流,提高团队协作能力和团队管理能力。
总结通过设计和实现一个简单的Java学生成绩管理系统,能够加深对Java 编程语言和面向对象编程的理解,提高编程能力和实践能力。
同时也能够学习软件开发流程和规范,培养问题解决能力和创新能力,提高团队合作精神和交流能力。
这对于提高计算机专业学生的实际操作能力和综合素质是非常有益的。
扩展内容:6. 加强对数据结构和算法的理解在设计学生成绩管理系统时,还需要考虑数据的存储和处理问题,这就涉及到了数据结构和算法的应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java综合性实验_学生成绩管理系统沈阳理工大学应用技术学院综合实验报告综合性实验—学生成绩管理系统班级:数学092 学号:200912010210 姓名:同艳云实验仪器设备:多媒体计算机。
实验目的:在掌握相关基础知识的基础上,学会自己设计实验,熟练掌握JDBC技术访问数据库(或数据文件)的方法、在Java中进行数据库应用程序开发的方法和步骤,熟悉Swing组件特性和Action接口并能够恰当运用实现特定功能,会开发多窗体应用程序。
实验要求:在8学时以内,制作出能够实现基本功能的学生成绩管理系统。
写出技术工作报告并附源程序。
实验内容及任务:1(进行数据库(或数据文件)设计,数据分为学生信息、成绩管理、信息查询等三部分;使用学生信息表、课程表两个数据表来存放数据。
2(选择适当组件进行界面设计:界面要美观大方,具有主菜单和相应工具栏及按钮;3(编写事件代码:能够实现学生信息维护(录入、修改和删除);学生信息浏览;按“学号”查询学生信息;按“姓名”和“所在班级”查询学生信息;按“学院名称”查询学生信息;按课程查询学生成绩等功能。
4(分析总结:学生成绩管理系统登录查询编辑存储管理学学生生系登基统录本管添删修信理加除改息沈阳理工大学应用技术学院综合实验报告1(数据库、数据表(或数据文件)设计;1.1学生基本信息表包含的信息是学生编号、学生姓名、学生性别、学生年龄、家庭住址、联系电话等信息,设计时注意ID字段设为主键,设为Int类型,如表4.1所示:表 4.1 学生基本信息表字段名数据类型说明ID Int 学生编号Name Varchar(10) 学生姓名Sex Char(10) 性别Age Int 年龄Address Varchar(50) 家庭住址Phone Char(15) 联系电话1.2班级基本信息表包括学生编号、科目类型、任课教师、所得分数,ID设为主键,如表4.2所示:表 4.2 班级基本信息信息表字段名数据类型说明ID Int 学生编号OType Varchar(10) 科目类型OName Varchar(10) 任课教师Grade int 所得分数 2.主控模块设计;2.1系统登录界面,如图4.3-4.6所示。
图 4.3沈阳理工大学应用技术学院综合实验报告图 4.4图 4.5 2.2系统主界面,如图4.6所示。
图 4.6 3.学生信息维护模块设计;3.1增加学生信息界面,如图4.7所示。
沈阳理工大学应用技术学院综合实验报告图4.7 3.2修改学生信息界面,如图4.8所示。
图 4.8 3.3.删除学生信息界面,如图4.9所示。
沈阳理工大学应用技术学院综合实验报告图4.94.学生信息查询模块设计;4.1按学号查找学生信息界面,如图4.10所示。
图4.104.2按姓名,学号查找学生信息界面,如图4.11所示。
沈阳理工大学应用技术学院综合实验报告图 4.11实验总结:通过本次实验设计,我对JAVA的知识又有了更深的了解,而且对Swing界面设计有了更深的领悟,而且更熟练使用JAVA和数据库的连接,以及对简单的数据库查询语言有了些许了解,然后在编程设计阶段还是遇到了许多问题,但是通过网上查询资料,以及和同学讨论这些问题都迎刃而解了,必须要有团结合作精神,而且要吃苦耐劳,耐心严谨,这次设计实验对我的知识技能和思维都是一个很好的锻炼。
附录1(系统登录界面程序代码import java.awt.*;import java.awt.event.*;import javax.swing.*;class WyFrame extends Frame implements ActionListener{Label l1,l2;TextField t1,t2;沈阳理工大学应用技术学院综合实验报告Button b1,b2;public static int k;public WyFrame(){super("学生管理系统"); setBackground(Color.lightGray);setLayout(null);setSize(240,160);this.setLocationRelativeTo(null);l1=new Label("用户名",Label.CENTER);l2=new Label("密码",Label.CENTER);t1=new TextField();t2=new TextField();b1=new Button("登入");b2=new Button("退出");l1.setBounds(40,45,40,30);l2.setBounds(40,80,40,30);t1.setBounds(90,45,100,25);t2.setBounds(90,80,100,25);b1.setBounds(50,115,60,30);b2.setBounds(125,115,60,30);b1.addActionListener(this);b2.addActionListener(this);add(l1);add(l2);add(t1);add(t2);add(b1);add(b2);this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ dispose();System.exit(0);}});setVisible(true);}public void actionPerformed(ActionEvent e){if(e.getSource()==b1)k=1;if(e.getSource()==b2)k=2;repaint();if(k==1){if(t1.getText().toString().trim().equals("09321104")&& t2.getText().toString().trim().equals("880902")) {MyMenu hyf=new MyMenu();this.setVisible(false);沈阳理工大学应用技术学院综合实验报告}else{if(t1.getText().toString().trim().equals("09321104")){JOptionPane.showMessageDialog(this,"密码与用户名不匹配~"); }elseJOptionPane.showMessageDialog(this,"用户名错误~");}}if(k==2){dispose();System.exit(0);}}}public class Login{public static void main(String args[]){WyFrame hyf=new WyFrame();}}2.系统主界面程序代码(含有菜单)import java.awt.*;import java.awt.event.*;import java.util.*;public class MyMenu extends Frame implements ActionListener{public MyMenu(){super("学生管理系统");setSize(400,300);setBackground(Color.lightGray);setVisible(true);setLocationRelativeTo(null);this.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){dispose();System.exit(0);}});Menu file=new Menu("文件");MenuItem exit=new MenuItem("退出");沈阳理工大学应用技术学院综合实验报告file.add(exit);Menu student=new Menu("学生信息管理");MenuItem ins=new MenuItem("增加学生信息"); MenuItem del=new MenuItem("删除学生信息"); MenuItem upd=new MenuItem("修改学生信息"); MenuItem sel=new MenuItem("查找学生信息");student.add(ins);student.add(del);student.add(upd);student.add(sel);MenuBar hyf=new MenuBar();hyf.add(file);hyf.add(student); setMenuBar(hyf);exit.addActionListener(this);ins.addActionListener(this);del.addActionListener(this);upd.addActionListener(this);sel.addActionListener(this);}public void actionPerformed(ActionEvent e) {String strCmd=e.getActionCommand(); if(strCmd.equals("退出")){ System.exit(0);}if(strCmd.equals("增加学生信息")){ Insert ins=new Insert();}if(strCmd.equals("删除学生信息")){ Insert del=null;}if(strCmd.equals("修改学生信息")){ Update upd=new Update();}if(strCmd.equals("查询学生信息")){ Select sel=new Select();}repaint();}}3.添加学生信息界面程序代码import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;public class Insert extends Frame implements ActionListener ,ItemListener {CheckboxGroup cg=new CheckboxGroup();Label l1,l2,l3,l4,l5,l6,l7;沈阳理工大学应用技术学院综合实验报告TextField t1,t2,t3,t4,t5,t6,t7;Button b1,b2;Checkbox c1,c2;public static Student hyf;public static String a1,a2,a3,a4,a5,a6,a7;public Insert(){super("添加学生信息界面");setBackground(Color.lightGray);setLayout(null);l1=new Label("姓名",Label.CENTER);l2=new Label("性别",Label.CENTER);l3=new Label("出生日期",Label.CENTER); l4=new Label("学号",Label.CENTER);l5=new Label("计算机成绩",Label.CENTER); l6=new Label("英语成绩",Label.CENTER); l7=new Label("数学成绩",Label.CENTER); c1=new Checkbox("男",cg,true);c2=new Checkbox("女",cg,false);c1.addItemListener(this);c2.addItemListener(this);t1=new TextField();t2=new TextField();t3=new TextField();t4=new TextField();t5=new TextField();t6=new TextField();t7=new TextField();b1=new Button("确定");b2=new Button("退出");b1.addActionListener(this);b2.addActionListener(this);add(l1);add(t1);add(l2);add(t2);add(l3);add(t3);add(l4);add(t4);add(l5);add(t5);add(l6);add(t6);add(l7);add(t7);add(b1);add(b2);add(c1);add(c2);l1.setBounds(40,60,70,30);l2.setBounds(40,90,70,30);l3.setBounds(40,120,70,30);l4.setBounds(40,150,70,30);l5.setBounds(40,180,70,30);l6.setBounds(40,210,70,30);沈阳理工大学应用技术学院综合实验报告l7.setBounds(40,240,70,30);t1.setBounds(120,60,100,30);c1.setBounds(120,90,50,30);c2.setBounds(170,90,50,30); t3.setBounds(120,120,100,30);t4.setBounds(120,150,100,30);t5.setBounds(120,180,100,30);t6.setBounds(120,210,100,30);t7.setBounds(120,240,100,30);b1.setBounds(100,280,80,30);b2.setBounds(200,280,80,30);c1.setState(true);a2="男";addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){dispose();System.exit(0);}});//关闭窗口setSize(400,350); setLocationRelativeTo(null); setVisible(true);}public void itemStateChanged(ItemEvent e) {if(e.getItemSelectable()==c1)a2="男";if(e.getItemSelectable()==c2)a2="女";}public void actionPerformed(ActionEvent e) {String strCmd=e.getActionCommand(); if(strCmd.equals("退出")){ this.hide();} if(strCmd.equals("确定")){a1=t1.getText();char c1[]=a2.toCharArray();a3=t3.getText();a4=t4.getText();a5=t5.getText();a6=t6.getText();a7=t7.getText();hyf.setcompScore( Integer.parseInt(a5.trim()));hyf.setengScore(Integer.parseInt(a6.trim()));沈阳理工大学应用技术学院综合实验报告hyf.setmathScore(Integer.parseInt(a7.trim()));}repaint();}}4.修改学生记录界面程序代码import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;public class Update extends Frame implements ActionListener {Label l1,l2,l3,l4,l5,l6,l7;TextField t1,t2,t3,t4,t5,t6,t7;Button b1,b2;public static String a1,a2,a3,a4,a5,a6,a7;public Update(){super("学生管理增加学生界面"); setBackground(Color.lightGray);setLayout(null);l1=new Label("姓名",Label.CENTER);l2=new Label("性别",Label.CENTER);l3=new Label("出生日期",Label.CENTER); l4=new Label("学号",Label.CENTER);l5=new Label("计算机成绩",Label.CENTER); l6=new Label("英语成绩",Label.CENTER); l7=new Label("数学成绩",Label.CENTER); t1=new TextField();t2=new TextField();t3=new TextField();t4=new TextField();t5=new TextField();t6=new TextField();t7=new TextField();b1=new Button("确定");b2=new Button("退出");b1.addActionListener(this);b2.addActionListener(this);add(l1);add(t1);add(l2);add(t2);add(l3);add(t3);add(l4);add(t4);add(l5);add(t5);add(l6);add(t6);add(l7);add(t7);add(b1);add(b2);沈阳理工大学应用技术学院综合实验报告l1.setBounds(40,60,70,30);l2.setBounds(40,90,70,30);l3.setBounds(40,120,70,30);l4.setBounds(40,150,70,30);l5.setBounds(40,180,70,30);l6.setBounds(40,210,70,30);l7.setBounds(40,240,70,30);t1.setBounds(120,60,100,30);t2.setBounds(120,90,100,30);t3.setBounds(120,120,100,30);t4.setBounds(120,150,100,30);t5.setBounds(120,180,100,30);t6.setBounds(120,210,100,30);t7.setBounds(120,240,100,30);b1.setBounds(100,280,80,30);b2.setBounds(200,280,80,30); addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){dispose();System.exit(0);}});//关闭窗口setSize(400,350); setLocationRelativeTo(null);setVisible(true);}public void actionPerformed(ActionEvent e){String strCmd=e.getActionCommand();if(strCmd.equals("退出")){ this.hide();}if(strCmd.equals("确定")){a1=t1.getText();String a2=t2.getText();char c1[]=a2.toCharArray();a3=t3.getText();a4=t4.getText();a5=t5.getText();a6=t6.getText();a7=t7.getText();=a1;Insert.hyf.sex=c1[0];Insert.hyf.birthday=a3;Insert.hyf.number=a4;沈阳理工大学应用技术学院综合实验报告Insert.hyf.setcompScore( Integer.parseInt(a5.trim())); Insert.hyf.setengScore(Integer.parseInt(a6.trim()));Insert.hyf.setmathScore(Integer.parseInt(a7.trim()));}repaint();}}5.查找学生记录界面程序设计import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;public class Select extends Frame implements ActionListener {Label l1,l2,l3,l4,l5,l6,l7,l8,l9,l10;TextField t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;Button b1,b2;public Select(){super("学生管理查询学生界面"); setBackground(Color.lightGray);setLayout(null);l1=new Label("姓名",Label.CENTER);l2=new Label("性别",Label.CENTER);l3=new Label("出生日期",Label.CENTER);l4=new Label("学号",Label.CENTER);l5=new Label("计算机成绩",Label.CENTER);l6=new Label("英语成绩",Label.CENTER);l7=new Label("数学成绩",Label.CENTER);l8=new Label("最大值",Label.CENTER);l9=new Label("最小值",Label.CENTER);l10=new Label("平均值",Label.CENTER);t1=new TextField();t2=new TextField();t3=new TextField();t4=new TextField();t5=new TextField();t6=new TextField();t7=new TextField();t8=new TextField();t9=new TextField();t10=new TextField();b1=new Button("查询");b2=new Button("退出");b1.addActionListener(this);沈阳理工大学应用技术学院综合实验报告b2.addActionListener(this);add(l1);add(t1);add(l2);add(t2);add(l3);add(t3);add(l4);add(t4);add(l5);add(t5);add(l6);add(t6);add(l7);add(t7);add(b1);add(b2);add(t8);add(t9);add(t10);add(l8);add(l9);add(l10);l1.setBounds(40,60,70,30);l2.setBounds(40,90,70,30);l3.setBounds(40,120,70,30);l4.setBounds(40,150,70,30);l5.setBounds(40,180,70,30);l6.setBounds(40,210,70,30);l7.setBounds(40,240,70,30);l8.setBounds(40,270,70,30);l9.setBounds(40,300,70,30);l10.setBounds(40,330,70,30);t1.setBounds(120,60,100,30);t2.setBounds(120,90,100,30);t3.setBounds(120,120,100,30);t4.setBounds(120,150,100,30);t5.setBounds(120,180,100,30);t6.setBounds(120,210,100,30);t7.setBounds(120,240,100,30);t8.setBounds(120,270,100,30);t9.setBounds(120,300,100,30);t10.setBounds(120,330,100,30);b1.setBounds(100,370,80,30);b2.setBounds(200,370,80,30); addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){dispose();System.exit(0);}});setSize(400,450);setLocationRelativeTo(null);setVisible(true);}public void actionPerformed(ActionEvent e)沈阳理工大学应用技术学院综合实验报告{String strCmd=e.getActionCommand();if(strCmd.equals("退出")) this.hide();if(strCmd.equals("查询")){t1.setText(.toString());t2.setText(String.valueOf(Insert.hyf.sex));t3.setText(Insert.hyf.birthday);t4.setText(Insert.hyf.number);t5.setText(String.valueOf(Insert.hyf.getcompScore()));t6.setText(String.valueOf(Insert.hyf.getengScore()).toString()); t7.setText(String.valueOf(Insert.hyf.getmathScore()).toString()); t8.setText(String.valueOf(Insert.hyf.getMaxScore()));t9.setText(String.valueOf(Insert.hyf.getMinScore())); t10.setText(String.valueOf(Insert.hyf.getAverScore())); }repaint();}}。