计算器软件实现系列(二)初步代码实现

一 实现思路

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:\rtf";
        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 + "" + "\n";
            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 + "\r\n";
                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 本程序还有一个小问题,最后一道题的读取时会溢出数组,我也进行了相关的检查,至今还没有找到错误,自我感觉是程序逻辑问题,还请老师指导,谢谢!

转载于:https://www.cnblogs.com/wyh19941210/p/4955966.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值