资源描述
目录
目录 1
设计任务书 2
课程设计任务 2
程序功能实现: 3
1.程序主体 3
2.流程图: 4
3.模块说明 4
3.1、主菜单四个选项 4
3.2、教师功能菜单 5
3.3、学生功能菜单 5
3.4、查找菜单 6
4.源代码及说明 6
4.1、listStuTea 类 6
4.2、Menu 类 10
4.3、StudnTeach 类 16
4.4、Student 类 19
4.5、Teacher 类 19
4.6、Person 类 20
4.7、lkExecption类 21
4.8、MainStuTea类 23
5.操作方法和测试结果 24
5.1.1、教师信息显示 24
5.1.2、教师信息添加 24
5.1.3、教师信息删除 25
5.1.4、教师信息查找 26
5.2、学生菜单实现 28
6.设计体会 28
设计任务书
问题描述:
编写程序对大学里的人员进行管理。大学里的人员主要由学生、教师和在职进修教师(既是学生又是教师)组成,各类人员均有姓名、电话和住址等信息,学生另有所属专业信息,教师另有所在系部、授课信息及工资信息,在职进修教师具备以上各类人员的信息。
要求:
1、设计Person类,保存各类人员均有的姓名、电话和住址等信息。
2、设计Student类或接口,继承Person类,并添加所属专业班级信息。
3、设计Teacher类接口,继承Person类,并添加所在系部信息,授课信息及工资信息。
4、设计StudenTeacher类,继承Student类接口和Teache类接口。其具备以上各类人员信息。
5、把创建的所有StudenTeacher对象按照其所属系部依次组织在一个文件中方便查询、修改、删除及添加等操作。
6、对各类的对象进行信息输入操作,输入信息包括该类对象的所有信息。
7、对各类的对象进行输出操作,显示输出该类对象的所有信息
课程设计任务及设计人
设计任务:
大学人员信息管理系统
课程目的:
1、复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;
2、课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力;
3、培养学生在项目开发中团队合作精神、创新意识及能力。
课程要求:
1、对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;
2、系统设计要实用,编程简练,可用,功能全面
3、说明书、流程图要清楚
4、记录设计情况(备查,也为编写设计说明书作好准备);
5、要求采用模块化程序设计方法,及锯齿型书写格式,要求上机调试通过和按设计报告格式。
6、本设计需要实现Java的面向对象开发运用到的有Java的接口,Java的继承,Java的异常处理,Java类的封装。能够在异常输入的情况下,能正确处理。最后得到正确结果。
程序功能实现:
一、 按照课程的要求实现学生和教师的基本信息的录入。
二、 把输入的教师和学生信息显示出来。
三、 有姓名和专业两种查找方式去分别把老师和学生的信息查找并且显示出来。
四、 删除选项可以删除相应学生和老师信息。
五、 用switch语句实现菜单功能,字符界面做到简洁清晰
六、 异常处理处理错误的输入并且返回错误的提示,更正后填入正确数据。
1.程序主体
1、 设计分析:
1.1、 实体是实现程序思想的主要方式,首先应该分为学生和老师2个入口,分别做查询和信息添加、显示、删除和查找的功能。
1.2、 学生和老师的信息输入考虑要求多名信息考虑用对象数组去实现。但是对象数组的删除不是本学期的内容。且排序麻烦。考虑用其他方式实现信息录入,查阅相关信息发现可以使用list对象实现信息录入和删除。
1.3、 菜单使用switch语句实现菜单功能,菜单的相互调用实现功能的循环。
2.流程图:
3.模块说明
3.1、主菜单四个选项
学生入口:
这个模块与学生功能模块相连。
教师入口:
这个模块与教师功能模块相连
显示全部信息:
这个模块显示所有的老师和学生信息
3.2、教师功能菜单
显示教师信息:
这个模块显示输入的教师信息,如果不存在提示输入信息
添加教师信息:
这个模块添加教师基本信息
删除教师信息:
这个模块按照序号删除教师信息,如果不存在提示信息输入
查找教师信息:
按照姓名和专业查找教师信息
返回上一级菜单:
返回主菜单
3.3、学生功能菜单
显示学生信息:
这个模块显示输入的教师信息,如果不存在提示输入信息
添加学生信息:
这个模块添加教师基本信息
删除学生信息:
这个模块按照序号删除教师信息,如果不存在提示信息输入
查找学生信息:
按照姓名和专业查找学生信息
返回上一级菜单:
返回主菜单
3.4、查找菜单
按照姓名查找:
查找模块,按照姓名查找,如果不存在则提示输入信息。
按照专业查找:
查找模块,按照专业查找,如果不存在则提示输入信息。
返回上一级菜单:
返回主菜单
4.源代码及说明
4.1、listStuTea 类
用来实现学生和教师数据添加、删除、查找的方法
import java.util.*;
import lkExecption.LKExecption;
public class listStuTea extends StudnTeach{
final int SIZE = 50;//最大学生和教师人数
listStuTea[] st = new listStuTea[SIZE];//学生和老师对象数组
Scanner into = new Scanner(System.in);
List<listStuTea> list1=new ArrayList<listStuTea>();
List<listStuTea> list2=new ArrayList<listStuTea>();
public int getTeaNumber() //返回教师链表长度
{
return list1.size();
}
public int getStuNumber() //返回学生链表长度
{
return list2.size();
}
public int getNumber() {
// TODO Auto-generated method stub
return list2.size()+list1.size();
}
public void FindStuName()
{
String tpname;
boolean zy = true;
StudnTeach point;
System.out.println("请输入学生姓名:");
tpname = into.nextLine();
for(int i = 0;i<getStuNumber();i++)
{
point =list2.get(i);
if(tpname.equals(point.name))
{
System.out.println("要查找的姓名存在");
showStu(i,point);
zy = false;
}
}
if(zy)
System.out.println("没有该学生");
if(getStuNumber()==0)
System.out.println("警告!!!学生数据为空请添加数据");
}
public void FindTeaName()
{
String tpname;
boolean zy = true;
StudnTeach point;
System.out.println("请输入教师姓名:");
tpname = into.nextLine();
for(int i = 0;i<getTeaNumber();i++)
{
point =list1.get(i);
if(tpname.equals(point.name))
{
System.out.println("要查找的姓名存在");
{
showTea(i,point);
zy = false; //标志位
}
}
//break;
}
if(zy)
System.out.println("没有该老师");
if(getTeaNumber()==0)
System.out.println("警告!!!老师数据为空请添加数据");
}
public void FindteaSpec()
{
String tpSpec;
boolean zy = true;
StudnTeach point;
System.out.println("请输入教师专业:");
tpSpec = into.nextLine();
for(int i = 0;i<getTeaNumber();i++)
{
point =list1.get(i);
if(tpSpec.equals(point.getteaSpeciality()))
{
showTea(i,point);
zy = false;//标志位
}
}
if(zy)
System.out.println("没有该专业的老师");
if(getTeaNumber()==0)
System.out.println("警告!!!老师数据为空请添加数据");
}
public void FindstuSpec()
{
String tpStu;
boolean zy = true;
StudnTeach point;
System.out.println("请输入学生专业:");
tpStu = into.nextLine();
for(int i = 0;i<getStuNumber();i++)
{
point =list2.get(i);
if(tpStu.equals(point.getstuSpeciality()))
{
showStu(i,point);
zy = false;//标志位
}
}
if(zy)
System.out.println("没有选修该专业的学生");
if(getStuNumber()==0)
System.out.println("警告!!!学生数据为空请添加数据");
}
public void showStu(int n,StudnTeach point)
{
point=list2.get(n);
System.out.println("学生编号:"+n);
System.out.println("姓名:"+point.name+" 性别:"+point.sex+" 年龄:"+point.age);
System.out.println("电话:"+point.phone);
System.out.println("地址:"+point.address);
System.out.println("专业:"+point.getstuSpeciality());
System.out.println("班级:"+point.getClassname());
}
public void showTea(int n,StudnTeach point)
{
point=list1.get(n);
System.out.println("教师编号:"+n);
System.out.println("姓名:"+point.name+" 性别:"+point.sex+" 年龄:"+point.age);
System.out.println("电话:"+point.phone);
System.out.println("地址:"+point.address);
System.out.println("专业:"+point.getteaSpeciality());
System.out.println("工资:"+point.getPay());
}
public void addstu(int n) throws LKExecption
{
st[n] = new listStuTea();
st[n].add();
st[n].setClassname();
st[n].setstuSpeciality();
list2.add(st[n]);
if(list2.size()!=0)
System.out.println("添加学生成功");
}
public void addtea(int n) throws LKExecption
{
st[n] = new listStuTea();
st[n].add();
st[n].setteaSpeciality();
st[n].setPay();
list1.add(st[n]);
if(list1.size()!=0)
System.out.println("添加教师成功");
}
public void delTea()
{
System.out.println("请输入被删的教师编号");
int k =into.nextInt();
if(list1.size()<=k||k<0)
System.out.println("删除失败!编号不存在请重新输入!");
else
{
list1.remove(k);
System.out.println("删除成功");
}
}
public void delStu()
{
System.out.println("请输入被删的学生编号");
int k =into.nextInt();
if(list2.size()<=k||k<0)
System.out.println("删除失败!编号不存在请重新输入!");
else
{
list2.remove(k);
System.out.println("删除成功");
}
}
}
4.2、Menu 类
字符菜单的实现
import java.util.*;
import lkExecption.LKExecption;
public class Menu {
Scanner into = new Scanner(System.in);
int num = 0;
List list=new ArrayList<StudnTeach>();
StudnTeach point = new listStuTea();//遍历指针
public Menu() throws LKExecption{
MainMenu();
}
public int setIn()
{
int t;
String tpNum = null;
try{
System.out.println("请输入选项");
tpNum = into.nextLine();
t = Integer.parseInt(tpNum);
}
catch(NumberFormatException e)
{
t = new LKExecption().Num1Execption(tpNum);
}
return t;
}
void MainMenu() throws LKExecption//主菜单
{
System.out.println("================");
System.out.println("1.教师入口");
System.out.println("2.学生入口");
System.out.println("3.显示全部信息");
System.out.println("4.退出管理");
switchMainMenu();
}
void FindMenu()//查找菜单
{
System.out.println("----------------");
System.out.println("1.按照姓名查找");
System.out.println("2.按照专业查找");
System.out.println("3.返回上一级菜单");
//switchMainMenu();
}
void MenuTea1_1() throws LKExecption//老师菜单
{
System.out.println("----------------");
System.out.println("1.显示教师信息");
System.out.println("2.添加教师信息");
System.out.println("3.删除教师信息");
System.out.println("4.查找教师信息");
System.out.println("5.返回上一级菜单");
switchMenuTea1_1();
}
void MenuStu1_1() throws LKExecption//学生菜单
{
System.out.println("----------------");
System.out.println("1.显示学生信息");
System.out.println("2.添加学生信息");
System.out.println("3.删除学生信息");
System.out.println("4.查找学生信息");
System.out.println("5.返回上一级菜单");
switchMenuStu1_1();
}
void switchFindStuMenu() throws LKExecption//查找学生菜单
{
int t;
t = setIn();
switch(t)
{
case 1:
point.FindStuName();
FindMenu();
switchFindStuMenu();
break;
case 2:
point.FindstuSpec();
FindMenu();
switchFindStuMenu();
break;
case 3:
MenuStu1_1();
switchMenuStu1_1();
break;
default:
System.out.println("输入错误请重新输入");
switchFindStuMenu();
}
}
void switchFindTeaMenu() throws LKExecption//查找教师菜单
{
int t;
t = setIn();
switch(t)
{
case 1:
point.FindTeaName();
FindMenu();
switchFindTeaMenu();
break;
case 2:
point.FindteaSpec();
FindMenu();
switchFindTeaMenu();
break;
case 3:
MenuTea1_1();
switchMenuTea1_1();
break;
default:
System.out.println("输入错误请重新输入");
switchFindTeaMenu();
}
}
void switchMainMenu() throws LKExecption//主菜单
{
int t;
t = setIn();
switch(t)
{
case 1:
MenuTea1_1();//老师显示菜单
break;
case 2:
MenuStu1_1();//学生显示菜单
break;
case 3:
if(point.getNumber()==0)
System.out.println("警告!!!数据为空请添加数据");
else{
for(int i = 0;i<point.getTeaNumber();i++)
point.showTea(i,point);
for(int i = 0;i<point.getStuNumber();i++)
point.showStu(i,point);
}
MainMenu();
break;
case 4:
System.out.println("欢迎再次光临!大学人员信息管理系统!!");
break;
default:
System.out.println("输入错误请重新输入");
switchMainMenu();
}
}
void switchMenuTea1_1() throws LKExecption
{
System.out.println("----------------");
int t;
t = setIn();
switch(t)
{
case 1:
if(point.getTeaNumber()==0)
System.out.println("警告!!!教师数据为空请添加数据");
for(int i = 0;i<point.getTeaNumber();i++)
point.showTea(i,point);
MenuTea1_1();
break;
case 2:
point.addtea(num);
num++;
MenuTea1_1();
break;
case 3:
point.delTea();
num--;
MenuTea1_1();
break;
case 4:
FindMenu();
switchFindTeaMenu();
break;
case 5:
MainMenu();
break;
default:
System.out.println("输入错误请重新输入");
switchMenuTea1_1();
}
}
void switchMenuStu1_1() throws LKExecption
{
System.out.println("----------------");
int t;
t = setIn();
switch(t)
{
case 1:
if(point.getStuNumber()==0)
System.out.println("警告!!!学生数据为空请添加数据");
for(int i = 0;i<point.getStuNumber();i++)
point.showStu(i,point);
MenuStu1_1();
case 2:
point.addstu(num);
num++;
MenuStu1_1();
break;
case 3:
point.delStu();
num--;
MenuStu1_1();
break;
case 4:
FindMenu();
switchFindStuMenu();
break;
case 5:
MainMenu();
break;
default:
System.out.println("输入错误请重新输入");
MenuStu1_1();
}
}
}
4.3、StudnTeach 类
继承于教师和学生接口实现它们抽象方法,且继承人类属性。
import java.util.*;
import lkExecption.LKExecption;
class StudnTeach extends Person implements Student,Teacher{
Scanner into = new Scanner(System.in);
float pay = 0;//工资
String classname = null;//班级
String stuSpec = null;//老师专业
String teaSpec = null;//学生专业
void add() throws LKExecption
{
setName();
setSex();
setAge();
setPhone ();
System.out.println("请输入地址");
address = into.nextLine();
}
public void addstu(int n) throws LKExecption{
//add();
//setClassname();
//setstuSpeciality();
}
public void addtea(int n) throws LKExecption{
//add();
//setteaSpeciality();
//setPay() ;
}
public void setPay() {
String tpNum = null;
try{
System.out.println("请输入工资:");
tpNum = into.nextLine();
pay = Integer.parseInt(tpNum);
}
catch(NumberFormatException e)
{
pay = new LKExecption().Num1Execption(tpNum);
}
}
public float getPay() {
return pay;
}
public void setClassname() {
System.out.println("请输入班级:");
classname = into.nextLine();
}
public String getClassname() {
return classname;
}
public void setstuSpeciality() {
System.out.println("请输入专业:");
stuSpec = into.nextLine();
}
public String getstuSpeciality() {
return stuSpec;
}
public void setteaSpeciality() {
System.out.println("请输入专业:");
teaSpec = into.nextLine();
}
public String getteaSpeciality() {
return teaSpec;
}
public void show(boolean b, int num, StudnTeach point) {
}
public void showStu(int num, StudnTeach point) {
}
public void showTea(int num, StudnTeach point) {
}
public int getStuNumber() {
return 0;
}
public int getTeaNumber() {
return 0;
}
public int getNumber() {
return 0;
}
public void delStu() {
}
public void delTea() {
}
public void FindStuName() {
}
public void FindstuSpec() {
}
public void FindTeaName() {
}
public void FindteaSpec() {
}
}
4.4、Student 类
接口、学生的抽象方法
public interface Student {
abstract void setstuSpeciality();
abstract String getstuSpeciality();
abstract void setClassname();
abstract String getClassname();
}
4.5、Teacher 类
接口、教师的抽象方法
public interface Teacher {
abstract void setteaSpeciality();
abstract String getteaSpeciality();
abstract void setPay();
abstract float getPay();
}
4.6、Person 类
定义人类的基本属性
import java.util.*;
import lkExecption.LKExecption;
public class Person
{
Scanner into = new Scanner(System.in);
String name;
int phone;
String address;
String sex;
int age;
public void setName()
{
System.out.println("请输入姓名:");
name = into.nextLine();
}
public void setSex() throws LKExecption
{
try{
System.out.println("请输入性别:");
sex = into.nextLine();
if(sex.equals("man")||sex.equals("woman"))
{}
else
throw new LKExecption();
}
catch(LKExecption lk)
{
sex = new LKExecption().sexExecption(sex);
}
}
public void setAge()
{
String tpAge = null;
try{
System.out.println("请输入年龄:");
tpAge = into.nextLine();
age = Integer.parseInt(tpAge);
}
catch(NumberFormatException e)
{
age = new LKExecption().NumExecption(tpAge);
}
}
public void setPhone ()
{
String tpNum = null;
try{
System.out.println("请输入电话号码:");
tpNum = into.nextLine();
phone = Integer.parseInt(tpNum);
}
catch(NumberFormatException e)
{
phone = new LKExecption().Num1Execption(tpNum);
}
}
}
4.7、lkExecption类
自定义异常类
package lkExecption;
import java.util.Scanner;
public class LKExecption extends Exception
{
Scanner into = new Scanner(System.in);
public String sexExecption(String mg)
{
String str;
boolean pd = true;
do{
System.out.println(mg+" 不是正确的性别,正确的性别为 man 或者 woman");
str = into.next();
展开阅读全文