简单学生信息管理系统

简单学生信息管理系统
简单学生信息管理系统

——综合性程序设计

题目:简单学生信息管理系统(序列化版)班级:

姓名:

学号:

实验目的:

1.综合运用输入、输出的知识,用序列化方法保存、读入数组内容。

2.设计实现一个简单的信息管理系统。

实验内容:

编写能够满足如下条件的程序,分两次四个课时完成

1.声明Student类,该类实现Serializable接口以表明该类

可以进行序列化。该类有姓名、学号、math、os、java用

来存放对应的成绩,在构造方法中进行姓名、学号、课程

成绩的赋值。Override有Object继承来的tostring方法

已便友好格式显示自己的属性;

2.建立一个类,利用数组来存储多个Student,写完一个方

法,在main中写一段测试代码,运行以保证目前所做工

作的正确性,正确后再写其他代码。有以下方法:

1)add(Student stu):增加新的学生,人数满时显示人满或是new一个更长的数组,把现有的Student复制到

新数组

2)dispAll():可以显示所有的学生信息(测试add是否正确)

3)findById(long id):可以按照学号来查找,然后显示符合条件的学生信息,查无此人的话显示错误信息。

4)findByName(string name):可以按照姓名来查找,然后显示符合条件的学生信息,查无此人的话显示错误

信息。(判断姓名是否相等使用string类的

equalsIgnoreCase方法)

5)delBy Id(long id): 可以按照id来删除学生信息,然后显示找到该人,若查无此人的话显示错误信息。

6)save():利用ObjectOutputStream 来把数组写入文件中,需要考虑在什么时候调用该方法。

7)load():利用ObjectIntputStream 来进行反序列化,得到以前保存的内容,注意要考虑以前未保存内容

的情况,可返回错误信息。

3.在控制台显示一个菜单,并实现相应的功能。菜单如下: 1显示所有学生信息 2按学号查找 3 按姓名查找

4 按学号删除

5 保存

6 读入

7 退出

请输入数字(1-7):

程序代码

Import java.io.*;

Import java.util.*;

class Stu implements Serilizable{

private String name;

private long id;

private double os,java,math;

}

public Student()

{

}

public Student(int id, int age, int score, String name) {

this.id = id;

this.os = os;

this.java = java;

https://www.360docs.net/doc/d218530194.html, = name;

this.math=math;

}

public long getId()

{

return id;

}

public void setId(long id)

{

this.id = id;

}

public int getOs()

{

return os;

}

public void setOs(int os)

{

this.os = os;

}

public int getJava()

{

return java;

}

public void setJava(int java)

{

this.java = java;

}

public int getMath()

{

return Math;

}

public void setMath(int math)

{

this.math = math;

}

public String getName()

{

return name;

}

public void setName(String name) {

https://www.360docs.net/doc/d218530194.html, = name;

}

@Override

public String toString()

{

return "学号:" + id + " 姓名:" + name + " os:" + os+ " math:" + math + "java" + java;

}

}

//Object类

public class Object

