成绩单系统(已更新GUI版)

//Date类
package step1;
public class Date {
    private int year,month,day;

    public Date(){
        year=1999;
        month=9;
        day=9;
    }
    public Date(int year,int month,int day){
        this.year=year;
        this.month=month;
        this.day=day;
    }
    public Date(String date){
        int i;
        for(i=6;i<date.length();i++)
        {
            if(date.substring(i, i).equals("."))
                break;
        }
        this.year= Integer.parseInt(date.substring(0,4));
        this.month= Integer.parseInt(date.substring(5,5+1));
        this.day= Integer.parseInt(date.substring(i-1));
    }
    public Date(Date date){
        year=date.year;
        month=date.month;
        day=date.day;
    }
    public void setDate(int year,int month,int day){
        this.year=year;
        this.month=month;
        this.day=day;
    }
    public int getYear(){
        return year;
    }
    public int getMonth(){
        return month;
    }
    public int getDay(){
        return day;
    }
    public String toString(){
        return year+"."+month+"."+day;
    }
}

//Person类
package step1;

public class Person {
    private String name; //姓名
    private String number; //身份证号
    private Date birthday; //出生日期
    public Person(){this.name =name;
        this.number = number;
        birthday=new Date();


    }
    public Person(String name,String number,Date birthday){
        this.name =name;
        this.number = number;
        this.birthday= birthday;

    }
    public Person(String name,String number,int year,int month,int day){
        birthday = new Date(year,month,day);
        this.number = number;
        this.name= name;

    }
    public void setinfo(String name,String number,Date birthday){
        this.name=name;
        this.number=number;
        this.birthday=birthday;
    }
    public Date getbirthday(){
        return birthday;
    }

    public String toString(){
        return "name="+name+" "+"number="+number+" "+"birthday:"+birthday.toString();
    }
    public String getname(){
        return name;
    }
    public String getnum(){
        return number;
    }
}
//测试类
package step1;
import java.util.*;

public class Person_test {

