从个人项目出发,将程序改造成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:
- 自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。
- 用户可以输入答案
- 若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。
八个可扩展方向:
- 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3
- 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
- 用户答题结束以后,程序可以显示用户答题所用的时间
- 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
- 用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名
- 程序可以出单个整数阶乘的题目:如:4!=24
- 程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。
- 程序可以设置皮肤功能,可以改变界面的颜色即可。
第二部分:开发环境
第三部分:实现与统计图
1.统计图
PSP2.1
|
Personal Software Process Stages
|
Time Senior Student(h)
|
Time(h)
|
Planning
|
计划
|
0.2
|
0.1
|
· Estimate
|
估计这个任务需要多少时间
|
8
|
10
|
Development
|
开发
|
1
|
1.5
|
· Analysis
|
需求分析 (包括学习新技术)
|
1
|
5
|
· Design Spec
|
生成设计文档
|
0
|
0
|
· Design Review
|
设计复审
|
0
|
0
|
· Coding Standard
|
代码规范
|
0.1
|
0.1
|
· Design
|
具体设计
|
0.2
|
0.2
|
· Coding
|
具体编码
|
3
|
5
|
· Code Review
|
代码复审
|
0
|
0
|
· Test
|
测试(自我测试,修改代码,提交修改)
|
0.5
|
1
|
Reporting
|
报告
|
0
|
0
|
Test Report
|
测试报告
|
0
|
0
|
·workload
|
计算工作量
|
8
|
10
|
·correction
|
并提出过程改进计划
|
1
|
|
2.功能实现
1
2
3
4
5
6
7
8
9
10
11
|
JLabel name= new JLabel( "用户名" ,JLabel.RIGHT);
pan2.add(name);
TextField tf_name= new TextField( 20 );
pan2.add(tf_name);
JLabel pass = new JLabel( "密 码" ,JLabel.RIGHT);
pan3.add(pass);
TextField password= new TextField( 20 );
password.setEchoChar( '*' );
pan3.add(password);
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
b_log.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e) {
String myUsername=tf_name.getText();
String myPassword=password.getText();
if (myUsername.equals( "root" )&& myPassword.equals( "123456" )){
JOptionPane.showMessageDialog( null , "登陆成功!" );
frameLogin.dispose();
jieMian CK= new jieMian();
}
else {
JOptionPane.showMessageDialog( null , "账号或密码错误!" );
name.setText( "" );
password.setText( "" );
}
}
});
|
1
2
3
4
5
6
7
|
case 4 :
sum= 1 ;
T2.setText(d+ "!" );
for ( int i = 1 ; i<=d;i++){
sum=sum*i;
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
boolean backgroundNumber= true ;
B4.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (backgroundNumber== true ){
panel.setBackground(Color.CYAN);
panel2.setBackground(Color.CYAN);
panel1.setBackground(Color.cyan);
backgroundNumber= false ;
} else {
panel.setBackground(Color.red);
panel2.setBackground(Color.red);
panel1.setBackground(Color.red);
backgroundNumber= true ;
}
}
});
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
switch (first){
case 0 :
switch (second){
case 0 :
sum=a+b+c;
suanshi=fushu(a,suanshi);
suanshi=suanshi+ "+" ;
suanshi=suanshi+fushu(b,suanshi);
suanshi=suanshi+ "+" ;
suanshi=suanshi+fushu(c,suanshi);
T2.setText(suanshi);
break ;
private static String fushu( int a,String suanshi) {
if (a< 0 ) {
suanshi = "(" + a + ")" ;
}
else {
suanshi = "" + a;
}
return suanshi;
}
|
1
2
3
4
5
6
7
8
9
|
tishu=Integer.parseInt(T1.getText());
if (tishu> 5 ){
JOptionPane.showMessageDialog( new JFrame().getContentPane(),
"题数不能大于5" ,
"四则运算" , JOptionPane.INFORMATION_MESSAGE);
T1.setText( "" );
tishu=Integer.parseInt(T1.getText());
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
timer.schedule( new TimerTask()
{
public void run() {
finishTime =System.currentTimeMillis();
duration= finishTime - startTime;
if (duration/ 1000 == 120 && summary<tishu)
{
frame.setVisible( false );
}
String str=df.format( new Date(duration));
T5.setText(str);
}
}, 1000 , 1000 );
|
1
2
3
|
JOptionPane.showMessageDialog( null , "答题时间已到。答题总题数为" +(dadui+dacuo)+ "," +
"答对题数为" +dadui+ ",答错题数为" +dacuo+ "," + "未答题题数为" +(tishu-dacuo-dadui)+ "," +
"答题使用时间:" +(allDuration +duration)/ 1000 + "秒。" );
|
第四部分:运行结果
效果1:登录页面
用户名:root 密码:123456
效果2:自定义颜色面板
效果3:题目限定
效果4:负整数运算
效果5:阶乘运算
效果6:计算结束结束
第五部分:合作伙伴与分工方向
成员一:林计高
负责功能:
1.用户登录功能
2.背景颜色转换
3.答题时间限定为120秒
4.结束答题弹出提示框
成员二:王志鑫
负责功能:
1.算式生成与打印
2.阶乘实现
3.负整数运算括号
4.题目数限定
附:工作照片
第六部分:总结
本次作业在实现过程中体验到了与独自开发不一样的感觉,有了国通、思想上的碰撞和想法上的融合等,都是在独自开发中没有的。
在开发过程中与其说开发上有难度,倒不如说是思想上统一有难度,可以想象在将来更多人的合作开发过程中将有可能”寸步难行“。
但是,在两个人的合作中我们还是发现了与独自开发更有优势的地方,例如完成的功能并不需要自己完全负责,对于同一件事有了另一个全新的角度去思考、开发,等等。
对于后面的团队合作有浓厚的兴趣向往。