综合小练习
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.StringTokenizer;
public class myWindow extends JFrame implements ActionListener {
JTextField jTextField; //文本框,用于显示题目
JTextField showScore; //用于显示分数
int score ; //分数
ButtonGroup group; //按钮组
JRadioButton jRadioButtons[]; //按钮数组
JButton jButtonNext, jButtonSubmit, jButtonResume; //下一题,提交,重新开始
Container container; //容器组件
Container container1;
Next next; //用于下一题的类的变量
RandomAccessFile randomAccessFile; //随机流
StringTokenizer stringTokenizer; //分词器
File file = new File("C:\\Users\\Administrator\\Desktop", "English.txt"); //文件类
String str[]; //字符串数组
Check check; //用于监视按钮
boolean IsRight = false; //判断对错
myWindow() {
setTitle("小软件");
setBounds(400, 400, 500, 500);
setLayout(new FlowLayout()); //设置流体布局
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
Container con = this.getContentPane(); //修改背景颜色
con.setBackground(new Color(0xBE879B));
init();
validate();
}
void init() {
next = new Next();
next.setMyWindow(this);
check = new Check();
check.setMyWindow(this);
jTextField = new JTextField(20);
jTextField.setEditable(false); //设置成不可编辑
add(new JLabel("题目:"));
add(jTextField);
showScore = new JTextField(4);
showScore.setEditable(false);
add(new JLabel("分数"));
add(showScore);
container = new Container();
container.setLayout(new FlowLayout()); //容器设置流体布局
group = new ButtonGroup();
jRadioButtons = new JRadioButton[4]; //数组长度为4
JLabel jLabel[] ={new JLabel("A:"),new JLabel("B:"),new JLabel("C:"),new JLabel("D:")};
for (int i = 0; i < jRadioButtons.length; i++) { //创建4个按钮
jRadioButtons[i] = new JRadioButton();
jRadioButtons[i].addItemListener(check); //注册按钮监视器
group.add(jRadioButtons[i]); //添加到同一组里
container.add(jLabel[i]);
container.add(jRadioButtons[i]);
}
add(container);
container1 = new Container();
container1.setLayout(new FlowLayout());
jButtonNext = new JButton("下一题");
jButtonNext.addActionListener(next);
container1.add(jButtonNext);
jButtonSubmit = new JButton("提交");
jButtonSubmit.addActionListener(e->{ //lambda表达式
showScore.setText(""+ score); //并运算
});
container1.add(jButtonSubmit);
jButtonResume = new JButton("重新开始");
jButtonResume.addActionListener(this);
container1.add(jButtonResume);
add(container1);
try {
file = new File("C:\\Users\\Administrator\\Desktop", "English.txt");
randomAccessFile = new RandomAccessFile(file, "rw"); //随机流指向一个文件
String s = randomAccessFile.readLine();
byte b[] = s.getBytes("ISO-8859-1");
String content = new String(b);
stringTokenizer = new StringTokenizer(content, "#"); //以#号作分隔符
str = new String[stringTokenizer.countTokens()];
while (stringTokenizer.hasMoreTokens()) {
for (int i = 0; i < str.length; i++) {
str[i] = stringTokenizer.nextToken();
}
jTextField.setText(str[0]); //将分隔的第一个选项作为题目
for (int i = 0; i < jRadioButtons.length; i++) {
jRadioButtons[i].setText(str[i + 1]); //将往后的设为选项
}
}
} catch (Exception e) {
e.getMessage();
}
}
@Override
public void actionPerformed(ActionEvent actionEvent) { //用于重新开始的监视器
try {
file = new File("C:\\Users\\Administrator\\Desktop", "English.txt");
randomAccessFile = new RandomAccessFile(file, "rw");
String s = randomAccessFile.readLine();
byte b[] = s.getBytes("ISO-8859-1");
String content = new String(b);
stringTokenizer = new StringTokenizer(content, "#");
str = new String[stringTokenizer.countTokens()];
while (stringTokenizer.hasMoreTokens()) {
for (int i = 0; i < str.length; i++) {
str[i] = stringTokenizer.nextToken();
}
jTextField.setText(str[0]);
for (int i = 0; i < jRadioButtons.length; i++) {
jRadioButtons[i].setText(str[i + 1]);
}
}
group.clearSelection();
score = 0;
showScore.setText(null);
} catch (Exception e) {
}
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.StringTokenizer;
public class Next implements ActionListener { //用于监视下一题的类
myWindow myWindow;
public void setMyWindow(Chapter_12.EnglishTraining.myWindow myWindow) {
this.myWindow = myWindow;
}
@Override
public void actionPerformed(ActionEvent actionEvent) {
String s = null;
try {
s = myWindow.randomAccessFile.readLine();
byte b[] = s.getBytes("ISO-8859-1");
String content = new String(b);
StringTokenizer stringTokenizer = new StringTokenizer(content, "#");
myWindow.str = new String[stringTokenizer.countTokens()];
while (stringTokenizer.hasMoreTokens()) {
for (int i = 0; i < myWindow.str.length; i++) {
myWindow.str[i] = stringTokenizer.nextToken();
}
myWindow.jTextField.setText(myWindow.str[0]);
for (int i = 0; i < myWindow.jRadioButtons.length; i++) {
myWindow.jRadioButtons[i].setText(myWindow.str[i + 1]);
myWindow.group.clearSelection();
}
}
} catch (Exception e) {
e.getMessage();
}
}
}
import javax.swing.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class Check implements ItemListener {
myWindow myWindow;
public void setMyWindow(Chapter_12.EnglishTraining.myWindow myWindow) {
this.myWindow = myWindow;
}
@Override
public void itemStateChanged(ItemEvent itemEvent) {
JRadioButton jRadioButton = (JRadioButton) itemEvent.getSource();
if (jRadioButton.getText().equals(myWindow.str[5]) && jRadioButton.isSelected()) {
myWindow.score += 5;
}
}
}
public class Example12_19 {
public static void main(String[] args) {
myWindow myWindow = new myWindow();
}
}
运行效果图
进程管理的基本概念
进程管理称为处理机管理,其核心是如何合理地分配处理及的时间,提高系统的效率
基本概念
-
程序执行时的特征
1.顺序性//严格按照规定的顺序执行
2.封闭性//指运行时系统内的资源只受该程序控制而改变
3.可再现性//只要初始条件相同,运行结果就相同 -
进程及其组成 //进程是一个程序关于某个数据集的一次运行
现代操作系统引入了线程,线程比进程更小,能独立运行的基本单位,是进程中的一个实体 -
进程的状态及其状态间的切换
1.运行 //当一个进程在处理机上运行时
2.就绪 //一个获得了除处理机外的所有资源,一旦获得处理机就可以运行
3.阻塞 //一个进程正在等待某一事件的发生,及时把处理机分配给它也无法运行
CET4P179
- vinegar
- penalty
- section
- rarely
- distinction
- holy
- outward
- violate
- golf
- philosophy
- approach