    public static void main(String args[]){
        Person p1,p2,p3;
        Scanner scan=new Scanner(System.in);
        p1=new Person();

        int y,m,d;
        y=scan.nextInt();
        m=scan.nextInt();
        d=scan.nextInt();
        Date d1=new Date(y,m,d);
        //public Person(String name,String number,Date birthday)
        p2=new Person("小明","110105"+y+m+d+"1001",d1);

        int year,month,day;
        year=scan.nextInt();
        month=scan.nextInt();
        day=scan.nextInt();
        //public Person(String name,String number,int year,int month,int day)
        p3=new Person("大师兄","110105"+year+month+day+"1002",year,month,day);

        System.out.println(p1);
        System.out.println(p2);
        System.out.println(p3);

    }
}
//Student类
package step2;
import step1.Person;
import step1.Date;
public class Student extends Person{
    private int reg_num; //学号
    private Date reg_day; //注册日期
    // TO DO YOU CODE HERE
    public Student(){
        super();
        this.reg_day = new Date();
        this.reg_num = reg_num;

    }
    public Student(String name,String number,int year,int month,int day,int reg_num,int y,int m,int d){
        super(name,number,year,month,day);
        this.reg_num = reg_num;
        this.reg_day = new Date(y,m,d);
        //this.reg_day.setDate(y,m,d);

    }
    public Student(String name,String number,Date birthday,int reg_num,Date reg_day){

        super(name,number,birthday);
        this.reg_num = reg_num;
        this.reg_day = reg_day;
    }
    public int getreg_num() {
        return reg_num;
    }
    public Date getreg_day(){

return reg_day;
    }
    public String toString(){
        return super.toString()+"reg_num="+reg_num+"reg_day="+reg_day;
    }

}
//Student测试类
package step2;
import step1.Date;
import java.util.*;
public class Student_Test {
    public static void main(String[] args) {
        Student s1=new Student();
        Student s2=new Student("Tom","110105200001010001",2000,12,11,18070001,2018,9,1);
        Date d1=new Date(2001,10,1);
        Date d2=new Date(2018,9,1);
        Student s3=new Student("Jerry","110105200001010001",d1,18070002,d2);
        Scanner scan=new Scanner(System.in);
        int y,m,d;
        y=scan.nextInt();
        m=scan.nextInt();
        d=scan.nextInt();
        s3.getreg_day().setDate(y,m,d);
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
    }
}
//course类
package step3;
import step1.Date;
public class Course {
    private int code; //课程编号
    private String courseName; //课程名称
    private Date testTime;//考试日期
    private int score;//考试成绩
    /******Begin**************/
public Course(){
    this.code = code;
    this.courseName = " ";
    this.testTime = new Date();
    this.score = score;

}
public Course(int code,String courseName,Date testTime,int score){
    this.code = code;
    this.courseName = courseName;
    this.testTime = testTime;
    this.score = score;
}
    public Course(int code,String courseName,int year,int m,int d,int score){
        this.code = code;
        this.courseName = courseName;
        this.testTime = new Date(year,m,d);
        this.score = score;
    }
public String toString(){
    return code+" "+courseName+" "+testTime+" "+score;
}
}
//课程测试类
package step3;
import java.util.*;
import step1.Date;
public class Course_Test {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        int y,m,d;
        Course c1=new Course();
        Course c2=new Course(201,"math",2018,12,24,95);
        y=scan.nextInt();
        m=scan.nextInt();
        d=scan.nextInt();
        Date d1= new Date(y,m,d);
        Course c3=new Course(202,"PE",d1,98);
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
    }
}
//成绩单类
package step4;
import step1.Date;
import step2.Student;
import step3.Course;
public class Report  {  //不能继承Student类
    private Student s;//学生基本信息
    private String major; //所学专业
    private Course[] selCourse;//所选课程
    /************Begin****************/
    public Report(){
        this.s = s;
        this.major = major;
        this.selCourse = selCourse;
    }
    public Report(Student s,String major,Course[] selCourse){
        this.s = s;
        this.major = major;
        this.selCourse = selCourse;
    }
    /*
   r1.getStudent().setinfo()
   首先Reprot对象调用自己的getStudent()方法,
   getStudent()方法返回一个Student类的对象s(return s;)
   然后再用该Student对象s调用Persons类的setinfo()方法完成对学生信息的修改。
    */
    public Student getStudent(){  
    return s;
    }

public String toString() {
    String str ="name=" + s.getname() + " " + "number=" + s.getnum() + " " + "birthday:" + s.getbirthday() + "reg_num:" + s.getreg_num() + "reg_day:"+s.getreg_day()+ " "+"major:" + major + "\n";
    for (int i = 0; i < selCourse.length; i++) {
        str += selCourse[i].toString() + "\n";
    }
    return str;
}
}
注释:s.getname(),s.getnum(),s.getbirthday()Student类的对象s调用父类Personsde方法,
s.getreg_num(),s.getreg_date()是调用对象s的方法。
//成绩单测试类
package step4;
import step1.Date;
import step2.Student;
import step3.Course;

