基本信息
源码名称:用于班级评分,个人评分的评分器
源码大小:0.24M
文件格式:.rar
开发语言:C#
更新时间:2016-03-09
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 3 元×
微信扫码支付:3 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
自己做的用于班级评分,个人评分的评分器
自己做的用于班级评分,个人评分的评分器
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; namespace Super评分器 { public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); } List<string> answer = new List<string>(); //存储标准答案 List<string> students = new List<string>(); //存储答题卡答案 List<string> index = new List<string>(); //存储标记的重要题号 List<peoples> people = new List<peoples>(); //参考名单 int danxuan; //标记单选题个数 int duoxuan; //标记多选题个数 double totalScores; //总分 int number; //错题数 string peopleName; /// <summary> /// 加载标准答案 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { try { OpenFileDialog f = new OpenFileDialog(); if (f.ShowDialog() == DialogResult.OK) { string name = f.SafeFileName; if (name.Substring(name.IndexOf(".")) == ".txt") { answer.Clear(); string[] Answers = File.ReadAllLines(f.FileName); for (int i = 0; i < Answers.Length; i ) { answer.Add((Answers[i].Substring(Answers[i].LastIndexOf(")") 1)).ToUpper()); } richTextBox1.AppendText("标准答案加载完毕....\n"); decide(); this.label1.Text="共" (Convert.ToDouble(numericUpDown1.Value) * danxuan).ToString() "分"; this.label2.Text = "共" (Convert.ToDouble(numericUpDown2.Value) * duoxuan).ToString() "分"; } else { MessageBox.Show("文件格式不正确!"); } } } catch (Exception ex) { MessageBox.Show("异常:" ex.Message); } } //加载答题卡 private void button2_Click(object sender, EventArgs e) { OpenFileDialog f = new OpenFileDialog(); if (f.ShowDialog() == DialogResult.OK) { //获取文件名 (SafeFileName) string name = f.SafeFileName; if (name.Substring(name.IndexOf(".")) == ".txt") { students.Clear(); string[] studentsAnswer = File.ReadAllLines(f.FileName); for (int i = 0; i < studentsAnswer.Length; i ) { students.Add((studentsAnswer[i].Substring(studentsAnswer[i].LastIndexOf(")") 1)).ToUpper()); } richTextBox1.AppendText("答题卡加载完毕......\n"); } else { MessageBox.Show("文件格式不正确!"); } } } //评分 private void button3_Click(object sender, EventArgs e) { people.Clear(); spellScores(); } //计算每个人的分数 private void spellScores() { peoples P = new peoples(); if (P.nums == null) { P.nums = new List<int>(); } P.name = peopleName; #region totalScores = 0; number = 0; if (answer.Count == 0 || students.Count == 0) { MessageBox.Show("请先加载完毕答题卡和标准答案!"); return; } if (!isRight()) { return; } for (int i = 0; i < answer.Count; i ) { double naoScore = totalScores; if (students[i] == "") { string pp=collection(i 1); richTextBox1.AppendText(string.Format("第{0}题:{1}\t×\t标准答案为{2}\t\t{3}\n", (i 1), students[i], answer[i],pp) ); if (collection(i 1) == "★") { P.nums.Add(i 1); P.count ; } number ; continue; } else { if (answer[i].Length > 1) { string[] scores = charAnswer(students[i]); if (scores.Length == answer[i].Length) { #region foreach (string item in scores) { if (answer[i].IndexOf(item) == -1) { totalScores = naoScore; richTextBox1.AppendText(string.Format("第{0}题:{1}\t×\t标准答案为{2}\t\t{3}\n", (i 1), students[i], answer[i], collection(i 1))); if (collection(i 1) == "★") { P.nums.Add(i 1); P.count ; } number ; break; } else { totalScores = Convert.ToDouble(numericUpDown2.Value) / answer[i].Length; if (item == scores[scores.Length - 1]) { richTextBox1.AppendText(string.Format("第{0}题:{1}\t√\n", (i 1), students[i])); } } } #endregion } else { foreach (string item in scores) { if (answer[i].IndexOf(item) == -1) { totalScores = naoScore; richTextBox1.AppendText(string.Format("第{0}题:{1}\t×\t标准答案为{2}\t\t{3}\n", (i 1), students[i], answer[i], collection(i 1))); if (collection(i 1) == "★") { P.nums.Add(i 1); P.count ; } number ; break; } else { totalScores = Convert.ToDouble(numericUpDown2.Value) / answer[i].Length; if (item == scores[scores.Length - 1]) { richTextBox1.AppendText(string.Format("第{0}题:{1}\t乄\t标准答案为{2}\t\t{3}\n", (i 1), students[i], answer[i], collection(i 1))); if (collection(i 1) == "★") { P.nums.Add(i 1); P.count ; } number ; } } } } } else { if (students[i] == answer[i]) { totalScores = Convert.ToDouble(numericUpDown1.Value); richTextBox1.AppendText(string.Format("第{0}题:{1}\t√\n", (i 1), students[i])); } else { richTextBox1.AppendText(string.Format("第{0}题:{1}\t×\t标准答案为{2}\t\t{3}\n", (i 1), students[i], answer[i], collection(i 1))); if (collection(i 1) == "★") { P.nums.Add(i 1); P.count ; } number ; } } } } ////richTextBox1.AppendText("第" (i 1) "题:" students[i] " √" "\n"); //richTextBox1.AppendText(string.Format("第{0}题:{1}\t×\t标准答案为{2}\n", (i 1), students[i], answer[i])); P.result = Convert.ToDouble(string.Format("{0:F}", totalScores)); people.Add(P); richTextBox1.AppendText("错题数:" number "\n"); richTextBox1.AppendText("总分为:" string.Format("{0:F}", totalScores) "分\n"); //0表占位符,F表保留两位小数,F3表保留3位小数 #endregion } //多选题答案解刨区 private string[] charAnswer(string score) { string[] scores=new string[score.Length]; for (int i = 0; i < score.Length; i ) { scores[i] = score.Substring(i,1); } return scores; } private void FrmMain_Load(object sender, EventArgs e) { } //判断多选和单选题个数 private void decide() { duoxuan = 0; danxuan = 0; foreach (string item in answer) { if (item.Length > 1) { duoxuan ; } else { danxuan ; } } label5.Text = "单选题共 " danxuan " 题"; label6.Text = "多选题共 " duoxuan " 题"; label7.Text = "本套试卷共 " answer.Count " 题"; } /// <summary> /// 评分前进行分值检查 /// </summary> private bool isRight() { if ((Convert.ToDouble(numericUpDown1.Value.ToString()) * danxuan Convert.ToDouble(numericUpDown2.Value.ToString()) * duoxuan) == 100) { return true; } MessageBox.Show("分值分配不实际!"); return false; } private void numericUpDown1_ValueChanged(object sender, EventArgs e) { this.label1.Text = "共" (Convert.ToDouble(numericUpDown1.Value) * danxuan).ToString() "分"; } private void numericUpDown2_ValueChanged(object sender, EventArgs e) { this.label2.Text ="共" (Convert.ToDouble(numericUpDown2.Value) * duoxuan).ToString() "分"; } private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (checkBox1.Checked) { if (answer.Count > 0) { for (int i = 1; i <= answer.Count; i ) { this.checkedListBox1.Items.Add(i.ToString()); } this.Width = 845; } else { MessageBox.Show("请先加载答题卡"); checkBox1.Checked = false; } } else { checkedListBox1.Items.Clear(); this.Width = 700; } } private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e) { } //班级评分 private void button4_Click(object sender, EventArgs e) { people.Clear(); if (answer.Count > 0) { string path = ""; FolderBrowserDialog a = new FolderBrowserDialog(); if (a.ShowDialog() == DialogResult.OK) { path = a.SelectedPath; } if (path != "") { DirectoryInfo ss = new DirectoryInfo(path); FileInfo[] fi = ss.GetFiles(); foreach (FileInfo item in fi) { peopleName = item.Name.Substring(0, item.Name.Length - 3); students.Clear(); string[] studentsAnswer = File.ReadAllLines(item.FullName); for (int i = 0; i < studentsAnswer.Length; i ) { students.Add((studentsAnswer[i].Substring(studentsAnswer[i].LastIndexOf(")") 1)).ToUpper()); } spellScores(); richTextBox1.AppendText("姓名:" item.Name.Substring(0, item.Name.Length - 3) "\n\n\n"); } } } else { MessageBox.Show("请先添加答题卡!"); return; } foreach (peoples item in people) { string namess = ""; foreach (int item0 in item.nums) { namess = item0 ","; } richTextBox1.AppendText(string.Format("姓名:{0}\t标记并做错的号题:{1}\t共{2}题\t总分:{3}\n\n",item.name,namess,item.count,item.result)); } double sumScores = 0; foreach (peoples item in people) { sumScores = item.result; } richTextBox1.AppendText("班级平均分:" sumScores/people.Count "\n"); } private void button5_Click(object sender, EventArgs e) { this.richTextBox1.Text = null; } /// <summary> /// 摘取标记的重要题号 /// </summary> private string collection(int j) { for (int i = 0; i < checkedListBox1.CheckedIndices.Count; i ) { index.Add(checkedListBox1.Items[checkedListBox1.CheckedIndices[i]].ToString()); } foreach (string items in index) { if (j == Convert.ToInt32(items)) { return "★"; } } return ""; } } }