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());
}
}
}
Java——简单实现学生管理系统的更多相关文章
- 第83节:Java中的学生管理系统分页功能
第83节:Java中的学生管理系统分页功能 分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页.这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其 ...
- 第82节:Java中的学生管理系统
第82节:Java中的学生管理系统 学生管理系统的删除功能 删除,点击超链接,点击弹出对话框式是否进行删除,如果确定,就删除,超链接执行的是js方法,在js里访问,跳转servlet,,servlet ...
- Java实现功能简单的学生管理系统(附带源代码)
这几天Java学了点新的知识,打算要用这些知识做一个比较简单的管理系统,实战一下子,代码中的功能简洁,可能不多,但是作为一个练手来了解一个项目是怎么样一点一点思考的还是不错的 一.代码中要实现的功能 ...
- java课程设计 学生管理系统
学生成绩管理系统 可实现功能 学生管理系统 查询学生信息:姓名.学号.性别.出生年月日.(学号自动生成且唯一) 查询学生成绩:每个人都有数学.Java与体育与选修课 查询学生课程 进行公选课选课 教师 ...
- java版本的学生管理系统
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Frame; import java.awt.event.Ac ...
- php实现简单的学生管理系统
php实现学生管理系统 一.效果 二.代码框架 functions文件夹里面是封装的mysqli的数据库操作函数和一个跳转的函数 student文件夹里面就是学生管理系统的主界面 applicatio ...
- Java基础进阶:学生管理系统数组方式分包源码实现,教师管理系统集合和数组两种方式源码实现,图书馆管理系统源码实现,现附重难点,代码实现源码,课堂笔记,课后扩展及答案
1.案例驱动模式 1.1案例驱动模式概述 (理解) 通过我们已掌握的知识点,先实现一个案例,然后找出这个案例中,存在的一些问题,在通过新知识点解决问题 1.2案例驱动模式的好处 (理解) 解决重复代码 ...
- java基础: ArrayList集合应用, ArrayList增删改查详解,综合java基础实现学生管理系统,
1.ArrayList 集合和数组的区别 : 共同点:都是存储数据的容器 不同点:数组的容量是固定的,集合的容量是可变的 1.1 -ArrayList的构造方法和添加方法 public ArrayLi ...
- Java学习笔记-学生管理系统
Java学习笔记 一个Student类 public class Student { private String sid; private String name; private String a ...
随机推荐
- 在CentOS上使用Docker镜像安装Jenkins
1.必须先在CentOS上安装Docker,使用以下命名先在Docker Hub上搜索Jenkins镜像 docker search jenkins 2.下载Jenkins镜像,命令如下:(我下载的是 ...
- SVN提示is already locked 解决办法
当svn提示is already locked ,反复clean up也无用, 可以在cmd下进入到目标文件夹的目录 执行svn cleanup 等待执行成功,就可以update了
- Unknown command 'run' - try 'help'
/******************************************************************************* * Unknown command ' ...
- 投稿SCI杂志 | 如何撰写cover letter | 如何绘制illustrated abstract
现在大部分学术期刊杂志都要求提供这两样东西. 一个是面向editor的文章和研究的高度总结:一个是面向读者的高度总结,一图胜千言. 如何制作动画摘要呢? 收集素材,大部分内容在PPT里就能完成. 如何 ...
- 【python基础学习】基础重点难点知识汇总
python中decorator装饰器 语法示例: @decorator 什么是装饰器: 问题: 定义一个函数后 在运行时动态增加功能 又不想改动函数本身的代码 示例: # 希望对下列函数调用增加lo ...
- Oracle JDBC prefetch: how to avoid running out of RAM
Using Oracle java JDBC (ojdbc6 11.2.0.4), loading a query with many rows takes forever (high latency ...
- scrapy爬虫案例:问政平台
问政平台 http://wz.sun0769.com/index.php/question/questionType?type=4 爬取投诉帖子的编号.帖子的url.帖子的标题,和帖子里的内容. it ...
- RedHat 7关闭防火墙方法
1.在之前的版本中关闭防火墙等服务的命令是 service iptables stop /etc/init.d/iptables stop 2.RHEL7开始,使用systemctl工具来管理服务程序 ...
- python 根据生日计算年龄 sqlalchemy根据身份证号计算生日 性别
import datetime '): birth_d = datetime.datetime.strptime(birth_s, "%Y%m%d") today_d = date ...
- 封装redis操作 php版本
<?php namespace App\Service; use App\Service\BaseService; use Illuminate\Support\Facades\Redis; / ...