zoukankan      html  css  js  c++  java
  • 计算器软件实现系列(二)初步代码实现

    一 实现思路

    1 用户可以自由先编写试题,编写完毕后,可以现做,也可以保存后隔日再写

    2 试题编写完毕后,转到计算页面,先导入试题或者打开试题,然后在对时间等进行相关设置

    3 计算完毕后,系统将自动给出做题的情况,当然用户也可以单击结束按钮结束

    4 用户可以根据自身情况,可以单击显示隐藏答案按钮,进行对答案的比对

    二 代码的书写

    form1

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    
    namespace shuxuefudao
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            string path = "E:
    tf";
            public static int Count = 0; // 题目出的数量
            public static int zuode = 0; //做的题目数量
            public static int zhengque = 0;
            public static int lefttime;
            public static int time;
            public static int sum;
            int i =0;
            private void Form1_Load(object sender, EventArgs e)
            {
              
            }
            private void open_Click(object sender, EventArgs e) //打开文件的方法
            {
                OpenFileDialog TxTOpenDialog = new OpenFileDialog();
                TxTOpenDialog.Filter = "RTF文件(*.RTF)|*.RTF";
                if (TxTOpenDialog.ShowDialog() == DialogResult.OK)
                {
                    path = TxTOpenDialog.FileName;
                    this.richTextBox1.LoadFile(TxTOpenDialog.FileName, RichTextBoxStreamType.RichText);
                    save.Enabled = false;
                    open.Enabled = false;
                    MessageBox.Show("读取成功", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
            }
    
            private void save_Click(object sender, EventArgs e) //保存文件的方法
            {
                SaveFileDialog TxtSaveDialog = new SaveFileDialog();
                TxtSaveDialog.Filter = "RTF文件(*.RTF)|*.RTF";
                if (File.Exists(path))
                {
    
                    this.richTextBox1.LoadFile(path, RichTextBoxStreamType.RichText);
                    MessageBox.Show("保存成功", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    this.richTextBox1.Clear();
                    save.Enabled = false;
                }
                else
                {
                    if (TxtSaveDialog.ShowDialog() == DialogResult.OK)
                    {
    
                        this.richTextBox1.SaveFile(TxtSaveDialog.FileName, RichTextBoxStreamType.RichText);
                        MessageBox.Show("保存成功", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        this.richTextBox1.Clear();
                        save.Enabled = false;
                    }
                }
            }
    
            private void richTextBox1_TextChanged(object sender, EventArgs e)
            {
                save.Enabled = true;
                if (this.richTextBox1.Text == "" || this.richTextBox1.Text == null)
                {
                    open.Enabled = true;
                }
            }
            private void open2_Click(object sender, EventArgs e) //打开试题的方法
            {
                OpenFileDialog TxTOpenDialog = new OpenFileDialog();
                TxTOpenDialog.Filter = "RTF文件(*.RTF)|*.RTF";
                if (TxTOpenDialog.ShowDialog() == DialogResult.OK)
                {
                    path = TxTOpenDialog.FileName;
                    this.richTextBox2.LoadFile(TxTOpenDialog.FileName, RichTextBoxStreamType.RichText);
                    save.Enabled = false;
                    open.Enabled = false;
                    MessageBox.Show("打开成功", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
            }
    
            private void daoru_Click(object sender, EventArgs e) //导入试题的方法
            {
                richTextBox2.Text = richTextBox1.Text;
            }
    
            private void daan1_Click(object sender, EventArgs e)
            {
                if (daan1.Text == "显示答案")
                {
                    daan.PasswordChar = Convert.ToChar(0);
                    daan1.Text = "隐藏答案";
                }
                else if (daan1.Text == "隐藏答案")
                {
                    daan.PasswordChar = '.';
                    daan1.Text = "显示答案";
    
                }
            }
    
            private void kaishi_Click(object sender, EventArgs e)
            {
                string[] ll = new string[100];
                ll = File.ReadAllLines("writer.txt");
                textBox1.Text = ll[0];
                string[] lli = new string[100];
                lli = File.ReadAllLines("writer1.txt");
                textBox2.Text = lli[0];
                string[] llp = new string[100];
                llp = File.ReadAllLines("writer2.txt");
                textBox3.Text = llp[0];
                int minute;
                try
                {
                    minute = int.Parse(this.shijian.Text);
                }
                catch (System.Exception ex)
                {
                    this.shijian1.Text = "输入错误";
                    return;
                }
                lefttime = minute;
                this.timer1.Interval = 1000;
                this.timer1.Enabled = true;
                this.timer1.Start();
    
            }
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                time = Convert.ToInt32(shijian.Text);
                if (lefttime <= 0)
                {
                    timer1.Enabled = false;
                    MessageBox.Show("答题时间到!");
                    textBox4.Enabled = false;
                    Form2 frm2 = new Form2();
                    frm2.ShowDialog();
                }
                this.shijian1.Text = "剩余时间" + lefttime.ToString() + "";
                lefttime--;  
            }
    
            private void jieshu_Click(object sender, EventArgs e)
            {
                Form2 frm2 = new Form2();
                frm2.ShowDialog();
            }
    
            private void button1_Click(object sender, EventArgs e) //请编辑下道题的事件
            {
                Count++;
                ti.Text = Count.ToString();
                StreamWriter writer = File.AppendText("writer.txt");
                writer.WriteLine(left.Text);
                writer.Close();
                StreamWriter writer1 = File.AppendText("writer1.txt");
                writer1.WriteLine(fuhao.Text);
                writer1.Close();
                StreamWriter writer2 = File.AppendText("writer2.txt");
                writer2.WriteLine(right.Text);
                writer2.Close();
                richTextBox1.Text += left.Text + fuhao.Text + right.Text + label2.Text + "" + "
    ";
                left.Clear();
                fuhao.Clear();
                right.Clear();
            }
            private void textBox4_KeyDown(object sender, KeyEventArgs e)
            {   
                string m = textBox2.Text;
                int result;
                switch (m)
                {
                    case "+":
                        sum = int.Parse(textBox1.Text) + int.Parse(textBox3.Text);
                        
                        break;
                    case "-":
                        sum = int.Parse(textBox1.Text) - int.Parse(textBox3.Text);
                       
                        break;
                    case "*":
                        sum = int.Parse(textBox1.Text) * int.Parse(textBox3.Text);
                       
                        break;
                    case "/":
                        sum = int.Parse(textBox1.Text) / int.Parse(textBox3.Text);
                        
                        break;
                    default:
                        break;
                }
                
                if (e.KeyCode == Keys.Enter)
                {
                   
                    if (int.TryParse(textBox4.Text, out result) == false)
                    {
                        MessageBox.Show("请输入数字");
                    }
                    daan.Text += sum + "
    ";
                    if (textBox4.Text == sum.ToString())
                    {
                        MessageBox.Show("回答正确");
                        zuode++;
                        zhengque++;   
                    }
                    else
                    {
                        MessageBox.Show("回答错误");
                        zuode++;
                    }
                    i++;
                    textBox4.Clear();
                    string[] ll = new string[100];
                    ll = File.ReadAllLines("writer.txt");
                    textBox1.Text = ll[i];
                    string[] lli = new string[100];
                    lli = File.ReadAllLines("writer1.txt");
                    textBox2.Text = lli[i];
                    string[] llp = new string[100];
                    llp = File.ReadAllLines("writer2.txt");
                    textBox3.Text = llp[i];
                    if (ll.Count() == i)
                    {
                        Form2 frm = new Form2();
                        frm.ShowDialog();
                    }
                                  
                }   
            }
            private void button2_Click(object sender, EventArgs e) //清空上次编辑试题的方法
            {
                qita aaa = new qita();
                aaa.qingkong();
            }
            private void button3_Click(object sender, EventArgs e) //退出程序的方法
            {
                Application.Exit();
            }
        }
    }

    form2

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace shuxuefudao
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
    
            private void Form2_Load(object sender, EventArgs e)
            {
                textBox6.Text = Form1.zuode.ToString();
                textBox1.Text = Form1.zhengque.ToString();
                textBox2.Text = ((Form1.zuode - (double)(Form1.zhengque))).ToString();
                textBox3.Text = ((Form1.zhengque / (double)(Form1.zuode)) * 100).ToString("f2") + "%";
            }
    
            
        }
    }

    qita类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    
    namespace shuxuefudao
    {
        class qita
        {
             
            public void qingkong()
            {
                File.WriteAllText("writer.txt", string.Empty);
                File.WriteAllText("writer1.txt", string.Empty);
                File.WriteAllText("writer2.txt", string.Empty);
            }
           
            
        }
    }

    三 说明

     1 针对老师所说的对代码进行类的封装,由于本代码中牵扯大多数控件,这样引用不知道多程序有影响没有,所以,我仅对没有牵扯控件的代码进行了类的封装

     2 本程序还有一个小问题,最后一道题的读取时会溢出数组,我也进行了相关的检查,至今还没有找到错误,自我感觉是程序逻辑问题,还请老师指导,谢谢!

  • 相关阅读:
    【分享】马化腾:产品设计与用户体验
    《JavaScript高级程序设计》读书笔记(八):Function类及闭包
    《JavaScript高级程序设计》阅读笔记(七):ECMAScript中的语句
    SET XACT_ABORT各种用法及显示结果
    发布一款域名监控小工具——Domain(IP)Watcher
    【转】C#正则表达式整理备忘
    《JavaScript高级程序设计》阅读笔记(一):ECMAScript基础
    Entity Framework多对多关系实践(manytomany)
    jQuery插件原来如此简单——jQuery插件的机制及实战
    《JavaScript高级程序设计》阅读笔记(二):ECMAScript中的原始类型
  • 原文地址:https://www.cnblogs.com/wyh19941210/p/4955966.html
Copyright © 2011-2022 走看看