public class Report_Test {
    public static void main(String[] args) {
        Report r;
        Date d1=new Date(2001,10,17); //出生日期
        Date d2=new Date(2018,9,1);  //注册日期
        //   public Student(String name,String num, Date birthday,int reg_num,Date reg_day) //Student类的构造方法一
        Student s=new Student("Tom","110101"+d1.getYear()+d1.getMonth()+d1.getDay()+"5555",d1,17070001,d2);
        Course selCourse[]=new Course[2];
        Date d3=new Date(2018,10,17); //出生日期
        Date d4=new Date(2018,12,11);  //注册日期
        //public Course(int code,String courseName,Date testTime,int score) //Course的构造方法
        selCourse[0]=new Course(201,"math",new Date(2018,11,15),75);
        selCourse[1]=new Course(202,"C++",new Date(2018,11,22),86);
        r=new Report(s,"Computer",selCourse);
        System.out.print(r);

        Report r1;
        Student s1=new Student();
        Course selCourse_1[]=new Course[5];
        Date d;
        String[] str1={"Math","Physics","Chemistry","biology","material"};
        for (int i=0;i<selCourse_1.length;i++){
            d4=new Date(2018,12,i+1);
            selCourse_1[i]=new Course(300+i,str1[i],d4,100-i);
        }
        r1=new Report(s1,"Material",selCourse_1);
        System.out.print("\n"+r1);

        //修改r1的姓名,身份证号及出生日期信息,并重新输出
            /*
 		  r1.getStudent().setinfo()
   		首先Reprot对象调用自己的getStudent()方法,
  		 getStudent()方法必须要返回一个Student类的对象(return s;)
   		然后再用该Student对象s调用Persons类的setinfo()方法完成信息修改。
    */
        r1.getStudent().setinfo("JERRY", "610101200205010364", new Date(2002,5,1));
        System.out.print("\n"+r1);
    }
}
/*
关键细节:
1,String日期转为int方法,分隔符为.时前面要用转义字符//。
2,学生数组和课程二维数组的使用
3,b[]的使用数组很关键
4,按钮的显示与否控制。
 */
package step4;
import step1.Date;
import step2.Student;
import step3.Course;
import step3.Course_Test;
import java.awt.*;
import java.awt.event.*;
import java.text.SimpleDateFormat;
import javax.swing.*;
public class TryJFrame {
//    Rational r1=new Rational();
//    Rational r2=new Rational();
    int flag=0;  //控制所选课程门数
    int count = 0;//统计学生数
    int b[] =new int [100]; //记录每一个学生的选课数
    Student s[] = new Student[100]; //学生数组
    Course slec[][] = new Course[100][100]; //课程二维数组,记录每个学生及所选课程数
    //Report r = new Report();
    public TryJFrame() {
        JFrame frame = new JFrame("学生成绩单管理");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JLabel label1 = new JLabel("请输入姓  名:");
        JLabel label2 = new JLabel("请输入学  号:");
        JLabel label3 = new JLabel("请输入出生日期:");
        JLabel label4 = new JLabel("请输入注册号 :");
        JLabel label5 = new JLabel("请输入注册日期:");
        JButton b0 = new JButton("请确认学生信息");
        JTextField text1=new JTextField(10);
        JTextField text2=new JTextField(10);
        JTextField text3=new JTextField(10);
        JTextField text4=new JTextField(10);
        JTextField text5=new JTextField(10);
        JPanel jp = new JPanel();
        jp.add(label1);
        jp.add(text1);
        jp.add(label2);
        jp.add(text2);
        jp.add(label3);
        jp.add(text3);
        jp.add(label4);
        jp.add(text4);
        jp.add(label5);
        jp.add(text5);
        frame.getContentPane().add(jp, BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
        jp.add(b0);
        JLabel label = new JLabel("----以下为学生的考试信息----");
        jp.add(label);
        JLabel label6 = new JLabel("参加了几门课程考试:");
        JLabel label7 = new JLabel("请输入考试科目:");
        JLabel label8 = new JLabel("请输入考试成绩:");
        JLabel label9 = new JLabel("请输入考试日期:");
        JTextField text6=new JTextField(10);
        JTextField text7=new JTextField(10);
        JTextField text8=new JTextField(10);
        JTextField text9=new JTextField(10);
        jp.add(label6);
        jp.add(text6);
        jp.add(label7);
        jp.add(text7);
        jp.add(label8);
        jp.add(text8);
        jp.add(label9);
        jp.add(text9);
        JButton b1 = new JButton("请确认第一门课程的输入");
        JButton b2 = new JButton("显示该同学的基本信息和成绩");
        JButton b3 = new JButton("显示全班成绩");
        jp.add(b1);
        jp.add(b2);
        jp.add(b3);
        JLabel label10 = new JLabel("以下为该同学的基本信息和成绩:");
        jp.add(label10);
        JTextArea area = new JTextArea(10,20);
        jp.add(area);
        b0.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                b1.setEnabled(true);
                String name = text1.getText();
                String number = text2.getText();
                String date = text3.getText();
                String[] d = date.split("\\."); //按.分割来取出字符串的各个段(年月日)
                int year = Integer.parseInt(d[0]); //各个段String 转int
                int month = Integer.parseInt(d[1]);
                int day = Integer.parseInt(d[2]);
                Date date1 = new Date(year,month,day);
                int reg_num = Integer.parseInt(text4.getText());
                String date2 = text5.getText();
                String []d2 =date2.split("\\.");
                int year1 = Integer.parseInt(d2[0]);
                int month1 = Integer.parseInt(d2[1]);
                int day1 = Integer.parseInt(d2[2]);
                Date date3 = new Date(year1,month1,day1);
                s[count] = new Student();
                s[count].setinfo(name,number,date1);
                s[count].setReg_num(reg_num);
                s[count].setReg_day(date3);
                System.out.println(s[count].toString());
                b0.setText("确认下一个学生信息");
                text1.setText("");
                text2.setText("");
                text3.setText("");
                text4.setText("");
                text5.setText("");
                count++;
            }
        });
        b1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                int num = Integer.parseInt(text6.getText());
