实验要求:
设计并实现一个计算机系信息管理系统,该系统用于管理计算机系教师和学生的信息。
系统功能:教师信息管理、学生信息管理。
- 系统初始界面要显示系统名称、系统开发者的班级和姓名、开发时间、版权所有等信息。
- 系统要有主菜单,让用户可自由选择管理教师信息或管理学生信息或退出;
- 教师信息管理中至少有教师基本信息录入、课时数录入、打印教师信息表等功能;
- 学生信息管理中至少有学生基本信息录入、打印学生基本信息表、数学成绩录入、英语成绩录入、Java成绩录入、输出成绩表等功能;
- 在教师信息管理和学生信息管理中要有子菜单,可以让用户自由选择其中的子功能。
实验思路:
- 要管理教师和学生两类信息,故必须有教师和学生两种类。由于教师和学生有多个属性相同,因此先设置一个人员类,再让教师类和学生类继承它。
- 设置一个教师信息管理类,教师的信息管理操作均由该类实现。
- 设置一个学生信息管理类,学生的信息管理操作均由该类实现。
- 主类。主要功能是:
- 初始界面的显示;
- 进入循环,显示主菜单供用户选择教师信息管理或学生信息管理;
- 进入教师信息管理或学生信息管理后应显示子菜单,供用户选择它们的子功能,实现相应的信息管理。
人员类:
有身份证号、姓名、年龄等域,以及各个域值的设置和获取方法,还可以有基本信息(身份证号、姓名)的输出方法p。
package system;
public class People {
private String name;
private String ID;
private String sex;
private int age;
private String subject;
public People(String name, String iD, String sex, int age, String subject) {
super();
this.name = name;
ID = iD;
this.sex = sex;
this.age = age;
this.subject = subject;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getID() {
return ID;
}
public void setID(String iD) {
ID = iD;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public People(String ID,String name) {
super();
ID=ID;
this.name=name;
}
public People() {
}
}
教师类,在继承人员类的基础上再增加教师工号、课时数等域,并且设置这些域值的设置和获取方法,再添加教师基本信息(教师工号、姓名)输出方法p等。
package system;
public class Teacher extends People{
private String TeaNo;
private int classNum;
public String getTeaNo() {
return TeaNo;
}
public void setTeaNo(String teaNo) {
TeaNo = teaNo;
}
public int getClassNum() {
return classNum;
}
public void setClassNum(int classNum) {
this.classNum = classNum;
}
public Teacher(String ID,String name,String TeaNo) {
super(ID,name);
this.TeaNo=TeaNo;
}
}
学生类,在继承人员类的基础上再增加学号、三门课成绩(数学、英语、Java)等域,并且设置这些域值的设置和获取方法,再添加学生信息基本信息(学号、姓名)输出f方法p、计算平均分等方法
package system;
public class Student extends People{
private int Math;
private int English;
private int Java;
private int StuNo;
public int getMath() {
return Math;
}
public void setMath(int math) {
Math = math;
}
public int getEnglish() {
return English;
}
public void setEnglish(int english) {
English = english;
}
public int getJava() {
return Java;
}
public void setJava(int java) {
Java = java;
}
public int getStuNo() {
return StuNo;
}
public void setStuNo(int stuNo) {
StuNo = stuNo;
}
public Student(String ID,String name,int StuNo) {
super(ID,name);
this.StuNo=StuNo;
}
public Student() {
// TODO 自动生成的构造函数存根
}
}
教师信息管理类。该类中要有教师人数域、教师列表域(教师类对象数组),并且对教师信息进行管理,例如教师信息录入、课时数录入、输出教师列表等。
package system;
import java.util.ArrayList;
import java.util.Scanner;
import com.sun.xml.internal.ws.encoding.soap.SOAP12Constants;
public class TeaAdmin {
public static ArrayList<Teacher>teachers = new ArrayList<>();
public static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
Teacher();
}
public static void Teacher() {
boolean x=true;
while(x) {
System.out.println("《教师信息管理:0.退出教师系统\t1.录入教师信息\t2.录入教师课时数\t3.打印教师信息》");
System.out.println("请选择功能:(0~3)");
int num=sc.nextInt();
switch(num) {
case 0:
System.out.println("欢迎下次使用!");
x=false;
break;
case 1:
addTeacher(teachers);
break;
case 2:
addClass(teachers);
break;
case 3:
printTeacher();
break;
default:
System.out.println("输入有误,请输入(0~3):");
break;
}
}
}
public static void addTeacher(ArrayList<Teacher>teachers) {
int i=1;
System.out.println("请输入教师人数:");
int np=sc.nextInt();
System.out.println("输入"+np+"个教师的身份证号、姓名、教师号:");
while(i<=np)
{
String iD=sc.next();
String name=sc.next();
String TeaNo=sc.next();
Teacher tea = new Teacher(iD, name, TeaNo);
teachers.add(tea);
i++;
}
System.out.println("教师主要信息录入完成");
}
public static void addClass(ArrayList<Teacher>teachers) {
if(teachers!=null&&!teachers.isEmpty()) {
for(int i=0;i<teachers.size();i++) {
Teacher tea = teachers.get(i);
System.out.println(tea.getName()+"的课时数:");
int num = sc.nextInt();
while(true) {
if(num>=0&&num<=20) {
tea.setClassNum(num);
break;
}else {
System.out.println("请重新输入:");
num = sc.nextInt();
}
}
}
}else {
System.out.println("没有该教师!");
}
System.out.println("教师课时数录入成功!");
}
public static void printTeacher() {
System.out.println("教师号\t姓名\t课时数");
for(int i=0;i<teachers.size();i++) {
Teacher tea = teachers.get(i);
System.out.println(tea.getTeaNo()+"\t"+tea.getName()+"\t"+tea.getClassNum());
}
}
}
学生信息管理类。该类中要有学生人数域、学生列表域(学生类对象数组),并且对学生信息进行管理,例如学生信息录入、成绩录入、输出学生列表、输出成绩表等。
package system;
import java.util.ArrayList;
import java.util.Scanner;
import com.sun.org.apache.xpath.internal.operations.Equals;
import jdk.nashorn.internal.runtime.FindProperty;
public class StuAdmin{
public static ArrayList<Student> students = new ArrayList();
public static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
Student();
}
public static void Student() {
boolean x=true;
while(x) {
System.out.println("《学生信息管理:0.退出学生系统\t1.录入学生信息\t2.打印学生信息》");
System.out.println("《3.录入数学成绩\t4.录入英语成绩\t5.录入JAVA成绩\t6.打印成绩表");
System.out.println("《7.各科平均分\t8.查找学生成绩》");
System.out.println("请输入功能(0~7)");
int num=sc.nextInt();
switch (num) {
case 0:
System.out.println("欢迎下次使用");
x=false;
break;
case 1:
addStudent(students);//录入学生信息
break;
case 2:
printStudent(students);//打印学生信息
break;
case 3:
mathStudent();//输入学生数学成绩
break;
case 4:
englishStudent();//输入学生英语成绩
break;
case 5:
javaStudent();//输入学生Java成绩
break;
case 6:
printSum();//打印学生全部成绩
break;
case 7:
Ave();//统计各科平均分
break;
case 8:
Find(students);//根据学号查找学生成绩
break;
default:
System.out.println("输入有误,请重新输入!");
break;
}
}
}
public static void addStudent(ArrayList<Student> students){
int i=1;
System.out.println("请输入学生人数:");
int np=sc.nextInt();
System.out.println("输入"+np+"个学生的身份证号、姓名、学号:");
while(i<=np)
{
String iD=sc.next();
String name=sc.next();
int StuNo=sc.nextInt();
Student stu = new Student( iD,name,StuNo);
students.add(stu);
i++;
}
System.out.println("学生主要信息录入完成");
}
public static void printStudent(ArrayList<Student>students){
if(students!=null&&!students.isEmpty()) {
System.out.println("学号\t姓名");
for(int i=0;i<students.size();i++){
Student stu=students.get(i);
System.out.println(stu.getStuNo()+"\t"+stu.getName());
}
}else {
System.out.println("没有该学生!");
}
System.out.println("查询结束");
}
public static void mathStudent() {
if(students!=null&&!students.isEmpty()) {
for(int i=0;i<students.size();i++) {
Student stu = students.get(i);
System.out.println(stu.getName()+"的数学成绩:");
int mathgrades = sc.nextInt();
while(true) {
if(mathgrades>=0&&mathgrades<=100) {
stu.setMath(mathgrades);
break;
}else {
System.out.println("请重新输入:");
mathgrades = sc.nextInt();
}
}
}
}else {
System.out.println("没有该学生!");
}
System.out.println("学生成绩录入成功!");
}
public static void englishStudent() {
if(students!=null&&!students.isEmpty()) {
for(int i=0;i<students.size();i++) {
Student stu = students.get(i);
System.out.println(stu.getName()+"的英语成绩:");
int englishgrades = sc.nextInt();
while(true) {
if(englishgrades>=0&&englishgrades<=100) {
stu.setEnglish(englishgrades);
break;
}else {
System.out.println("请重新输入:");
englishgrades = sc.nextInt();
}
}
}
}else {
System.out.println("没有该学生!");
}
System.out.println("学生成绩录入成功!");
}
public static void javaStudent() {
if(students!=null&&!students.isEmpty()) {
for(int i=0;i<students.size();i++) {
Student stu = students.get(i);
System.out.println(stu.getName()+"的java成绩:");
int javagrades = sc.nextInt();
while(true) {
if(javagrades>=0&&javagrades<=100) {
stu.setJava(javagrades);
break;
}else {
System.out.println("请重新输入:");
javagrades = sc.nextInt();
}
}
}
}else {
System.out.println("没有该学生!");
}
System.out.println("学生成绩录入成功!");
}
public static void printSum() {
System.out.println("学号\t姓名\t数学成绩\t英语成绩\tJava成绩");
for(int i=0;i<students.size();i++) {
Student stu = students.get(i);
System.out.println(stu.getStuNo()+"\t"+stu.getName()+"\t"+stu.getMath()+"\t"+
stu.getEnglish()+"\t"+stu.getJava());
}
}
public static void Ave() {
int allmath = 0;
int allenglish = 0;
int alljava = 0;
double mathAve;
double englishAve;
double javaAve;
System.out.println("数学平均分\t英语平均分\tjava平均分");
for(int i=0;i<students.size();i++) {
Student stu = students.get(i);
allmath+=stu.getMath();
allenglish+=stu.getEnglish();
alljava+=stu.getJava();
}
mathAve=allmath/students.size();
englishAve=allenglish/students.size();
javaAve=alljava/students.size();
System.out.println(mathAve+"\t\t"+englishAve+"\t\t"+javaAve);
}
public static void Find(ArrayList<Student> students) {
System.out.println("----------查找学生成绩----------");
if (students.size() == 0) {
System.out.println("当前无数据,请添加后重试");
} else {
System.out.println("请输入要查找学生的学号:");
long id = sc.nextLong();
int flag = -1;
Student student = new Student();
for (int i = 0; i < students.size(); i++) {
student = students.get(i);
if (student.getStuNo() == id) {
flag = i;
break;
}
}
if (flag == -1) {
System.out.println("未找到对应学号的学生,请确认后重新输入!");
} else {
System.out.println("对应学号的学生成绩如下:");
System.out.println("学号\t\t姓名\t\t数学\t\t英语\t\tJava");
System.out.println(student.getStuNo()+"\t\t"+student.getName()+"\t\t"+student.getMath()+"\t\t"+student.getEnglish()+"\t\t"+student.getJava());
System.out.println("查找信息成功!");
}
}
}
}
主菜单:调用学生管理类和教师管理类
package system;
import java.util.Scanner;
public class Manu {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("**********************计算机系信息系统************************");
System.out.println("****\t系统开发人: \t****");
System.out.println("****\t开发时间:****");
System.out.println("**\t版本:1.0**");
System.out.println("************************************************************");
System.out.println("");
System.out.println("==================系统功能===============");
System.out.println("===0.退出系统 1.教师信息管理 2.学生信息管理==");
System.out.println("========================================");
System.out.println("请输入功能选项:(0~2)");
int num=sc.nextInt();
switch (num) {
case 0:
System.out.println("欢迎下次使用!");
System.exit(0);
break;
case 1:
TeaAdmin.Teacher();
break;
case 2:
StuAdmin.Student();
break;
default:
System.out.println("请正确选择功能:(0~2)");
break;
}
}
}
}
运行结果: