收藏 分销(赏)

java学生成绩管理系统课程设计报告.doc

上传人:二*** 文档编号:4514930 上传时间:2024-09-26 格式:DOC 页数:29 大小:224KB
下载 相关 举报
java学生成绩管理系统课程设计报告.doc_第1页
第1页 / 共29页
本文档共29页,全文阅读请下载到手机保存,查看更方便
资源描述
. . 目 录 1设计目的及容要求1 2 系统总体设计1 3 系统详细设计2 4 运行结果及分析17 致谢21 参考文献22 . .word.zl. . . 简单学生成绩管理系统的设计与实现 1设计目的及容要求 1、 设计目的: 稳固和加深学生对高级语言程序设计课程的根本知识的理解和掌握,掌握java语言编程和程序调试的根本技能,利用java语言进展根本的软件设计,提高运用java语言解决实际问题的能力。 2、 容要求 实现学生成绩的管理〔增、删、改、查询、持久化、成绩排序、成绩统计等功能〕,在文件中增加、删除、学生信息,根据学号查询、修改学生信息,统计功能求每个人的总分并按从高到低排序,通过这些操作对文件中的信息保存。 2 系统总体设计 成功登陆系统以后,出现成绩管理界面,系统初始化,可对学生成绩进展增加、删除、查询、修改、统计,进入相应界面进展成绩管理,退出系统自动保存本次操作容,保存信息。 简易流程图: 登陆 成绩管理界面 增加 删除 查询 修改 统计 退出 3 系统详细设计 ① 创立Student类,设置变量及对应方法 Student.java代码: package keshe; import java.io.Serializable; publicclassStudentimplements Serializable{ private String name; privateintnum; privateintyuwen; privateintshuxue; privateintjava; privateintsum=0; public Student(){ } public Student(String name, int num, int yuwen, int shuxue, int java) { super(); this.name = name; this.num = num; this.yuwen = yuwen; this.shuxue = shuxue; this.java = java; } public String getName() { returnname; } publicvoid setName(String name) { this.name = name; } publicint getNum() { returnnum; } publicvoid setNum(int num) { this.num = num; } publicint getYuwen() { returnyuwen; } publicvoid setYuwen(int yuwen) { this.yuwen = yuwen; } publicint getShuxue() { returnshuxue; } publicvoid setShuxue(int shuxue) { this.shuxue = shuxue; } publicint getJava() { returnjava; } publicvoid setJava(int java) { this.java = java; } publicint getSum() { returnsum; } publicvoid 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对象的操作〔增、删、改、查询、持久化、成绩排序、成绩统计等功能〕供其对象调用。 StuC.java代码 package keshe; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; public class StuC { ArrayList <Student> al=new ArrayList<Student>(); File file = new File("e:/mydata.dat"); //添加 public void adds(Student s){ al.add(s); } //删除 public void del(int n){ for(int i=0;i<al.size();i++){ if(al.get(i).getNum()==n) al.remove(i); } } //求总分 public void sum(){ for(int i=0;i<al.size();i++){ al.get(i).setSum(al.get(i).getJava()+al.get(i).getShuxue()+al.get(i).getYuwen()); } } //排序 public void sort() { for (int i = 0; i < al.size(); i++) { for (int j = 0; j < al.size()-1-i; j++) { if (al.get(j).getSum() < al.get(j+1).getSum()) { Object o=al.get(j); al.set(j, al.get(j+1)); al.set(j+1, (Student) o); } } } } public void paint(){ for(int i=0;i<al.size();i++){ System.out.println(al.get(i)); } } public String toString() { return "StuC [al=" + al + "]"; } //输出流 public void stor() { ObjectOutputStream out = null; try { out = new ObjectOutputStream(new FileOutputStream(file)); out.writeObject(al); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //输入流 public void read() { ObjectInputStream in = null; try { in = new ObjectInputStream(new FileInputStream(file)); try { al = (ArrayList<Student>)in.readObject(); } catch (ClassNotFoundException e) { al=null; } in.close(); } catch (FileNotFoundException e) { File file = new File("e:/mydata.dat"); } catch (IOException e) { e.printStackTrace(); } } //查找 public Student find(int n) { for(int i=0;i<al.size();i++){ if(al.get(i).getNum()==n){ return al.get(i); } } return null; } } ③ 登陆界面及成绩管理的所有界面,同过创立StuC的对象,调用其方法实现成绩管理 代码: package keshe; import java.awt.*; import java.awt.event.*; import java.io.FileNotFoundException; import java.io.IOException; import javax.swing.*; public class Login extends JFrame { private TextField f1; private TextField f2; private utton b1; private utton b2; private utton b3; StuC scs=new StuC(); //登陆界面 public Login(){ Container cp=getContentPane();//容器 cp.setLayout(new GridLayout(3,1));//三行一列布局 Label l1=new Label("用户名"); Label l2=new Label("密 码"); Panel p1=new Panel(); Panel p2=new Panel(); Panel p3=new Panel(); f1=new TextField(10); f2=new TextField(10); f2.setEchoChar('*');//回显字符为* b1=new utton("登录"); b2=new utton("重置"); b3=new utton("退出"); p1.add(l1);//第一行添加label 1 p1.add(f1); p2.add(l2); p2.add(f2); p3.add(b1); p3.add(b2); p3.add(b3); cp.add(p1); cp.add(p2); cp.add(p3); b1.addActionListener(new Enter()); b2.addActionListener(new ReWrite()); b3.addActionListener(new Close()); } class Enter implements ActionListener{ public void actionPerformed(ActionEvent e) { if((f1.getText()).equals("yazhou")&&(f2.getText()).equals("123456")) { scs.read();//初始化,从文件读入信息 XueSheng frame1 = new XueSheng(); frame1.setBounds(200, 200, 300, 300); frame1.setVisible(true); } else JOptionPane.showMessageDialog(null, "用户名或密码错误,请重新登录!"); } } class ReWrite implements ActionListener{ public void actionPerformed(ActionEvent e) { f1.setText(""); f2.setText(""); f1.requestFocus(); } } class Close implements ActionListener{ public void actionPerformed(ActionEvent e) { utton bt=(utton)e.getSource(); if(bt==b3){ System.exit(0); } } } //主函数 程序开场 public static void main(String[] args) { Login log=new Login(); log.setTitle("系统登录"); log.setBounds(200, 200, 300, 300); log.setBackground(Color.blue); log.setVisible(true); } //信息管理界面部类 进展初始化和保存 class XueSheng extends JFrame implements ActionListener { private utton cx, zj, tc, sc,xg,tj; public XueSheng() { Container c = this.getContentPane(); c.setLayout(new GridLayout(3, 1)); c.setFont(new Font("true",Font.TRUETYPE_FONT,13)); JPanel panel2 = new JPanel(); JPanel panel1 = new JPanel(); JLabel label1 = new JLabel("欢迎进入成绩管理",SwingConstants.CENTER); label1.setFont(new Font("true",Font.TRUETYPE_FONT,13)); label1.setForeground(Color.blue); c.add(label1); //添加按钮 cx = new utton("查询"); panel2.add(cx); zj = new utton("增加"); panel2.add(zj); sc = new utton("删除"); panel2.add(sc); tc = new utton("退出"); panel2.add(tc); xg = new utton("修改"); panel1.add(xg); tj = new utton("统计"); panel1.add(tj); c.add(panel2); c.add(panel1); cx.addActionListener(this); zj.addActionListener(this); sc.addActionListener(this); xg.addActionListener(this); tc.addActionListener(this); tj.addActionListener(this); this.setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getSource() == cx) { Find f = new Find(); } if(e.getSource()==zj){ AddFI f = new AddFI(); } if(e.getSource()==sc){ Delet d = new Delet(); } if(e.getSource()==xg){ XiuGai x=new XiuGai(); } if(e.getSource()==tc){ shutDown(); } if(e.getSource()==tj){ Tongji t=new Tongji(); } } private void shutDown() { scs.stor(); JOptionPane.showMessageDialog(null, "信息已保存"); this.dispose(); } } //增加信息界面部类,捕获文本框息创立Student对象,添加到Arraylist中,如果已存在该学号//给出提示信息,并重新添加。 class AddFI extends JFrame implements ActionListener { private JTextField STNOText, SNAMEText, MAText, CHIText, JAVAText; private utton b1, b2, b3; private String STNO, SNAME,MAT, CHI, JAVA; public AddFI() { super("添加学生信息"); Container c2 = this.getContentPane(); c2.setLayout(new GridLayout(3, 1)); JPanel center = new JPanel(new GridLayout(5, 2)); JPanel low = new JPanel(new FlowLayout()); JLabel label1 = new JLabel("添加学生信息", SwingConstants.CENTER); label1.setFont(new Font("TRUE", Font.TRUETYPE_FONT, 20)); c2.add(label1); STNOText = new JTextField(30);//30列文本框 SNAMEText = new JTextField(30); CHIText = new JTextField(30); MAText = new JTextField(30); JAVAText = new JTextField(30); center.add(new JLabel("学号", SwingConstants.CENTER));//添加标签学号写在标签中间 center.add(STNOText);//添加文本框 center.add(new JLabel("XX", SwingConstants.CENTER)); center.add(SNAMEText); center.add(new JLabel("语文", SwingConstants.CENTER)); center.add(CHIText); center.add(new JLabel("数学", SwingConstants.CENTER)); center.add(MAText); center.add(new JLabel("java", SwingConstants.CENTER)); center.add(JAVAText); c2.add(center); b1 = new utton("添加"); b2 = new utton("去除"); b3 = new utton("退出"); low.add(b1); low.add(b2); low.add(b3); c2.add(low); // 添加监听 b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); this.setBounds(200, 200, 600, 400); this.setVisible(true); this.setTitle("添加学生信息"); } public void actionPerformed(ActionEvent e) { if (e.getSource() == b1) { try { addFI(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } } if (e.getSource() == b2) { clearForm(); } if (e.getSource() == b3) { this.dispose(); } } private void addFI() throws FileNotFoundException, IOException { STNO = STNOText.getText(); SNAME = SNAMEText.getText(); CHI = CHIText.getText(); MAT = MAText.getText(); JAVA = JAVAText.getText(); if (STNO.length() == 0 || SNAME.length() == 0 || MAT.length() == 0 || JAVA.length() == 0 || CHI.length() == 0) JOptionPane.showMessageDialog(this, "请添加完全信息"); else { Student a=new Student(SNAME,Integer.parseInt(STNO), Integer.parseInt(CHI),Integer.parseInt(MAT),Integer.parseInt(JAVA)); int b=0; for(int i=0;i<scs.al.size();i++){ if(scs.al.get(i).getNum()==Integer.parseInt(STNO)){ b=1; } } if(b==0){ scs.adds(a); JOptionPane.showMessageDialog(this, "添加成功"); } else{ JOptionPane.showMessageDialog(this, "已存在"); } } } private void clearForm() { STNOText.setText(""); SNAMEText.setText(""); MAText.setText(""); CHIText.setText(""); JAVAText.setText(""); } } //查询信息界面部类,根据输入的学号,在arraylist中查找对应学号的学生信息,分别输出 class Find extends JFrame implements ActionListener { private JTextField STNOText, SNAMEText, MAText, CHIText, JAVAText; private String STNO; private utton b1, b2; public Find() { Container c1 = this.getContentPane(); c1.setLayout(new GridLayout(4, 1)); JLabel label1 = new JLabel("查询学生信息", SwingConstants.CENTER); JLabel label0 = new JLabel("请输入你的学号",SwingConstants.CENTER); JPanel pp = new JPanel(new GridLayout(2, 1)); pp.add(label1); pp.add(label0); c1.add(pp); JPanel p1 = new JPanel(); STNOText = new JTextField(10); p1.add(STNOText); c1.add(p1); JPanel p2 = new JPanel(); b1 = new utton("查询"); b2 = new utton("退出"); b1.addActionListener(this); b2.addActionListener(this); p2.add(b1); p2.add(b2); c1.add(p2); JPanel center = new JPanel(new GridLayout(4, 2)); SNAMEText = new JTextField(30); CHIText = new JTextField(30); MAText = new JTextField(30); JAVAText = new JTextField(30); center.add(new JLabel("XX", SwingConstants.CENTER)); center.add(SNAMEText); center.add(new JLabel("语文", SwingConstants.CENTER)); center.add(CHIText); center.add(new JLabel("数学", SwingConstants.CENTER)); center.add(MAText); center.add(new JLabel("java", SwingConstants.CENTER)); center.add(JAVAText); c1.add(center); this.setVisible(true); this.setBounds(200, 200, 400, 300); } public void actionPerformed(ActionEvent e){ if (e.getSource() == b1) { STNO = STNOText.getText(); int k=0; for(int i=0;i<scs.al.size();i++) { if(Integer.parseInt(STNO)==scs.al.get(i).getNum()) { SNAMEText.setText(scs.al.get(i).getName()); MAText.setText(String.valueOf(scs.al.get(i).getShuxue())); CHIText.setText(String.valueOf(scs.al.get(i).getYuwen())); JAVAText.setText(String.valueOf(scs.al.get(i).getJava())); k=1; } } if(k==0){ JOptionPane.showMessageDialog(this, "查无此人"); } } if (e.getSource() == b2) { this.dispose(); } } } //删除信息界面,通过输入的学号进展查找并在arraylist中移除 class Delet extends JFrame implements ActionListener{ private utton yes; private utton cancle; private JTextField text1; private String STNO; public Delet(){ Container c3 = this.getContentPane(); c3.setLayout(new GridLayout(3, 1)); c3.setFont(new Font("true",Font.TRUETYPE_FONT,13)); JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); JLabel label1 = new JLabel("删除学生信息",SwingConstants.CENTER); label1.setFont(new Font("true",Font.TRUETYPE_FONT,13)); label1.setForeground(Color.blue); c3.add(label1); JLabel label2 = new JLabel("请输入学号"); text1 = new JTextField(10); p1.add(label2); p1.add(text1); c3.add(p1); yes = new utton("确定"); cancle = new utton("退出"); p2.add(yes); p2.add(cancle); c3.add(p2); yes.addActionListener(this); cancle.addActionListener(this); this.setTitle("删除学生信息"); this.setBounds(200,200,400,300); this.setVisible(true); } public void actionPerformed(ActionEvent e){ if(e.getSource()==yes){ delt(); } if(e.getSource()==cancle){ this.dispose(); } } private void delt(){ STNO = text1.getText(); scs.del(Integer.parseInt(STNO)); JOptionPane.showMessageDialog(this, "删除成功"); } } //统计界面,对arraylist中所有对象进展求总分,并按总分从到达小排序 class Tongji extends JFrame implements ActionListener{ private utton b1,b2; JTextArea t; public Tongji(){ Container c1 = this.getContentPane(); c1.setLayout(new GridLayout(3, 1)); JPanel p1 =new JPanel(); JLabel label1 = new JLabel("统计信息", SwingConstants.CENTER); p1.add(label1); c1.add(p1); t=new JTextArea(); JScroll
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服