zoukankan      html  css  js  c++  java
  • 结对编程1(201421123088,201421123063)

    码市地址:https://coding.net/u/DzXzz/p/GUI-operation

    1、题目描述:

    我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。

    2、需求分析:

    a、记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。

    这个由于我写的是winform, 所以考虑了两种实现,一种连接数据库;一种是文件流。由于我使用了datagridvie控件输出题目,又没有使用题库。就选择了文件流
    

    b、有计时功能,能显示用户开始答题后的消耗时间。

    查阅之后 c#有个Stopwatch类,直接调用方法就可以实现。
    

    c、界面支持中文简体/中文繁体/英语,用户可以选择一种;

    这个其实一开始我就是想着是用下拉式列表,加判定条件控制不同输出,后来发现好像不是这样解决的,查阅后感觉应该是利用From.Localizable 或者Form.Language解决
    但理解不深,之后学习再解决吧
    

    3、程序设计:

    大概流程:
    

    4、代码展示:

    计时器的代码很简单,调用Stopwatch类, 点击出题时开始,点击批改时结束,然后输出(中间代码行数有点多就不直接复制了) 
    ```
             Stopwatch watch = new Stopwatch();  //创建计时器
             watch.Start();          //开始计时
             watch.Stop();           //结束计时
             string time = watch.Elapsed.ToString();    //输出时间
    ```
    文件流主要通过这两个函数实现
    ```
         public int GetRows(string FilePath)
        {
            using (StreamReader read = new StreamReader(FilePath, Encoding.Default))
            {
                return read.ReadToEnd().Split('
    ').Length;        //返回行数
            }
        }
        public void Write(string path,string line)
        {
           
            StreamWriter sw = File.AppendText(path);
            //开始写入
            sw.Write(line);
            //清空缓冲区
            sw.Flush();
            //关闭流
            sw.Close();
            
        }
    ```
    然后判定写入错题加正确答案
    ```
         if (celldata == "错误")
                            {
                                string wrong = "";
                                for (int m = 1; m < 9; m++)
                                {
                                    wrong = wrong + this.dataGridView2.Rows[i].Cells[m].Value.ToString();
                                }
                                wrong = wrong + num6 + "/" + num7 + "
    ";
                                Write(path, wrong);
                            }
    
    ```
    ```
        int totalcount;
            totalcount = GetRows(path);            //获取行数
    ```
    还有就是文本框只能输入数字
    ```
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            //判断是否为数字
            //(char)8是允许退格键,可允许用户修改数字
            //其他输入清空文本框
            if (!(Char.IsNumber(e.KeyChar)) && e.KeyChar != (char)8) 
            {
                e.Handled = true;                  
            }
           
        }
    ```
    

    5、程序运行:

    6、小结感受:

    没学过vs,也没学过c# 这次主要是因为上次是使用c编写的,不想改成java所以花了一天时间看了c#快速入门,编程过程中也是不断的在学习。虽然功能基本实现,但是好丑啊,好像生成题目改成弹窗会好看的多...本来语言切换也写了 但是因为自己感觉不符合要求就删了(上文也说了)不过切实体会到c#好像很便利,以后要再研究研究。
    

    7、结对分工:

      这次编程方面主要以我上次的代码为主,一般是我在敲代码,队友在旁交流指导。碰到问题一起讨论可行性,感觉还是有用的,更能激发思维,毕竟我感觉编程逻辑比较重要。不过要求两个用户分别提交代码真的有些蛋疼...可能还是不习惯git管理代码吧
    

    8、PSP(Personal Software Process)表格

  • 相关阅读:
    国债预发行
    解决GDI+的DrawString绘制带有偏移的问题
    大数据量下查询显示优化方案小结
    《提高C++性能的编程技术》 读书笔记
    基金TA系统简介
    关于做对和做好的一点思考
    调试网络断线工作心得
    双目视觉简介
    PCL中outofcore模块---基于核外八叉树的大规模点云的显示
    深度相机Astra Pro测试教程
  • 原文地址:https://www.cnblogs.com/dzxzzz/p/6542394.html
Copyright © 2011-2022 走看看