public class RandomUtils {
为海宁等地区用户提供了全套网页设计制作服务,及海宁网站建设行业解决方案。主营业务为成都网站设计、成都做网站、海宁网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
public static String randomId(){
Random random = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i 6; i++) {
sb.append(random.nextInt(10));
}
return sb.toString();
}
public static int randomIntId(){
Random random = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i 6; i++) {
sb.append(random.nextInt(10));
}
return Integer.parseInt(sb.toString());
}
public static String randomName(){
String[] name1 = {"赵","钱","孙","李","周","吴","郑","王","张","刘"};
String[] name2 = {"一","二","三","四","五","六","七","八","九","十"};
Random random = new Random();
StringBuilder sb = new StringBuilder();
sb.append(name1[random.nextInt(10)]);
sb.append(name2[random.nextInt(10)]);
sb.append(name2[random.nextInt(10)]);
return sb.toString();
}
public static String randomSex(){
Random random = new Random();
return random.nextInt(4)/2==0?"男":"女";
}
public static int randomAge(int min, int max){
Random random = new Random();
return random.nextInt(min) + max-min;
}
public static int randomScore(){
Random random = new Random();
return (int)(random.nextDouble()*100%100);
}
public static String randomAddress(){
String[] address1 = {"商业","红叶","安康","河南","长海","黄河","桐柏","科学","瑞达","花园"};
String[] address2 = {"东","南","西","北","中"};
String[] address3 = {"街","路","大道","巷"};
Random random = new Random();
StringBuilder sb = new StringBuilder();
sb.append(address1[random.nextInt(10)]);
sb.append(address2[random.nextInt(5)]);
sb.append(address3[random.nextInt(4)]);
sb.append(random.nextInt(1000)+1);
sb.append("号");
return sb.toString();
}
}
import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.tree.DefaultMutableTreeNode;
import java.awt.*;
import java.util.*;
import java.util.List;
public class StudentManage extends JFrame{
public final static String[] CH_NUM = {"一","二","三","四","五","六","七","八","九","十"};
public final static String ROOT = "班级管理";
public final static int GRADE_NUM = 3;
public final static int CLASS_NUM = 3;
private MapString, ListStudent classes;
public StudentManage() {
setTitle("学生管理系统");
setSize(300, 300);
setLayout(new BorderLayout());
if(classes == null) classes = new HashMap();
DefaultMutableTreeNode top = new DefaultMutableTreeNode(ROOT);
DefaultMutableTreeNode[] gradeNodes = new DefaultMutableTreeNode[GRADE_NUM];
for (int i = 0; i GRADE_NUM; i++) {
gradeNodes[i] = new DefaultMutableTreeNode(CH_NUM[i] + "年级");
for (int j = 0; j CLASS_NUM; j++) {
gradeNodes[i].add(new DefaultMutableTreeNode(CH_NUM[j] + "班"));
}
top.add(gradeNodes[i]);
}
final JTree tree = new JTree(top);
String title[] = {"ID","姓名","性别","年龄","地址"};
final DefaultTableModel model = new DefaultTableModel(title, 0);
JTable table=new JTable(model);
tree.addTreeSelectionListener(new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree .getLastSelectedPathComponent();
if (node == null) return;
Object object = node.getUserObject();
if (node.isLeaf()) {
ListStudent stdList = classes.get(getFullPath(node));
Object[][] data = new Object[stdList.size()][5];
for (int i = 0; i stdList.size(); i++) {
data[i][0] = stdList.get(i).getId();
data[i][1] = stdList.get(i).getName();
data[i][2] = stdList.get(i).getSex();
data[i][3] = stdList.get(i).getAge();
data[i][4] = stdList.get(i).getAddress();
}
while(model.getRowCount()0){
model.removeRow(model.getRowCount()-1);
}
for (int i = 0; i stdList.size(); i++) {
model.addRow(data[i]);
}
model.fireTableDataChanged();
}
}
});
add(tree, BorderLayout.WEST);
add(new JScrollPane(table), BorderLayout.CENTER);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private String getFullPath(DefaultMutableTreeNode defaultMutableTreeNode){
StringBuilder sb = new StringBuilder();
Object[] objs = defaultMutableTreeNode.getUserObjectPath();
for (int i = 0; i objs.length; i++) {
sb.append(objs[i]);
}
return sb.toString().replace(ROOT,"");
}
public void init(){
for (int i = 0; i GRADE_NUM; i++) {
for (int j = 0; j CLASS_NUM; j++) {
int n = new Random().nextInt(30)+1;
ListStudent stdList = new ArrayList(n);
for (int k = 0; k n; k++) {
stdList.add(new Student(RandomUtils.randomIntId(),RandomUtils.randomName(),RandomUtils.randomSex(),
RandomUtils.randomAge(6,12),RandomUtils.randomAddress()));
}
classes.put(CH_NUM[i] + "年级"+ CH_NUM[j] +"班", stdList);
}
}
}
public static void main(String[] args) {
StudentManage studentManage = new StudentManage();
studentManage.init();
}
}
class Student {
private int id;
private String name;
private String sex;
private int age;
private String address;
public Student(int id, String name, String sex, int age, String address) {
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
this.address = address;
}
public Student() {
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getSex() {
return sex;
}
public int getAge() {
return age;
}
public String getAddress() {
return address;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
", age=" + age +
", address='" + address + '\'' +
'}';
}
}
/**
* GenericLinkedStack.java
*/
package fix;
import java.util.EmptyStackException;
/**
*泛型的链式栈数据结构
*/
public class GenericLinkedStackE {
// 栈顶元素
private Item top = null;
// 返回栈顶元素,并弹出
public E pop() throws EmptyStackException {
if (isEmpty()) {
throw new EmptyStackException();
}
E e = top.value;
top = top.next;
return e;
}
/**
* 栈顶压入一个元素
* @param e 被压入的元素
*/
public void push(E e) {
Item curr = new Item(e);
curr.next = top;
top = curr;
}
/**
* 返回栈顶元素,但不出栈
* @return 栈顶元素
*/
public E peek() {
if (isEmpty()) {
throw new EmptyStackException();
}
return top.value;
}
/**
* 判断栈是否为空
* @return 判断结果
*/
public boolean isEmpty() {
return top == null;
}
/**
* 栈中元素
* @author jilen
*
*/
class Item {
//元素
private E value;
//下一个
private Item next;
public Item(E e) {
this.value = e;
}
public E getValue() {
return value;
}
public void setValue(E value) {
this.value = value;
}
public Item getNext() {
return next;
}
public void setNext(Item next) {
this.next = next;
}
}
}
/**
* InfixToPostfixConverter.java
*/
package fix;
import java.util.Hashtable;
/**
* @author jilen
*
*/
public class InfixToPostfixConverter {
// 操作符及其优先级组成的键值对
private static final HashtableCharacter, Integer operators;
private StringBuffer infix;
private StringBuffer postfix;
GenericLinkedStackCharacter stack = new GenericLinkedStackCharacter();
// 初始化操作符列表,static语句块会在加载类时自动执行
static {
operators = new HashtableCharacter, Integer();
operators.put('^', 4);
operators.put('*', 3);
operators.put('/', 3);
operators.put('%', 3);
operators.put('+', 2);
operators.put('-', 2);
operators.put('(', -1);
operators.put(')', 5);
}
/**
*
*/
public InfixToPostfixConverter(StringBuffer infix, StringBuffer postfix) {
this.infix = infix;
this.postfix = postfix;
}
/**
* 转换函数
*/
public void convertToPostfix() {
// 对输入字符串中字符遍历
for (int i = 0, n = infix.length(); i n; i++) {
char c = infix.charAt(i);
// 是数字之间添加到转换后字符串
if (isNumber(c)) {
postfix.append(c);
} else if (isOperator(c)) {
switch (c) {
// '(' 直接入栈
case '(':
stack.push(c);
break;
// ')' 弹出元素直到碰到'('
case ')':
while (!stack.isEmpty() stack.peek() != '(') {
postfix.append(stack.pop());
}
stack.pop();
break;
// 其他操作符
default:
// 当前操作符比栈顶操作符优先级高,直接入栈
if (stack.isEmpty() || precedence(c, stack.peek())) {
stack.push(c);
}
// 当前操作符比栈顶操作符优先级低,出栈直到为空或栈顶优先级低于当前操作符
else if (!precedence(c, stack.peek())) {
while (!stack.isEmpty() !precedence(c, stack.peek())) {
postfix.append(stack.pop());
}
stack.push(c);
}
break;
}
}
}
// 若栈中还有操作符,所以元素出栈
while (!stack.isEmpty()) {
postfix.append(stack.pop());
}
}
/**
* 判断是否为操作符
* @param c
* @return
*/
public static boolean isOperator(char c) {
return operators.containsKey(c);
}
/**
* 优先级大小关系operator1 operator2 则返回true,否则false
* @param operator1
* @param operator2
* @return 判断结果
*/
public static boolean precedence(char operator1, char operator2) {
return operators.get(operator1) operators.get(operator2);
}
/**
* 是否数字
* @param c 要判断的字符
* @return 判断结果
*/
public static boolean isNumber(char c) {
return c = '0' c = '9';
}
}
/**
*Main.java测试类
*/
package fix;
/**
* @author Administrator
*
*/
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
StringBuffer infix = new StringBuffer("(1+2)*3/4");
StringBuffer postfix = new StringBuffer();
InfixToPostfixConverter converter = new InfixToPostfixConverter(infix,
postfix);
converter.convertToPostfix();
System.out.println(postfix.toString());
}
}
中缀转后缀的程序,有GenericLinkedStack.java,InfixToPostfix.java,Main.java三个源文件需要放在fix包下
public static void main(String... args) {
// 姓名列表
String[] names = new String[]{"张1", "张2", "张3", "张4", "张5", "张6", "张7", "张8", "张9", "张10", "张11", "张12", "张13", "张14",
"张15", "张16", "张17", "张18", "张19", "张20", "张21", "张22", "张23"};
MapString, ListJSONObject result = new HashMap();
String classIndex = "class%s";
for (int i = 0; i names.length; i++) {
String classKey = String.format(classIndex, Integer.parseInt(String.valueOf(i / 10)) + 1);
JSONObject person = new JSONObject();
person.put("id", StringUtils.leftPad(String.valueOf(i + 1), 5, "0"));
person.put("name", names[i]);
person.put("class", classKey);
ListJSONObject classValues = result.get(classKey);
if (null == classValues) {
classValues = new ArrayList();
classValues.add(person);
result.put(classKey, classValues);
} else {
classValues.add(person);
}
}
System.out.println(JSONObject.toJSONString(result));
}