java打分系统

package com.ioTest;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Exem_Scode2 {

	@SuppressWarnings("resource")
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		File f1 = new File("F:\\exam02");// 创建操作目录的文件对象
		System.out.println("有多少人参见考试?");
		int personSum = input.nextInt(); // 从控制台获取本次考试的人数
		System.out.println("有多少题?");
		int tiSum = input.nextInt(); // 从控制台获取本次考试的题数

		/*
		 *
		 * 获得.txt文件所在目录的路径的字符串表达形式的数组
		 *
		 *
		 */
		String[] fPtah = f1.list();

		int a = 0;
		String[] path = new String[personSum];// 考试者提供的答案文件数组// 获得的.txt文件数组
		for (String str : fPtah) {
			System.out.println(str);
			if (str.endsWith(".txt")) {
				path[a] = "E:\\\\exam02\\\\" + str;
				a++;
			}
		}

		try {
			TestScore(personSum, tiSum, path);// 调用功能方法(实现自动打分,并统计正确率)
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void TestScore(int personSum, int tiSum, String[] fPtah) throws IOException {

		BufferedReader br = null;// 读人数
		BufferedReader br1 = null;// 读满分(正确答案,比对对象)
		BufferedWriter bw = null;// 写结果
		try {
			int sum = 0; // 记录每个人的总分
			int jige = 0;// 统计及格的人数
			int[] f = new int[tiSum];// 记录每题正确的题数
			bw = new BufferedWriter(new FileWriter("e:\\exam02\\score.bak", true));// 写结果

			for (int i = 0; i < fPtah.length; i++) {// 遍历每一个考试者的答案
				// System.out.println();
				br = new BufferedReader(new FileReader(fPtah[i]));// 读人数(考试者的答案),按行读取
				System.out.println("---------------");
				br1 = new BufferedReader(new FileReader("e:\\exam02\\满分.bak"));// 读满分(正确答案,比对对象),按行读取
				// System.out.println(files[i].getPath());
				for (int j = 0; j < tiSum; j++) {// 遍历每一行的答案
					if (br.readLine().trim().equals(br1.readLine().trim())) {// 比对每一行的答案判断是否相等
						sum += 5;// 累加每一个人的分数
						f[j]++;// 统计每题做对的人数
					}
					System.out.println("sum" + sum);// 测试语句
				}
				StringBuffer bs=new StringBuffer();
				bs.append((fPtah[i] + "  "+"成绩:" + sum + "分").replace("E:\\\\exam02\\\\", " ").replace(".txt", "")
						.trim());
				System.out.println(bs.toString());// 测试语句
				if (sum >= 60) {
					jige++;// 统计及格的人数
				}
				bw.write(bs.toString());// 把数据写入文件(答案日志)
				bw.newLine();
				sum = 0;// 把总分置空,等待下次累加
			}
			StringBuffer bs1=new StringBuffer();
			bs1.append("总人数" + fPtah.length + "\t" + "及格人数" + jige);
			bw.write(bs1.toString());// 把数据写入文件(答案日志)
			bw.newLine();

			/*
			 * 统计正确率 遍历每一题,统计每一题做对的人数,然后计算正确率输出
			 *
			 *
			 */
			StringBuffer bs2=null;;
			for (int k = 0; k < tiSum; k++) {
				bs2=new StringBuffer();
				System.out.println(f[k]);
				int t1 = (int) (f[k] / 20.0 * 100);// 计算正确率
				bs2.append("题" + (k + 1) + "正确率为" + t1 + "%");
//				String zql = "题" + (k + 1) + "正确率为" + t1 + "%";// 记录每一题的正确率
				bw.write(bs2.toString());// 把数据写入文件(答案日志)
				bw.newLine();// 换行
			}
			bw.flush();// 刷新缓冲区

		} finally {
			if (br1 != null) {
				br1.close();
			}
			if (br != null) {
				br.close();
			}
			if (bw != null) {
				bw.close();
			}
		}
	}
}

  

时间: 2024-08-24 08:22:38

java打分系统的相关文章

Java日志系统---Logger之简单入门

Java 中自带的日志系统,今天抽空了解了一点,算是入了门,所以将自己的一些心得记录下来,以备日后查看,有兴趣的朋友,看到此文章,觉得有错误或需要添加的地方,请在下方评论留言,大家可以共同进步,谢谢:) Java中关于日志系统的API,在 java.util.logging 包中,在这个包中,Logger类很重要. Logger类是用来记录 某个级别的日志消息: 级别共分为以下几类,从上倒下,级别依次下降: SEVERE(严重)------级别最高 WARNING(警告) INFO CONFIG

