java課程設計---個人博客 彩票抽獎程序 201821123098 鐘海清
1.團隊課程設計博客鏈接
http://www.rzrgm.cn/zhonghaiqing/p/12173066.html
2.個人負責模塊或任務說明
我主要負責主要負責管理員類,實現滾動抽獎、自動注冊購買彩票以及查看中獎信息和用戶信息的方法
3.自己的代碼提交記錄截圖


4.自己負責模塊或任務詳細說明
滾動抽獎
- 代碼
public class MyThread extends Thread{//使用Runnable實現多線程可以達到資源共享目的
JTextField jf;
public volatile Boolean isPause=true;//暫停標志
public MyThread(JTextField jf) {
super();
this.jf = jf;
}
@Override
public void run() {
while(true){
try {
MyThread.sleep(100);
}catch(InterruptedException e) {
e.printStackTrace();
}
while(isPause) {
int[] ball = new int[7];
for(int i = 0;i<7;i++) {
ball[i] = (int) (1+(Math.random()*36));
for(int j=0;j<i;j++) {
if(ball[i]==ball[j]) i--;//隨機產生不重復的七個數字
}
}
Arrays.sort(ball);
jf.setText(ball[0]+","+ball[1]+","+ball[2]+","+ball[3]+","+ball[4]+","+ball[5]+","+ball[6]);
}
}
}
public void stopping() {
isPause=false;
}
}
- 詳解
利用多線程對開獎文本框的內容不斷刷新滾動,實現滾動抽獎效果
設置一個isPause判斷是否終止程序
自動注冊
- 代碼
public void Auto_Register(UAndT uat) throws IOException {
String nikename = generateString();
String name = generateString();
String password = generateString();
Random random = new Random();
int balance = random.nextInt(100);
String phone = generatePhoneString();
User newUsers = new User(nikename, name, phone, password, balance); // 注冊賬戶
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String pool = generateNumber();// 隨機號碼
int multiple = random.nextInt(1000);
Tickets ticket = new Tickets();
ticket.setNumber(pool);
ticket.setAmount(multiple);
uat.buyTickets(newUsers, ticket);
String filename = "txt\\UAndT.txt";
//int r = countLines(filename);
try (BufferedWriter bw = new BufferedWriter(new FileWriter(filename, true))) {
bw.write(dateFormat.format(date));
bw.write(" ");
bw.write(newUsers.getName());
bw.write(" ");
bw.write(pool);
//bw.write(UserGui.getUtlist().get(r).getTicket().getNumber());
bw.write(" ");
bw.write(Integer.toString(multiple));
bw.write(" ");
bw.newLine();
bw.flush();
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
newUsers.register();
}
public void AutoRegister(String string) {
UAndT uat = new UAndT();
int num = Integer.parseInt(string);
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 0; i < num; i++) {
try {
Auto_Register(uat);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// UserGui.getUtlist().add(uat);
}
}
});
t1.start();
}
- 詳解
根據傳入text的jf獲得需要自動注冊的用戶數,然后使用多線程循環多次自動注冊
自動注冊部分先隨機生成用戶信息,再傳參到User建立一個用戶類,然后購買彩票
讀取表格信息
- 代碼
// 歷史開獎
private Vector<Vector<String>> createTableModelData_historyAward() {
Vector<Vector<String>> data = new Vector<Vector<String>>();
String t = null;
try {
FileReader fr1 = null;
try {
String fileName = "txt/History.txt";
fr1 = new FileReader(fileName);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedReader br = new BufferedReader(fr1);
while ((t = br.readLine()) != null) {
String[] s = t.split("\\s+"); // 通過空格分割字符串數組
Vector<String> rowData = new Vector<String>();
// rowData.add("i");
String temp = s[0] + " " + s[1];
// rowData.add(s[0]);
rowData.add(temp);
rowData.add(s[2]);
rowData.add(s[3]);
rowData.add(s[4]);
rowData.add(s[5]);
data.add(rowData);
}
fr1.close();
br.close();
} catch (IOException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
}
return data;
}
private Vector<String> createColumnNames_historyAward() {
Vector<String> columnNames = new Vector<String>();
// columnNames.add("序號");
columnNames.add("日期");
columnNames.add("號碼");
columnNames.add("獎池");
columnNames.add("用戶名");
columnNames.add("中獎金額");
return columnNames;
}
public DefaultTableModel historyAward() {
DefaultTableModel model = null;
// 表頭(列名)
Vector<String> columnNames = createColumnNames_historyAward();
Vector<Vector<String>> data = createTableModelData_historyAward();
// 創建一個默認的表格模型
model = new DefaultTableModel(data, columnNames);
return model;
}
- 詳解
將txt文件中一行內容存在一個vector里面,存儲個人信息,然后再把每行存儲的vector放到一個新的vector里面,存儲所有用戶信息
寫入GUI表格時只需創建一個默認表格模型就可以自動一行一行寫入
5.課程設計感想
學習要在實踐中摸索才有實際成效,在編寫函數的同時也提升了查找關鍵字的能力。這次課設可以實現學生信息的增刪改查、對單個學生各科成績畫出柱狀分布圖功能和將學生信息匯總成excel功能,但還未實現多名學生同時生成成績對比圖,柱狀圖的畫面質感也有待改進。我們希望在暑假能進一步完善功能,做出真正能夠投入使用的學生成績管理系統。
浙公網安備 33010602011771號