C++实现的学生管理系统:操作成绩、排序与分析

需积分: 9 0 下载量 25 浏览量 更新于2024-09-07 收藏 8KB TXT 举报
"studentManger.txt 是一个基于 C++ 编程语言开发的学生管理系统,用于管理学生的成绩数据,包括添加、修改、查看、排序和分析等功能。系统采用链表结构存储学生信息,每个学生对象包含姓名(name)、学号(ID)、四门课程的成绩(数学、英语、其他课程以及总成绩)以及指向下一个学生对象的指针。此外,系统还提供了友元类 studentMessage 用于操作和管理这些学生对象,提供了如添加、删除、查找、显示特定课程成绩和排序等方法。" 在这个系统中,`student` 类是核心数据结构,包含了学生的个人信息和成绩。类的成员变量有: 1. `ID`:学生学号,类型为 `std::string`。 2. `name`:学生姓名,类型为 `std::string`。 3. `score`:一个双精度浮点型数组,用于存储四门课程的成绩,数组下标1-4分别对应数学、英语、其他课程和总成绩。数组的0号单元未使用。 4. `next`:指向下一个学生对象的指针,类型为 `student*`。 `student` 类还包含以下成员函数: 1. 构造函数 `student()`:初始化学生对象。 2. `getName()`:返回学生姓名。 3. `getID()`:返回学生学号。 4. `getMath()`:返回数学成绩。 5. `getEnglesh()`:返回英语成绩。 6. `getOPP()`:返回其他课程成绩。 7. `getTotal()`:返回总成绩。 8. `getNext()`:返回指向下一个学生对象的指针。 9. `analyse()`:静态成员函数,用于分析成绩。 10. `display()`:打印学生的所有成绩信息。 11. `swap()`:交换当前对象与下一个对象(`next`)的信息。 `studentMessage` 类用于管理链表中的学生对象,提供了以下方法: 1. 构造函数 `studentMessage()`:初始化链表。 2. `getFirst()`:返回链表的第一个学生对象。 3. `getLast()`:返回链表的最后一个学生对象。 4. `getNum()`:返回链表中学生对象的数量。 5. `add()`:向链表中添加新的学生对象。 6. `search()`:在链表中查找指定条件的学生对象。 7. `del()`:删除链表中满足条件的学生对象。 8. `showOne()`:分析单个学生的一门课程成绩。 9. `showAll()`:显示所有学生所有科目的成绩。 10. `sort()`:根据指定标准对链表进行排序。 这个系统通过 `student` 类和 `studentMessage` 类实现了学生信息的管理和操作,是学习数据结构、链表操作以及面向对象编程的好例子。

帮我改写的能运行起来package com.swingtest; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import javax.swing.table.DefaultTableModel; public class StudentManger extends JFrame implements ActionListener { JLabel lstname = new JLabel("学生姓名: "); JTextField tf_name = new JTextField(12); JLabel lmajor = new JLabel("专业"); JTextField tf_major = new JTextField(); JButton btnOK = new JButton("添加"); JButton btnDelete = new JButton("删除"); JButton btnQuit = new JButton("退出"); JTable table; DefaultTableModel model; public void studentManger(String name) { // TODO Auto-generated constructor stub JLabel welcome = new JLabel(name +",欢迎登录!"); setTitle("学生管理"); setSize(400,400); welcome.setBounds(50,20,200,20); lstname.setBounds(50,20,200,20); tf_name.setBounds(150,50,100,20); lmajor.setBounds(50,80,100,20); tf_major.setBounds(150,80,100,20); btnOK.setBounds(80,110,60,20); btnDelete.setBounds(150,110,60,20); btnQuit.setBounds(220,110,60,20); Container c = getContentPane(); JPanel panel = new JPanel(); panel.setLayout(null); panel.add(welcome); panel.add(lstname); panel.add(tf_name); panel.add(lmajor); panel.add(tf_major); panel.add(btnOK); panel.add(btnDelete); panel.add(btnQuit); String[] colName = {"姓名","专业"}; model = new DefaultTableModel(colName,0); table = new JTable(model); JScrollPane scrollPane = new JScrollPane(table); c.setLayout(new SpringLayout()); c.add(panel); c.add(scrollPane); setLocationRelativeTo(null); setVisible(true); btnOK.addActionListener(this); btnDelete.addActionListener(this); btnQuit.addActionListener(this); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub Object ob = e.getSource(); if(ob == btnQuit) { System.exit(0); }else if(ob ==btnOK) { String[] stuInfo = {tf_name.getText(),tf_major.getText()}; model.addRow(stuInfo); tf_name.setText(""); tf_major.setText(""); }else if(ob == btnDelete) { if(table.getSelectedRow()<0) { JOptionPane.showMessageDialog(null,"请在表格中选中要删除的行");} else { model.removeRow(table.getSelectedRow()); } }} public static void main(String[] args) { new StudentManger(); } }

2023-06-06 上传