C++教程:竞技比赛打分系统源码

C语言培训C++教程这篇文章是介绍的:竞技比赛打分系统源码,这是一些小的程序,可能会用上,在这分享给大家! #include<stdio.h> #include<conio.h> #include<stdlib.h > #define JUDEGNUM 3 /* 裁判数 */ #define NAMELEN 20 /* 姓名最大字符数 */ #define CODELEN 10 /* 号码最大字符数 */ #define FNAMELEN 80 /* 文件名最大字符数

JAVA获得系统配置文件的System Properties

来个java获得系统配置文件的 public class SystemProperties { public static void main(String[] args) { Properties properties = System.getProperties(); Iterator<Entry<Object, Object>> iterator = properties.entrySet().iterator(); while (iterator.hasNext()) {

Java日志系统框架的设计与实现

推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程序状态记录.数据恢复等功能有重要作用 日志系统一般作为服务进程或者系统调用存在,我们一般程序中使用系统调用 常用日志系统包括log4j的简单介绍 日志系统的系统架构 日志系统的信息分级 日志输出的设计 下面是全文的引用: 在Java领域,存在大量的日志组件,open-open收录了21个日志组件.日

Java获取系统时间少了八个小时

Java获取系统时间少了八个小时 今天忽然遇到需要获取当前时间的问题,我向来谨慎,先测试获取到的系统时间是否正确,结果竟然发现少了八个小时,晕死了,记得之前在页面用javascript获取过当前时间,都能正确获取的.然后开始上网查,更晕了,答案各种各样,有用代码的方式(这肯定不行,因为程序不只要在自己的机子上跑的),也有修改eclipse和tomcat安装文件的,更有修改注册表的,NND,还真不知要用哪个,后来,终于找到一个,说问题出在JRE上,我很认同,一试,果然行!下面附上步骤,希望给遇到同

Docker学习笔记三:Docker部署Java web系统

Docker部署Java Web系统 1.在root目录下创建一个路径test/app mkdir test && cd test&& mkdir app &&cd app 2.将apache-tomcat-7.0.29.tar.gz及jdk-7u25-linux-x64.tar.gz拷贝 到app目录下 3.解压两个tar.gz文件 tar -zxvf apache-tomcat-7.0.29.tar.gz tar -zxvf jdk-7u25-linux

java权限系统实现篇

以ssh框架来解释权限系统 首先在struts.xml里面配置2个拦截器栈, 第一个是登陆拦截器栈,没有登陆的用户就会被拦截,提示其登陆 <!-- begin intercepter --> <package name="haslogin" namespace="/" extends="json-default"> <interceptors> <interceptor name="loginI

用于考核、评价的投票打分系统解决方案

1.前言 前段时间,接到上级信息化主管部门一个任务,让我们基于几份考核.评价打分的需求,做个投票打分系统建设方案,报下工作量. 开始时,信息化部门相关管理人员给我提供了两个部门的,共计5张评估打分表,要求把评价打分系统做成灵活配置的系统,基本达到其他部门再提出类似的评估打分需求时,维护人员通过配置就实现新的评价打分业务. 我也认为合理,重复.类似的信息化需求,就应合并.统一考虑.集中建设,而且要考虑未来的发展.因此,在同事们的协助下,报给用户11.7人月的工作量. 主要规划功能清单如下: 5月2

如何使用Java读写系统属性?

如何使用Java读写系统属性? 读: Properties props = System.getProperties(); Enumeration prop_names = props.propertyNames(); while (prop_names.hasMoreElements()) { String prop_name = (String) prop_names.nextElement(); String property = props.getProperty(prop_name);