import java.util.Scanner;
/**
-
班级:[请填写班级]
-
学号:[请填写学号]
-
姓名:[请填写姓名]
-
功能:在线投稿系统的管理类,实现核心业务逻辑
*/
public class Main {
// 用数组存储稿件,最多存储100条记录(可扩展)
private ManuscriptInformation[] manuscripts;
private int count; // 当前稿件数量
private Scanner scanner; // 用于接收用户输入// 构造方法:初始化数组和扫描器
public Main() {
manuscripts = new ManuscriptInformation[100]; // 初始化数组容量
count = 0; // 初始稿件数量为0
scanner = new Scanner(System.in); // 初始化扫描器
}// 主方法:程序入口
public static void main(String[] args) {
Main system = new Main();
system.showMainMenu(); // 展示主界面
}/**
-
展示系统主界面
*/
public void showMainMenu() {
while (true) {
// 打印主界面
System.out.println("");
System.out.println("石家庄铁道大学突破24软件开发有限公司");
System.out.println("在线投稿系统V1.0");
System.out.println("");
System.out.println("1、在线投稿");
System.out.println("2、审核稿件");
System.out.println("3、查询进度");
System.out.println("4、统计汇总");
System.out.println("***********************************************************");
System.out.print("请输入功能编号(1-4):");// 接收用户输入int choice;try {choice = Integer.parseInt(scanner.nextLine());} catch (NumberFormatException e) {System.out.println("输入错误!请输入数字1-4");continue;}// 根据选择执行对应功能switch (choice) {case 1:submitManuscript(); // 在线投稿break;case 2:reviewManuscript(); // 审核稿件break;case 3:queryManuscript(); // 查询进度break;case 4:statisticsManuscript(); // 统计汇总break;default:System.out.println("该选项不存在!请重新输入");}}
}
/**
-
1、在线投稿功能
*/
public void submitManuscript() {
while (true) {
// 1. 生成稿件编号(数组中最大编号+1,初始为20090001)
int newId = generateManuscriptId();
if (newId == -1) {
System.out.println("录入错误:稿件编号生成失败");
continue;
}// 2. 录入作者信息System.out.println("***********************************************************");System.out.println("石家庄铁道大学突破24软件开发有限公司");System.out.println("在线投稿系统V1.0");System.out.println("***********************************************************");System.out.print("请输入作者姓名:");String authorName = scanner.nextLine().trim();System.out.print("请输入作者单位:");String authorUnit = scanner.nextLine().trim();System.out.print("请输入稿件内容(不超过300字):");String content = scanner.nextLine().trim();// 3. 验证输入格式if (content.length() > 300) {System.out.println("录入错误:稿件内容超过300字,请重新录入");continue;}// 4. 显示录入信息并确认System.out.println("***********************************************************");System.out.println("石家庄铁道大学突破24软件开发有限公司");System.out.println("在线投稿系统V1.0");System.out.println("***********************************************************");System.out.println("稿件编号:" + newId);System.out.println("作者姓名:" + authorName);System.out.println("作者单位:" + authorUnit);System.out.println("稿件内容:" + content);System.out.print("该稿件已录入完成,是否提交(Y/N):");String confirm = scanner.nextLine().trim().toUpperCase();// 5. 处理提交确认if ("Y".equals(confirm)) {// 获取当前日期(格式:yyyyMMdd,简化处理)String currentDate = java.time.LocalDate.now().format(java.time.format.DateTimeFormatter.BASIC_ISO_DATE);// 创建稿件对象并添加到数组ManuscriptInformation manuscript = new ManuscriptInformation(newId, authorName, authorUnit, content,0, "", currentDate // 初始状态为0(未审核),审核意见为空);manuscripts[count] = manuscript;count++;System.out.println("投稿成功!返回主界面");break;} else if ("N".equals(confirm)) {System.out.println("已取消提交,返回稿件录入界面");// 继续循环,重新录入} else {System.out.println("输入无效,请输入Y或N");}}
}
/**
-
生成稿件编号(8位:前4位年月+后4位序号)
-
@return 新的稿件编号,生成失败返回-1
*/
private int generateManuscriptId() {
try {
// 1. 获取当前年月(格式:yyyyMM中的后4位,如2024年9月为2409)
String yearMonth = java.time.LocalDate.now().format(java.time.format.DateTimeFormatter.ofPattern("yyyyMM")).substring(2);
int prefix = Integer.parseInt(yearMonth); // 前缀:2409// 2. 查找当前最大的序号int maxSeq = 0;for (int i = 0; i < count; i++) {ManuscriptInformation ms = manuscripts[i];if (ms != null) {int id = ms.getId();int msPrefix = id / 10000; // 提取前缀(前4位)int msSeq = id % 10000; // 提取序号(后4位)// 如果是同年同月的稿件,更新最大序号if (msPrefix == prefix && msSeq > maxSeq) {maxSeq = msSeq;}}}// 3. 生成新编号(前缀*10000 + 新序号)int newSeq = maxSeq + 1;if (newSeq > 9999) {System.out.println("当月稿件数量已达上限(9999篇)");return -1;}return prefix * 10000 + newSeq;} catch (Exception e) {
return -1;
}
}
/**
-
2、审核稿件功能
*/
public void reviewManuscript() {
while (true) {
// 1. 输入稿件编号
System.out.println("");
System.out.println("石家庄铁道大学突破24软件开发有限公司");
System.out.println("在线投稿系统V1.0");
System.out.println("");
System.out.print("请输入稿件编号(8位):");
String idStr = scanner.nextLine().trim();// 验证编号格式if (idStr.length() != 8 || !idStr.matches("\\d+")) {System.out.println("稿件编号格式错误!请输入8位数字");continue;}int targetId = Integer.parseInt(idStr);ManuscriptInformation targetMs = findManuscriptById(targetId);// 2. 检查稿件是否存在if (targetMs == null) {System.out.println("库中没有该稿件,返回审核界面");continue;}// 3. 检查稿件状态(仅未审核可审核)if (targetMs.getStatement() != 0) {System.out.println("该稿件已审核,无需重复操作");continue;}// 4. 显示稿件信息并录入审核意见System.out.println("***********************************************************");System.out.println("石家庄铁道大学突破24软件开发有限公司");System.out.println("在线投稿系统V1.0");System.out.println("***********************************************************");System.out.println("稿件编号:" + targetMs.getId());System.out.println("作者姓名:" + targetMs.getName());System.out.println("作者单位:" + targetMs.getUnit());System.out.println("稿件内容:" + targetMs.getContent());System.out.print("请输入审核意见:");String opinion = scanner.nextLine().trim();System.out.print("是否通过(Y/N):");String passConfirm = scanner.nextLine().trim().toUpperCase();System.out.print("是否提交审核结果(Y/N):");String submitConfirm = scanner.nextLine().trim().toUpperCase();// 5. 处理审核结果if ("Y".equals(submitConfirm)) {// 更新审核状态if ("Y".equals(passConfirm)) {targetMs.setStatement(1); // 已通过} else if ("N".equals(passConfirm)) {targetMs.setStatement(2); // 已退回} else {System.out.println("是否通过输入无效,默认设置为已退回");targetMs.setStatement(2);}// 更新审核意见和日期targetMs.setOpinion(opinion);String reviewDate = java.time.LocalDate.now().format(java.time.format.DateTimeFormatter.BASIC_ISO_DATE);targetMs.setDate(reviewDate);System.out.println("审核结果已提交!");// 返回审核界面} else if ("N".equals(submitConfirm)) {System.out.println("已取消审核,返回系统主界面");break; // 返回主界面} else {System.out.println("输入无效,请输入Y或N");}}
}
/**
-
3、查询进度功能
*/
public void queryManuscript() {
while (true) {
// 1. 输入稿件编号
System.out.println("");
System.out.println("石家庄铁道大学突破24软件开发有限公司");
System.out.println("在线投稿系统V1.0");
System.out.println("");
System.out.print("请输入稿件编号(8位):");
String idStr = scanner.nextLine().trim();// 验证编号格式if (idStr.length() != 8 || !idStr.matches("\\d+")) {System.out.println("稿件编号格式错误!请输入8位数字");continue;}int targetId = Integer.parseInt(idStr);ManuscriptInformation targetMs = findManuscriptById(targetId);// 2. 检查稿件是否存在if (targetMs == null) {System.out.println("库中没有该稿件,返回查询界面");continue;}// 3. 显示稿件详情System.out.println("***********************************************************");System.out.println("石家庄铁道大学突破24软件开发有限公司");System.out.println("在线投稿系统V1.0");System.out.println("***********************************************************");System.out.println("稿件编号:" + targetMs.getId());System.out.println("作者姓名:" + targetMs.getName());System.out.println("作者单位:" + targetMs.getUnit());System.out.println("稿件内容:" + targetMs.getContent());System.out.println("审核意见:" + (targetMs.getOpinion() == null || targetMs.getOpinion().isEmpty() ? "无" : targetMs.getOpinion()));// 转换状态为文字描述String statusDesc;switch (targetMs.getStatement()) {case 1:statusDesc = "已通过";break;case 2:statusDesc = "已退回";break;default:statusDesc = "未审核";}System.out.println("是否通过:" + statusDesc);// 4. 确认是否继续查询System.out.print("是否进行新查询(Y/N):");String newQuery = scanner.nextLine().trim().toUpperCase();if ("N".equals(newQuery)) {System.out.println("返回主界面");break;} else if (!"Y".equals(newQuery)) {System.out.println("输入无效,默认继续查询");}}
}
/**
-
4、统计汇总功能
*/
public void statisticsManuscript() {
// 统计各类稿件数量
int total = count;
int unReviewed = 0;
int passed = 0;
int rejected = 0;for (int i = 0; i < count; i++) {
ManuscriptInformation ms = manuscripts[i];
if (ms != null) {
switch (ms.getStatement()) {
case 0:
unReviewed++;
break;
case 1:
passed++;
break;
case 2:
rejected++;
break;
}
}
}// 显示统计结果
System.out.println("");
System.out.println("2023版石家庄铁道大学突破24软件开发有限公司");
System.out.println("在线投稿系统V1.0");
System.out.println("");
System.out.println("总投稿数:" + total + "篇");
System.out.println("未审核:" + unReviewed + "篇");
System.out.println("已通过:" + passed + "篇");
System.out.println("已退回:" + rejected + "篇");
System.out.println("***********************************************************");
System.out.print("按回车键返回主界面...");
scanner.nextLine(); // 等待用户按键
}
/**
- 根据稿件编号查找稿件
- @param id 稿件编号
- @return 找到的稿件对象,未找到返回null
*/
private ManuscriptInformation findManuscriptById(int id) {
for (int i = 0; i < count; i++) {
ManuscriptInformation ms = manuscripts[i];
if (ms != null && ms.getId() == id) {
return ms;
}
}
return null;
}
// 稿件信息类(内部类)
static class ManuscriptInformation {
private int id; // 稿件编号
private String name; // 作者姓名
private String unit; // 作者单位
private String content; // 稿件内容
private int statement; // 审核状态(0-未审核,1-已通过,2-已退回)
private String opinion; // 审核意见
private String date; // 提交/审核日期// 构造方法public ManuscriptInformation(int id, String name, String unit, String content, int statement, String opinion, String date) {this.id = id;this.name = name;this.unit = unit;this.content = content;this.statement = statement;this.opinion = opinion;this.date = date;}// Getter和Setter方法public int getId() {return id;}public String getName() {return name;}public String getUnit() {return unit;}public String getContent() {return content;}public int getStatement() {return statement;}public void setStatement(int statement) {this.statement = statement;}public String getOpinion() {return opinion;}public void setOpinion(String opinion) {this.opinion = opinion;}public String getDate() {return date;}public void setDate(String date) {this.date = date;}}
} -