因为西安疫情的原因,我们很多考试都已经取消了,没有办法进行线下的考试,就连java程序设计也成了线上的考试。第一次写博客,就想着和大家一起交流,因为是初学者,很多地方也有做的不好的地方,请大家多多指教。顺便提一句,西安加油。
好了废话不多说,直接给大家贴上代码:
1,学生信息管理系统(这个应该大家写的最多的了,我给大家贴上):
(1),首先就是学生类:
public class Student {
private String name; // 姓名
private String sex; // 性别
private String nativePlace; // 籍贯
private String collage; // 学院
private String number; // 学号
public Student(String name, String sex, String nativePlace, String collage, String number) {
this.name = name;
this.sex = sex;
this.nativePlace = nativePlace;
this.collage = collage;
this.number = number;
}
public void setName(String name) {
this.name = name;
}
public void setSex(String sex) {
this.sex = sex;
}
public void setNativePlace(String nativePlace) {
this.nativePlace = nativePlace;
}
public void setCollage(String collage) {
this.collage = collage;
}
public void setNumber(String number) {
this.number = number;
}
// 需要统计籍贯为陕西的人数,男生女生人数,每个学院的人数
public String getSex() {
return this.sex;
}
public String getNativePlace() {
return this.nativePlace;
}
public String getCollage() {
return this.collage;
}
// 获取学生的学号
public String getNumber() {
return this.number;
}
public String getName() {
return this.name;
}
}
(2),学生类的测试类(我是基于集合进行存储和操作,如果有更好的方法,欢迎大家一起讨论)
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class StudentTest {
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
System.out.println("输入学生人数:");
int num = new Scanner(System.in).nextInt();
mainMenu(list, num);
}
// 主界面方法
public static void mainMenu(List<Student> list, int num) {
while (true) {
System.out.println("===================");
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("====================");
System.out.println("欢迎使用,选择您想进行的操作序号:");
String no = new Scanner(System.in).nextLine();
switch (no) {
case "1":
insert(list, num);
insertStudentMessageToFile(list);
break;
case "2":
upDateStudentMessage(list, num);
insertStudentMessageToFile(list);
break;
case "3":
deleteStudentMessage(list, num);
insertStudentMessageToFile(list);
break;
case "4":
getStudentNumber(list, num);
break;
case "5":
findStudentMessgae(list,num);
break;
case "6":
System.out.println("谢谢使用,再见");
System.exit(0);
default:
System.out.println("只能输入1-5的序号,您输入有误");
}
}
}
// 添加学生信息;
public static void insert(List<Student> list, int num) {
for (int i = 0; i < num; i++) {
System.out.println("输入第" + (i+1) + "个学生的姓名:");
String name = new Scanner(System.in).nextLine();
System.out.println("输入第" + (i+1) + "个学生的学号:");
String number = new Scanner(System.in).nextLine();
System.out.println("输入第" + (i+1) + "个学生的性别:");
String sex = new Scanner(System.in).nextLine();
System.out.println("输入第" + (i+1) + "个学生的籍贯:");
String nativePlace = new Scanner(System.in).nextLine();
System.out.println("输入第" + (i+1) + "个学生的所在学院:");
String collage = new Scanner(System.in).nextLine();
Student stu = new Student(name, sex, nativePlace, collage, number);
list.add(stu);
}
}
// 统计籍贯为陕西的学生人数,以及男女生学生的人数
public static void getStudentNumber(List<Student> list, int num) {
if (list.size() == 0) {
System.out.println("还没有输入学生信息");
// 没有学生信息退出系统
System.exit(0);
}
int sxCount = 0, manCount = 0, womenCount = 0, computerCollega = 0, jidianCollega = 0;
for (int i = 0; i < num; i++) {
if (list.get(i).getNativePlace().equals("陕西省") || list.get(i).getNativePlace().equals("陕西")) {
sxCount++;
}
if (list.get(i).getSex().equals("男") || list.get(i).getSex().equals("男生")) {
manCount++;
} else {
womenCount++;
}
if (list.get(i).getCollage().equals("计算机学院") || list.get(i).getCollage().equals("计算机")) {
computerCollega++;
}
if (list.get(i).getCollage().equals("机电学院") || list.get(i).getCollage().equals("机电")) {
jidianCollega++;
}
}
System.out.println("籍贯为陕西的人数为:" + sxCount);
System.out.println("男生人数为:" + manCount);
System.out.println("女生人数为:" + womenCount);
System.out.println("机电学员人数为:" + jidianCollega);
System.out.println("计算机学院人数为:" + computerCollega);
}
// 根据学号查询学生信息
public static void findStudentMessgae(List<Student> list, int num) {
if (list.size() == 0) {
System.out.println("还没有输入学生信息");
// 没有学生信息退出系统
System.exit(0);
}
System.out.println("输入查询的学生的学号:");
String studentNumber = new Scanner(System.in).nextLine();
for (int i = 0; i < num; i++) {
if (list.get(i).getNumber().equals(studentNumber)) {
System.out.println("学生的姓名:" + list.get(i).getName()
+ "\n学号:" + list.get(i).getNumber() + "\n性别:" + list.get(i).getSex() +
"\n籍贯:" + list.get(i).getNativePlace()
+ "\n学院:" + list.get(i).getCollage());
}
}
}
// 修改学生的信息
public static void upDateStudentMessage(List<Student> list, int num) {
if (list.size() == 0) {
System.out.println("还没有输入学生信息");
// 没有学生信息退出系统
System.exit(0);
}
System.out.println("输入学生的学号:");
String studentNumber = new Scanner(System.in).nextLine();
for (int i = 0; i < num; i++) {
if (list.get(i).getNumber().equals(studentNumber)) {
Scanner src = new Scanner(System.in);
System.out.println("输入你想改的信息标号:");
System.out.println("1,修改姓名信息");
System.out.println("2,修改性别信息");
System.out.println("3,修改学号信息");
System.out.println("4,修改籍贯信息");
System.out.println("5,修改学院信息");
System.out.println("====================");
int no = src.nextInt();
if (no == 1) {
// 因为在nextInt()和nextLine()方法里,会出现一个\n,再输入新的名字以后,nextLine():接收到\n
String name1 = src.nextLine();
System.out.println("输入新的姓名:");
String name = src.nextLine();
list.get(i).setName(name);
} else if (no == 2) {
String sex1 = src.nextLine();
System.out.println("输入新的性别:");
String sex = src.nextLine();
list.get(i).setSex(sex);
} else if (no == 3) {
System.out.println("输入新的学号");
String stuNumber = src.nextLine();
list.get(i).setNumber(stuNumber);
} else if (no == 4) {
String nativePlace1 = src.nextLine();
System.out.println("输入新的籍贯:");
String nativePlace = src.nextLine();
list.get(i).setNativePlace(nativePlace);
} else {
String collage1 = src.nextLine();
System.out.println("输入新的学院:");
String collage = src.nextLine();
list.get(i).setCollage(collage);
}
}
}
}
// 删除学生信息
public static void deleteStudentMessage(List<Student> list, int num) {
if (list.size() == 0) {
System.out.println("还没有输入学生信息");
// 没有学生信息退出系统
System.exit(0);
}
System.out.println("输入删除学生的学号:");
String deleteStudentNumber = new Scanner(System.in).nextLine();
for (int i = 0; i < num; i++) {
if (list.get(i).getNumber().equals(deleteStudentNumber)) {
System.out.println("学生的姓名:" + list.get(i).getName()
+ "\n学号:" + list.get(i).getNumber() + "\n性别:" + list.get(i).getSex() +
"\n籍贯:" + list.get(i).getNativePlace()
+ "\n学院:" + list.get(i).getCollage());
System.out.println("请确认是否为要删除的学生的信息(yes/no):");
String judge = new Scanner(System.in).nextLine();
if (judge.equals("yes") || judge.equals("Yes")) {
list.remove(i);
System.out.println("删除成功!!");
return;
} else {
System.out.println("已经取消删除");
return;
}
}
}
}
// 将学生的信息写入文件中
public static void insertStudentMessageToFile(List<Student> list) {
File file = new File("StudentMessage.txt");
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("创建成功");
} else {
System.out.println("已经存在该文件");
}
BufferedWriter bfw = null;
try {
bfw = new BufferedWriter(new FileWriter(file));
String tableType = "姓名\t\t学号\t\t性别\t\t籍贯\t\t所在院系";
bfw.write(tableType);
bfw.newLine();
for (int i = 0; i < list.size(); i++) {
bfw.write(list.get(i).getName(), 0, list.get(i).getName().length());
bfw.write("\t\t");
bfw.write(list.get(i).getNumber(), 0, list.get(i).getNumber().length());
bfw.write("\t\t");
bfw.write(list.get(i).getSex(), 0, list.get(i).getSex().length());
bfw.write("\t\t");
bfw.write(list.get(i).getNativePlace(), 0, list.get(i).getNativePlace().length());
bfw.write("\t\t");
bfw.write(list.get(i).getCollage(), 0, list.get(i).getCollage().length());
bfw.newLine();
}
System.out.println("录取完成");
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bfw != null) {
try {
bfw.flush();
bfw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
注意: 我们在接收一个int型数据以后,再次接收String类型的数据的时候,会将\n传入String的接收语句中,就会直接跳过,我们在中间在用一个接收语句接收‘\n’就好。
例如:
int no = src.nextInt();
if (no == 1) {
// 因为在nextInt()和nextLine()方法里,会出现一个\n,再输入新的名字以后,nextLine():接收到\n
String name1 = src.nextLine();
System.out.println("输入新的姓名:");
String name = src.nextLine();
list.get(i).setName(name);
// 如果没有name1的话会直接跳过语句。
二,第二个给大家分享的是一个运动员信息的管理系统(其实我觉得老师布置的10个任务都是一样的,没有难度~~~~).
(1),运动员类:
public class player{
private String name;
private String joinGameNumber;
String run; // 4*100成绩
String jump; // 跳高成绩
String jumpWidth; // 跳远成绩
public player(String name, String joinGameNumber, String run, String jump, String jumpWidth) {
this.name = name;
this.joinGameNumber = joinGameNumber;
this.run = run;
this.jump = jump;
this.jumpWidth = jumpWidth;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getJoinGameNumber() {
return joinGameNumber;
}
public void setJoinGameNumber(String joinGameNumber) {
this.joinGameNumber = joinGameNumber;
}
}
大家请忽略的变量命名,(四级未过的人,~~~~)
(2),测试类:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class playTest {
public static void main(String[] args) {
// 三个运动项目分别为: 4*100;跳远 调高
List<player> list = new ArrayList<player>();
mainMenu(list);
}
public static void mainMenu(List<player> list) {
while (true) {
System.out.println("-----------");
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("----------");
System.out.println("输入你想进行的操作编号:");
int num = new Scanner(System.in).nextInt();
switch (num) {
case 1:
insertPlayerMessage(list);
break;
case 2:
checkedMessage(list);
break;
case 3:
lowSort(list);
break;
case 4:
checkedPlayerMenu(list);
break;
case 5:
checkedNumberMessage(list);
break;
case 6:
System.out.println("欢迎使用");
System.exit(0);
default:
System.out.println("您输入的序号错误,重新输入");
mainMenu(list);
break;
}
}
}
public static void insertPlayerMessage(List<player> list) {
// 输入运动员信息
System.out.println("输入运动员人数:");
int n = new Scanner(System.in).nextInt();
for (int i = 0; i < n; i++) {
System.out.println("输入第" + (i + 1) + "个运动员的信息");
System.out.println("输入姓名:");
String name = new Scanner(System.in).nextLine();
System.out.println("输入号码:");
String joinPlayerNumber = new Scanner(System.in).nextLine();
System.out.println("输入4*100成绩:");
String fourScore = new Scanner(System.in).nextLine();
System.out.println("输入跳远成绩:");
String jumpWidthScore = new Scanner(System.in).nextLine();
System.out.println("输入跳高成绩:");
String jumpHighScore = new Scanner(System.in).nextLine();
player ply = new player(name, joinPlayerNumber, fourScore, jumpWidthScore, jumpHighScore);
list.add(ply);
}
}
public static void checkedMessage(List<player> list) {
//查看各类运动的成绩
int runAverage = 0, jumpWidthAverage = 0, jumpAverage = 0;
for (int i = 0; i < list.size(); i++) {
String run = list.get(i).run;
String jumpWidth = list.get(i).jumpWidth;
String jump = list.get(i).jump;
runAverage += Integer.parseInt(run);
jumpAverage += Integer.parseInt(jump);
jumpWidthAverage += Integer.parseInt(jumpWidth);
}
System.out.println("4*100米接力平均成绩:" + runAverage / list.size() + "\n" +
"跳高平均成绩:" + jumpAverage / list.size() + "\n" + "跳远平均成绩:" + jumpWidthAverage / list.size());
}
public static void lowSort(List<player> list) {
// 计算最好和最差成绩,并且把每个项目的成绩按照降序排列
int[] arr1 = new int[list.size()];
int[] arr2 = new int[list.size()];
int[] arr3 = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
arr1[i] = Integer.parseInt(list.get(i).run);
arr2[i] = Integer.parseInt(list.get(i).jump);
arr3[i] = Integer.parseInt(list.get(i).jumpWidth);
}
Arrays.sort(arr1);
System.out.println("4*100的最好成绩为:" + arr1[0] + "\n" + "最坏成绩为:" + arr1[arr1.length - 1]);
Arrays.sort(arr2);
System.out.println("跳高的最好成绩为:" + arr2[arr2.length - 1] + "\n" + "最坏成绩为:" + arr2[0]);
Arrays.sort(arr3);
System.out.println("跳远的最好成绩为:" + arr3[arr3.length - 1] + "\n" + "最坏成绩为:" + arr3[0]);
System.out.print("4*100的成绩降序排列:");
for (int i = arr1.length - 1; i >= 0; i--) {
System.out.print(" " + arr1[i] + ",");
}
System.out.print("跳高成绩降序排列:");
for (int i = arr2.length - 1; i >= 0; i--) {
System.out.print(" " + arr2[i] + ",");
}
System.out.println("跳远成绩降序排列:");
for (int i = arr3.length - 1; i >= 0; i--) {
System.out.print(" " + arr3[i] + ",");
}
}
public static void checkedPlayerMenu(List<player> list) {
System.out.println("输入原来的跳远记录:");
String oldRunScore = new Scanner(System.in).nextLine();
System.out.println("输入原来的跳高记录:");
String oldJumpScore = new Scanner(System.in).nextLine();
System.out.println("输入原来的跳远记录:");
String oldJumpWidthScore = new Scanner(System.in).nextLine();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).run.compareTo(oldRunScore) < 0) {
System.out.println("破4*100记录者为:" + list.get(i).getName());
} else {
System.out.println("无破4*100米接力的运动员");
}
if (list.get(i).jump.compareTo(oldJumpScore) > 0) {
System.out.println("破跳高纪录者为:" + list.get(i).getName());
}
if (list.get(i).jumpWidth.compareTo(oldJumpWidthScore) > 0) {
System.out.println("破跳远纪录者为:" + list.get(i).getName());
}
}
}
public static void checkedNumberMessage(List<player> list) {
System.out.println("输入你想查询的运动员的参赛号码:");
String joinGameNumber = new Scanner(System.in).nextLine();
for (int i = 0; i < list.size(); i++) {
if (joinGameNumber.equals(list.get(i).getJoinGameNumber())) {
System.out.println("4*100接力成绩:" + list.get(i).run + "\n"
+ "跳远成绩:" + list.get(i).jumpWidth + "\n" + "跳高成绩:" + list.get(i).jump);
}
}
}
}
三,第三个也是一样的,一个科技比赛的题(代码其实都差不多,你们可以参考这些东西,写你们自己的期末大作业)
比赛类:
public class Competition {
// 竞赛项目
private String competitionAcm;
private String competitionDataFountain; // 大数据
private String competitionCtf; // 网络安全成绩
private String name;
private String testNumber;
public Competition(String competitionAcm, String competitionDataFountain, String competitionCtf, String name, String testNumber) {
this.competitionAcm = competitionAcm;
this.competitionDataFountain = competitionDataFountain;
this.competitionCtf = competitionCtf;
this.name = name;
this.testNumber = testNumber;
}
public String getCompetitionAcm() {
return competitionAcm;
}
public String getCompetitionDataFountain() {
return competitionDataFountain;
}
public String getCompetitionCtf() {
return competitionCtf;
}
public String getName() {
return name;
}
public String getTestNumber() {
return testNumber;
}
}
测试类:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class CompetitionTest {
public static void main(String[] args) {
List<Competition> list = new ArrayList<>();
mainMenu(list);
}
public static void mainMenu(List<Competition> list) {
while (true) {
System.out.println("-----------");
System.out.println("1,输入参赛人员信息");
System.out.println("2,统计成绩");
System.out.println("3,降序排列成绩,以及前三名");
System.out.println("4,输入参赛号码查询比赛成绩");
System.out.println("5,退出程序");
System.out.println("----------");
System.out.println("输入你想进行的操作编号:");
int num = new Scanner(System.in).nextInt();
switch (num) {
case 1:
insertPlayerMessage(list);
break;
case 2:
checkedMessage(list); // 计算每个项目的平均成绩
break;
case 3:
lowSort(list);
break;
case 4:
checkedNumberMessage(list);
break;
case 5:
System.out.println("感谢使用");
System.exit(0);
default:
System.out.println("您输入的序号错误,重新输入");
mainMenu(list);
break;
}
}
}
public static void insertPlayerMessage(List<Competition> list) {
System.out.println("输入参赛人数:");
int n = new Scanner(System.in).nextInt();
for (int i = 0; i < n; i++) {
System.out.println("输入第" + (i + 1) + "个参赛人员的信息");
System.out.println("输入姓名:");
String name = new Scanner(System.in).nextLine();
System.out.println("输入号码:");
String joinComNumber = new Scanner(System.in).nextLine();
System.out.println("输入ACM成绩:");
String AcmScore = new Scanner(System.in).nextLine();
System.out.println("输入CTR成绩:");
String CTRScore = new Scanner(System.in).nextLine();
System.out.println("输入DataFountion成绩:");
String DataFountionScore = new Scanner(System.in).nextLine();
Competition com = new Competition(AcmScore, DataFountionScore, CTRScore, name, joinComNumber);
list.add(com);
}
}
public static void lowSort(List<Competition> list) {
int[] arr = new int[list.size()];
System.out.println("ACM比赛的人员成绩:");
for (int i = 0; i < list.size(); i++) {
arr[i] = Integer.parseInt(list.get(i).getCompetitionAcm());
}
Arrays.sort(arr);
for (int i = arr.length - 1; i >= 0; i--) {
System.out.println(list.get(i).getName() + "\t:\t" + list.get(i).getCompetitionAcm() + "\n");
}
System.out.println("ACM比赛的前三名为:" + arr[arr.length - 1] + "," + arr[arr.length - 2] + "," + arr[arr.length - 3]);
System.out.println("CTR比赛的人员成绩:");
for (int i = 0; i < list.size(); i++) {
arr[i] = Integer.parseInt(list.get(i).getCompetitionCtf());
}
Arrays.sort(arr);
for (int i = arr.length - 1; i >= 0; i--) {
System.out.println(list.get(i).getName() + " : " + list.get(i).getCompetitionCtf() + "\n");
}
System.out.println("CRT比赛的前三名为:" + arr[arr.length - 1] + "," + arr[arr.length - 2] + "," + arr[arr.length - 3]);
System.out.println("DataFountion比赛的人员成绩:");
for (int i = 0; i < list.size(); i++) {
arr[i] = Integer.parseInt(list.get(i).getCompetitionAcm());
}
Arrays.sort(arr);
for (int i = arr.length - 1; i >= 0; i--) {
System.out.println(list.get(i).getName() + " : " + list.get(i).getCompetitionDataFountain() + "\n");
}
System.out.println("DataFountion比赛的前三名为:" + arr[arr.length - 1] + "," + arr[arr.length - 2] + "," + arr[arr.length - 3]);
}
public static void checkedMessage(List<Competition> list) {
int AcmScore = 0, CtrScore = 0, DataFountionScore = 0;
for (Competition competition : list) {
AcmScore += Integer.parseInt(competition.getCompetitionAcm());
CtrScore += Integer.parseInt(competition.getCompetitionCtf());
DataFountionScore += Integer.parseInt(competition.getCompetitionDataFountain());
}
System.out.println("acm总成绩:\t" + AcmScore + " 平均成绩为:\t" + AcmScore / list.size() + "\n"
+ "CTF总成绩:\t" + CtrScore + "平均成绩为:\t" + CtrScore / list.size() + "\n" + "DataFountion总成绩:\t" + DataFountionScore
+ "平均成绩为:\t" + DataFountionScore / list.size());
int acmNumber = 0, ctrNumber = 0, dataFountionNumber = 0;
for (Competition competition : list) {
if (Integer.parseInt(competition.getCompetitionAcm()) >= AcmScore / list.size()) {
acmNumber++;
}
if (Integer.parseInt(competition.getCompetitionCtf()) >= CtrScore / list.size()) {
ctrNumber++;
}
if (Integer.parseInt(competition.getCompetitionDataFountain()) >= DataFountionScore / list.size()) {
dataFountionNumber++;
}
}
System.out.println("acm比赛高于平均值的人数为:" + acmNumber + "\n" + "ctr比赛高于平均值的人数为:" + ctrNumber + "\n"
+ "datafountion比赛高于平均值的人数为:" + dataFountionNumber);
}
public static void checkedNumberMessage(List<Competition> list) {
System.out.println("输入你想查询的运动员的参赛号码:");
String joinGameNumber = new Scanner(System.in).nextLine();
for (Competition competition : list) {
if (joinGameNumber.equals(competition.getTestNumber())) {
System.out.println("acm成绩:\t" + "\t" + competition.getCompetitionAcm() + "\n"
+ "CTF成绩:\t" + "\t" + competition.getCompetitionCtf() + "\n" + "DataFountion成绩:\t" + "\t" + competition.getCompetitionDataFountain());
}
}
}
}
大家拿着就可以用了,祝大家学业有成。