概要
1.首先设置一个登录和注册系统及注销功能,让学生登录。
2.学生信息至少包括学号,姓名,性别,计算机分数,数学分数,英语分数。 该系统能够提供下列功能:
(1)系统以菜单方式工作。
(2)学生信息录入功能。
(3)学生信息浏览功能 。
(4)学生信息查询功能,查询方式: 按学号查询
(5)成绩排序统计功能。 (6)删除功能.
(7)更改信息功能
(8)退出功能
整体架构流程
一.登录注销及注册功能:
1.测试界面
import java.util.*;
public class Main {
//设置一个静态的集合用于存储账号密码
public static List<xueshengxinxi> xueshengxinxis = new ArrayList<>();
//放一个静态的输入用来重复使用
public static Scanner scanner = new Scanner(System.in);
//定义静态数组
public static xueshengxinxi[] x = new xueshengxinxi[50];
//主程序
public static void main(String[] args) {
while (true) {
System.out.println("1.注册");
System.out.println("2.登录");
System.out.println("3.注销账号");
System.out.println("请输入你要输入的选项");
String s = scanner.next();
switch (s) {
case "1":
//注册功能
zhuce();
break;
case "2":
//登录功能
denglu();
break;
case "3":
//注销功能
zhuxiao();
break;
default:
System.out.println("无此选项,请重新输入");
}
}
}
技术细节
提示:List是集合,其父类属于collection, 而ArrayList是List的子类。该方法运用了多态。
2.注册功能
//注册账号
public static void zhuce() {
while (true) {
System.out.println("请输入账号");
String zh = scanner.next();
//验证账号是否存在
xueshengxinxi k = zhangyhu(zh);
if (k == null) {
System.out.println("请输入密码");
String mm = scanner.next();
xueshengxinxi xue = new xueshengxinxi(zh, mm);
xueshengxinxis.add(xue);//采用集合的添加功能
return;
} else {
System.out.println("此账号已存在,请重新输入");
while (true) {
System.out.println("1.退出2.继续");
String kj = scanner.next();
switch (kj) {
case "1":
return;
case "2":
break;
default:
System.out.println("无此选项,请重新输入");
}
if (kj.equals("2")) {
break;
}
}
}
}
}
//查询账号
public static xueshengxinxi zhangyhu(String zh) {
for (xueshengxinxi xu : xueshengxinxis) {
if (xu.getZhanghao().equals(zh)) {
return xu;
}
}
return null;
}
3.登录功能
//登录
public static void denglu() {
while (true) {
System.out.println("请输入账号");
String zh = scanner.next();
//判断账户是否存在
xueshengxinxi t = zhangyhu(zh);
if (t != null) {
while (true) {
System.out.println("请输入密码");
String mm = scanner.next();
if (t.getMima().equals(mm)) {
System.out.println("登录成功");
//登录到学生页面
caozuo();
return;
} else {
System.out.println("密码错误,请重新输入");
while (true) {
System.out.println("1.退出2.继续");
String k = scanner.next();
switch (k) {
case "1":
return;
case "2":
break;
default:
System.out.println("无此选项,请重新输入");
}
if (k.equals("2")) {
break;
}
}
}
}
} else {
System.out.println("账户不存在,请重新输入");
while (true) {
System.out.println("1.退出2.继续");
String k = scanner.next();
switch (k) {
case "1":
return;
case "2":
break;
default:
System.out.println("无此选项,请重新输入");
}
if (k.equals("2")) {
break;
}
}
}
}
}
//查询账号
public static xueshengxinxi zhangyhu(String zh) {
for (xueshengxinxi xu : xueshengxinxis) {
if (xu.getZhanghao().equals(zh)) {
return xu;
}
}
return null;
}
注意:注册功能和查询功能共用一个查询方法
4.注销账户
//注销功能
public static void zhuxiao() {
while (true) {
System.out.println("请输入要注销的账号");
String kl=scanner.next();
xueshengxinxi ol=zhangyhu(kl);
if (ol!=null){
xueshengxinxis.remove(ol);
System.out.println("注销成功");
return;
}
else {
System.out.println("无此信息,请重新输入");
while (true) {
System.out.println("1.退出2.继续");
String k = scanner.next();
switch (k) {
case "1":
return;
case "2":
break;
default:
System.out.println("无此选项,请重新输入");
}
if (k.equals("2")) {
break;
}
}
}
}
}
//查询账号
public static xueshengxinxi zhangyhu(String zh) {
for (xueshengxinxi xu : xueshengxinxis) {
if (xu.getZhanghao().equals(zh)) {
return xu;
}
}
return null;
}
二.登录后操作界面
1.主菜单
public static void caozuo() {
while (true) {
System.out.println("1.菜单");
System.out.println("2.录入信息");
System.out.println("3.浏览功能");
System.out.println("4.查询功能");
System.out.println("5.成绩排序");
System.out.println("6.删除");
System.out.println("7.更改信息");
System.out.println("8.退出");
System.out.println("请输入要输入的序号");
String k = scanner.next();
switch (k) {
case "1":
//菜单
caidan();
return;
case "2":
//录入信息
luru();
break;
case "3":
//浏览功能
liulan();
break;
case "4":
//查询功能
chaxu();
break;
case "5":
//成绩排序
paixu();
break;
case "6":
//删除元素
dele();
break;
case "7":
//更改信息
update();
break;
case "8":
//退出
return;
default:
System.out.println("无次序号,请重新输入");
}
}
}
2.录入信息
//录入程序
public static void luru() {
while (true) {
System.out.println("请输入学号:");
String n = scanner.next();
System.out.println("请输入姓名:");
String k = scanner.next();
System.out.println("请输入性别");
String t = scanner.next();
System.out.println("请输入计算机分数");
double d = scanner.nextDouble();
System.out.println("请输入数学分数");
double s = scanner.nextDouble();
System.out.println("请输入英语分数");
double f = scanner.nextDouble();
xueshengxinxi kl = new xueshengxinxi(n, k, t, d, s, f);
chaxun(kl);
return;
}
}
//录入副程序
public static void chaxun(xueshengxinxi kl) {
for (int i = 0; i < x.length; i++) {
if (x[i] == null) {
x[i] = kl;
System.out.println("添加成功");
break;
}
}
}
3.浏览功能
//浏览所有元素
public static void liulan() {
System.out.println("\t\t\t学号\t\t\t姓名\t\t\t性别\t\t\t计算机分数\t\t\t数学分数\t\t\t英语分数");
for (int i = 0; i < x.length; i++) {
if (x[i] != null) {
System.out.println("\t\t\t" + x[i].getXuehao() + "\t\t\t" + x[i].getName() + "\t\t\t" + x[i].getSex() + "\t\t\t"
+ x[i].getJisuanjiscore() + "\t\t\t" + x[i].getMathscore() + "\t\t\t" + x[i].getElishscore());
}
}
}
4.查询功能
//按学号查询
public static void chaxu() {
while (true) {
System.out.println("请输入学号");
String s = scanner.next();
for (int i = 0; i < x.length; i++) {
if (x[i] != null) {
if (x[i].getXuehao().equals(s)) {
System.out.println("\t\t\t学号\t\t\t姓名\t\t\t性别\t\t\t计算机分数\t\t\t数学分数\t\t\t英语分数");
System.out.println("\t\t\t" + x[i].getXuehao() + "\t\t\t" + x[i].getName() + "\t\t\t" + x[i].getSex() + "\t\t\t"
+ x[i].getJisuanjiscore() + "\t\t\t" + x[i].getMathscore() + "\t\t\t" + x[i].getElishscore());
return;
} else {
System.out.println("无此学号,请重新输入");
while (true) {
System.out.println("1.退出2.继续");
String kj = scanner.next();
switch (kj) {
case "1":
return;
case "2":
break;
default:
System.out.println("无此选项,请重新输入");
}
if (kj.equals("2")) {
break;
}
}
break;
}
} else {
System.out.println("无信息,请重新输入");
break;
}
}
}
}
5.按成绩排序
//按成绩排序
public static void paixu() {
xueshengxinxi k;
System.out.println("\t\t\t学号\t\t\t姓名\t\t\t性别\t\t\t计算机分数\t\t\t数学分数\t\t\t英语分数");
for (int i = 0; i < x.length; i++) {
if (x[i] != null) {
for (int j = i + 1; j < x.length - i; j++) {
if (x[j]!=null){
double s = (x[i].getElishscore() + x[i].getMathscore() + x[i].getJisuanjiscore()) / 3;
double t = (x[j].getElishscore() + x[j].getMathscore() + x[j].getJisuanjiscore()) / 3;
if (s > t) {
k = x[i];
x[i] = x[j];
x[j] = k;
}
}
else {
break;
}
}
System.out.println("\t\t\t" + x[i].getXuehao() + "\t\t\t" + x[i].getName() + "\t\t\t" + x[i].getSex() + "\t\t\t"
+ x[i].getJisuanjiscore() + "\t\t\t" + x[i].getMathscore() + "\t\t\t" + x[i].getElishscore());
}
else {
break;
}
}
}
6.删除元素
//删除元素
public static void dele() {
while (true) {
System.out.println("请输入要删除的信息");
System.out.println("请输入学号");
String t = scanner.next();
//查询学号是否存在
String ty = c(t);
if (ty != null) {
for (int i = 0; i < x.length; i++) {
if (x[i] != null) {
if (x[i].getXuehao().equals(t)) {
x[i] = x[i + 1];
return;
}
} else {
System.out.println("无该学号,请重新输入");
break;
}
}
} else {
System.out.println("无信息");
while (true) {
System.out.println("1.退出2.继续");
String kj = scanner.next();
switch (kj) {
case "1":
return;
case "2":
break;
default:
System.out.println("无此选项,请重新输入");
}
if (kj.equals("2")) {
break;
}
}
}
}
}
//查询学号
public static String c(String t) {
for (int i = 0; i < x.length; i++) {
if (x[i] != null && x[i].getXuehao().equals(t)) {
return "学号已查到";
}
}
return null;
}
7.更改功能
public static void update() {
while (true) {
System.out.println("请输入要修改的数据1-7");
System.out.println("1.学号 2.姓名 3,性别 4,计算机分数 5.数学分数 6.英语分数 7.退出");
String k = scanner.next();
switch (k) {
case "1":
//修改学号
updatexuehao();
break;
case "2":
//修改姓名
updatename();
break;
case "3":
//修改性别
updatesex();
break;
case "4":
//修改计算机分数
updatejisuanji();
break;
case "5":
//修改数学分数
updatemath();
break;
case "6":
//修改英语分数
updateElish();
break;
case "7":
//退出
return;
default:
System.out.println("无次序号,请重新输入");
}
}
}//可合并一起,自行更改。
//更改英语分数
public static void updateElish() {
while (true) {
System.out.println("请输入学号");
String o=scanner.next();
for (int i = 0; i < x.length; i++) {
if (x[i] != null) {
if (x[i].getXuehao().equals(o)) {
System.out.println("请输入更改后的英语分数");
double t=scanner.nextDouble();
x[i].setElishscore(t);
liulan();
return;
}
else {
System.out.println("无该学号,请重新输入");
while (true) {
System.out.println("1.退出2.继续");
String kj = scanner.next();
switch (kj) {
case "1":
return;
case "2":
break;
default:
System.out.println("无此选项,请重新输入");
}
if (kj.equals("2")) {
break;
}
}
break;
}
}
else {
System.out.println("无信息,请继续");
break;
}
}
}
}
//更改计算机分数
public static void updatejisuanji() {
while (true) {
System.out.println("请输入学号");
String o=scanner.next();
for (int i = 0; i < x.length; i++) {
if (x[i] != null) {
if (x[i].getXuehao().equals(o)) {
System.out.println("请输入更改后的计算机分数");
double t=scanner.nextDouble();
x[i].setJisuanjiscore(t);
liulan();
return;
}
else {
System.out.println("无该学号,请重新输入");
while (true) {
System.out.println("1.退出2.继续");
String kj = scanner.next();
switch (kj) {
case "1":
return;
case "2":
break;
default:
System.out.println("无此选项,请重新输入");
}
if (kj.equals("2")) {
break;
}
}
break;
}
}
else {
System.out.println("无信息,请继续");
break;
}
}
}
}
//更改数学分数
public static void updatemath() {
while (true) {
System.out.println("请输入学号");
String o=scanner.next();
for (int i = 0; i < x.length; i++) {
if (x[i] != null) {
if (x[i].getXuehao().equals(o)) {
System.out.println("请输入更改后的数学分数");
double t=scanner.nextDouble();
x[i].setMathscore(t);
liulan();
return;
}
else {
System.out.println("无该学号,请重新输入");
while (true) {
System.out.println("1.退出2.继续");
String kj = scanner.next();
switch (kj) {
case "1":
return;
case "2":
break;
default:
System.out.println("无此选项,请重新输入");
}
if (kj.equals("2")) {
break;
}
}
break;
}
}
else {
System.out.println("无信息,请继续");
break;
}
}
}
}
//更改性别
public static void updatesex() {
while (true) {
System.out.println("请输入学号");
String o=scanner.next();
for (int i = 0; i < x.length; i++) {
if (x[i] != null) {
if (x[i].getXuehao().equals(o)) {
System.out.println("请输入更改后的性别");
String t=scanner.next();
x[i].setSex(t);
liulan();
return;
}
else {
System.out.println("无该学号,请重新输入");
while (true) {
System.out.println("1.退出2.继续");
String kj = scanner.next();
switch (kj) {
case "1":
return;
case "2":
break;
default:
System.out.println("无此选项,请重新输入");
}
if (kj.equals("2")) {
break;
}
}
break;
}
}
else {
System.out.println("无信息,请继续");
break;
}
}
}
}
//更改姓名
public static void updatename() {
while (true) {
System.out.println("请输入学号");
String j=scanner.next();
for (int i = 0; i < x.length; i++) {
if (x[i] != null) {
if (x[i].getXuehao().equals(j)) {
System.out.println("请输入更改后的名字");
String t=scanner.next();
x[i].setName(t);
liulan();
return;
}
else {
System.out.println("无该学号,请重新输入");
while (true) {
System.out.println("1.退出2.继续");
String kj = scanner.next();
switch (kj) {
case "1":
return;
case "2":
break;
default:
System.out.println("无此选项,请重新输入");
}
if (kj.equals("2")) {
break;
}
}
break;
}
}
else {
System.out.println("无信息,请继续");
break;
}
}
}
}
//更改学号
public static void updatexuehao() {
while (true) {
System.out.println("请输入学号");
String k=scanner.next();
for (int i = 0; i < x.length; i++) {
if (x[i] != null) {
if (x[i].getXuehao().equals(k)) {
System.out.println("请输入更改学号");
String t=scanner.next();
x[i].setXuehao(t);
liulan();
return;
}
else {
System.out.println("无该学号,请重新输入");
while (true) {
System.out.println("1.退出2.继续");
String kj = scanner.next();
switch (kj) {
case "1":
return;
case "2":
break;
default:
System.out.println("无此选项,请重新输入");
}
if (kj.equals("2")) {
break;
}
}
break;
}
} else {
System.out.println("无信息,请继续");
break;
}
}
}
}
三.定义引用类
class xueshengxinxi {
private String xuehao;
private String name;
private String sex;
private double mathscore;
private double jisuanjiscore;
private double Elishscore;
private String zhanghao;
private String mima;
public xueshengxinxi() {
}
public xueshengxinxi(String zhanghao, String mima) {
this.zhanghao = zhanghao;
this.mima = mima;
}
public xueshengxinxi(String xuehao, String name, String sex, double mathscore, double jisuanjiscore, double elishscore) {
this.xuehao = xuehao;
this.name = name;
this.sex = sex;
this.mathscore = mathscore;
this.jisuanjiscore = jisuanjiscore;
Elishscore = elishscore;
}
public String getZhanghao() {
return zhanghao;
}
public void setZhanghao(String zhanghao) {
this.zhanghao = zhanghao;
}
public String getMima() {
return mima;
}
public void setMima(String mima) {
this.mima = mima;
}
public String getXuehao() {
return xuehao;
}
public void setXuehao(String xuehao) {
this.xuehao = xuehao;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public double getMathscore() {
return mathscore;
}
public void setMathscore(double mathscore) {
this.mathscore = mathscore;
}
public double getJisuanjiscore() {
return jisuanjiscore;
}
public void setJisuanjiscore(double jisuanjiscore) {
this.jisuanjiscore = jisuanjiscore;
}
public double getElishscore() {
return Elishscore;
}
public void setElishscore(double elishscore) {
Elishscore = elishscore;
}
@Override
public String toString() {
return "账号是:'" + zhanghao + '\'' +
", 密码是:'" + mima + '\'' ;
}
}
注意:这部分属于定义类。
小结:
目前我的能力做的不够完美,如果想把信息打印到文件中,可以选择自行添加,可以选择输入流,输出流(输入流可以换成打印流会更简便写)来打印。对于我这种初学者来说平时多打打代码会慢慢收获很多,从中学习到更多东西。刚开始写这些系统是或许对小白来说会很难,但是其实多借鉴类似系统,然后学习其中的逻辑,逐渐会感觉到这些东西其实并不难,慢慢自己就可以写出属于自己的系统。全部代码都在文件中,可自行下载。