Java的两个实验程序
日期:2018.10.07
星期五
博客期:015
Part1:----------------第一个是二柱子出30道小学数学题:
一、程序设计思想
本程序设计由三部分构成,第一部分因为循环30次的需要,做出for语句来循环30次,从流程图中看也清晰明了,所以只需要在循环里输出语句就好了,这一部分分为生成处理和输出处理两部分!生成处理部分,就是利用Random类生成随机数的方法,生成1000以内的两个正整数m和n,在生成随机字符c的时候,先得到0~3的随机数,然后分别代表‘+’、‘-’、‘*’和‘/’四个字符!之后按照格式输出即可!
二、程序流程图
三、源程序
package ready; import java.util.Random; public class Test {
//============================<数据区>=================================//
//左操作数
private int leftNumber;
//右操作数
private int rightNumber;
//运算符
private char operator;
//============================<方法区>=================================//
//--------------------------------主函数
public static void main(String[] args) {
for(int i=1;i<=30;i++)
{
Test n = new Test(true);
System.out.print(i+"、 ");
n.display_s(false);
}
}
//--------------------------------set、get函数
//---[operator的set、get函数]
public void setOperator(char operator) {
this.operator = operator;
}
public char getOperator() {
return operator;
}
//---[RightNumber的set、get函数]
public void setRightNumber(int rightNumber) {
this.rightNumber = rightNumber;
}
public int getRightNumber() {
return rightNumber;
}
//---[LeftNumber的set、get函数]
public void setLeftNumber(int leftNumber) {
this.leftNumber = leftNumber;
}
public int getLeftNumber() {
return leftNumber;
}
//--------------------------------展示函数
public void display(){
System.out.print(leftNumber+" "+operator+" "+rightNumber);
}
public void display_s(){
System.out.println(leftNumber+" "+operator+" "+rightNumber);
}
public void display(boolean x){
if(x)
System.out.print(leftNumber+" "+operator+" "+rightNumber+" = "+answer());
else
System.out.print(leftNumber+" "+operator+" "+rightNumber+" = ");
}
public void display_s(boolean x){
if(x)
System.out.println(leftNumber+" "+operator+" "+rightNumber+" = "+answer());
else
System.out.println(leftNumber+" "+operator+" "+rightNumber+" = ");
}
//--------------------------------运行函数
//返回结果
public int answer(){
int result = 0;
switch(operator)
{
case '+':result=leftNumber+rightNumber;break;
case '*':result=leftNumber*rightNumber;break;
case '/':result=leftNumber/rightNumber;break;
case '-':result=leftNumber-rightNumber;break;
default:break;
}
return result;
}
//--------------------------------构造函数
public Test(){
leftNumber = 0;
operator = '+';
rightNumber = 0;
}
public Test(boolean x){
Random ra = new Random();
leftNumber = ra.nextInt(1000)+1;
int temp = ra.nextInt(4);
switch(temp)
{
case 0:operator = '+';break;
case 1:operator = '-';break;
case 2:operator = '*';break;
case 3:operator = '/';break;
}
rightNumber = ra.nextInt(1000)+1;
}
public Test(int leftnum,char oper,int rightnum){
leftNumber = leftnum;
operator = oper;
rightNumber = rightnum;
}
}
四、实现结果截图
五、实验总结
本次程序老师要求在20分钟以内完成,实际上还是存在一些问题的!比如说输出问题,以及小学二年级的数学题目究竟是怎样的!应该如何去遍历这个“软件”,需不需要加入“ = ”,输出格式多一个换行等等的问题都需要解决的!
Part2:----------------第二个是窗口验证码的问题:
一、程序设计思想
本程序只是实现了验证码功能!就难度而言,不难!但是就复杂度而言,算是比较繁杂的了!程序需要制作一个窗口,并对其构成容器,再在容器里添加内部项,添加按钮、添加标签和输入框!对成员逐一进行排版,格式设置!对按钮添加监听器,当按下按钮时,刷新程序的验证码!
二、程序流程图
三、源程序
package ready; import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
//import java.awt.Image;
import java.util.Random; //import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField; public class Window extends JFrame{
//=============================<数据区>====================================//
//---------------[自动生成]
private static final long serialVersionUID = -2971058395175770886L;
//---------------[截取随机数]
protected Random ra = new Random();
//---------------[验证码字符]
private final char[] CHAR_CODE = { '1', '2', '3', '4', '5', '6',
'7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
'k', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
//---------------[标识]
protected JLabel firstSay = new JLabel("登录名:");
protected JLabel secondSay = new JLabel(" 密码:");
protected JLabel thirdSay = new JLabel("验证码:");
//---------------[按钮]
protected JButton getIn = new JButton(" 登陆 ");
protected JButton setIn = new JButton(" 快速注册 ");
protected JButton resettitle = new JButton(" 刷新 ");
//---------------[输入框]
protected JTextField firstTitle = new JTextField(10);
protected JTextField secondTitle = new JTextField(10);
protected JTextField thirdTitle = new JTextField(10);
protected JTextField rentlyWords = new JTextField(5);
//=============================<方法区>====================================//
//---------------[主方法]
public static void main(String[] args) throws IOException{
new Window();
}
//---------------[构造方法]
public Window() throws IOException{
this.setVisible(true);
Container c = this.getContentPane();
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.getContentPane().setLayout(new FlowLayout());
this.add(thirdTitle);
this.setLocation(1000,500);
this.setSize(400,380);
this.setTitle("请登录");
JLabel t = new JLabel(" ");
firstSay.setFont(new java.awt.Font("Dialog",1,25));
secondSay.setFont(new java.awt.Font("Dialog",1,25));
thirdSay.setFont(new java.awt.Font("Dialog",1,25));
firstTitle.setFont(new java.awt.Font("Dialog",2,25));
secondTitle.setFont(new java.awt.Font("Dialog",2,25));
thirdTitle.setFont(new java.awt.Font("Dialog",2,25));
setIn.setFont(new java.awt.Font("Dialog",1,25));
getIn.setFont(new java.awt.Font("Dialog",1,25));
resettitle.setFont(new java.awt.Font("Dialog",1,25));
rentlyWords.setFont(new java.awt.Font("Dialog",5,25));
firstTitle.setText("用户名/邮箱");
c.add(firstSay);
c.add(firstTitle);
c.add(t);
c.add(secondSay);
c.add(secondTitle);
t = new JLabel(" ");
c.add(t);
c.add(thirdSay);
c.add(thirdTitle);
t = new JLabel(" ");
c.add(t);
rentlyWords.setEditable(false);
Reset();
resettitle.setBorderPainted(false);
c.add(rentlyWords);
c.add(resettitle);
requestFocus();
t = new JLabel(" ");
c.add(t);
c.add(getIn);
t = new JLabel(" ");
c.add(t);
c.add(setIn);
resettitle.addActionListener//为转换按钮添加监听事件
(
new ActionListener()
{
public void actionPerformed(ActionEvent arg0){
Reset();
}
}
);
}
//---------------[返回随机字符]
public final char getRandom(){
int temp = ra.nextInt(58);
return CHAR_CODE[temp];
}
//---------------[设置随机码]
public void Reset(){
rentlyWords.setText(getRandom()+""+getRandom()+""+getRandom()+""+getRandom());
}
}
四、实现结果截图
五、实验总结
本次实验相当的顺利,虽然没有用老师要求的RandomStr类来自动生成验证码字符串,不过效果是一样的!用Random配合类型转化一样可以生成验证码字符串,对文本框的排版也是很大的问题!因为在这之前的程序我都没有设计过界面的排版!
Java的两个实验程序的更多相关文章
- java版两人聊天程序
server.java import java.io.*; import java.net.*; import java.text.SimpleDateFormat; import java.util ...
- Java中两种实现多线程方式的对比分析
本文转载自:http://www.linuxidc.com/Linux/2013-12/93690.htm#0-tsina-1-14812-397232819ff9a47a7b7e80a40613cf ...
- 20162330 实验二 《Java面向对象程序设计》 实验报告
2016-2017-2 实验报告目录: 1 2 3 4 5 20162330 实验二 <Java面向对象程序设计> 实验报告 课程名称:<程序设计与数据结构> 学生班级:162 ...
- Java第5次实验提纲(Java图形界面编程)
1. Swing与NetBeans 使用NetBeans编写简单界面.见GUI实验参考文件中的0.第06次实验(图形程序设计.事件处理与Swing).doc 题目1: Swing用户界面组件与事件处理 ...
- Java第8次实验(IO流)
参考资料 本次作业参考文件 正则表达式参考资料 第1次实验 1. 字符流与文本文件:使用 PrintWriter(写),BufferedReader(读) 参考文件:基础代码目录Student.jav ...
- Java第6次实验提纲(异常)
PTA与参考资料 题集:集合 异常实验文件 第1次实验 1.1 7-1 常用异常 如何进行强制转换 如何捕获多种类型的异常 1.2 7-2 使用异常机制处理异常输入 在哪里加catch 1.3 7-3 ...
- 20175209 实验二《Java面向对象程序设计》实验报告
20175209 实验二<Java面向对象程序设计>实验报告 一.实验前期准备 了解三种代码 伪代码 产品代码 测试代码 我们先写伪代码,伪代码 从意图层面来解决问题: 有了伪代码 我们用 ...
- 20175315 实验二《Java面向对象程序设计》实验报告
20175315 实验二<Java面向对象程序设计>实验报告 一.实验内容及步骤 1.初步掌握单元测试和TDD 单元测试 任务一:三种代码 用程序解决问题时,要学会写以下三种代码: 伪代码 ...
- 2018-2019-2 20175320实验二《Java面向对象程序设计》实验报告
2018-2019-2 20175320实验二<Java面向对象程序设计>实验报告 一.实验步骤及内容 (一)了解使用JUint,并对示例代码MyUtil进行测试 1.先在IDEA中安装J ...
随机推荐
- vue-axios
vue axios全攻略 不再继续维护vue-resource,并推荐大家使用 axios 开始,axios 被越来越多的人所了解.本来想在网上找找详细攻略,突然发现,axios 的官方文档本身就 ...
- 【mmall】IDEA插件jrebel
破解方法 http://www.jianshu.com/p/87b11bad3d7f
- lcx工具使用
0x01 为什么要作端口转发? 如果外网服务器,我们直接连接其端口就能进行访问,不需要进行端口转发.所以端口转发常用于穿透防火墙. 0x02 快速使用 前提:你的计算机处于公网,被控制的计算机能访问外 ...
- css - 盒子内外边距
css - 盒子内外边距 元素内边距 内边距是指元素包含的内容离元素边框之间的间距,padding会撑大盒子.在浏览器中显示的元素宽高包含了padding. div{ width:200px; ...
- Struts2学习(三)
一.值栈 1.OGNL表达式 OGNL的概述:对象图导航语言,是一门功能强大的表达式语言. 2.值栈 值栈的概述(ValueStack):是一个接口,实现类OgnlValueStack.是数据的中转站 ...
- Hadoop Streaming开发要点
一.shell脚本中的相关配置 HADOOP_CMD="/usr/local/src/hadoop-1.2.1/bin/hadoop" STREAM_JAR_PATH=" ...
- mac安装adb
安装 brew cask install android-platform-tools 测试 adb devices
- sed 随笔
1)sed 功能说明 sed 全称 stream editor 基本功能 增删改查 过滤 取行 语法格式: sed [options] [sed-comman ...
- 对比Dijakstra和优先队列式分支限界
Dijakstra和分支限界都是基于广度优先搜索,如果说两者都是生成一棵树,那Dijakstra总是找距离树根最近的(属于贪心算法),优先队列式分支限界是在层遍历整棵搜索树的同时剪去达不到最优的树枝. ...
- EF Codefirst入门之创建数据库
实验环境是VS 2015.MSSQL Server 2008.windows 10 一.创建项目 通过VS创建一个MVC5项目EntityFrameworkExtension 二.安装Entity F ...