//                String subject = text7.getText();
//                int grade = Integer.parseInt(text8.getText());
//                String date4 = text9.getText();
//                int year2 = Integer.parseInt(d[0]);
//                int month2 = Integer.parseInt(d[1]);
//                int day2 = Integer.parseInt(d[2]);
//                Date date5 = new Date(year2,month2,day2);
                //此处使用for循环.出不来
                if(flag < num - 1){
                    String subject = text7.getText();
                    int grade = Integer.parseInt(text8.getText());
                    String date4 = text9.getText();
                    String []d3 =date4.split("\\.");
                    int year2 = Integer.parseInt(d3[0]);
                    int month2 = Integer.parseInt(d3[1]);
                    int day2 = Integer.parseInt(d3[2]);
                    Date date5 = new Date(year2,month2,day2);
                    slec[count - 1][flag++] = new Course(1,subject,date5,grade);
                    b1.setText("请输入下一门课并确认");
                    text7.setText("");
                    text8.setText("");
                    text9.setText("");
                }
                else {
                    String subject = text7.getText();
                    int grade = Integer.parseInt(text8.getText());
                    String date4 = text9.getText();
                    String []d3 =date4.split("\\.");
                    int year2 = Integer.parseInt(d3[0]);
                    int month2 = Integer.parseInt(d3[1]);
                    int day2 = Integer.parseInt(d3[2]);
                    Date date5 = new Date(year2,month2,day2);
                    slec[count - 1][flag++] = new Course(1,subject,date5,grade);
                    b1.setText("课程信息输入完毕!");
                    text6.setText("");
                    text7.setText("");
                    text8.setText("");
                    text9.setText("");
                    b1.setEnabled(false);
                    b[count - 1] = num;
                    flag = 0;//一定要复位为0,才能输入多个学生。
                }
            }
        });
        b2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                    area.append(s[count - 1].toString());
                    area.append("\n");
                    for(int i = 0; i < slec[count - 1].length; i++){
//                        if(slec[count - 1][i].equals("")){
//
//                        }
//                        else{
//
//                        }
                        area.append(slec[count - 1][i].toString());
                        area.append("\n");
                    }
            }
        });

        b3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                area.setText("");
//                Report r1 = new Report(s)
//                area.append();
//             System.out.println(count);
//               System.out.println(s[1].toString());
//                System.out.println(slec[2][0].toString());
//                System.out.println(slec[1][1].toString());
                //System.out.println(slec[0].length);
                for(int i = 0; i < count; i++){
                    area.append(s[i].toString() + "\n");
                    for(int j = 0; j < b[i]; j++){
//                        if(slec[i][j].equals("")){
//                        }else{
//                            area.append(slec[i][j].toString());
//                            area.append("\n");
//                        }
                        area.append(slec[i][j].toString() + "\n");
//                            area.append("\n");
                    }
                }
            }
        });
    }
    public static void main(String agrs[])
    {

        TryJFrame jframe=new TryJFrame();
    }
}

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值