Java学生成绩管理系统(说明书)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
学生成绩管理系统
目录
1 . 设计题目 (2)
2 .设计目的 (2)
3 .设计分析 (2)
3.3可行性研究 (2)
3.3需求分析 (2)
3.3需求分析 (2)
4. 概念结构设计 (3)
5. 系统总体设计 (4)
5.1数据需求设计 (4)
5.2模块设计和数据存储 (5)
5.3功能模块设计 (6)
6. 具体功能实现 (7)
6.1登录模块的实现.......................................... ..10
6.2管理员登陆 (8)
6.3添加学生信息............................................ ..10
6.4查询学生信息........................................... (13)
6.5修改学生信息 (14)
6.6添加学生信息 (17)
7. 总结 (17)
8. 参考文献 (18)
9. 附录 (18)
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
一.设计题目
学生成绩管理系统
二.设计目的
巩固和加深学生对高级语言程序设计课程的基本知识的理解和掌握,掌
握java语言编程和程序调试的基本技能,利用java语言进行基本的软件设计,提高运用java语言解决实际问题的能力。

三.设计分析
3.1可行性研究
利用面向对象的JAVA语言来进行系统开发,可以很方便的根据实际定义各个所需要的对象,并对这些对象进行操作。

同时由于本系统是在控制台进行各种用户操作,所以需要及时验证用户的输入是否正确,并进行相应的提示,这些需求和功能在目前情况下利用所学知识完全可以实现。

并且本系统采用文件来存储数据,操作比较简单,但是在一定程度上限制数据量和系统的运行速度。

该学生成绩管理系统管理系统是在Windows 7系统下进行开发和运行的,这些系统目前已经比较普及,用户在该系统中可以方便的进行各种操作,实现预期的目的。

但是受控制台的限制,使得用户的操作不是很方便,这需要下一步的系统改进和升级,但是本系统仍然是可以正常运行和使用的
3.2 问题陈述
此项目是学生成绩管理系统,管理员对学生的成绩进行管理和分析。

在进入系统之前需要用户通过身份验证,当用户正确的输入了用户名称和密码后即可进入系统的主界面。

本系统的用户主要分为管理员,老师和同学。

若是管理员登录可以进行增,添,改学生的信息和成绩、管理学生基本信息、管理学生成绩信息、以及统计成绩。

若是学生登录,则可以进行修改自己的密码,查询自己的信息及成绩。

老师可以修改自己的密码,也可以查询所想查的学生的信息及成绩
3.3 需求分析
(1) 用户需求
此学生成绩管理系统的用户分为老师,管理员和学生,其中管理员可以实现对学生基本信息、学生成绩等信息的增、删、查、改等操作;而学生只能查
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊看基本信息和成绩信息以及更改个人密码,所以合理分配用户的权限显得十分重要。

以用户登录用户名和密码来核对确认用户,管理好这些用户对系统安全有十分重要的影响。

(2) 功能需求
①登录模块:主要分为老师,管理员和学生,对于登录后,按照各自的需求进一步进行。

②基本信息管理模块:管理员实现对学生信息的增、删、查、改等操作;学生可以查看基本信息和成绩信息。

3.4系统总体设计
学生成绩管理系统的设计,主要解决的是对系统中的学生基本信息、学生成绩信息以及统计学生成绩的管理工作。

首先,需要定义各个所需要的数据对象,然后在这些对象上进行操作;其次,实现功能模块时,采用先模块化,后集成化,即对系统各个功能模块分别独立设计和调试,在创建系统主登录界面时再将各个功能模块通过主菜单对各个模块的调用集成到一起,最后进行系统整体设计调试。

在数据存储和操作方面,采用文件的读写,并在读出数据之后放入链表进行操作;并在数据更新之后,系统退出之前及时把数据写入文件,这样可以减少对磁盘的直接操作次数,从而提高系统设计的效率。

系统流程图如图3-1所示:
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
图 3-1 系统流程图
四.概念结构设计
此项目主要有四个实体,分别是管理员,老师,学生,学生有八个属性,分别是姓名,学号,性别,密码,大学外语,高数,计算机操作系统,平均分,总分。

而老师和管理员则只有两个属性,分别是用户名和密码。

