首页 > 其他分享 >个人项目评价

个人项目评价

时间:2023-09-25 11:46:16浏览次数:25  
标签:name 个人 项目 int pattern equals 评价 arithmetic String

优点:她把各个模块儿完成的很好并且生成的卷子没有异常

缺点:使用路径是使用了绝对路径这导致可移植性差的原因,代码布局上不是很好。

如下伪代码:

package page;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;

import static page.Login.pattern;

public class CreatePaper {
public static String dir = "D:\\桌面\\桌面\\软件2103-木叶斯尔·亚森\\";
public static int readInput(){
Login log = new Login();
Scanner in = new Scanner(System.in);
System.out.println("正在为您生成"+pattern+"试题,请输入题目数量(数量区间在【10,30】或您需要改变的题目难度");
String qNum = in.nextLine();
int qnum = 0;
if (qNum.equals("小学")) {
pattern = "小学";
System.out.println("已修改为"+pattern+"试题,请输入题目数量(数量区间在【10,30】");
qNum = in.nextLine();
}
else if (qNum.equals("初中")) {
pattern = "初中";
System.out.println("已修改为"+pattern+"试题,请输入题目数量(数量区间在【10,30】");
qNum = in.nextLine();
}
else if (qNum.equals("高中")) {
pattern = "高中";
System.out.println("已修改为"+pattern+"试题,请输入题目数量(数量区间在【10,30】");
qNum = in.nextLine();
}
else if (qNum.equals("-1")) {
log.signIn();
qnum = -1;
}
else if (qNum.matches("\\d+")) {
qnum = Integer.valueOf(qNum);
if (qnum<10 || qnum>30) { // 题目数量不在【10,30】
System.out.println("题目数量需在【10,30】,请重新输入");//不满足条件重新输入
qnum= Integer.parseInt(in.nextLine());
}
else {
int a= qnum;
System.out.println("为您生成"+a+"道题目");
}
}

return qnum;
}
public static String createQuestion(String pattern) {
Random rand = new Random();
String[] arithmetic = null; //生成的算术题
String[] signs = new String[]{"+", "-", "*", "÷"};
int operand = rand.nextInt(4) + 2; //至少要有2个操作数
arithmetic = new String[operand];
for (int i = 0; i < operand; i++) {
arithmetic[i] = String.valueOf(rand.nextInt(100));
}
if(Login.pattern.equals("初中")) {
for (int i = 0; i < operand; i++) {
if (rand.nextBoolean()) {
arithmetic[i] = arithmetic[i] + "^2";
} else {
arithmetic[i] = "√" + arithmetic[i];
}
}
}
else if (Login.pattern.equals("高中")) {
int[] j = {0, 30, 45, 60, 90, 120, 135, 150, 180};
String[] s = {"sin", "cos", "tan"};
boolean flag = false;
while (!flag) {
for (int i = 0; i < operand; i++) {
if (rand.nextBoolean()) {
int temp = rand.nextInt(3);
int r = rand.nextInt(j.length);
arithmetic[i] = s[temp] + String.valueOf(j[r]);
flag = true;
}
}
}
}
if (operand >= 3) {//加括号
int length = rand.nextInt(operand -1); //括号内操作数长度
int lbracket = rand.nextInt(operand - length); // 左括号
int rbracket = lbracket + length; // 右括号
arithmetic[lbracket] = "(" + arithmetic[lbracket];
arithmetic[rbracket] = arithmetic[rbracket] + ")";
}
for (int i=0;i<operand-1; i++ ) {
int j = rand.nextInt(4);
arithmetic[i] = arithmetic[i] +signs[j];
}
arithmetic[operand-1] =arithmetic[operand-1]+"=";
//Arrays.toString(arithmetic[])
//String result = String.join(arithmetic);
String s2 = String.join(" ",arithmetic);
return s2;

}

static HashSet<String> getAllPapers(String name) {
String path = dir+name;
File file = new File(path);
if(!file.exists()){//没有该文件夹就创建
file.mkdir();
}
File[] fs = file.listFiles(); //遍历path下的文件和目录,放在File数组中
HashSet<String> allPapers= new HashSet<String>();
for(File f:fs) { //遍历File[]数组
if (!f.isDirectory()) //若非目录(即文件),则读入
{
try {
BufferedReader br = new BufferedReader(new FileReader(f));
String line;
while ((line = br.readLine()) != null) {
// 一次读入一行数据并加入到结果的hashset中
allPapers.add(line);
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return allPapers;
}

public static void createPaper(String name,int fNum) {
HashSet<String> papers=getAllPapers(name);//获得之前生成的题目的hashset
String dirPath = dir+name;// 文件夹路径
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
String time = simpleDateFormat.format(date);
String path = dirPath +"\\"+time; // 文件名
try {
FileWriter fw = new FileWriter(path,true); // 设置追加属性,不断对文件进行追加
for(int i=0;i<fNum;i++) {//生成对应数量题目
String problem = createQuestion(pattern);
if(!papers.contains(problem)){ //如果已有的题目中不包含该题目
problem=String.valueOf(i+1)+"."+problem;//加上序号
fw.write(problem+"\n"+"\n");
}
}
System.out.println("卷子生成完毕");
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}

}
package page;

import java.util.Scanner;

public class Login {
private static String name;
private static String password;
public static String pattern;

public static String dir = "";
static boolean flag = false;

public static void main(String[] args) {
while (true) {
signIn();
int fNum = CreatePaper.readInput();
if (fNum == -1) {
continue;
}
CreatePaper.createPaper(name,fNum);
}



}
public static void compareInformation(String name,String password) { // 用户登录
if (name.equals("张三1") || name.equals("张三2") || name.equals("张三3")) {
if (password.equals("123")) {
pattern = "小学";
flag = true;
}
} else if (name.equals("李四1") || name.equals("李四2") || name.equals("李四3")) {
if (password.equals("123")) {
pattern = "初中";
flag =true;
}
} else if (name.equals("王五1") || name.equals("王五2") || name.equals("王五3")) {
if (password.equals("123")) {
pattern = "高中";
flag =true;
}
}
if (!flag){
System.out.println("请输入正确的账号与密码!");
}
}
public static void signIn() {
Scanner in = new Scanner(System.in);
System.out.println("请输入账号与密码登录:");
while(!flag) {
String str[] = in.nextLine().split(" "); // 将输入的内容以空格分隔为姓名与密码
name = str[0];
password = str[1];
compareInformation(name, password);
}

}
}
运行结果:

C:\Users\LENOVO\.jdks\corretto-19.0.2\bin\java.exe "-javaagent:D:\Java\IntelliJ IDEA Community Edition 2022.2.1\lib\idea_rt.jar=63274:D:\Java\IntelliJ IDEA Community Edition 2022.2.1\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath D:\桌面\桌面\软件2103-木叶斯尔·亚森\project1\out\production\project1 page.Login
请输入账号与密码登录:
张三1 123
正在为您生成小学试题,请输入题目数量(数量区间在【10,30】或您需要改变的题目难度
12
为您生成12道题目
卷子生成完毕
请输入账号与密码登录:
正在为您生成小学试题,请输入题目数量(数量区间在【10,30】或您需要改变的题目难度
高中
已修改为高中试题,请输入题目数量(数量区间在【10,30】
12
卷子生成完毕
请输入账号与密码登录:



标签:name,个人,项目,int,pattern,equals,评价,arithmetic,String
From: https://www.cnblogs.com/aziz011300/p/17727604.html

相关文章

  • CAP项目集成带身份和证书验证的MongoDB
    大家好,我是Edison。最近,在使用CAP事件总线时,碰到了这样一个需求:微服务采用的是MongoDB,而且还是带身份验证和SSL根证书验证的。由于目前网上能找到的资料,都是不带身份验证的MongoDB,现在网络信息安全越来越被重视,那么就需要自己研究一番了。CAP.MongoDB组件CAP是一个开源的事件......
  • 2023年9月软考中级系统集成项目管理工程师报名到这好
    系统集成项目管理工程师是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目之一,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职称资格考试。 系统集成项目管理工程师,属于软考三个级别中的“中级”。 考试合格者将颁发由中......
  • UE4创建C++版项目遇到的错误
    1.VisualStudio2017version15.6isrequiredtocompileonWindows.PleaseinstallupdatesthroughtheVisualStudioinstaller.说是VS201715.0.0版本太低,需要VS201715.6才可以。但是又不想更新。。所以直接注释掉这句断言代码。就不报错了该文件名字叫“WindowsPl......
  • 在 Visual Studio 中创建 .NET MAUI 项目
    安装并配置.NETMAUI工具后,可以使用VisualStudio生成.NETMAUI应用。在本单元中,你将了解VisualStudio中.NETMAUI模板的结构。你将使用此模板创建跨平台移动和桌面应用。如何入门若要使用VisualStudio创建新的.NETMAUI项目,请在“创建新项目”对话框中选择.......
  • 一个工程化项目中怎么使用import_and_require
    一个工程化项目中怎么使用import_and_require这两个及是module和commonjs的区别可以参考这个前言在一起开发脚本过程中自己需要用到node中fschalk两个模块,起因/*本俩想着就是使用commonjs进行完成如下*/constfs=require("fs");constchalk=require("ch......
  • 【主流技术】MongoTemplate与Spring Boot项目集成分享(附CURD技巧)
    目录前言一、表结构特点1.1Json格式1.2实体映射二、条件构造2.1Criteria与Query的区别2.2简单条件2.3复杂条件三、如何选用接口3.1MongoRepository3.2MongoTemplate3.3两者对比四、常见API4.1增·insert4.2删·delete4.3改·update4.3.1update()与save()的区别4.3.2update......
  • 部署FaceChain项目
    项目背景:DataWhale组织的AIGC项目,零基础入门项目内容:零基础部署教程:酷蛙部署-三张照片拥有不一样的你FaceChain技术解析与使用演示让你拥有专属且万能的AI摄影师+AI修图师Hugging-SD:https://github.com/datawhalechina/hugging-sd嘉宾分享材料:https://datawhaler.feishu.......
  • 结对项目:用Python实现四则运算
    这个作业属于哪个课程计科1/2班这个作业要求在哪里结对项目这个作业的目标实现一个自动生成小学四则运算题目的命令行程序团队成员姓名学号梁昊东3121005000李铭伟3121004145github链接:https://github.com/e1ecb0t/e1ecb0t/tree/main/cacul......
  • mac添加个人菜单
    场景:习惯把自己的项目放到本机的projects文件夹中,虽然在finder里可以通过command+shift+h快捷键跳转到本机。但是始终还是觉得点击更方便一些1、打开finder2、左上角点击访达下拉菜单设置3、点击后选择侧边->勾选那个房子的图标,也就是想要的个人的菜单即可......
  • Vite+ts+springboot项目集成2
    项目集成集成element-plus官网地址:安装图标库pnpminstallelement-plus@element-plus/icons-vue入口文件main.ts全局安装element-plus,element-plus默认支持语言英语设置为中文importElementPlusfrom'element-plus';import'element-plus/dist/index.css'//@ts-ig......