java学生成绩管理系统实验报告
java学生成绩管理系统报告
XueSheng frame1=new
XueSheng();
frame1.setResizable(true);
}
else
if((f1.getText()).equals("tang")&&(f2.get
Text()).equals("123456"))
{
JOptionPane.showMessageDialog(null,"
public void actionPerformed(ActionEvent
e)
{
f1.setText("");
f2.setText("");
f1.requestFocus();
}
}
class Close implements ActionListener{
public void actionPerformed(ActionEvent e)
}
class Enter implements ActionListener{ public voidactionPerformed(ActionEvent e)
{
if((f1.getText()).equals("tang")&&(f2.get
Text()).equals("051141"))
{
JOptionPane.showMessageDialog(null,"登录成功!用户权限是管理员");
数据流组成: 课程编号(文本)、课程名称(文本)、 教师(文本)等。
4)数据流名:返回信息 说明:根据用户在学生信息维护的时候所填写的信 息存入了数据库之后。
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学生信息管理系统实验报告(共10篇)
java学生信息管理系统实验报告(共10篇)JAVA学生信息管理系统实验报告JAVA程序设计实验报告学号:姓名:班级:实验、Java课程设计--------学生信息管理系统一、实验目的1.掌握Java基本语法2.理解面向对象编程特点3.理解Java I/O编程4.掌握Java图形界面编程5.掌握Java与不同数据库进行连接二、预习内容Java的基本语法知识、类和对象、Java Swing图形界面编程、Java I/O处理以及Java与数据库连接操作三、实验设备与环境通过局域网互联,安装Windows 2000/XP操作系统环境的JDK1.6,my eclipse或者EditPlus编程工具。
并安装MySQL数据库四、实验内容编写并调试运行Java程序,进行设计,掌握Java开发的基础。
五、实验任务设计学生信息管理系统。
要求包括1. 登陆模块:设立超级管理员权限,用户可以根据不同的权限登陆系统,超级管理员可以对学生信息进行增、删、改、查操作。
而普通用户只可以查找学生信息。
2. 包括学生添加信息模块、学生信息删除模块、学生信息修改模块和学生信息查询模块3.对于管理员,可以对管理员进行添加、删除以及修改密码等操作。
六、实验报告(要求独立完成参考程序的代码、编译、调试与运行)1、程序清单:1.1程序模块清单package Pan;import java.awt.event.ItemListener;import javax.swing.*;import ponent;import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.event.InputEvent;import java.awt.event.ItemListener;import java.awt.event.KeyEvent;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.util.*;import java.awt.Color;import java.text.DecimalFormat;import java.sql.*;import java.sql.Date;import java.awt.*;import java.util.Vector;public class Res{/*** @param args*/public static void main(String[] args){FirstWindow win =new FirstWindow(学生信息管理系统); }}class FirstWindow extends JFrame implements ActionListener {JMenuBar menubar;JMenu menu1,menu2,menu3,menu4;public final JMenuItem a11,a12,a13,a14,a15,a16,a17; public final JMenuItem a21,a22,a23,a24;public final JMenuItem a3;public final JMenuItem a4;public final JButton btn;JPanel pnl;JLabel label;boolean flag;FirstWindow(String s){setTitle(s);setSize(400,400);setLocation(100,100);setVisible(true);setDefaultCloseOperation(3);pnl=new JPanel();this.getContentPane().add(pnl);pnl.setLayout(new BorderLayout());label=new JLabel(欢迎使用学生管理系统,JLabel.CENTER);label.setForeground(Color.red);pnl.add(label,BorderLayout.CENTER);menubar=new JMenuBar();menu1=new JMenu(使用);menu2=new JMenu(用户管理);menu3=new JMenu(帮助);menu4=new JMenu(退出);a11=new JMenuItem(管理员登录);a12=new JMenuItem(查询学生信息);a13=new JMenuItem(更改学生信息);a14=new JMenuItem(删除学生信息);a15=new JMenuItem(添加学生信息);a16=new JMenuItem(超级管理员登录);篇二:java学生成绩管理系统实验报告JAVA课内实验报告学生成绩管理系统一. 实验目的及实验环境实验目的:在如今的高校日常管理当中,学生成绩管理系统就是其中非常重要的一环,特别是当前学生规模大,课程门类多,校区分散等实际情况,学生成绩管理系统更具有非常大的实际应用意义。
java学生成绩管理系统课程设计报告
目录1设计目的及内容要求 (1)2 系统总体设计 (1)3 系统详细设计 (2)4 运行结果及分析 (18)致谢 (22)参考文献 (22)简单学生成绩管理系统的设计与实现1设计目的及内容要求1、设计目的:巩固和加深学生对高级语言程序设计课程的基本知识的理解和掌握,掌握java语言编程和程序调试的基本技能,利用java语言进行基本的软件设计,提高运用java语言解决实际问题的能力。
2、内容要求实现学生成绩的管理(增、删、改、查询、持久化、成绩排序、成绩统计等功能),在文件中增加、删除、学生信息,根据学号查询、修改学生信息,统计功能求每个人的总分并按从高到低排序,通过这些操作对文件中的信息保存。
2 系统总体设计成功登陆系统以后,出现成绩管理界面,系统初始化,可对学生成绩进行增加、删除、查询、修改、统计,进入相应界面进行成绩管理,退出系统自动保存本次操作内容,保存信息。
简易流程图:3 系统详细设计①创建Student类,设置变量及对应方法Student.java代码:package keshe;import java.io.Serializable;public class Student implements Serializable{private String name;private int num;private int yuwen;private int shuxue;private int java;private int sum=0;public Student(){}public Student(String name, int num, int yuwen, int shuxue, int java) {super(); = name;this.num = num;this.yuwen = yuwen;this.shuxue = shuxue;this.java = java;}public String getName() {return name;}public void setName(String name) { = name;}public int getNum() {return num;}public void setNum(int num) {this.num = num;}public int getYuwen() {return yuwen;}public void setYuwen(int yuwen) {this.yuwen = yuwen;}public int getShuxue() {return shuxue;}public void setShuxue(int shuxue) {this.shuxue = shuxue;}public int getJava() {return java;}public void setJava(int java) {this.java = java;}public int getSum() {return sum;}public void setSum(int sum) {this.sum = sum;}public String toString() {return"Student [name=" + name + ", num=" + num + ", yuwen=" + yuwen+ ", shuxue=" + shuxue + ", java=" + java + ", sum=" + sum+ "]";}}②Student管理类StuC,创建对应方法,实现对Student对象的操作(增、删、改、查询、持久化、成绩排序、成绩统计等功能)供其对象调用。
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 课内实验报告学生成绩管理系统一 . 实验目的及实验环境实验目的:在此刻的高校平时管应中间,学生成绩管理系统就是其中特别重要的一环,特别是当前学生规模大,课程门类多,校区分别等实质情况,学生成绩管理系统更拥有特别大的实质应企图义。
但是,我们看到,其实我们学校的学生成绩管理系统在很多方面作的不是很完满,功能方面也有欠缺。
随着科技的发展,根本上所有的拥有必然数量数据的机构都开始使用计算机数据库来做管理。
几乎所有学校也都已经在使用计算机管理数据的体系,大大减少了学校学生成绩管理的工作量。
该课程设计旨在设计一个学生成绩的数据库管理系统,数据库中要求包括学生的根本信息,学科根本信息,以及学生所学课程的考试成绩。
要方便学生进行成绩盘问,经过该课程设计,应该到达把java 理论知识更加的坚固加深,加强着手能力与实践能力,学以致用,与现实生活中的应用充分的结合起来。
实验环境:JAVA开发工具Microsoft SQL Server 2005二 . 实验内容在 JAVA开发工具和Microsoft SQL Server 2005环境下,运用学到的 java 和数据库理论知识,设计一个拥有简单的增加 ` 删除 ` 更正 ` 盘问操作的学生成绩管理系统。
三.方案设计1、系统功能设计要求此系统实现以下功能:(1〕使得学生的成绩管理工作更加清楚、条理化、自动化。
(2〕经过用户名和密码登录系统,盘问、删除、更正和增加课程根本资料 ` 学生所选课程 ` 用户密码等功能。
简单地完成学生成绩信息及学生信息的根本操作。
(3)设计人机友好界面,功能安排合理,操作使用方便,并且进一步考虑系统在安全性,完满性,并发控制,备份和恢复等方面的功能要求。
2、系统模块设计学生成绩管理系统大体可以分成两大模块:一是学生的根本信息模块,里面应该包括学生的各方面的根本信息;二是课程管理模块,在该模块中应该包括有对学生成绩信息的盘问和办理;可以获取的系统流程图以以下列图所示:系统启动关于系统学籍管理班级管理用浏修添退添修查添修户览改加出加改询加改登用密用学学学班班录户码户籍籍籍级级信信信信信息息息息息否管理员课程设置成绩管理添修设添修查加改置加改询课课年成成成程程级绩绩绩信信课信信信息息程息息息是图学生成绩管理系统的系统流程图3、数据字典数据项是数据库的关系中不可以再分的数据单位,下表分别列出了数据的名称、数据种类、长度、取值可否为空。
学生考试成绩分析JAVA程序报告
学生考试成绩分析JAVA程序一、实验目的(1)掌握图形用户界面的基本设计方法。
(2)掌握事件驱动程序设计的方法。
(3)掌握JA V A中绘图的方法。
(4)掌握面向对象程序建立的过程。
(5)进一步掌握UML中类图的使用。
二、实验过程1、系统分析题目的要求大概可分为3个模块:要实现这个程序其实就是构建一个面向对象的过程,有以下步骤:1.确定、标识系统的类。
2.描述每个类的属性和方法。
3.建立类之间的关系。
4.创建类。
第一步是为系统确定、标识类。
有许多方法可以为系统确定类,一种方法是研究系统的运转机制,并且选择一定数量有用的实例或场景。
第二步是对已经确定的每个类描述其属性和方法,它们可以用UML图表示,如上图所示。
第三步是建立类之间的关系。
关系来源于欠两步的分析,这三步是相互关联的。
当划分的时候,也需要思考它们之间的关系。
建立对象之间的关系有助于理解对象之间的相互作用。
一个面向对象系统由相互关联、相互合作的对象组合而成。
上图说明了本例中类的关系第四步是编写类的代码。
程序虽然较长,但是大部分代码是get和set方法。
一旦对象确定下来,就可以通过分析系统的需求和方案来定义他的属性和方法。
通常,提供完整的get方法和set方法是一个很好的习惯。
当前的项目也许不需要这些方法,但是其他项目可能需要,设计类是应该考虑到今后的项目可能使用它们。
2、系统设计三、系统实现:该程序主要创建了五介类:Scores类,要实现这个程序,我们除了要构建出不同的类外,重要的是创建界面GUI,同时实现多个界面GUI同时显示出来,我们还要很熟悉JAVA中的创建各种界面GUI的类。
在实现GUI的类时,我们要注意实现接口。
实现基本数据输入,考试成绩输入,成绩查询都是要求我们熟悉各种GUI 的类同时要懂得创建GUI的类;在实现成绩分析时,分数分析和分数段分析我们可以用swing包中的JoptionPane实现,图形分析,要注意JAVA的坐标。
Java学生成绩管理系统报告
一、实验题目基于JSP/Servlet设计、实现一个课程管理Web应用程序,该程序实现如下功能。
❖有登录页面,登录用帐号密码保存在数据库中,合法登录后进入学习成绩管理页面。
否则给出错误提示。
❖在学习成绩管理页面可添加一门课程的成绩,添加内容包括:课程编号、课程名称、学生姓名、课程成绩等内容。
添加后信息保存在数据库中。
❖可根据课程名称和学生姓名进行查询。
❖可删除和修改课程信息的内容。
(即删除一条课程记录或修改课程记录中的某一字段)。
二、程序设计1.数据库设计:经过分析可知,改程序主要有如下的实体对象,用户、课程、学生三个实体对象。
因此该数据库主要有四张表,分别如下:连接数据库的类设计如下:package database;import java.sql.Connection;import java.sql.DriverManager;public class DataBaseConnection {public static Connection createDBConn(){try{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");Connectionconn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433; DatabaseName=Student_system","supiyun","supiyun1989828");return conn;}catch(Exception e){e.printStackTrace();return null;}}}2.程序界面设计:通过程序的要求可知该程序有jsp页面或Html页面以及servlet组成。
Jsp 主要负责与用户的交互实现视图页面的功能,而servlet主要负责页面跳转控制以及数据处理的功能。
JAVA程序课程设计_一个简单的学生成绩管理信息系统
-4-
1.主界面
3. 算法实现及分析 (内容:要求小四号字体)
-7-
(7)没有退出的按钮,尚未实现退出语句。
5. 设计体会与小结
(内容:要求小四号字体)
选择“一个简单的学生成绩管理系统”作为这一次的课题,是因为这个课题 主要运用的是 Java 与数据库的相关知识,而这个学期,我们正好学习了这两门 课程,在这个课题中 Java 与数据库知识的结合,是对这两个课程理解学习成果 的一个双重考察。
query=new JButton("查询数据"); query.addActionListener(new queryActionPerformed()); query.setBackground(Color.green);
modify=new JButton("修改数据"); modify.setBackground(Color.green); modify.addActionListener(new modifyActionPerformed());
-9-
附录(源代码)
(内容:要求小五号字体)
一、架包
package com.tarena.util;
import java.sql.Connection; import java.sql.DriverManager;
public class ConnectionUtil { public static Connection getConnection()throws Exception{ Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://localhost:3306/JSD1407"; String user="root"; String password="1234"; Connection conn=DriverManager.getConnection(url,user,password); return conn; } public static void main(String[] args) throws Exception{ System.out.println(getConnection()); }
学生成绩管理系统综合实验报告
《Java高级编程》课程报告学生成绩管理系统小组成员及分工一、实验环境操作系统:Windows7编程环境:Eclipse二、实验内容与完成情况1.登录用户(1)登录用户:有3种不同的方式登录,管理员登录、教师登录和学生。
每个用户都有自己的账号和密码,通过输入账号和密码来登录,输入账号和密码后会检查是否合理,即账号只能由数学组成,密码只能数字和字母组成,否则会提示错误登录不成功;然后再查找数据库,如果找到匹配的账号和密码,就登录成功,否则登录不成功。
登录成功后会添加相应的功能,管理员可以增删改查学生,教师可以修改和查找学生,学生只能查找学生。
(2)流程图:(3)代码:String s1 = textField.getText();String s2 = passwordField.getText();StudentDao dao = new StudentDao();boolean result = false;if(radioButton.isSelected()==true){ //管理员登录result = dao.seachadministrators(s1, s2);if(result){ //登录成功menuEdit.removeAll();menuEdit.add(AddItem);menuEdit.add(SDEItem);}}else if(radioButton_1.isSelected()==true){ //教师登录result = dao.seachteacher(s1, s2);if(result){ //登录成功menuEdit.removeAll();SDEItem.setText("改查学生");menuEdit.add(SDEItem);}}else if(radioButton_2.isSelected()==true){ //学生登录result = dao.seachstudent(s1, s2);if(result){ //登录成功menuEdit.removeAll();SDEItem.setText("查找学生");menuEdit.add(SDEItem);}}2.增加学生(1)增加学生:输入学生姓名、学号、性别、班别、成绩等信息,判断输入的信息是否为空,如果为空提示错误(如姓名为空,就提示姓名不能为空,其他的一样),增加学生失败。
JAVA数据库学生成绩管理系统实验报告
J A V A数据库学生成绩管理系统实验报告文档编制序号:[KK8UY-LL9IO69-TTO6M3-MTOL89-FTT688]实训报告实训名称:学生成绩管理系统系(部):专业班级:学生姓名:学号:指导教师:完成日期:南京铁道职业技术学院目 录……………………………装……………………………………订…………………………………线……………………………Java访问并处理数据库的设计与实现1 实训概述南京铁道职业技术学院浦口校区2013级网络L1301班于大二上学期组织了为期一周的Java实训,本次实训的课题是“学生成绩管理系统”。
通过综合实训,掌握运用Java语言基本知识和技能、 JAVA的基本语法与JDBC数据库技术的应用;进一步熟悉Oracle数据库的数据库管理(数据库的创建、应用)。
表的创建、修改、删除,约束及关系等、数据的查询处理(insert、update、delete、select语句等技术。
2 Java访问并处理数据库的课题描述2.1 课题简介经过分析,我们使用Java开发工具,利用其提供的各种面向对象的开发工具,Java?技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
使用的数据库是Oracle,Oracle数据库功能强大,学习起来也不难,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。
通过实训,我们掌握运用Java语言知识和技能,运用JAVA的基本语法与JDBC数据库技术的应用,完成对甲骨文数据库的数据库管理、例如表的设计(表的创建、修改、删除,字段的默认值、约束及关系等)、数据的查询处理(insert、update、delete、select语句的应用)等技术;并能结合数据库应用技术和jdbc进行小型数据库管理系统的开发。
2.2 模块简介管理员模块功能需求:管理员身份登陆系统后,可以对学生信息进行添加、修改和查询等操作,对学生进行添加、修改和查询功能操作,还可以修改管理员的登录密码。
学生管理系统实验报告
学生管理系统实验报告一、实验目的: 学习学生管理系统java程序编程、编写学生管理系统程序。
二、实验环境: 在软件Eclipse运行环境下运行1.实验步骤:2.在Eclipse环境中创建一个java工程, 然后创建学生管理系统类, 并在这类中编写代码。
3.调试代码, 并进行纠正。
4.检验试验结果, 查看是否符合要求。
5.得到结果。
实验内容代码:import java.awt.*;import java.awt.event.*;import java.sql.*;import java.util.*;import javax.swing.*;import javax.swing.border.*;import javax.swing.JDialog;import javax.swing.JFrame;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.Vector;import javax.swing.table.*;public class Xsglxt extends JFrame implements ActionListener { JPanel mb1,mb2;JLabel bq1;JTextField wbk1;JButton an1,an2,an3,an4;JTable bg1;JScrollPane gd1;Xsxx xsxx2;public static void main(String[] args){Xsglxt xs=new Xsglxt();}public Xsglxt(){mb1=new JPanel();bq1=new JLabel("请输入姓名");wbk1=new JTextField(10);an1=new JButton("查询");an1.addActionListener(this);an1.setActionCommand("chaxun");mb1.add(bq1);mb1.add(wbk1);mb1.add(an1); mb2=new JPanel();an2=new JButton("添加");an2.addActionListener(this);an2.setActionCommand("tianjia");an3=new JButton("修改");an3.addActionListener(this);an3.setActionCommand("xiugai");an4=new JButton("删除");an4.addActionListener(this);an4.setActionCommand("shanchu");mb2.add(an2);mb2.add(an3);mb2.add(an4);xsxx2=new Xsxx();bg1=new JTable(xsxx2);gd1=new JScrollPane(bg1);this.add(gd1);this.add(mb1,"North");this.add(mb2,"South");this.setTitle("学生管理系统");this.setSize(500,400);this.setLocation(201,181);this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}public void actionPerformed(ActionEvent e){if(e.getActionCommand().equals("chaxun")){String xingming=this.wbk1.getText().trim();String sql="select * from xuesheng where xingming='"+xingming+"'";xsxx2=new Xsxx(sql);bg1.setModel(xsxx2);else if(e.getActionCommand().equals("tianjia")){Tianjia tj=new Tianjia(this,"添加学生信息",true);System.out.println("123456");xsxx2=new Xsxx();bg1.setModel(xsxx2);}else if(e.getActionCommand().equals("xiugai")){int ii=this.bg1.getSelectedRow();if(ii==-1){JOptionPane.showMessageDialog(this,"请选中要删除的行");return;}new Xiugai(this,"修改学生信息",true,xsxx2,ii);System.out.println("123456");xsxx2=new Xsxx();bg1.setModel(xsxx2);else if(e.getActionCommand().equals("shanchu")){int ii=this.bg1.getSelectedRow();if(ii==-1){JOptionPane.showMessageDialog(this, "请选中要删除的行");return;}String st=(String)xsxx2.getValueAt(ii,0);PreparedStatement ps=null;Connection ct=null;ResultSet rs=null;Statement sn=null;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");ct=DriverManager.getConnection("jdbc:odbc:sqlserver","sa","12 3456");//String xuehao=this.wbk1.getText().trim();ps=ct.prepareStatement("delete from xuesheng where xuehao=?");ps.setString(1, st);ps.executeUpdate();}catch(Exception c2){e.paramString();}finally{try{if(rs!=null){rs.close();}if(ps!=null){ps.close();}if(ct!=null){ct.close();}}catch(Exception e3){}}xsxx2=new Xsxx();bg1.setModel(xsxx2);}}}import java.awt.*;import java.awt.event.*;import java.sql.*;import java.util.*;import javax.swing.*;import javax.swing.border.*; import javax.swing.JDialog; import javax.swing.JFrame; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet;import java.util.Vector;import javax.swing.table.*;public class Xiugai extends JDialog implements ActionListener { JLabel bq1, bq2, bq3, bq4, bq5, bq6;JTextField wbk1, wbk2, wbk3, wbk4, wbk5, wbk6;JButton an1, an2;JPanel mb1, mb2, mb3, mb4;public Xiugai(Frame fck, String ckm, Boolean msck, Xsxx xsxx2, int hang) {super(fck, ckm, msck);bq1 = new JLabel(" 学号");bq2 = new JLabel(" 姓名");bq3 = new JLabel(" 性别");bq4 = new JLabel(" 年龄");bq5 = new JLabel(" 籍贯");bq6 = new JLabel(" 院系");wbk1 = new JTextField(5);wbk1.setText((String) xsxx2.getValueAt(hang, 0));wbk1.setEditable(false);wbk2 = new JTextField(5);wbk2.setText((String) xsxx2.getValueAt(hang, 1));wbk3 = new JTextField(5);wbk3.setText((String) xsxx2.getValueAt(hang, 2)); wbk4 = new JTextField(5);wbk4.setText((String) xsxx2.getValueAt(hang, 3)); wbk5 = new JTextField(5);wbk5.setText((String) xsxx2.getValueAt(hang, 4)); wbk6 = new JTextField(5);wbk6.setText((String) xsxx2.getValueAt(hang, 5));an1 = new JButton("修改");an1.addActionListener(this);an1.setActionCommand("tiangjia2");an2 = new JButton("取消");an2.addActionListener(this);an2.setActionCommand("quxiao");mb1 = new JPanel();mb2 = new JPanel();mb3 = new JPanel();mb4 = new JPanel();mb1.setLayout(new GridLayout(6, 1));mb2.setLayout(new GridLayout(6, 1));mb1.add(bq1);mb1.add(bq2);mb1.add(bq3);mb1.add(bq4);mb1.add(bq5);mb1.add(bq6);mb2.add(wbk1);mb2.add(wbk2);mb2.add(wbk3);mb2.add(wbk4);mb2.add(wbk5);mb2.add(wbk6);mb3.add(an1);mb3.add(an2);this.add(mb1, BorderLayout.WEST); this.add(mb2);this.add(mb3, BorderLayout.SOUTH); this.add(mb4, BorderLayout.EAST);this.setSize(370, 270);this.setLocation(401, 261);this.setResizable(false);//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}public void actionPerformed(ActionEvent e){if(e.getActionCommand().equals("tiangjia2")){PreparedStatement ps=null;Connection ct=null;ResultSet rs=null;Statement sm=null;System.out.println("00000000000");try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");System.out.println("1111111111");ct=DriverManager.getConnection("jdbc:odbc:sqlserver","sa","12 3456");System.out.println("222222222222");String ss=("update xuesheng set xingming=?,xingbie=?,nianling=?,jiguan=?,yuanxi=? where xuehao='"+wbk1.getText().trim()+"'");ps=ct.prepareStatement(ss);ps.setString(1, wbk2.getText());ps.setString(2, wbk3.getText());ps.setString(3, wbk4.getText());ps.setString(4, wbk5.getText());ps.setString(5, wbk6.getText());ps.executeUpdate();this.dispose();} catch (Exception e1) {e1.printStackTrace();}finally{try{if(rs!=null){rs.close();}if(ps!=null){ps.close();}if(ct!=null){ct.close();}} catch (Exception e3){}}}else if(e.getActionCommand().equals("quxiao")) {this.dispose();}}}import java.awt.*;import java.awt.event.*;import java.sql.*;import java.util.*;import javax.swing.*;import javax.swing.border.*;import javax.swing.JDialog;import javax.swing.JFrame;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.Vector;import javax.swing.table.*;public class Xsxx extends AbstractTableModel {Vector ziduan,jilu;PreparedStatement ps=null;Connection ct=null;ResultSet rs=null;public int getRowCount(){return this.jilu.size();}public int getColumnCount(){return this.ziduan.size();}public Object getValueAt(int hang,int lie){return (((Vector) this.jilu.get(hang)).get(lie)); }public Xsxx(){this.sqlyj("select * from xuesheng");}public Xsxx(String ss){this.sqlyj(ss);}public String getColumnName(int e)return (String)this.ziduan.get(e);}public void sqlyj(String sql){ziduan=new Vector();ziduan.add("学号");ziduan.add("姓名");ziduan.add("性别");ziduan.add("年龄");ziduan.add("籍贯");ziduan.add("所在院系");jilu=new Vector();try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");ct=DriverManager.getConnection("jdbc:odbc:sqlserver","sa","12 3456");ps=ct.prepareStatement(sql);rs=ps.executeQuery();while(rs.next()){Vector hang=new Vector();hang.add(rs.getString(1));hang.add(rs.getString(2));hang.add(rs.getString(3));hang.add(rs.getString(4));hang.add(rs.getString(5));hang.add(rs.getString(6));jilu.add(hang);}}catch (Exception e){e.printStackTrace();} finally{try{if(rs!=null){rs.close();}if(ps!=null){ps.close();}if(ct!=null){ct.close();}} catch (Exception e){} }}}import java.awt.*;import java.awt.event.*;import java.sql.*;import java.util.*;import javax.swing.*;import javax.swing.border.*; import javax.swing.JDialog; import javax.swing.JFrame; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.Vector;import javax.swing.table.*;public class Tianjia extends JDialog implements ActionListener{ JLabel bq1,bq2,bq3,bq4,bq5,bq6;JTextField wbk1,wbk2,wbk3,wbk4,wbk5,wbk6;JButton an1,an2;JPanel mb1,mb2,mb3,mb4;public Tianjia(Frame fck,String ckm,Boolean msck){super(fck,ckm,msck);bq1=new JLabel(" 学号");bq2=new JLabel(" 姓名");bq3=new JLabel(" 性别");bq4=new JLabel(" 年龄");bq5=new JLabel(" 籍贯");bq6=new JLabel(" 院系");wbk1=new JTextField(5);wbk2=new JTextField(5);wbk3=new JTextField(5);wbk4=new JTextField(5);wbk5=new JTextField(5);wbk6=new JTextField(5);an1=new JButton("添加");an1.addActionListener(this);an1.setActionCommand("tiangjia2");an2=new JButton("取消");an2.addActionListener(this);an2.setActionCommand("quxiao");mb1=new JPanel();mb2=new JPanel();mb3=new JPanel();mb4=new JPanel();mb1.setLayout(new GridLayout(6,1));mb2.setLayout(new GridLayout(6,1));mb1.add(bq1); mb1.add(bq2); mb1.add(bq3);mb1.add(bq4); mb1.add(bq5); mb1.add(bq6);mb2.add(wbk1); mb2.add(wbk2); mb2.add(wbk3);mb2.add(wbk4); mb2.add(wbk5); mb2.add(wbk6);mb3.add(an1); mb3.add(an2);this.add(mb1,BorderLayout.WEST);this.add(mb2);this.add(mb3,BorderLayout.SOUTH);this.add(mb4,BorderLayout.EAST);this.setSize(370, 270);this.setLocation(401, 281);this.setResizable(false);this.setVisible(true);}public void actionPerformed(ActionEvent e){if(e.getActionCommand().equals("tiangjia2")){PreparedStatement ps=null;Connection ct=null;ResultSet rs=null;Statement sm=null;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");ct=DriverManager.getConnection("jdbc:odbc:sqlserver","sa","12 3456");String ss=("insert into xuesheng values(?,?,?,?,?,?)");ps=ct.prepareStatement(ss);ps.setString(1, wbk1.getText());ps.setString(2, wbk2.getText());ps.setString(3, wbk3.getText());ps.setString(4, wbk4.getText());ps.setString(5, wbk5.getText());ps.setString(6, wbk6.getText());ps.executeUpdate();this.dispose();} catch (Exception e2){}finally{try{if(rs!=null){rs.close();}if(ps!=null){ps.close();}if(ct!=null){ct.close();}} catch (Exception e3){}}}else if(e.getActionCommand().equals("quxiao")) {this.dispose();}}}实验小结:实验原道的问题是刚开始时程序只能查询不能添加修改删除等, 经过老师指导后修改程序后, 程序就能完成各项操作了。
Java程序设计实训报告-学生成绩查询系统.doc
Java程序设计实训报告i. 系统功能说明“学生成绩查询系统”模仿简单教务系统,通过用户名和密码登陆,可存储用户信息、学生个人信息、课程和成绩等内容,并可进行增删查改四个基木操作。
实现“教师录入成绩,学生査询成绩”的目的。
系统的不足之处:系统功能开发不全面,仅能实现记荥一门课成绩,无更多增强功能。
安全级别不够高,易遭到攻击破坏和篡改。
界面不友好、不美观,个别位罝有小漏洞:在选择功能菜单的按钮时,系统只设计了支持阿拉伯数字。
当用户输入英文字母或者其他文字时,整个程序则无法运行。
增加学生就是按学生学号増加,系统没有严格规定必须输入相同位数的学生学号。
成绩查询,修改密码和删除学生都是按学生学号实现,在删除学生这个功能里,数据库中没有存的学生信息也可以删除。
2. 〔据库的简单介绍此系统数据库为Access数据库,包括四个表,分别为Student表,S C表, Course 表和Userlnfo表,分别存储学生信息、成绩、课程和用户信息的内容。
SC表里记录了Sno、Cno、S core信息Cour se 表里记录Cno、Course、Ccredit、Ctype 信息Student 表里记录了Sno、Sn ame、Sbirth、Sdept 信息U serinfo 表里记录了username、password 信息程序通过DBUti I类、SchoolC RUD类实现与数据库相连3. 程序中的类以及对类的理解程序中包含10个类:1、A ppl ication类是输出欢迎信息,读取用户的输入信息。
2、C o nsolelnput Util类是读取所输入的用户名和密码数据。
3、C onsole OutputUtil类是输出欢迎信息,退出信息。
4、D BUtil的功能为用于连接数据库的类。
5、F u nctionlmpl ementation类的功能为实现增删查改。
6、F uncti onMenu类是显示菜单信息。
java学生成果管理系统实验报告
①0 JAVA 开发工具 MyEclipse 8.5 ②0 Microsoft SQL Server 2005
二. 实验内容 在 JAVA 开发工具 MyEclipse 8.5 和 Microsoft SQL Server 2005 环境下,运
用学到的 java 和数据库理论知识,设计一个具有简单的增加`删除`修改`查询 操作的学生成绩管理系统。 三.方案设计
字段类型 Int Int char(10) char(10)
表 3.3 course 表的数据信息
字段类型
Int
varchar (50)
char(10)
char(50)
表 3.4 student 表的数据信息
Gradecourse 基本情况数据表,结构如下表 3.5 所示: 表 3.5 Gradestudent 表的数据信息
1、系统功能设计要求 此系统实现如下功能 : (1)使得学生的成绩管理工作更加清晰、条理化、自动化。 (2)通过用户名和密码登录系统,查询、删除、修改和增加课程基本资料`学 生所选课程`用户密码等功能。 容易地完成学生成绩信息及学生信息的基本操 作。 (3) 设计人机友好界面,功能安排合理,操作使用方便,并且进一步考虑系统 在安全性,完整性,并发控制,备份和恢复等方面的功能要求。 2、系统模块设计
一. 实验目的及实验环境 实验目的:在如今的高校日常管理当中,学生成绩管理系统就是其中非常重
要的一环,特别是当前学生规模大,课程门类多,校区分散等实际情况,学生 成绩管理系统更具有非常大的实际应用意义。但是,我们看到,其实我们学校 的学生成绩管理系统在很多方面作的不是很完善,功能方面也有欠缺。随着科 技的发展,基本上所有的具有一定数量数据的机构都开始使用计算机数据库来 做管理。几乎所有学校也都已经在使用计算机管理数据的机制,大大减少了学 校学生成绩管理的工作量。该课程设计旨在设计一个学生成绩的数据库管理系 统,数据库中要求包含学生的基本信息,学科基本信息,以及学生所学课程的 考试成绩。要方便学生进行成绩查询,通过该课程设计,应该达到把 java 理论 知识更加的巩固加深,加强动手能力与实践能力,学以致用,与现实生活中的 应用充分的结合起来。
javawweb学生成绩管理系统实验报告
Javaweb学生成绩管理系统武汉轻工大学数学与计算机学院《网络开发技术教程》大作业专业:信息管理与信息系统班级:信管二班学号: ********* 姓名张赛军指导老师:***2013年 6 月 8日一、概述:首先我做的系统是学生成绩管理系统使用jsp+javabean+servlet 的传统的MVC开发模式,使用mysql数据库来存储数据。
其中Jsp实现视图端,Javabean是模型端,Servlet是控制端。
Servlet担当主要逻辑控制,通过接受Jsp传来的用户请求,调用以及初始化JavaBean,再通过Jsp传到客户端,本系统中SqlBean担当主要的与数据库的连接与通信,JavaBean在本系统中主要担当配合Jsp以及Servlet来完成用户的请求,而Jsp主要担当接受与响应客户端。
体系结构图为:主要控制流程为:首先编写系统的登陆主页login.jsp;然后通过check类(check.java)来验证登陆信息,分别跳转到三个界面:学生端(student.jsp);教师端(teacher.jsp);管理员端(manager.jsp)。
然后每个端口对应添加、删除功能界面。
详细的后面会介绍。
二、技术(tomcat,myeclipse等)在环境方面我配置的是:tomcat6.0+myeclipse6.0+jdk7.0+mysql;技术路线:本系统的开发采用的是JSP+JavaBean+Servlet模式,在该模式中,结合了JSP 和Servlet技术,充分利用了JSP和Servlet两种技术原有的优点。
在此模式中,JavaBean作为模型的角色,充当JSP和Servlet通信的中间工具,Servlet处理完后设置JavaBean的属性,JSP读取此JavaBean的属性,然后进行显示。
该模式更加明显地把显示和逻辑分离,使得代码更容易管理,适合大型项目的开发。
Javaweb学生成绩管理系统【系统设计目标分析】本系统是用JSP实现的一个完全基于浏览器的学生成绩管理系统,管理员,学生,老师各自拥有以下功能:(1)登录学生成绩管理系统的后台管理平台。
(完整版)JAVA实验报告_学生成绩管理
目录12222334444599910一、引言1.1 课程设计目的1) 复习,巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;2) 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力,提高学生适应实际,实践编程的能力;3) 培养学生在项目开发中团队合作精神,创新意识及能力。
1.2 题目说明课题:学生成绩管理功能要求: 1、输入十个同学的学号,姓名,四科成绩(应用数学,大学英语,Java 程序设计,计算机应用基础) 。
2、计算出平均成绩,以平均成绩降序输出成绩表。
3、输入学号查询学生信息。
4、输出全组各科平均分。
5、统计各分数段人数6、删除记录7、输出各科最高分和最低分。
8、退出。
界面要示:用字符界面实现,也可用图形界面实现。
1.3 开发工具介绍Eclipse是一种可扩展的开放源代码IDE。
2001年11月,IBM公司捐出价值4,000万美元的源代码组建了Eclipse联盟,并由该联盟负责这种工具的后续开发。
集成开发环境(IDE)经常将其应用范围限定在“开发、构建和调试”的周期之中。
为了帮助集成开发环境(IDE)克服目前的局限性,业界厂商合作创建了Eclipse平台。
Eclipse 允许在同一IDE中集成来自不同供应商的工具,并实现了工具之间的互操作性,从而显著改变了项目工作流程,使开发者可以专注在实际的嵌入式目标上。
利用Eclipse,我们可以将高级设计(也许是采用UML)与低级开发工具(如应用调试器等)结合在一起。
如果这些互相补充的独立工具采用Eclipse扩展点彼此连接,那么当我们用调试器逐一检查应用时,UML对话框可以突出显示我们正在关注的器件。
事实上,由于Eclipse并不了解开发语言,所以无论Java语言调试器、C/C++调试器还是汇编调试器都是有效的,并可以在相同的框架内同时瞄准不同的进程或节点。
Java程序课程设计---一个简单的学生成绩管理信息系统
扬州大学数学科学学院java程序设计实验报告课题:一个简单的学生成绩管理信息系统姓名:学号:班级:指导教师:时间: 12月20日团队完成:考核结果1. 绪论(内容:要求小四号字体)此次课题是一个简单的学生管理系统,该课题涉及数据库、Java 等领域。
要求达到以下功能:1. 能够根据学生姓名 、学号、班级、课程名称查询具体内容。
2. 能够实现按照单科成绩、总成绩、平均成绩、学号排序。
3. 能够实现学生信息的插入、删除和修改。
4. 能够查询每个课程的最高分、最低分及相应学生姓名、班级和学号。
5. 能够查询每个班级某门课程的优秀率(90分及以上)、不及格率,并进行排序。
6.能够使用图形界面进行操作。
要实现这些功能需要熟练使用数据库和Java 编程语言,并且能够实现数据库和Java 的连接。
2. 设计思路 (内容:要求小四号字体)1)建立数据库表格:将班级、姓名、学号、成绩等具体信息录入数据库。
·数据库系统设计成绩查询系统—--·系统逻辑结构设计学生成绩信息表学号 姓名 班级 语文 数学 英语·数据库截图2)利用Java实现数据库连接,使其可以调用数据库表格中的内容。
具体截图如下:3)Java程序编写思路:主要编写了5个类:将添加数据、查询数据、删除数据、修改数据四个功能分别为四个类来实现,此外还有一个主类用于实现面板。
Insert类:功能组件 6个文本域、6个标签、1个按钮功能实现添加数据实现过程对按钮添加监控,实现按钮事件为获取文本域中的信息,并执行SQL 的INSERT语句。
Delete类:功能组件 1个单行文本、1个标签、1个按钮、1个多行文本功能实现删除数据实现过程与修改数据类似,对按钮添加监控,实现按钮事件为获取文本域中的学号信息,并执行SQL的DELETE语句;不同的是以学号为主键进行查找并将删除信息输出到文本框中。
Modify类:功能组件 6个单行文本、6个标签、1个按钮功能实现修改数据实现过程与添加数据类似,对按钮添加监控,实现按钮事件为获取文本域中的信息,并执行SQL的UPDATE语句;不同的是以学号为主键进行查找并更新。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JAVA课内实验报告学生成绩管理系统
一. 实验目的及实验环境
实验目的:在如今的高校日常管理当中,学生成绩管理系统就是其中非常重要的一环,特别是当前学生规模大,课程门类多,校区分散等实际情况,学生成绩管理系统更具有非常大的实际应用意义。
但是,我们看到,其实我们学校的学生成绩管理系统在很多方面作的不是很完善,功能方面也有欠缺。
随着科技的发展,基本上所有的具有一定数量数据的机构都开始使用计算机数据库来做管理。
几乎所有学校也都已经在使用计算机管理数据的机制,大大减少了学校学生成绩管理的工作量。
该课程设计旨在设计一个学生成绩的数据库管理系统,数据库中要求包含学生的基本信息,学科基本信息,以及学生所学课程的考试成绩。
要方便学生进行成绩查询,通过该课程设计,应该达到把java理论知识更加的巩固加深,加强动手能力与实践能力,学以致用,与现实生活中的应用充分的结合起来。
实验环境:
JAVA开发工具MyEclipse 8.5
Microsoft SQL Server 2005
二. 实验内容
在JAVA开发工具MyEclipse 8.5和Microsoft SQL Server 2005环境下,运用学到的java 和数据库理论知识,设计一个具有简单的增加`删除`修改`查询操作的学生成绩管理系统。
三.方案设计
1、系统功能设计要求
此系统实现如下功能:
(1)使得学生的成绩管理工作更加清晰、条理化、自动化。
(2)通过用户名和密码登录系统,查询、删除、修改和增加课程基本资料`学生所选课程`用户密码等功能。
容易地完成学生成绩信息及学生信息的基本操作。
(3) 设计人机友好界面,功能安排合理,操作使用方便,并且进一步考虑系统在安全性,完整性,并发控制,备份和恢复等方面的功能要求。
2、系统模块设计
学生成绩管理系统大体可以分成两大模块:一是学生的基本信息模块,里面应该包含学生的各方面的基本信息;二是课程管理模块,在该模块中应该包含有对学生成绩信息的查询和处理;可以得到的系统流程图如下图2.1所示:
3、数据字典
数据项是数据库的关系中不可再分的数据单位,下表分别列出了数据的名称、数据类型、长度、取值能否为空。
利用SQL Server 2005建立学生成绩管理系统数据库,其基本表清单及表结构描述如下:
数据库中用到的表,结构如下表3.1所示:
表3.1 数据库中表的信息
Class基本情况数据表,结构如下表3.2所示:
表3.2 class表的数据信息
Course基本情况数据表,结构如下表3.3所示:
表3.3 course表的数据信息
Student基本情况数据表,结构如下表3.4所示:
表3.4 student表的数据信息
Gradecourse基本情况数据表,结构如下表3.5所示:
表3.5 Gradestudent表的数据信息
Result基本情况数据表,结构如下表3.6所示:
表3.6 Rsult表的数据信息
Users基本情况数据表,结构如下表3.7所示:
表3.7 Users表的数据信息
(1)学生基本信息:学号、姓名、性别、出生日期、班级编号、联系电话、入学年份、家庭地址,备注信息。
(2)课程基本信息:课程名、课程号、课程类型、备注信息。
(3)成绩基本信息:考试编号、学生学号、学生姓名、班级号、课程名称、成绩。
(4)班级基本信息:班级编号、年级、班主任、教师编号。
由上述分析可得到系统的E—R图如下图4.1所示:
成绩(考试编号、学生学号、学生姓名、班级号、课程名称、成绩)。
(2)确定关系模型的存取方法
在将概念模型转换成物理模型之后,我们可以对物理模型进行设计,双击物理模型的关系,可以对该关系的名称、注释等信息进行查询。
可对该关系的属性列进行设计,可分别设置其名称、码、数据类型以及主码、是否为空等。
在实际设计中最常用的存取方法是索引发,使用索引可以大大减少数据的查询时间,在建立索引时应遵循:在经常需要搜索的列上建立索引;在主关键字上建立索引;在经常用于连接的列上建立索引,即在外键上建立索引;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的等规
则。
才能充分利用索引的作用避免因索引引起的负面作用。
(3)确定数据库的存储结构
确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。
因为该成绩管理系统的数据量小,,所以我们只用把数据存储在使用的电脑硬盘上,不用作更多的安排
四.测试数据及运行结果
1.正常测试数据(3组)及运行结果;
登陆界面,如下图5.1所示
图5.1 用户登陆成功界面
添加界面,如下图5.2所示
图5.2 添加课程信息界面
修改界面,如下图5.3所示
图5.3 修改密码界面
2.非正常测试数据(2组)及运行结果。
用户登录界面,如下图6.1所示(输入不存在的用户信息)
图6.1 用户登录错误界面
添加界面,如下图6.2所示
图6.2 添加信息输入错误数据类型界面
重要代码(用户登录界面)
void login_actionPerformed(ActionEvent e) {
username = JOptionPane.showInputDialog(this, "请输入用户名");
String pwd = JOptionPane.showInputDialog(this, "请输入密码");
if (! (username == null && pwd == null)) {
try {//连接数据库,验证用户
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;databasename=StudentScore ","sa","yangmeng");
ps =
con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY) ;
try {
rs = ps.executeQuery("select * from users where username='" +username + "' "); //读取数据库
五.总结
1.实验过程中遇到的问题及解决办法;
本次实验因为以前没有接触过sql server和eclipse的连接方面的技术,所以刚开始不知道如何操作,后来通过去图书馆查阅资料`上网`以及请教大四的学长对jdbc连接桥有了初步的了解,在后期的编程中才发现自己平时在课堂上学的东西没有很好的实践,在运用时总是有一些小错误,如不知道dispose()这个函数是干什么用的,通过查阅课本和资料了解了它是用来销毁窗口,释放资源的一个函数
2.对设计及调试过程的心得体会。
这次上机实验,虽然过程中遇到了大大小小的问题,不过后来在自己翻阅资料请教别人的过程中,理论与实践的结合让我可以明显感觉到自己对java知识有了跟深入的掌握及了解,如java环境变量的设置以及参数的返回值问题等一些必不可少的基础知识都比以前有了更多的了解,同时也让我明白了平时一定要勤加练习,将课本上死的知识变成自己的,实践出真知应该就是这个道理。