根据这些信息所画的E-R图则如图4-1所示:
图4-1 系统E-R图
五.系统总体设计
5.1 数据需求设计
由于这些数据都需要存入文件需要用到对象输入输出流,所以都需要实现序列化,即 implements Serializable。

(1) 用户数据
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
首先定义一个父类级别的用户对象User,有以下属性:
public String name;
public String passwd;
此项目中包含了三个类,一个Student类,一个主类demoMain,一个方法类,即就是function类其中管理员有自己的出原始密码,和用户名,学生类中有各自的属性。

(2)学生数据
public String number ;//学号
public String name;//姓名
public String sex;//性别
public String passwd;//密码
public String math;//高数
public String English;//大学外语
public String OS;//计算机操作系统
public double Average;//平均成绩
public double AllScore;//总成绩
5.2类设计和数据存储
(1)类设计
①用户类:首先定义一个学生类,拥有一些公共属性。

管理员,老师,学生,管理员通过对学生信息的添加,学生可以按照自己的权限,查询属于自己的信息及成绩。

这些类都需要实现序列化(implements Serializable),同时以便于写入文件,如果是父类实现了这个接口则子类就不需要实现了,通过继承实现了代码的重用,提高了代码的利用率。

②数据的读写类:有数据的写入文件类Output和读出类Input,主要是用到对象输入输出流,这完成对数据的读入和读取,以及数据更新后的存储工作。

③登录类:运行登录类需要输入用户账号和密码进行登录,如果账号错误会提示没有此用户,如果账号正确密码不对则提示密码输入错误而且如果输入密码三次错误则自动退出系统,只有登录成功后才能进入管理界面。

⑤程序主类:首先判断一下是否已创建存放文件夹的路径,如果没有则进行创建,然后判断是否有读写操作所需要的文件,没有则创建。

在创建过程中需要进行初始化管理员的账号和密码。

然后将信息添加到文件中去。

(2)方法类
①登录时:主要实现对输入信息的校验,如学生基本信息和成绩信息中性
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊别只能输入男或女,成绩只能在0—100分之间,进行添加学生时输入的学号不能重复,在添加学生成绩时需要先判断是否已添加此学生的基本信息如果没则提示需要先添加基本信息,还需要判断的是该学号在课程文件夹中是否已存在,如果存在则不允许添加重复学号的学生成绩信息等。

②处理学生基本信息:此接口主要是处理学生信息增、删、改、查及从文件中读取信息的初始化操。

在进行添加学生信息时可以一次添加多条学生信息。

在进行查询时分为四种查询方式,可以按照学号进行查新也可以查询全部学生的信息。

在进行修改时可以按照用户需要进行修改个别属性。

当删除信息时,会有是否确认删除的提示。

以免因为误操作而删除了有用的数据。

③处理学生成绩信息:此接口主要是处理学生成绩的增、删、改、查以及从文件中读取课程信息。

在添加学生成绩时需要进行对添加学生学号的校验,如果合法才允许添加其他信息,每个同学添加三门科目,通过,map的键值对的方式将课程名称和成绩添加到文件中去。

在进行修改时可以根据需要选择要修改的科目,在修改时先将map中的原成绩删除,然后添加新的成绩,然后再将信息写到文件中去。

当删除信息时,会有是否确认删除的提示。

以免因为误操作而删除了有用的数据。

在进行查询时可以查询全部同学的成绩,也可以按照同学查询单个同学的成绩。

(3)数据存储
数据存储主要是通过对象流来实现的,要用对象流那么所要往文件中写的对象就必须实现Serializable这个接口。

通过流仅能实现对数据的读写,不能实现对数据的增删改查,因此还需要借助List这个接口,通过接口回调得到一个list对象,将从文件中读取到的所有对象都放到list对象中,然后通过对list进行遍历,实现增删改查操作。

5.3 功能模块设计
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

管理员可以实现对学生成绩的增、删、改、查等操作。

学生只能是查询成绩,不能进行其他的操作。

六.具体功能实现
6.1 登录模块的实现
进入登录界面之后,可选择登录类别‘老师’或‘学生’,登录界面如下图6-1 所示,
图6-1登陆界面
进入主系统,并调用function中的firstMenue()方法来显示登录界面,管理员,老师还有同学登录的界面不同。

