Java 初级入门(编写一个简易考试系统)

import java.util.Scanner;

public class MyTestt_modify {
    public static void main(String[] args) {
        //根据流程分析,先定义变量
        //第一个变量:输出设备
        Scanner scanner=new Scanner(System.in);
        //第二个变量:姓名,考号,不清楚的变量内容只写类型+变量名,防止输出报错,赋初始值,这里的初始值为空""
        String name="";
        String no="";
        //第三个变量: 成绩,对于成绩,如果用户一个没有答对,就是0分,需要初始值
        int sum=0;
        //正式进入程序流程
//        输出语句是一个提示:1、 用户输入  准考证号  姓名 准考证号变量前面有,姓名变量前面有,前面没有名称随意
        System.out.println("请输入准考证号");
        no=scanner.next();
        //在java 数值中等于==,不等使用!=,任何字符只要有一个就报错,这里用或,目前只不允许3个符号
        if ( (no.indexOf("~")==-1) && (no.indexOf("!")==-1) && (no.indexOf("#")==-1)) {
            //程序结束,后面没有代码才结束,后面有代码是不能结束的,把思维反向,三个符号一个都没有,就进行程序

            System.out.println("请输入姓名");
            name = scanner.next();
//        2、   进入考试界面(1----数学,2----英语两门课)这种格式是命令行菜单
            System.out.println("************************************");
            System.out.println("          考  试  系  统 ");
            System.out.println(" 1--------------数学");
            System.out.println(" 2--------------英语");
            System.out.println("************************************");
//        3、   用户输入数学或者语文的代表数字,这里也接收数字的变量,这里没有全局
            System.out.println("请选择考试科目对应的序号:");
            String select_no = scanner.next();
            //判断用户选择的序号内容,因为是字符串,等于使用equals,如果是数值,直接使用双等,字符串一定加双引号
            if (select_no.equals("1")) {
                //        4、   系统出题(暂时题是固定的),限定选择题
                System.out.println("1+1=");
                System.out.println("A、1   B、2   C、算不出来   D、不确定");
                //        5、   用户输入答案,判断答案,对加10分,错不加分
                String ans1 = scanner.next();
                //考虑对英文字母的问题,一定考虑用户输入的大小写问题.toLowerCase()引入的目的确防止用户输入字母的大小写
                //转大写 toUpperCase
                //因为答案错误就不加分,所以if没有else
                if (ans1.toUpperCase().equals("B")) {
                    //选择正确加分,把sum变量加上10分,再给sum变量
                    sum = sum + 10;
                }
                //        6、   限定每个科目中两个题,
                //再定义另外一个题,先不考虑优化(重码率),把上面考题复制一份
                System.out.println("2+2=");
                System.out.println("A、4   B、2   C、算不出来   D、不确定");
                //答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
                String ans2 = scanner.next();
                //继续判断
                if (ans2.toUpperCase().equals("A")) {
                    //选择正确加分,把sum变量加上10分,再给sum变量
                    sum = sum + 10;
                }
                //7、最后输出成绩
                System.out.println("学号:" + no + ",姓名:" + name + ",成绩为:" + sum);
            } else if (select_no.equals("2")) {
                //        4、   系统出题(暂时题是固定的)
                //        5、   用户输入答案,判断答案,对加10分,错不加分
                //        6、   限定每个科目中两个题, 最后输出用户的考试成绩
                //题不同,逻辑相同
                //        4、   系统出题(暂时题是固定的),限定选择题
                System.out.println("this is _  apple.");
                System.out.println("A、a   B、an   C、the   D、/");
                //        5、   用户输入答案,判断答案,对加10分,错不加分
                String ans1 = scanner.next();
                //考虑对英文字母的问题,一定考虑用户输入的大小写问题.toLowerCase()引入的目的确防止用户输入字母的大小写
                //因为答案错误就不加分,所以if没有else
                if (ans1.toUpperCase().equals("B")) {
                    //选择正确加分,把sum变量加上10分,再给sum变量
                    sum = sum + 10;
                }
                //        6、   限定每个科目中两个题, 最后输出用户的考试成绩
                //再定义另外一个题,先不考虑优化(重码率),把上面考题复制一份
                System.out.println("I play _ piano");
                System.out.println("A、a   B、an   C、the   D、/");
                //答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
                String ans2 = scanner.next();
                //继续判断
                if (ans2.toUpperCase().equals("C")) {
                    //选择正确加分,把sum变量加上10分,再给sum变量
                    sum = sum + 10;
                }
                //7、最后输出成
                System.out.println("学号:" + no + ",姓名:" + name + ",成绩为:" + sum);
            } else {
                System.out.println("你选择了退出考试,没有参加任何一门课程的考试");
            }
            //因为if中的else有一个结束的语句,后面不要再有语句
            //考号判断合理的结束
        }
        //底部必须有两个大括号,程序调整都在两个大括号前
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我可以为您提供一个简单Java考试系统框架,您可以在此基础上进行开发和扩展。 1. 首先,您需要设计考试题目的数据结构,例如: ``` public class Question { private String question; private List<String> options; private int answer; // 构造函数 public Question(String question, List<String> options, int answer) { this.question = question; this.options = options; this.answer = answer; } // getter和setter方法 // ... } ``` 2. 接下来,您需要编写一个读取题目文件的方法,例如: ``` public static List<Question> readQuestions(String filePath) throws IOException { List<Question> questions = new ArrayList<>(); BufferedReader reader = new BufferedReader(new FileReader(filePath)); String line; while ((line = reader.readLine()) != null) { String[] parts = line.split(","); String question = parts[0]; List<String> options = Arrays.asList(parts[1], parts[2], parts[3], parts[4]); int answer = Integer.parseInt(parts[5]); questions.add(new Question(question, options, answer)); } reader.close(); return questions; } ``` 3. 然后,您需要编写一个考试界面,例如: ``` public static void main(String[] args) throws IOException { List<Question> questions = readQuestions("questions.csv"); int score = 0; Scanner scanner = new Scanner(System.in); for (int i = 0; i < questions.size(); i++) { Question question = questions.get(i); System.out.println("第" + (i+1) + "题:" + question.getQuestion()); for (int j = 0; j < question.getOptions().size(); j++) { System.out.println((j+1) + ". " + question.getOptions().get(j)); } System.out.print("请选择答案(1-4):"); int answer = scanner.nextInt(); if (answer == question.getAnswer()) { score++; } } System.out.println("您的得分是:" + score); } ``` 4. 最后,您需要将题目文件(例如questions.csv)放在与程序同一目录下,并按照以下格式编写题目: ``` 题目,选项1,选项2,选项3,选项4,答案 ``` 例如: ``` Java是哪种类型的编程语言?,面向对象,面向过程,函数式,命令式,1 ``` 这个程序只是一个简单考试系统框架,您可以根据自己的需要进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值