Java——简单实现学生管理系统
import java.io.*;
import java.util.arraylist;
import java.util.scanner;
class myobjectoutputstream extends objectoutputstream{
public myobjectoutputstream() throws ioexception{
super();
}
public myobjectoutputstream(outputstream out) throws ioexception {
super(out);
}
public void writestreamheader() throws ioexception {
return;
} //以上为解决对象流输入输出读写文件时的一些问题,重写库里的方法。
}
class student implements serializable { //序列化这个类,只有成员变量无方法,作为结构体使用。
long studentid = 1803050200; //学号,姓名,性别,年龄,备注。
string studentname = "noname";
string sexual = "unknow";
int age = 18;
string ps = "unknow";
}
public class demosystem {
public static void main (string args []) {
boolean end = true;
string c ;
c = "请选择系统功能项:"+"\n"+"\t"+"a.从文件中读入学生的基本信息"+"\n"+"\t"+"b.添加新学生的基本信息"+"\n"+"\t"+"c.学生基本信息显示"+"\n"+"\t"+"d.学生信息保存至文件"+"\n"+"\t"+"e.学生基本信息删除"+"\n"+"\t"+"f.学生基本信息的修改"+"\n"+"\t"+"g.学生基本信息查询"+"\n"+"\t"+"\t"+"1.按学号查询"+"\n"+"\t"+"\t"+"2.按姓名查询"+"\n"+"\t"+"h.退出系统"+"\n"; //方便打印管理系统界面。
student stu[] = new student[10]; //实例化“结构体”数组。
arraylist<student> al = new arraylist<student>(); //泛型数组,方便保存。单纯的对象流输入输出,并不方便。
for(int i = 0;i<10;i++) { //初始化
stu[i] = new student();
}
scanner sc = new scanner(system.in); //用户输入
file f = new file("d:\\javawork","stu1.txt"); //文件创建
try { //因为文件读写可能出现异常,所以把语句放入try语句块内,方便捕捉异常
while(end) { //循环开始,end为前面设的布尔值,初始值为true
system.out.println(c); //打印管理系统菜单(界面)
char d = sc.next().charat(0); //等待用户输入对应的菜单项字母
switch(d) { //匹配相应的用户输入的菜单字母,以执行其功能
case 'a': //从文件读取学生信息
fileinputstream filein = new fileinputstream(f); //初始化对象流。
objectinputstream objectin = new objectinputstream(filein);
try { //用try捕捉异常,可能出现找不到文件的现象
arraylist<student> al1 = (arraylist<student>)objectin.readobject(); //用对象流读取,并打印学生信息
for(int i = 0;i<10;i++) {
stu[i] = al1.get(i);
system.out.println("name:"+stu[i].studentname+" sexual:"+stu[i].sexual+" age:"+stu[i].age+" id:"+stu[i].studentid+" ps:"+stu[i].ps);
}
}
catch(classnotfoundexception e) {
system.out.println(e);
}
objectin.close(); //关闭对象流
filein.close();
break;
case 'b': //添加新学生功能
int q = 0;
int flag = 0;
boolean end0 = true;
string name = "noname";
while(end0&&flag<10) { //运用flag,以防数组已满,不能添加
if(stu[flag].studentname.compareto(name)==0) {
q=flag;
end0 = false;
}
flag++;
}
for(;q<10;q++) {
if(stu[q].studentname.compareto(name)==0) {
system.out.println("请输入新学生姓名:");
stu[q].studentname = sc.next();
system.out.println("请输入新学生学号:");
stu[q].studentid = sc.nextlong();
system.out.println("请输入新学生年龄:");
stu[q].age = sc.nextint();
system.out.println("请输入新学生性别:");
stu[q].sexual = sc.next();
system.out.println("请输入对新学生的备注:"+"\n");
stu[q].ps = sc.next();
system.out.println("添加新学生信息完毕!"+"\n");
}
system.out.println("是否继续?yes/no");
string anwser = sc.next();
if(anwser.compareto("yes")==0) {
q=q;
}
if(anwser.compareto("no")==0) {
q = 10;
}
}
break;
case 'c': //显示基本学生信息
string s;
for(int i = 0;i<10;i++) {
s= "姓名:"+stu[i].studentname+" 性别:"+stu[i].sexual+" 年龄:"+stu[i].age+" 学号:"+stu[i].studentid+" 备注:"+stu[i].ps;
system.out.println(s);
}
break;
case 'd': //保存学生信息
fileoutputstream fileout = new fileoutputstream(f);
objectoutputstream objectout = new objectoutputstream(fileout);
if(f.length()<1) {
for(int i=0;i<10;i++) {
al.add(stu[i]);
}
objectout.writeobject(al);
objectout.flush();
}
else {
myobjectoutputstream mos = new myobjectoutputstream(fileout);
for(int i=0;i<10;i++) {
al.add(stu[i]);
}
mos.writeobject(al);
mos.flush();
}
objectout.close();
fileout.close();
break;
case 'e': //删除学生信息
boolean start1= true;
while(start1) {
system.out.println("请输入你想操作的学号:");
long si = sc.nextlong();
for(int i = 0;i<10;i++) {
if(stu[i].studentid==si) {
string str1 = "姓名:"+stu[i].studentname+" 性别:"+stu[i].sexual+" 年龄:"+stu[i].age+" 学号:"+stu[i].studentid+" 备注:"+stu[i].ps;
system.out.println(str1);
system.out.println("\t"+"1.姓名"+"\n"+"2.性别"+"\n"+"3.年龄"+"\n"+"4.学号"+"\n"+"5.备注"+"\n");
system.out.println("请输入您要操作的序号:");
int l = sc.nextint();
switch(l) {
case 1:
stu[i].studentname = "noname";
break;
case 2:
stu[i].sexual="unknow";
break;
case 3:
stu[i].age=18;
break;
case 4:
stu[i].studentid = 1803050200;
break;
case 5:
stu[i].ps="unknow";
break;
default :
system.out.println("输入序号错误!");
}
}
}
system.out.println("是否继续删除学生信息?yes/no");
string me1 = sc.next();
if(me1.compareto("yes")==0) {
start1 = true;
}
if(me1.compareto("no")==0) {
start1 = false;
}
}
break;
case 'f': //更改学生信息
boolean end2 = true;
system.out.println("请输入你想操作的学号:");
long si1 = sc.nextlong();
for(int i = 0;i<10;i++) {
if(stu[i].studentid==si1) {
string str2 = "姓名:"+stu[i].studentname+" 性别:"+stu[i].sexual+" 年龄:"+stu[i].age+" 学号:"+stu[i].studentid+" 备注:"+stu[i].ps;
system.out.println(str2);
system.out.println("\t"+"1.姓名"+"\n"+"2.性别"+"\n"+"3.年龄"+"\n"+"4.学号"+"\n"+"5.备注"+"\n");
system.out.println("请输入您要操作的序号:");
int l1 = sc.nextint();
while(end2) {
switch(l1) {
case 1:
system.out.println("请输入你更改后的姓名:");
stu[i].studentname = sc.next();
break;
case 2:
system.out.println("请输入你更改后的性别:");
stu[i].sexual = sc.next();
break;
case 3:
system.out.println("请输入你更改后的年龄:");
stu[i].age = sc.nextint();
break;
case 4:
system.out.println("请输入你更改后的学号:");
stu[i].studentid = sc.nextlong();
break;
case 5:
system.out.println("请输入你更改后的备注::");
stu[i].ps = sc.next();
break;
default :
system.out.println("输入序号错误!");
}
system.out.println("是否继续修改?yes/no");
string an1=sc.next();
if(an1.compareto("yes")==0) {
end2 = true;
}
if(an1.compareto("no")==0) {
end2 = false;
}
}
}
}
break;
case 'g': //查询某个学生信息
boolean end4 = true;
while(end4) {
system.out.println("(1).按学号查询"+"\n"+"(2).按姓名查询"+"\n"+"输入操作序号,继续"+"\n");
int l3 = sc.nextint();
if(l3==1) {
system.out.println("请输入查询学号:");
long stid2=sc.nextlong();
for(int i = 0;i<10;i++) {
if(stu[i].studentid==stid2) {
string str3 = "姓名:"+stu[i].studentname+" 性别:"+stu[i].sexual+" 年龄:"+stu[i].age+" 学号:"+stu[i].studentid+" 备注:"+stu[i].ps;
system.out.println(str3);
}
}
}
if(l3==2) {
system.out.println("请输入查询姓名:");
string stna2 = sc.next();
for(int i = 0;i<10;i++) {
if(stna2.compareto(stu[i].studentname)==0) {
string str4 = "姓名:"+stu[i].studentname+" 性别:"+stu[i].sexual+" 年龄:"+stu[i].age+" 学号:"+stu[i].studentid+" 备注:"+stu[i].ps;
system.out.println(str4);
}
}
}
system.out.println("是否继续查询?yes/no");
string an4 = sc.next();
if(an4.compareto("yes")==0) {
end4 =true;
}
if(an4.compareto("no")==0) {
end4 =false;
}
}
break;
case 'h':
system.out.println("退出系统!");
end =false;
break;
default :
system.out.println("输入的操作字母错误!");
}
}
}
catch(ioexception e) {
system.out.println(e.tostring());
}
}
}
上一篇: API设计中防重放攻击
下一篇: 烧麦热量是多少,烧麦怎么做呢