{

private static Scanner scanner=new Scanner(System.in);

public void add(Student[] stus)throws Exception

{

Student[] s=new Student[stus.length+1];

for(int i=0;i

s[i]=stus[i];

}

System.out.print("请输入要添加的学生信息:\n"+"姓名:");

String name=scanner.next();

System.out.print("学号:");

long no=scanner.nextInt();

System.out.print("os成绩:");

double cscore0=scanner.nextDouble();

System.out.print("java成绩:");

double cscore1=scanner.nextDouble();

System.out.print("math成绩:");

double cscore2=scanner.nextDouble();

s[s.length-1]=new Student(name,no,cscore0,cscore1,cscore2);

save(s);

System.out.println("添加成功!");

}

public void dispAll(Student[] stus)

{

System.out.println("现有Student信息为:");

for(Student stu:stus)

{

System.out.println(stu);

}

}

public void save(Student[] stus)throws Exception

{

ObjectOutputStream objOut=new ObjectOutputStream(new FileOutputStream("E:\\STU.txt"));

objOut.writeInt(stus.length);

for(Student stu:stus)

{

objOut.writeObject(stu);

}

objOut.close();

}

public Student[] read()throws Exception

{

ObjectInputStream objIn=new ObjectInputStream(new FileInputStream("E:\\STU.txt"));

int num=objIn.readInt();

Student[] stus=new Student[num];

for(int i=0;i

{

stus[i]=(Student)objIn.readObject();

}

objIn.close();

return stus;

}

public void findById(Student[] stus)

{

int no=0,i=0;

System.out.print("请输入学号:");

no=scanner.nextInt();

for(i=0;i

{

if(stus[i].no==no)

{

System.out.println(stus[i]);break;

}

if(stus[i].no!=no&&i==stus.length-1)

{

System.out.println("无该生信息!");

}

}

}

public void findByName(Student[] stus)

{

String name="";

System.out.print("请输入姓名:");

name=scanner.next();

for(int i=0;i

{

if(name.equalsIgnoreCase(stus[i].name)==true)

{

System.out.println(stus[i]);break;

}

if(name.equalsIgnoreCase(stus[i].name)==false&&i==stus.length-1) {

System.out.println("无该生信息!");

}

}

}

public void delById(Student[] stus)throws Exception

{

int no=0,i=0;

System.out.print("请输入学号:");

no=scanner.nextInt();

for(i=0;i

{

if(stus[i].no==no)

{

System.out.println(stus[i]);

stus[i]=null;save(stus);

System.out.println("删除成功!");

break;

}

if(stus[i].no!=no&&i==stus.length-1)

{

System.out.println("无该生信息!");

}

}

}

public static void main(String[] args)throws Exception

{

Object demo=new Object();

Student[] stus={new Student("zhang",1,90,90,98),new Student("wang",2,80,80,89),new Student("li",3,70,70,79)};

System.out.print("请输入操作的编号:");

System.out.print("\n");

int choice=0;

do{

System.out.println("1 添加 2 显示所有学生信息 3 按学号查找

4 按姓名查找

5 按学号删除

6 保存

7 读入 0 退出请输入数字(1-7): ");

choice=scanner.nextInt();

switch(choice){

case 1:

demo.add(demo.read());

break;

case 2:

demo.dispAll(demo.read());

break;

case 3:

demo.findById(demo.read());

break;

case 4:

demo.findByName(demo.read());

break;

case 5:

demo.delById(demo.read());

break;

case 6:

demo.save(stus);

break;

case 7:

demo.read(stus);

break;

case 0:

break;

default:

System.out.println("Error!");

}

}while(choice!=0);

}

}

实验结果

1 添加

2 显示所有学生信息

3 按学号查找

4 按姓名查找

5 按学号删除

6 保存

7 读入 0 退出请输入数字(1-7):1

请输入要添加的学生信息:

姓名:kim

学号:0110

os成绩:66

java成绩: 77

math成绩:88

添加成功!

1 添加

2 显示所有学生信息

3 按学号查找

4 按姓名查找

5 按学号删除

6 保存

7 读入 0 退出请输入数字(1-7):1

请输入要添加的学生信息:

姓名:lina

学号:0122

os成绩:96

java成绩: 83

math成绩:72

添加成功!

1 添加

2 显示所有学生信息

3 按学号查找

4 按姓名查找

5 按学号删除

6 保存

7 读入 0 退出请输入数字(1-7):1

请输入要添加的学生信息:

姓名:joe

学号:0136

os成绩:69

java成绩: 83

math成绩:66

添加成功!

1 添加

2 显示所有学生信息

3 按学号查找

4 按姓名查找

5 按学号删除

6 保存

7 读入 0 退出请输入数字(1-7):2

现有Student信息为:

学号:0110姓名:kim os:66 math:88 java:77

学号:0122姓名:lina os:96 math:72 java:83

学号:0136姓名:joe os:69 math:66 java:83

1 添加

2 显示所有学生信息

3 按学号查找

4 按姓名查找

5 按学号删除

6 保存

7 读入 0 退出请输入数字(1-7):6

1 添加

2 显示所有学生信息

3 按学号查找

4 按姓名查找

5 按学号删除

6 保存

7 读入 0 退出请输入数字(1-7):4

请输入姓名:lim

无该生信息!

1 添加

2 显示所有学生信息

3 按学号查找

4 按姓名查找

5 按学号删除

6 保存

7 读入 0 退出请输入数字(1-7):3

请输入学号:0122

学号:0122姓名:lina os:96 math:72 java:83

1 添加

2 显示所有学生信息

3 按学号查找

4 按姓名查找

5 按学号删除

6 保存

7 读入 0 退出请输入数字(1-7):4

请输入姓名:kim

学号:0110姓名:kim os:66 math:88 java:77

1 添加

2 显示所有学生信息

3 按学号查找

4 按姓名查找

5 按学号删除

6 保存

7 读入 0 退出请输入数字(1-7):5

请输入学号:0136

删除成功!

1 添加

2 显示所有学生信息

3 按学号查找

4 按姓名查找

5 按学号删除

6 保存

7 读入 0 退出请输入数字(1-7):2

学号:0110姓名:kim os:66 math:88 java:77

学号:0122姓名:lina os:96 math:72 java:83

1 添加

2 显示所有学生信息

3 按学号查找

4 按姓名查找

5 按学号删除

6 保存

7 读入 0 退出请输入数字(1-7):9

Error!

1 添加

2 显示所有学生信息

3 按学号查找

4 按姓名查找

5 按学号删除

6 保存

7 读入 0 退出请输入数字(1-7):0

实验总结:

以前用C语言做过关于学生信息的管理系统,这次用java,在有过c和c++的学习后,相对来说要比以前更有些思路,java也比c更为方便一些,在程序编写时总是忘记写一段就编译一段,以及时的能发现错误,导致最后程序编译时无法找到自己的错误。实现类的序列化的必要条件就是实现Serializable接口,对于序列化与反序列化有了一定的掌握。但是外部文件的存储和提取对象的过程还是出现过错误,需要再学习以熟练掌握。

.

相关文档
最新文档