目 錄 1 選題.......................................................................................................................... 1 2 系統需求分析......... ...
目 錄
1 選題.......................................................................................................................... 1
2 系統需求分析............................................................................................................ 2
2.1 系統可行性分析...................................................................................................... 2
2.2 系統需求分析.......................................................................................................... 2
2.3 項目進度安排.......................................................................................................... 3
3 系統設計.................................................................................................................... 4
3.1 系統設計................................................................................................................. 4
4 系統實現.................................................................................................................... 8
4.1 算術運算測試.......................................................................................................... 8
4.2 猜數游戲.................................................................................................................. 9
5 結論和心得................................................................................................................. 11
1 選題
選題一 |
算術運算測試 |
題目要求 |
|
實現十道100以內加減法數學題,能根據題目計算出答案, 與輸入答案對比,判斷做題是否正確,最後計算分數。 添加排行榜功能存放到文件或資料庫中。 |
|
使用Java知識 |
|
Java基本輸入輸出 運算符 迴圈 選擇分支 GUI 等 |
|
選題二 |
猜數游戲 |
題目要求 |
|
電腦產生隨機數,猜中即勝, 猜不中,提示是大了還是小了,繼續猜, 直至猜到,給出所用時間和評語。 保留用戶測試成績,做出成績排行榜。排行榜存放到文件或資料庫中。
|
|
使用Java知識 |
|
迴圈 分支 變數 常用類 文件 等. |
2 系統需求分析
2.1 系統可行性分析
技術可行性:
算術運算測試:(1)GUI圖形用戶界面
(2)生成隨機數,進行加減法運算
猜數游戲:(1)產生0--100的隨機數
(2)獲取開始和結束時間
(3)用for迴圈來控制猜數,直到猜對為止
(4)文件管理
操作可行性:
只需要用戶有一臺電腦即可,因此在操作上是可行的。
2.2 系統需求分析
算術運算測試:
實現十道100以內加減法數學題,能根據題目計算出答案,
與輸入答案對比,判斷做題是否正確,最後計算分數。
猜數游戲:
電腦產生隨機數,猜中即勝,猜不中,提示是大了還是小了,繼續猜,
直至猜到,給出所用時間和評語。保留用戶測試成績,做出成績排行榜。排行榜存放到文件中
圖1-1 算術運算測試
圖1-2 猜數游戲
2.3 進度安排
階段一進度安排如表3-1所示。
表3-1 進度安排表
階段 |
持續時間 |
階段描述 |
輸出 |
構思階段 |
1小時 |
需求分析 |
需求說明,功能模塊圖 |
設計階段 |
1小時 |
系統設計 |
設計說明-可以畫流程圖;資料庫設計 |
實現階段 |
1天半 |
編寫代碼 |
項目工程源代碼 |
1小時 |
系統測試 |
進行黑盒測試(功能測試)-測試說明 |
|
運行階段 |
1小時 |
部署、運行 |
系統使用說明、運維報告、錄製視頻 |
3 系統設計
3.1 系統設計
項目一:算術運算測試:
(1)圖形界面化設計:
JFrame jf = new JFrame();//創建視窗
JPanel jp = new JPanel();//創建面板
JLabel jl = new JLabel();//創建標簽 顯示題目
JLabel jl2 = new JLabel();//創建標簽 顯示結果正確與否
JButton jb = new JButton("提交");//創建“提交”按鈕
JButton jb2 = new JButton("下一題");//創建“下一題”按鈕
JTextField jtf = new JTextField();//創建文本框 輸入答案
jf.setSize(500, 500);//調整視窗大小 寬,長
jf.add(jp);//往視窗中添加面板
jp.setLayout(null);//設置佈局管理器為空
jp.add(jl);//添加標簽 此標簽顯示題目
jl.setBounds(18, 18, 100, 30);//調整標簽位置 大小 x,y,寬,高
jp.add(jl2);//添加標簽 此標簽顯示結果正確與否
jl2.setBounds(60, 100, 250, 70);
jp.add(jtf);//添加文本框用戶輸入答案
jtf.setBounds(120, 18, 40, 30);
jp.add(jb);//添加“提交”按鈕
jb.setBounds(10, 60, 80, 40);
jp.add(jb2);//添加“下一題”按鈕
jb2.setBounds(100, 60, 80, 40);
jf.setVisible(true);//true使Window可見,否則隱藏Window
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//設置用戶在此框架上啟動“關閉”時預設執行的操作。退出應用程式預設視窗關閉操作 在視窗被關閉時退出JVM
(2)隨機生成兩個0—100的數:
Random ran = new Random();
num1 = (int)(Math.random()*100);
num2 = (int)(Math.random()*100);
(3)響應用戶點擊“提交”按鈕:
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int s=Integer.parseInt(jtf.getText());//將用戶輸入的答案字元串轉化成十進位數
if(s==sum) {
jl2.setText("恭喜您,回答正確!");
score+=10;
}else {
jl2.setText("很遺憾,回答錯誤。 正確答案:"+sum);
}
}
});
(4)響應用戶點擊“下一題”按鈕:
jb2.addActionListener(new ActionListener() {
@Overrid
public void actionPerformed(ActionEvent e) {
Random ran = new Random();
num1 = (int)(Math.random()*100);
num2 = (int)(Math.random()*100);
sum=0;
temp=(int)(Math.random()*10)%2;//若temp為0則加法 1為減法
if(temp==0) {
count++;
jl.setText("第"+count+"題:"+num1+"+"+num2+"=");
sum=num1+num2;
}else {
count++;
jl.setText("第"+count+"題:"+num1+"-"+num2+"=");
sum=num1-num2;
}
if(count==11) {
JOptionPane j = new JOptionPane();//提示框
j.showMessageDialog(jf, "您的得分是:"+score);
jf.setVisible(false);//關閉視窗
}
}
});
(5)主函數:
public static void main(String[] args) {
Arithmetic a = new Arithmetic();
a.produce();
}
項目二猜數游戲:
(1)錄入玩家人數並輸入名字:
Scanner p=new Scanner(System.in);
System.out.println("請輸入玩家人數:"); //游戲人數
int person=p.nextInt();
System.out.println("請輸入您的代號:");
String name = p.next();
(2)生成隨機數:
Random ran=new Random();
number=ran.nextInt(100); //產生0--100的隨機數
(3)猜數過程:
int guessNumber=-1;
for(int j=0;guessNumber!=number;j++) { //用for迴圈來控制猜數,直到猜對為止
guessNumber=p.nextInt(); //錄入用戶猜的數
count++; //猜一次,加一次
if(guessNumber>number) {//將用戶猜的數與隨機數進行比較
System.out.println("您猜的太大了,請往小一點猜");
continue;
}
else if(guessNumber<number) {
System.out.println("您猜的太小了,請往大一點猜");
continue;
}else if(number==guessNumber) {
end=System.currentTimeMillis(); //猜對了 記錄結束時間
time=(end-start)/1000;
if(count<7)
System.out.println("真厲害,恭喜你,猜對了!");
else if(count>7) {
System.out.println("你終於猜對了。");
}
}
(4)時間:
double start=0.0; //開始時間
double end=0.0; //結束時間
double time=0.0;//計算所用時間
start = System.currentTimeMillis(); //獲取開始時刻
end=System.currentTimeMillis(); //猜對了 記錄結束時間
time=(end-start)/1000;
(5)信息錄入:
try {
w=new FileWriter("info.txt",true);
w.write("代號:");
w.write(name);
w.write("\r\n");
w.write("猜數所用次數:");
String count1= Integer.toString(count);
w.write(count1);
w.write(" 次 \r\n");
w.write("花費時間:");
String time1=Double.toString(time);
w.write(time1);
w.write(" 秒 \r\n\n");
System.out.println("玩家信息已讀入");
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
w.close();
} catch (IOException e) {
e.printStackTrace();
}
}
(6)排名:
try {
fw = new FileWriter("rank.txt",true);
fw.write("排名(倒序):\n");
for(double s1:s) {
String s2= Double.toString(s1);
fw.write(s2);
fw.write("\n");
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
4 系統實現
4.1 算術運算測試
4.2 猜數游戲
5 結論和心得
項目一算術運算測試:第一次使用到GUI圖形界面設計,通過跟著老師視頻學習和網上資料慢慢學會點這部分的內容,視窗、面板、標簽、按鈕、文本框,組合到了一起變成一個帶有一點功能的小視窗。特別的是點擊一個按鈕之後的響應,這方面是我覺得這次實訓收穫最大的地方,因為原來都不懂,覺得很神奇,這次的實訓則幫我揭開了這層神秘的面紗。通過一個ActionListenr按鈕(類似一個監聽器)來響應用戶點擊按鈕,而ActionListenr其實是一個介面,裡面有一個actionPerformed(ActionEvent e)方法,來具體實現。
項目二猜數游戲:這個項目鞏固了前面大部分所學的知識 變數、迴圈、數組、條件判斷、常用類、異常處理、文件讀寫等,更加提高了我的編程能力。讓我發現了我在數組和文件處理方面還是要加強的,基礎沒有太牢固。
以後要多動手,提高自己的編程能力。基礎是最重要的,只有基礎牢固才能寫對代碼。學習Java要腳踏實地,要更有信心和耐心。多向老師、同學請教討論。