1、 . 目 录 1设计目的及容要求1 2 系统总体设计1 3 系统详细设计2 4 运行结果及分析17 致谢21 参考文献22 .
2、 .word.zl. . . 简单学生成绩管理系统的设计与实现 1设计目的及容要求 1、 设计目的: 稳固和加深学生对高级语言程序设计课程的根本知识的理解和掌握,掌握java语言编程和程序调试的根本技能,利用java语言进展根本
3、的软件设计,提高运用java语言解决实际问题的能力。 2、 容要求 实现学生成绩的管理〔增、删、改、查询、持久化、成绩排序、成绩统计等功能〕,在文件中增加、删除、学生信息,根据学号查询、修改学生信息,统计功能求每个人的总分并按从高到低排序,通过这些操作对文件中的信息保存。 2 系统总体设计 成功登陆系统以后,出现成绩管理界面,系统初始化,可对学生成绩进展增加、删除、查询、修改、统计,进入相应界面进展成绩管理,退出系统自动保存本次操作容,保存信息。 简易流程图: 登陆 成绩管理界面 增加 删除 查询 修改 统计 退出 3 系统详细设计 ① 创立Student
4、类,设置变量及对应方法 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,
5、 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(in
6、t 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(in
7、t 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 + "]"; }
8、} ② 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; i
9、mport java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
public class StuC {
ArrayList
10、
//删除
public void del(int n){
for(int i=0;i 11、oid 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( 12、){
for(int i=0;i 13、ect(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 14、{
al = (ArrayList 15、 find(int n)
{
for(int i=0;i 16、a.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 Gri 17、dLayout(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 ut 18、ton("退出");
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());
}
cl 19、ass 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 20、 200, 300, 300);
frame1.setVisible(true);
}
else JOptionPane.showMessageDialog(null, "用户名或密码错误,请重新登录!");
}
}
class ReWrite implements ActionListener{
public void actionPerformed(ActionEvent e)
{
f1.setText("");
f2.setText("");
f1.req 21、uestFocus();
}
}
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("系统 22、登录");
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 23、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.setForegr 24、ound(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("统计 25、");
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 26、 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){
27、 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();
}
}
// 28、增加信息界面部类,捕获文本框息创立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("添加 29、学生信息");
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.TRU 30、ETYPE_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 31、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("jav 32、a", 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);
33、 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.printStackTra 34、ce();
} 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();
35、 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 36、 {
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 37、 scs.adds(a);
JOptionPane.showMessageDialog(this, "添加成功");
}
else{
JOptionPane.showMessageDialog(this, "已存在");
}
}
}
private void clearForm() {
STNOText.setText("");
SNAMEText.setText("");
MAText.setText("");
CHIText.setText("");
JAV 38、AText.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.get 39、ContentPane();
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);
JPane 40、l 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 c 41、enter = 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("语文", Swin 42、gConstants.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);
43、 }
public void actionPerformed(ActionEvent e){
if (e.getSource() == b1) {
STNO = STNOText.getText();
int k=0;
for(int i=0;i 44、));
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 45、 "查无此人");
}
}
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;
publi 46、c 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("t 47、rue",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 48、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 49、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 ActionListen 50、er{
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






