阶乘 c语言 fushu,菜鸟学IT之四则运算升级版

第一部分:要求

从个人项目出发,将程序改造成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:

自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。

用户可以输入答案

若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。

八个可扩展方向:

程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3

可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8

用户答题结束以后,程序可以显示用户答题所用的时间

用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数

用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名

程序可以出单个整数阶乘的题目:如:4!=24

程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。

程序可以设置皮肤功能,可以改变界面的颜色即可。

第二部分:开发环境

36f1676589acc0f5dd0df4f2b450c2c0.png

第三部分:实现与统计图

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.功能实现

用户登录功能

用户名:root   密码:123456

//字符串记录输入信息

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);

b_log.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

//获取用户名和密码,进行校验

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( "");

}

}

});

阶乘实现

case 4:

//当随机数为4是进行阶乘运算

sum=1;

T2.setText(d+"!");

for (int i = 1; i<=d;i++){

sum=sum*i;

}

背景修改

boolean backgroundNumber=true;//记录颜色布尔型值转换颜色

B4.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (backgroundNumber==true){

panel.setBackground(Color.CYAN);//panel组件颜色

panel2.setBackground(Color.CYAN);//panel2组件颜色

panel1.setBackground(Color.cyan);//panel1组件颜色

backgroundNumber=false;

}else {

panel.setBackground(Color.red);

panel2.setBackground(Color.red);

panel1.setBackground(Color.red);

backgroundNumber=true;

}

}

});

负整数运算

//把数字记录到suanshi字符串中

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;

}

题目数目限定

tishu=Integer.parseInt(T1.getText());//获取总题数

if(tishu>5){

JOptionPane.showMessageDialog(new JFrame().getContentPane(),

"题数不能大于5",

"四则运算", JOptionPane.INFORMATION_MESSAGE);

T1.setText("");

tishu=Integer.parseInt(T1.getText());//获取总题数

}

限定答题时间为120秒

timer.schedule(new TimerTask()

{

public void run() {

finishTime =System.currentTimeMillis();

duration= finishTime - startTime;

if(duration/1000==120 && summary

{

frame.setVisible(false);

}

String str=df.format(new Date(duration));

T5.setText(str);

}

}, 1000, 1000);

答题结束弹出提示答题时间窗口

JOptionPane.showMessageDialog(null,"答题时间已到。答题总题数为"+(dadui+dacuo)+"," +

"答对题数为"+dadui+",答错题数为"+dacuo+"," +"未答题题数为"+(tishu-dacuo-dadui)+"," +

"答题使用时间:"+(allDuration +duration)/1000+"秒。");

第四部分:运行结果

效果1:登录页面

用户名:root   密码:123456

c72a4a863aff8c5f6dea17488986ecd7.png

b5b261b4cf9d062f2bc190c62582cead.png

效果2:自定义颜色面板

f2683dbfd96bd5ad313172e21b11a033.png

59adef7e17efb28b75123918082adcf3.png

效果3:题目限定

5b576711cfcafa6421d9045ffc3d5a62.png

效果4:负整数运算

cd1897e7aa2ba31cbf6e9d8e85dbbad3.png

效果5:阶乘运算

8d31f42d98f21b82164b63b36053f696.png

效果6:计算结束结束

9627bb0cf48d2c982ae732b69524ac68.png

第五部分:合作伙伴与分工方向

成员一:林计高(本人)

负责功能:

1.用户登录功能

2.背景颜色转换

3.答题时间限定为120秒

4.结束答题弹出提示框

成员二:王志鑫

负责功能:

1.算式生成与打印

2.阶乘实现

3.负整数运算括号

4.题目数限定

附:工作照片

b6bce4324a70f0eab19bcf6d261ac1d8.png

第六部分:总结

在这次实验中,我与伙伴的合作分工合理,每个人都负责自己擅长的部分。由于项目结队完成并生成用户界面完成运算,导致之前用C语言写的代码“荒废”了(虽然C语言也能实现用户界面,但是相对与Java的用户界面更难与不美观。最重要的是不会用C语言实现用户界面)。要重新用Java语言写算式运算,由于需要用户界面,初次接触这个功能的我们边上网查找语法边实现把之前C语言的运算程序换成Java语言的运算程序,我的伙伴负责把C语言语法换成Java语言,我负责上实现用户界面化。通过一番“恶补”相对了解Java界面化实现,完成从控制台计算到用户界面答题的转换。功能也逐渐分工完善起来,本来目标是完成8个扩展方向,但是由于时间不够与知识储备不足的原因,最终只能完成6个扩展功能,这需要后期继续努力完成实验。

菜鸟之作,不足之处多多指教!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值