蔡少杭 201421122111
许祈瑶 201421122094
项目开发的coding.net 地址:https://coding.net/u/xqy923/p/HomeWork3/git
在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI,成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:
主要功能分为:生成题目、记录对错数、计时、语言切换。其中计算使用的是第一次作业中的生成四则运算表达式的方式。对错数打算是用文件记录,每次运行的开始时候先从文件读取对错数,每次答对答错都会对对错数进行修改。计时功能,当用户点击开始按钮开始答题时开始计时,结束答题或者答完所有题目后停止计时,使用的是C#中设置事件触发时间间隔的方式。语言切换默认开始是中文,当用户选择对应的语言的时候会做相应的切换,计划使用切换配置文件的方式来修改所有控件的文本。
记录和读取对措数
- if (!File.Exists(@"E:\\result.txt")) {
- FileStream fss = new FileStream("E:\\result.txt", FileMode.Create);
- StreamWriter sww = new StreamWriter(fss);
- //开始写入
- sww.WriteLine("0");
- sww.WriteLine("0");
- //清空缓冲区
- sww.Flush();
- //关闭流
- sww.Close();
- fss.Close();
- }
- FileStream fs = new FileStream("E:\\result.txt", FileMode.Open, FileAccess.Read);
- StreamReader read = new StreamReader(fs, Encoding.Default);
- string strReadline;
- while ((strReadline = read.ReadLine()) != null) {
- result_list.Add(strReadline);
- }
- read.Close();
- fs.Close();
- right_number = Convert.ToInt32(result_list[0]);
- wrong_number = Convert.ToInt32(result_list[1]);
- this.right_show_text.Text = right_number.ToString();
- this.wrong_show_text.Text = wrong_number.ToString();
- Program.right_wrong_init(right_number, wrong_number);
修改对错数
- if (question_num <a)
- {
- if (is_count)
- {
- is_count = false;
- this.anwser.Text = "";
- Program.gen();
- question_num++;
- this.count_text.Text = "第" + question_num.ToString() + "题";
- this.label7.Text = Program.getNum();
- }
- else
- {
- Program.gen();
- question_num++;
- this.count_text.Text = "第" + question_num.ToString() + "题";
- this.label7.Text = Program.getNum();
- this.right_show_text.Text = Program.get_right_count().ToString();
- Program.add_wrong_count();
- this.wrong_show_text.Text = Program.get_wrong_count().ToString();
- FileStream fs3 = new FileStream("E:\\result.txt", FileMode.Create);
- StreamWriter sw3 = new StreamWriter(fs3);
- //开始写入
- sw3.WriteLine(Program.get_right_count().ToString());
- sw3.WriteLine(Program.get_wrong_count().ToString());
- //清空缓冲区
- w3.Flush();
- //关闭流
- sw3.Close();
- fs3.Close();
- }
计时
- public Form1() {
- InitializeComponent();
- //timer控件可用
- this.timer1.Enabled = true;
- //设置timer控件的Tick事件触发的时间间隔
- this.timer1.Interval = 1800;
- //停止计时
- this.timer1.Stop();
- }
//开始计时 this.timer1.Start();
- private void timer1_Tick(object sender, EventArgs e)
- {
- second_r++;
- if (second_r > 9)
- {
- second_r = 0;
- secend_l++;
- }
- if (secend_l > 5)
- {
- secend_l = 0;
- minute_r++;
- }
- if (minute_r > 9)
- {
- minute_r = 0;
- minute_l++;
- }
- time = minute_l.ToString()+minute_r.ToString()+":" +secend_l.ToString()+second_r.ToString();
- this.time_show_text.Text = time;
- }
1.主界面
2.开始之前必须输入题目数和表达式中数的运算范围,不大于这个值
3.开始答题,同时开始计时,答错答对的题数是提取自文件的,随着用户的答题结果而发生变化
4.用户输入答案,点击确定进行比较,正确就答对题数加1,错误就答错题数加1,然后点击下一题换题目
5.题目做完或者结束答题,结束计时
给我最大的感受就是团队协作真的有一加一大于二的效果,可以学习队友的思路和思考问题的方式等,为自己思考问题开拓新的思路。
1.先来一片面包, 做好铺垫, 我和队友是刚刚接触,不过对方实力强悍,所以在队友的带领下,我们互相了解了彼此的长处短处,沟通后按照老师要求开始展开计划。
2.再把肉放上, 到了这个阶段,我和队友开始有了一些交流和思想上的碰撞,觉得队友往往想的比我周到和细致,一般都是队友充当领航者的身份。我们也是互相都提出了各自的疑问,我们先会讨论这次需要做什么,然后各自去完成,接着做的差不多了,我们再把问题放到一起讨论,也在网上查询了下,最后得出彼此都能接受和符合要求的结果,这样更容易发现问题和解决问题,发挥出结对编程1+1>2的作用出来。
3.然后再来一片面包, 到了最后这个阶段,彼此也从中受到鼓励和启发,期待下一次的合作之旅。对于本次结对编程是否真的能够带来1+1>2的效果,我现在有了深刻的体会,两个人一起编程可以相互激励、共同进步;在结对编程中会发现队友在编程中的许多好的习惯和方法,也提高了自己的编程能力;结对编程更适用于解决方向性的问题;结对编程中双方的互动可以利于思维的开启,收获颇多。
1.阅读作业的要求,确定这次作业的所有需求。
2.根据任务量和各自熟悉的领域划分,各自负责对应的功能模块。
3.制定编码规范,约定参数传递的方式,使用的语言,环境,开发模式等等。
4.开始各自的开发,期间遇到难以解决的问题就提出,共同讨论和解决。
5.完成各自功能模块后,整合代码,解决整合过程中遇到的问题。
6.测试程序,排查BUG。
PSP2.1 | Personal Software Process Stages | Time Senior Student | Time |
Planning | 计划 | 20 | 15 |
· Estimate | 估计这个任务需要多少时间 | 24 | 20 |
Development | 开发 | 500 | 650 |
· Analysis | 需求分析 (包括学习新技术) | 30 | 60 |
· Design Spec | 生成设计文档 | 30 | 10 |
· Design Review | 设计复审 | 30 | 15 |
· Coding Standard | 代码规范 | 20 | 20 |
· Design | 具体设计 | 25 | 32 |
· Coding | 具体编码 | 200 | 350 |
· Code Review | 代码复审 | 20 | 25 |
· Test | 测试(自我测试,修改代码,提交修改) | 30 | 25 |
Reporting | 报告 | 30 | 45 |
· | 测试报告 | 25 | 15 |
· | 计算工作量 | 20 | 12 |
· | 并提出过程改进计划 | 20 | 10 |
结对编程
来源: http://www.bubuko.com/infodetail-2362018.html