java案例开发考试系统中的数据交互模块的主要类

 package com.ltb.entity;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.io.*;
import com.ltb.Utils.Config;
/**此类是考试系统的一个子模块。关于数据的交互。
*此模块实现了文件中的数据读取没有数据的操作
*/
public class EntityContext {
 private Map<Integer,List<Question>> questions=new HashMap<Integer,List<Question>>();//试题库
 private Map<Integer,User> users=new HashMap<Integer,User>();//用户集
 private Config config;//文件的配置类
 //构造器
 public EntityContext(){}
 //重写构造方法
 public EntityContext(Config config){
  this.config=config;
  LoadUser();
  LoadQuestion();
 }
 //对用户的写入
 private void LoadUser(){
  String filename=config.getString("UserFile");
  try{
  BufferedReader in=new BufferedReader(
    new InputStreamReader(
      new FileInputStream(filename),"gbk"));
  String str;
  
  while((str=in.readLine())!=null){
   if(str.trim().equals("")||str.startsWith("#")){
    continue;
   }
   User u=paserUser(str);
   users.put(u.getId(), u);
  }
  }catch(IOException e){
   e.printStackTrace();
  }
  
 }
 //用户从文件中的读取
 private  User paserUser( String str){
  String[]data=str.split(":");
  User u=new User();
  u.setId(Integer.parseInt(data[0]));
  u.setName(data[1]);
  u.setPwd(data[2]);
  u.setTelephone(data[3]);
  u.setEmail(data[4]);
  return u;
 }
 //从题库集合中根据提的级别得到试题
 public List<Question> getquestion(int key){
  return new ArrayList<Question>(questions.get(key));
 }
 //加载试题
 public void LoadQuestion(){
  String filename=config.getString("QuestionFile");
  try{
  BufferedReader in=new BufferedReader(
    new InputStreamReader(
      new FileInputStream(filename),"gbk"));
  String str;
  while((str=in.readLine())!=null){
   Question q;
   if(str.startsWith("@")){
     q=paresQuestion(str);
    q.setTitle(in.readLine());
    q.getOptions().add(in.readLine());
    q.getOptions().add(in.readLine());
    q.getOptions().add(in.readLine());
    q.getOptions().add(in.readLine());
    putQuestion(q);
   }
   
  }
  
     }catch(IOException e){
  e.printStackTrace();
     }
 }
 private Question paresQuestion(String str) {
  String[] data=str.split("[@,][a-z]+=");
  Question q=new Question();
  List<Integer> answer=getanswer(data[1]);
  q.setAnswer(answer);
  q.setScore(Integer.parseInt(data[2]));
  q.setLevel(Integer.parseInt(data[3]));
  return q;
 }
 private List<Integer> getanswer(String str){
  List<Integer> answers=new ArrayList<Integer>();
  String[]data=str.split("/");
  for(String s:data){
  answers.add(Integer.parseInt(s));
  }
  return answers;
 }
 //将读取的题存入题集合中
 private void putQuestion(Question q){
  List<Question> question=questions.get(q.getLevel());
  if(question==null){
   question=new ArrayList<Question>();
  }
  question.add(q);
  questions.put(q.getLevel(), question);
 }
 public  User getUser(int id){
  if(users.get(id)==null){
   return null;
  }
  return users.get(id);
 }
}

此模块中还有用户类,试题类,考试信息类。题信息类。如有读者需要请给我留意我会发到你的邮箱里或者去CSDN下载。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值