public void firstMenue() {
System.out.println("请选择用户类型!");
System.out
.println("1.管理员 2.老师 3.学生 4.退出");
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
System.out.print("请输入数字:");
int num = 0;
try {
num = System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
if (num == '1') {
manageMenue();
} else if (num == '2') {
teacherMenue();
} else if (num == '3') {
studentManage();
} else if (num == '4') {
System.exit(0);
}
System.out.println("*********************");
}
6.2 管理员登陆
进入登录界面之后,管理员可根据自己的需求选择要进行的功能,功能界面如下图6-2 所示:
图6-2管理员登陆
管理员登陆所实现其功能的部分代码如下:
public void manageMenue() {
System.out.println(" 管理员登陆\n");
String ma1 = null;
String passwd = null;
try
{
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
scan.readLine();
System.out.println("请输入用户名");
ma1 = scan.readLine();
System.out.println("请输入密码");
passwd = scan.readLine();
} catch (IOException e) {
e.printStackTrace();
}
if (ma1.equals("yuyu") && passwd.equals("123456"))// 系统已默认管理员的用户名与密码
{
System.out.println("登陆成功");
mannerAct();
} else {
System.out.println("输入有误,请查证后重新输入");
manageMenue();
}
}
public void mannerAct() {
System.out.println("**请进行如下功能选择**");
System.out.println("****1.查询学生成绩****");
System.out.println("****2.修改学生信息****");
System.out.println("****3.删除学生信息****");
System.out.println("****4.增添学生信息****");
System.out.println("****5.返回上级菜单****");
System.out.print("****请输入数字:");
int num = 0;
try {
num = System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
if (num == '1') {
selectStuInformation();
} else if (num == '2') {
try {
changeStuInformation();
} catch (IOException e) {
e.printStackTrace();
}
} else if (num == '3') {
deleteStuInformation();
} else if (num == '4') {
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
addStuInformation();
} else if (num == '5') {
firstMenue();
}
}
6.3添加学生信息
进入登录界面之后,管理员可以添加学生的信息。

如图6-3所示:,
图6-3添加学生信息
管理员添加学生信息的部分代码如下:
public void addStuInformation() {
String number = null;
String name = null;
String sex = null;
String math = null;
String English = null;
String OS = null;
Student stu = null;
System.out.print("请输入要插入写学生信息的个数:");
// int y = 0;
int y = 0;
try {
scan.readLine();
y = Integer.parseInt(scan.readLine());
} catch (IOException e1) {
e1.printStackTrace();
}
for (int i = 1; i <= y; i++) {
System.out.println("这是第" + i + "个学生信息。

");
System.out.print("学号:");
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
try {
number = scan.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
System.out.print("姓名:");
try {
name = scan.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
System.out.print("性别:");
try {
sex = scan.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
if (sex.equals("男") || sex.equals("女")) {
} else {
System.out.println("输入有误,请重新输入");
System.out.print("性别:");
try {
sex = scan.readLine();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.print("高数:");
try {
math = scan.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
if(Integer.parseInt(math) >= 0 && Integer.parseInt(math) <= 100) {
} else {
System.out.println("输入有误,请重新输入");
System.out.print("高数:");
try {
math = scan.readLine();
} catch (IOException e) {
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
e.printStackTrace();
}
}
System.out.print("大学外语:");
try {
English = scan.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
if (Integer.parseInt(English) >= 0
&& Integer.parseInt(English) <= 100) {
} else {
System.out.println("输入有误,请重新输入");
System.out.print("大学外语:");
try {
English = scan.readLine();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.print("计算机操作系统:");
try {
OS = scan.readLine();
System.out.println(OS);
} catch (IOException e1) {
e1.printStackTrace();
}
if(Integer.parseInt(OS) >= 0 && Integer.parseInt(OS) <= 100) {
} else {
System.out.println("输入有误,请重新输入");
System.out.print("计算机操作系统:");
try {
OS = scan.readLine();
} catch (IOException e) {
e.printStackTrace();
}
}
stu = new Student(number, name, sex, math, English, OS);
MyObjectOutputStream in = null;
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
try {
in = MyObjectOutputStream.newInstance(stuInfo,
new FileOutputStream(stuInfo, true));
in.writeObject(stu);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
} else
in = null;
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("添加完毕");
}
mannerAct();
}
6.4查询学生信息
进入登录界面之后,管理员,老师可以询学生的信息。

如图6-4所示:!
图6-4查询学生信息
查询学生信息的部分代码如下:
public void selectStuInformation() {
Student us = null;
try {
scan.readLine();
System.out.print("请输入查询学生学号:"
);
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
String snum = scan.readLine();
read= new ObjectInputStream(new FileInputStream(stuInfo));
while (true) {
us = (Student) read.readObject();
if (snum.equals(us.number)) {
System.out.println("学号:" + us.number + "\n姓名:" + + "\n性别:" + us.sex + "\n高数:" + us.math + "\n大学外语:"
+ us.English + "\n计算机操作系统:" + us.OS);
jisuan(us.math, us.English, us.OS);
break;
}
}
} catch (EOFException e) {
System.out.println("没有您所需要的信息!\n按回车键继续.");
try {
scan.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mannerAct();
}
6.5修改学生信息
进入登录界面之后,管理员可以修改学生的信息,如下图6-5所示:
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
图6-5 修改学生信息
//实现此功能的部分代码如下:
public void changeStuInformation() throws IOException { Student obj = null;
MyObjectOutputStream out1 = null;
System.out.print("请输入要修改学生的学号:");
try {
scan.readLine();
String snum = scan.readLine();
changin ch = new changin(snum);
obj=ch.search();
ch.delIn();
} catch (IOException e) {
}catch(NullPointerException e){
System.out.println("无此信息");
}
if (obj == null) {
System.out.println("无此信息");
return;
}
System.out.println("**请进行如下功能选择**");
System.out.println("****1.修改学生姓名**********");
System.out.println("****2.修改学生性别****");
System.out.println("****3.修改高数****");
System.out.println("****4.修改大学外语****");
System.out.println("****5.修改操作系统成绩****");
System.out.print("****请输入数字:");
try {
out = MyObjectOutputStream.newInstance(stuInfo,
new FileOutputStream(stuInfo, true));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
int i = new Scanner(System.in).nextInt();
switch (i) {
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
case 1: {
System.out.print("请输入要修改学生的姓名:");
String name = scan.readLine();
out.writeObject(new Student(obj.number, name, obj.sex, obj.math,
obj.English, obj.OS));
out.flush();
System.out.println("修改成功!");
};break;
case 2: {
System.out.println("请输入要修改学生的性别:");
String sex = scan.readLine();
out.writeObject(new Student(obj.number, , sex, obj.math,
obj.English, obj.OS));
out.flush();
System.out.println("修改成功!");
};break;
case 3: {
System.out.print("请输入要修改学生的高数成绩:");
scan.readLine();
String math = scan.readLine();
out.writeObject(new Student(obj.number, , obj.sex, math,
obj.English, obj.OS));
out.flush();
System.out.println("修改成功!");
}
;
break;
case 4: {
System.out.print("请输入要修改学生的大学外语成绩:");
scan.readLine();
String English = scan.readLine();
out.writeObject(new Student(obj.number, , obj.sex,
obj.math, English, obj.OS));
out.flush();
System.out.println("修改成功!");
}
;
break;
case 5: {
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
System.out.print("请输入要修改学生的计算机操作系统成绩:");
scan.readLine();
String OS = scan.readLine();
out.writeObject(new Student(obj.number, , obj.sex,
obj.math, obj.English, OS));
System.out.println("修改成功!");
mannerAct();
}
;
break;
default:
System.out.println("选择错误");
obj=null;
out.close();
changeStuInformation();
}
mannerAct();
}
6.6 删除信息
进入登录界面之后,管理员可以按照要求删除学生的信息。

如图6-6所示:
图6-6 删除学生信息
//删除学生信息的部分代码如下:
public void deleteStuInformation() {
System.out.print("要删除的学生的学号是:");
String stno = null;
try {
scan.readLine();
stno = scan.readLine();
System.out .print(stno);
new
changin(stno).delIn();
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
} catch (IOException e) {
e.printStackTrace();
}
mannerAct();
}
7.总结
经过三个多星期的系统设计与代码编写,基本完成了学生成绩管理系统(主要是权限分配、学生基本信息管理、学生成绩管理管理)的设计与实现。

在这个系统中,可实现由计算机代替人工执行一系列诸如对学生基本信息,成绩信息的增、删、查、改等操作,这样就使管理人员从繁重的工作中解脱出来,同时实现管理工作的规范化、效率化、国际化。

在设计过程中,我首先考虑到了本系统各个大的功能模块,然后进行更加详细的划分,逐步完善各个模块的具体内容。

在书写代码时要养成加注释的好习惯,这样可以在查看之前所写的代码时更加方便,否则还需要大量时间看之前所写的代码。

在校验方面,要保证程序不会因为操作人员误操作则导致程序崩溃就要考虑周全可能情况的发生,然后妥善处理。

在信息提示方面,需要给用户一些温馨的提示,而不是诸如“错误编号0x704820”这类的冰冷警告。

我们要让用户对系统感到亲切和易使用,并能通过温馨提示让用户自己解决问题,这也可以减少维护人员的工作量,我们需要的就是一个健壮、友好的系统。

总之,本次设计是对自己以前所学的知识进行系统的综合实践,使自己收获匪浅,更加深刻的理解了课本知识,并学以致用。

在本次毕业设计过程中,在老师的耐心指导及同学们帮助下,基本上完成。

8.参考文献
[1] Java语言程序设计张振领编中国电力出版社
[2] Java 程序设计教程耿详义编,清华大学出版社
[3] Java课程设计耿详义编清华大学出版社
[4] Java视频教程孙鑫主讲
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊附录代码
//学生信息类
package ChangeInfo;
import java.io.Serializable;
public class Student implements Serializable{
private static final long serialVersionUID = 6479726730663946698L;
public String number ;
public String name;
public String sex;
public String passwd;
public String math;
public String English;
public String OS;
public double Average;
public double AllScore;
public Student(String number,String name ,String sex, String math, String English, String OS){
this.number=number;
=name;
this.sex=sex;
this.math=math;
this.English=English;
this.OS=OS;
}
public Student(double Average,double AllScore){
this.Average=Average;
this.AllScore=AllScore;
}
public void setPasswd(String m){
passwd=m;
}
}
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊//方法实现类
package ChangeInfo;
import java.io.BufferedReader;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.util.Scanner;
import ChangeInfo.MyObjectOutputStream;
import ChangeInfo.Student;
import ChangeInfo.changin;
public class function {
File stuInfo = new File("c:\\stuInfo.txt");
ObjectInputStream read = null;
MyObjectOutputStream out = null;
BufferedReader scan = new BufferedReader(new InputStreamReader(System.in));
// 一级菜单
public void firstMenue() {
System.out.println("请选择用户类型!");
System.out
.println("1.管理员 2.老师 3.学生4.退出");
System.out.print("请输入数字:");
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
int num = 0;
try {
num = System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
if (num == '1') {
manageMenue();
// firstMenue();
} else if (num == '2') {
teacherMenue();
// firstMenue();
} else if (num == '3') {
studentManage();
// firstMenue();
} else if (num == '4') {
System.exit(0);
}
System.out.println("*********************"); }
// 管理员二级菜单
public void manageMenue() {
System.out.println(" 管理员登陆\n");
String ma1 = null;
String passwd = null;
try {
scan.readLine();
System.out.println("请输入用户名");
ma1 = scan.readLine();
System.out.println("请输入密码");
passwd = scan.readLine();
} catch (IOException e) {
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
e.printStackTrace();
}
if (ma1.equals("yuyu") && passwd.equals("123456"))// 系统已默认管理员的用户名与密码
{
System.out.println("登陆成功");
mannerAct();
} else {
System.out.println("输入有误,请查证后重新输入");
manageMenue();
}
}
public void mannerAct() {
System.out.println("**请进行如下功能选择**");
System.out.println("****1.查询学生成绩****");
System.out.println("****2.修改学生信息****");
System.out.println("****3.删除学生信息****");
System.out.println("****4.增添学生信息****");
System.out.println("****5.返回上级菜单****");
System.out.print("****请输入数字:");
int num = 0;
try {
num = System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
if (num == '1') {
selectStuInformation();
} else if (num == '2') {
try {
changeStuInformation();
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
} catch (IOException e) {
e.printStackTrace();
}
} else if (num == '3') {
deleteStuInformation();
} else if (num == '4') {
addStuInformation();
} else if (num == '5') {
firstMenue();
}
}
// 学生二级菜单
public void studentManage() {
System.out.println("请输入用户名");
String number = null;
String passwd = null;
try {
number = scan.readLine();
System.out.println("请输入密码");
passwd = scan.readLine();
} catch (IOException e2) {
e2.printStackTrace();
}
try {
read = new ObjectInputStream(new
FileInputStream(stuInfo));
while (true) {
Student userInfo = null;
userInfo = (Student) read.readObject();
if (number.equals(userInfo.number)
& passwd.equals(userInfo.number)) {
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
System.out.println("登陆成功");
System.out.println("请进行如下功能选择!");
System.out.println("****1.查询学生成绩****");
System.out.println("****2.修改学生密码****");
System.out.println("****3.返回上级菜单****");
System.out.print("****请输入数字:");
int e = scan.read();
switch (e) {
case'1':
e = 1;
selectStuInformation();
break;
case'2':
e = 2;
break;
case'3':
e = 3;
firstMenue();
break;
}
}
}
} catch (EOFException e1) {
System.out.print("用户名和密码错误,请重新输入:");
} catch (IOException e1) {
e1.printStackTrace();
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
}
// 老师二级菜单
public void teacherMenue() {
System.out.println("请输入用户名");
String number=null;
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
String passwd = null;
try {
number = scan.readLine();
System.out.println("请输入密码");
passwd = scan.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
if (passwd.equals("111111"))// 系统已默认老师的密码
{
System.out.println("登陆成功");
} else {
System.out.println("输入有误,请查证后重新输入");
}
System.out.println("请进行如下功能选择!");
System.out.println("请进行如下功能选择!");
System.out.println("****1.查询成绩*****");
System.out.println("****2.返回上级菜单*****");
System.out.print("****请输入数字:");
int num = 0;
try {
num = scan.read();
} catch (IOException e) {
e.printStackTrace();
}
if (num == 1) {
selectStuInformation();
} else if (num == 2) {
firstMenue();
}
}
// ///计算学生的平均分和总分
public void jisuan(String math, String English, String Os) { double Average;
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
double AllScore;
AllScore = Integer.parseInt(math) +
Integer.parseInt(English)
+ Integer.parseInt(Os);
Average = AllScore / 3;
System.out.println("总成绩为:" + AllScore);
System.out.println("平均成绩为:" + Average);
}
// 查询学生信息
public void selectStuInformation() {
Student us = null;
try {
scan.readLine();
System.out.print("请输入查询学生学号:");
String snum = scan.readLine();
read = new ObjectInputStream(new
FileInputStream(stuInfo));
while (true) {
us = (Student) read.readObject();
if (snum.equals(us.number)) {
System.out.println("学号:" + us.number + "\n姓名:" + + "\n性别:" + us.sex + "\n高数:" + us.math + "\n大学外语:+ us.English+ "\n计算机操作系统:"+ us.OS);jisuan(us.math, us.English, us.OS);
break;
}
}
} catch (EOFException e) {
System.out.println("没有您所需要的信息!\n按回车键继续.");
try {
scan.readLine();
} catch (IOException e1) {
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
e1.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mannerAct();
}
// 修改学生信息//如何改变一个对象里的属性呢?????????????public void changeStuInformation() throws IOException { Student obj = null;
MyObjectOutputStream out1 = null;
System.out.print("请输入要修改学生的学号:");
try {
scan.readLine();
String snum = scan.readLine();
changin ch = new changin(snum);
obj=ch.search();
ch.delIn();
} catch (IOException e) {
}catch(NullPointerException e){
System.out.println("无此信息");
}
if (obj == null) {
System.out.println("无此信息");
return;
}
System.out.println("**请进行如下功能选择**");
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
System.out.println("****1.修改学生姓名**********");
System.out.println("****2.修改学生性别****");
System.out.println("****3.修改高数****");
System.out.println("****4.修改大学外语****");
System.out.println("****5.修改操作系统成绩****");
System.out.print("****请输入数字:");
try {
out = MyObjectOutputStream.newInstance(stuInfo,
new FileOutputStream(stuInfo, true));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
int i = new Scanner(System.in).nextInt();
switch (i) {
case 1: {
System.out.print("请输入要修改学生的姓名:");
String name = scan.readLine();
out.writeObject(new Student(obj.number, name, obj.sex, obj.math,
obj.English, obj.OS));
out.flush();
System.out.println("修改成功!");
};break;
case 2: {
System.out.println("请输入要修改学生的性别:");
String sex = scan.readLine();
out.writeObject(new Student(obj.number, , sex, obj.math,
obj.English, obj.OS));
out.flush();
System.out.println("修改成功!");
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
};break;
case 3: {
System.out.print("请输入要修改学生的高数成绩:");
scan.readLine();
String math = scan.readLine();
out.writeObject(new Student(obj.number, , obj.sex, math,
obj.English, obj.OS));
out.flush();
System.out.println("修改成功!");
}
;
break;
case 4: {
System.out.print("请输入要修改学生的大学外语成绩:");
scan.readLine();
String English = scan.readLine();
out.writeObject(new Student(obj.number, , obj.sex,
obj.math, English, obj.OS));
out.flush();
System.out.println("修改成功!");
}
;
break;
case 5: {
System.out.print("请输入要修改学生的计算机操作系统成绩:");
scan.readLine();
String OS = scan.readLine();
out.writeObject(new Student(obj.number, , obj.sex,
obj.math, obj.English, OS));
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
System.out.println("修改成功!");
mannerAct();
}
;
break;
default:
System.out.println("选择错误");
obj=null;
out.close();
changeStuInformation();
}
mannerAct();
}
// 删除学生信息
public void deleteStuInformation() {
System.out.print("要删除的学生的学号是:");
String stno = null;
try {
scan.readLine();
stno = scan.readLine();
System.out .print(stno);
new changin(stno).delIn();
} catch (IOException e) {
e.printStackTrace();
}
mannerAct();
}
// 增添学生信息
public void addStuInformation() {
String number = null;
String name = null;
String sex = null;
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊String math = null;
String English = null;
String OS = null;
Student stu = null;
System.out.print("请输入要插入写学生信息的个数:");
// int y = 0;
int y = 0;
try {
scan.readLine();
y = Integer.parseInt(scan.readLine());
} catch (IOException e1) {
e1.printStackTrace();
}
for (int i = 1; i <= y; i++) {
System.out.println("这是第" + i + "个学生信息。

");
System.out.print("学号:");
try {
number = scan.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
System.out.print("姓名:");
try {
name = scan.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
System.out.print("性别:");
try {
sex = scan.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
if (sex.equals("男") || sex.equals("女")) {
} else {
System.out.println("输入有误,请重新输入");
System.out.print("性别:");
try {
sex = scan.readLine();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.print("高数:");
try {
math = scan.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
if(Integer.parseInt(math) >= 0 && Integer.parseInt(math) <= 100) {
} else {
System.out.println("输入有误,请重新输入");
System.out.print("高数:");
try {
math = scan.readLine();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.print("大学外语:");
try {
English = scan.readLine();
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
} catch (IOException e1) {
e1.printStackTrace();
}
if (Integer.parseInt(English) >= 0
&& Integer.parseInt(English) <= 100) {
} else {
System.out.println("输入有误,请重新输入");
System.out.print("大学外语:");
try {
English = scan.readLine();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.print("计算机操作系统:");
try {
OS = scan.readLine();
System.out.println(OS);
} catch (IOException e1) {
e1.printStackTrace();
}
if(Integer.parseInt(OS) >= 0 && Integer.parseInt(OS) <= 100) {
} else {
System.out.println("输入有误,请重新输入");
System.out.print("计算机操作系统:");
try {
OS = scan.readLine();
} catch (IOException e) {
e.printStackTrace();
}
}
stu = new Student(number, name, sex, math, English, OS);
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
MyObjectOutputStream in = null;
try {
in = MyObjectOutputStream.newInstance(stuInfo,
new FileOutputStream(stuInfo, true));
in.writeObject(stu);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
} else
in = null;
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("添加完毕");
// li.add(stu);
// System.out.println(li.size());
}
mannerAct();
// jisuan();
}
// 修改密码
public void changePwd(Student stu) {
System.out.println("请输入新密码");
String p = null;
try {
p = scan.readLine();
} catch (IOException e) {。

相关文档
最新文档