java畢業論文範文5篇

java畢業論文範文篇四:

摘要

本文圍繞Java程式語言在網路編程方面的具體套用,論述了使用面向對象方法,對計算器程式進行需求分析、概要設計、詳細設計,最後使用Java編程實現的全過程。

java語言,是目前比較流行的程式語言。經過10多年的發展,java已經滲透到全球每個角落。在當今這個網路的時代,java語言在網路編程方面的優勢使得網路編程有了更好的選擇。Java語言最令人矚目的特點是具有跨平台性,使其不受平台不同的影響,並得到了廣泛的套用。

設計內容:設計GUI界面的計算器。用戶可以通過滑鼠依次輸入參加計算的數值,進行加、減、乘、除等混合運算。

設計要求:

1.系統界面的上面是數字輸入對話框,用來顯示所輸入的數字和運行的結果。

2.系統界面下面的左側是記憶 + - * /。

3. 系統界面下面的中部是數字輸入按鈕,用來輸入數字。

4.系統界面下面的右側是運算符號按鈕,用來實現具體的運算。

關鍵字:java面向對象 計算器 網路編程

第一章 概述

1.1 設計目的

計算器是日常生活中十分便捷有效的工具,能實現加、減、乘、除、開方、求倒數等簡單運算的功能。本論文採用java程式語言實現計算器功能。該計算器大大的降低了數字計算的難度並且提高了計算的準確度和精確度。使用簡單,適合廣大工作人員和中小學生使用。

1.2 計算器系統概述

標準計算器的界面採用“圖形界面程式設計(GUI)”。GUI為用戶和應用程式之間的互動提供了直觀、方便的交流方式。用戶使用滑鼠、鍵盤操作圖形界面上的按鈕、選單等元素湘計算機系統傳送命令,系統運行的結果以圖形的方式顯示給用戶。

編寫java計算器主要使用了Swing組件和AWT布局類。Swing組件主要包括按鈕、標籤、文本輸入類、等組件,AWT主要運用了其中的布局管理器。

1.2.1 Swing組件

Swing組件的按鈕用JButton類表示,計算器的界面主要由JButton按鈕組成,以回響用戶的操作;

Swing中的標籤用JLabel類表示,標籤上可以顯示圖示和文本;

Swing的文本輸入類包括文本框JTextField、文本區JTextArea和密碼框JPasswordField。

本計算器中僅僅使用了文本框JTextField,用於文本數字的顯示。

1.2.2 AWT組件

布局管理器管理組件如何放置在容器中,AWT中最常用的四種布局類:FlowLayout、BorderLayout、GridLayout、CardLayout。本項目主要採用了GridLayout布局。

1.3功能模組設計

★標準計算器。

以下是標準計算器的各項功能:

(1)加法:

兩個及兩個以上數據進行加法操作,可以為小數形式。

(2)減法:

兩個及兩個以上數據進行減法操作,可以為負數形式。

(3)乘法:

兩個及兩個以上數據進行乘法操作。

(4)除法:

兩個及兩個以上數據進行除法操作。

(5)開平方:

對任意數開平方,可以為小數(不能為負數)。

(6)求倒數:

對任意數求倒數,0除外。

(7)求百分數:

對任意一個數進行百分號操作。

1.4 系統功能圖。

標準計算器

求倒數

開平方

求百分號

加法

減法

乘法

除法

圖1.1 計算器系統功能圖

第二章 項目設計說明

2.1標準計算器設計界面

圖2.1 計算器設計界面

2.2標準計算器設計主要代碼

標準計算器主要由一個選單欄、一個文本框、27個按鈕組成。

2.2.1整體框架代碼

JFrame f = new JFrame("標準計算器");

f.setLocation(400, 300);

Container contentPane = f.getContentPane;

2.2.2 選單欄代碼

圖2.2 選單欄

JMenuBar mBar = new JMenuBar;

mBar.setOpaque(true);

mEdit = new JMenu("編輯(E)");

mEdit.setMnemonic(KeyEvent.VK_E);

mCopy = new JMenuItem("複製(C)");

mEdit.add(mCopy);

mPaste = new JMenuItem("貼上(P)");

mEdit.add(mPaste);

mView = new JMenu("查看(V)");

mView.setMnemonic(KeyEvent.VK_V);

mView.add(new JMenuItem("標準型"));

mView.add(new JMenuItem("科學型"));

mView.addSeparator;

mView.add(new JMenuItem("查看分組"));

mHelp = new JMenu("幫助(H)");

mHelp.setMnemonic(KeyEvent.VK_H);

mHelp.add(new JMenuItem("幫助主題"));

mHelp.addSeparator;

mHelp.add(new JMenuItem("關於計算器"));

mBar.add(mEdit);

mBar.add(mView);

mBar.add(mHelp);

f.setJMenuBar(mBar);

contentPane.setLayout(new BorderLayout);

2.2.3 文本框代碼

圖2.3 文本框

JPanel pTop = new JPanel;

tResult = new JTextField("0.",26);

tResult.setHorizontalAlignment(JTextField.RIGHT);

tResult.setEditable(false);

pTop.add(tResult);

contentPane.add(pTop,BorderLayout.NORTH);

2.2.4 計算器各功能鍵代碼

圖2.4 各功能鍵圖

bOther = new JButton("MC");

bOther.addActionListener(this);

bOther.setForeground(Color.red); //字型顏色

bOther.setMargin(new Insets(3,2,3,2));//按鈕框線和標籤之間的空白

pLeft.add(bOther);

bOther = new JButton("MR");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

bOther.setMargin(new Insets(3,2,3,2));

pLeft.add(bOther);

bOther = new JButton("MS");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

bOther.setMargin(new Insets(3,2,3,2));

pLeft.add(bOther);

bOther = new JButton("M+");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

bOther.setMargin(new Insets(3,2,3,2));

pLeft.add(bOther);

pBottom.add(pLeft,BorderLayout.WEST);

JPanel pRight = new JPanel;

pRight.setLayout(new BorderLayout);

JPanel pUp = new JPanel;

pUp.setLayout(new GridLayout(1,3,3,0));

bOther = new JButton("BackSpace");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

bOther.setMargin(new Insets(3,0,3,5));

pUp.add(bOther);

bOther = new JButton("CE");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

pUp.add(bOther);

bOther = new JButton("C");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

pUp.add(bOther);

2.2.5 數字鍵及運算符號代碼

圖2.5 數字鍵圖

JPanel pDown = new JPanel;

pDown.setLayout(new GridLayout(4,5,3,2));

bNumber = new JButton("7");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new Insets(3,3,3,3));

pDown.add(bNumber);

(註:其他數字鍵、運算符號鍵與“7”定義相同。)

第三章 程式運行效果

3.1加法運算

本計算器可以實現多個運算數相加,例如:1+2+3+4

計算結果為10,所有數據均為double類型。

3.2減法運算

本計算器可以實現多個運算數相減(正負數),例如:6-5-3-1

計算結果為-3,數據類型為double類型。

3.3乘法運算

本計算器可以實現多個運算數相乘,例如2*3*4*5

運算結果為120,數據類型為double類型。

3.4除法運算

本計算器可以實現多個運算數相除(除數不為0)例如:15/3/5/2

運算結果為0.5,數據類型為double類型

當除數為0時,計算器自動報錯,例如:15/0

3.5開方運算

當被開方數為非負數時,計算器自動開方,例如:25開方

運算結果為5.

3.6求倒數運算

當按下求倒數鍵時,計算器自動為運算數求其倒數。例如:5的倒數

運算結果為0.2.

第四章 項目重難點分析

4.1重難點分析

Java計算器中整體框架的建立,按鈕的設定,整體布局在操作過程中都是很順暢的。計算器的關鍵步驟也是重點是實現計算器的計算方法。

實現兩個數的加減乘除等運算是比較簡單的,但是一個計算器需要做到的是實現多個運算數的運算。此時就用到了我在項目一開始定義的兩個數據

每執行一次運算操作就把運算結果賦值給運算元1 “op1”,並判斷下一步操作是“=”或者“其他運算符”,決定下一步計算器的操作。

4.2程式中存在的問題

(1)選單欄中雖然設定了編輯、查看、幫助等選項,但是項目中並沒有實際的功能。

(2)程式中設定了記憶體的有關操作但是並沒有達到其預期的功能。

(3)百分號的實際功能並沒有實現。

(4)當被開方數是負數時,計算器並不能給出錯誤提示。

[參考文獻]

《Java編程實用技術與案例 》 譯作者:楊紹方

《軟體工程Java語言實現SoftwareEngineeringwithJava》StephenR.Schach譯者:袁兆山等

程式設計師天堂( 英文網站 大量的程式, 庫, 包)

java畢業論文範文篇五:

一、引言

加深對《Java2面向對象程式設計》課程所學知識的理解,進一步鞏固 Java語言的語法規則。分析系統的可行性,讓系統有一個明確的方向,使開發更具合理性,並能分析出系統的具體流程,為後面的開發做好鋪墊。明確本次課程設計所要用到的技術點併到網上搜尋以及查閱相關的書籍來蒐集資料。通過編寫一個基於JAVA的套用系統綜合實例,來掌握Java語言編程技巧。並學會編制結構清晰、風格良好的、數據結構適當的Java語言程式,從而具備解決綜合性實際問題的能力

二、課題內容

用Java設計一個職工信息管理系統,並實現相關功能。

三、系統程式要求

1、設計一個職工信息管理系統

2、要求包括職工信息包括職工號、姓名、性別、年齡、學歷、工資、

住 址、電話(職工號不重複)

3、本系統功能描述:

職工信息錄入功能(職工信息用文本保存);

職工信息瀏覽功能;

查詢功能(至少一種查詢方式):

按工資查詢, 按學歷查詢

4、職工信息刪除、修改功能(這兩個功能任選)。

四、程式設計思想

該課題要求是輸入職工信息,對職工信息進行一系列的處理。既要輸入工號又要能查找到與之對應的職工,還要對實現建立,顯示,查找,刪除,信息的保存。

因為考慮到信息管理信息的實用性,我額外添加了一個“讀檔案”功能,使利用void read方法來實現的。這個“讀檔案模組"!是我用來擴充信息管理系統功能的!可以使系統在用戶不用輸入信息就能讀取先前已存在的職工信息檔案。

根據課題要求,我是這樣設計的:首先對要實現的功能類型分為三大類——Public類、方法類、信息類;然後細分為六個方法——void caidan、void creat、void output、void search、void delete、void read 。這些類和方法構成了能夠實現不同功能的模組,很好地體現了面向對象的Java語言的編程模組塊的思想。

我通過調用各功能模組的幾個方法,隨後在各個method中具體實現相關的功能。當然要利用throws IOException進行一些異常處理,包括輸入異常和數據的異常。在數據的錄入與輸出的過程中涉及到檔案的相關操作(包括打開與關閉等)最後是系統的安全退出。大部分功能都是在具體的模組中加以實現的。

如search方法實現查詢職工信息功能;caidan方法實現系統選擇選單界面的輸出等相關功能;delete方法用於職工信息刪除;output方法用於職工信息的輸出及瀏覽等系列功能。

五、程式原始碼及其解析

package staff;//包

import java.io.*;

public class StaffInfomation {

public static void main(final String args) throws IOException

//throws IOException用來拋出io的錯誤,檔案讀寫錯誤, 主要涉及到java的安全機制

{

staffInfo staffOne=new staffInfo[100]; //定義100個類數組

for(int j=0;j<100;j++) staffOne[j] = new staffInfo;

//建立這100個類的對象

final ways staffTwo=new ways; //建立這個方法類的對象

staffTwo.caidan(staffOne);

staffTwo.creat(staffOne);

staffTwo.output(staffOne);

staffTwo.search(staffOne);

staffTwo.delete(staffOne);

//以上幾個方法分別對應著:caidan選單選擇、增加(建立)職工信息、輸出(預覽)、查詢、刪除這些功能,以數組類為參數

}

}

class staffInfo

//職工信息類換句話說就相當與c語言裡面的結構體,存放職工的信息

{

public String name;

public String num;

public String sex;

public String age;

public String record;

public String position;

public String wanges;

public String tel;

public String addr;

//把name、num、sex、age、record等聲明為全局變數,因為它們貫穿於整個程式中,方便其它方法、類調用它們

}

class ways //方法類,主要實現職工信息的建立,顯示,查找,刪除,信息的保存與讀取;這個類是整個程式的操作類。

{

public String recordkey;

public int i=0;//i用來存放職工的人數

public String filename="Infomation.txt";

BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));

//此處是JAVA語言中輸入數據的基本格式,功能有如C中的scanf函式

void caidan(staffInfo staffOne) throws IOException

{

final BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));

// 參看書34頁,產生Buf對象;buf是BufferedReader類的變數,此處將讀入字元串至buf

int choice;

do{

System.out.println("☆★☆★☆★☆★電子信息系40706班★賀 雪 設計★☆★☆★☆\n\n");

System.out.println("┏━━━━━━━━━━━━━━━━━━┓");

System.out.println("┃★ 職工管理系統主選單界面 ★┃");

System.out.println("┣━━━━━━━━━━━━━━━━━━┫");

System.out.println("┃ ★ ①.輸入職工信息 ★ ┃");

System.out.println("┃ ★ ②.預覽職工信息 ★ ┃");

System.out.println("┃ ★ ③.查找職工信息 ★   ┃");

System.out.println("┃ ★ ④.刪除職工信息 ★ ┃");

System.out.println("┃ ★ ⑤.安全退出系統 ★ ┃");

System.out.println("┃ ★ ⑥.讀取數據 ★ ┃");

System.out.println("┗━━━━━━━━━━━━━━━━━━┛");

System.out.print(" 請輸入您的選擇(0--6):");

choice=Integer.parseInt(buf.readLine);

switch(choice)

{

case 1:creat(staffOne);break;

case 2:output(staffOne);break;

case 3:search(staffOne);break;

case 4:delete(staffOne);break;

case 5:save(staffOne);break;

case 6:read(staffOne);break;

}

}while(choice!=0);

}

void creat(staffInfo staffOne) throws IOException

//這個方法是實現“增加(建立)職工信息”;是建立信息模組

{

final BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));

System.out.print("\n請輸入職工信息(以0結束)\n");

System.out.print("姓名:\n\n");

staffOne[i].name=buf.readLine;

while(staffOne[i].name.compareTo("0")!=0)

//用數組staffOne[i]來暫存職工的序 號,並用compareTo方 法確定判定是否應該寫入新信息

{

System.out.print("工號:\n\n");

staffOne[i].num=buf.readLine;

System.out.print("性別:\n\n");

staffOne[i].sex=buf.readLine;

System.out.print("年齡:\n\n");

staffOne[i].age=buf.readLine;

System.out.print("學歷:\n\n");

staffOne[i].record=buf.readLine;

System.out.print("職位:\n\n");

staffOne[i].position=buf.readLine;

System.out.print("工資:\n\n");

staffOne[i].wanges=buf.readLine;

System.out.print("電話:\n\n");

staffOne[i].tel=buf.readLine;

System.out.print("住址:\n\n");

staffOne[i].addr=buf.readLine;

i++;

System.out.println("請輸入下一個職工信息:\n\n");

staffOne[i].name=buf.readLine;

}

}

void output(staffInfo staffOne) throws IOException

//這裡是實現“輸出(預覽)職工信息”output的模組

{

System.out.println("--------------------------------------");

System.out.println(" *員工信息表* );

System.out.println("------------------------------------");

System.out.println("姓名 工號 性別 年齡 學歷 職位 工資 電話號碼 住址");

System.out.println("---------------------------------");

if(i!=0)

{

for(int j=0;j<i;j++)

{

System.out.print(staffOne[j].name+" "+staffOne[j].num+" "+staffOne[j].sex+" ");

System.out.print(staffOne[j].age+" "+staffOne[j].record+" "+staffOne[j].position+" ");

System.out.print(staffOne[j].wanges+" "+staffOne[j].tel+" "+staffOne[j].addr+"\n");

}

System.out.println("------------------------------");

}

else System.out.println("沒有員工信息!");

}

void search(staffInfo staffOne) throws IOException

//這裡是實現職工信息的查詢功能的模組

{

final BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));

System.out.println("\n請輸入您要查找的職工學歷:");

recordkey=buf.readLine;

boolean flg=true;

System.out.println("------------------------------------");

System.out.println(" *員工信息表* );

System.out.println("-----------------------------------");

System.out.println("姓名 工號 性別 年齡 學歷 職位 工資 電話號碼 住址");

System.out.println("---------------------------------------");

for(int j=0;j<i;j++)

{

if(recordkey.equals(staffOne[j].record))

//equals是字元串比較函式相等返回true

{

System.out.print(staffOne[j].name+" "+staffOne[j].num+" "+staffOne[j].sex+" ");

System.out.print(staffOne[j].age+" "+staffOne[j].record+" "+staffOne[j].position+" ");

System.out.print(staffOne[j].wanges+" "+staffOne[j].tel+" "+staffOne[j].addr+"\n");

flg=false;

}

}

if(flg)

System.out.println("對不起,查無此人!");

}

void delete(staffInfo staffOne) throws IOException

{

final BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));

System.out.println("\n請輸入您要刪除的職工姓名:");

recordkey=buf.readLine;

boolean flg=true;

for(int j=0;j<i;j++)

{

//System.out.println("staffOne[j].name="+staffOne[j].name);

//System.out.println("recordkey="+recordkey);

//System.out.println("recordkey.equals(staffOne[j].name)="+recordkey.equals(staffOne[j].name));

if(recordkey.equals(staffOne[j].name))

{

for(int k=j;k<=i-1;k++)

//利用順序表的刪除算法,刪除值之後,再把後面的值往前移位,從而實現刪除

{

staffOne[k].name=staffOne[k+1].name ;

staffOne[k].num=staffOne[k+1].num ;

staffOne[k].sex=staffOne[k+1].sex ;

staffOne[k].age=staffOne[k+1].age ;

staffOne[k].record=staffOne[k+1].record ;

staffOne[k].position=staffOne[k+1].position ;

staffOne[k].wanges=staffOne[k+1].wanges ;

staffOne[k].tel=staffOne[k+1].tel ;

staffOne[k].addr=staffOne[k+1].addr ;

}

i--;//職工人數要減一

flg=false;

}

}

if(flg)

System.out.println("對不起,查無此人!。");

else System.out.println("已經刪除!。");

}

void save(staffInfo staffOne) throws IOException

//數據的保存模組, 把輸入的職工信息保存到相應的檔案里。

{

int k;

final FileWriter fw=new FileWriter(filename);

//調用構造函式FileWriter創建FileWriter類的對象。

//檔案的讀取(書216頁13-2-2)

fw.write( i+"\n");//把職工的人數保存到檔案中以便下次讀取是使用

for( k=0;k<i;k++)//每個職工有9個信息欄位,下面就是這9個信息段。

{

fw.write( staffOne[k].name+"\n");

fw.write( staffOne[k].num+"\n");

fw.write( staffOne[k].sex+"\n" );

fw.write( staffOne[k].age+"\n");

fw.write( staffOne[k].record+"\n");

fw.write( staffOne[k].position+"\n") ;

fw.write( staffOne[k].wanges+"\n");

fw.write( staffOne[k].tel+"\n");

fw.write( staffOne[k].addr+"\n");

}

fw.close;

System.out.println("\n 系統已經安全退出!感謝您的使用!");

System.exit(0);

}

void read(staffInfo staffOne) throws IOException

//這是程式的“讀檔案模組"!是我自己添加進去擴充系統功能的!可以使系統不用輸入信息就能讀取先前已存在的職工信息檔案。

{

final FileReader fr=new FileReader(filename);

final BufferedReader bfr=new BufferedReader(fr);

//關於檔案的讀取不會的看看書216頁13-2-2

if((recordkey=bfr.readLine)!=null)

i=Integer.parseInt(recordkey);

for(int j=0;j<i;j++)

{

staffOne[j].name=bfr.readLine; 這是程式的“讀檔案模組",

是我自己添加進去擴充系統功

staffOne[j].num=bfr.readLine; 能的!可以使系統不用輸入信息

就能讀取先前已存在的職工信息

staffOne[j].sex=bfr.readLine; 檔案,從中讀取數據。利用了書

本P216頁13-2-2的檔案相關知識

staffOne[j].age=bfr.readLine;

staffOne[j].record=bfr.readLine;

staffOne[j].position=bfr.readLine ;

staffOne[j].wanges=bfr.readLine;

staffOne[j].tel=bfr.readLine;

staffOne[j].addr=bfr.readLine;

}

fr.close;

System.out.println("\n 數據已經成功讀取!");

}

}

六、心得體會

我自己感覺此次課程設計做得挺成功的,通過這一次,我學到了不少實際編程的知識。

在這次設計開始的第一天開始,我就開始著手修改一個用“職工信息管理系統”的JAVA程式。這一過程太不順利,調試的時候都沒有成功。後來我請教一個學長,在他的指導下我不斷的發現錯誤,並改正它們,功夫不負有心人人,我的程式最後運行成功了。

這其中了不少的東西,磨礪了我的意志;同時還鞏固了以前所學的知識,學到了不少書本上沒有的知識;學到了很多java編程知識,並學會了簡單的使用eclipse來開發java程式的一些使用技巧這次課程設計是對我本學期所學的知識的檢驗,由此我發現了不少的問題。可以說它給了我一次自我評估的機會。通過設計讓我知道了那些方面我還是有欠缺的,促使我花時間彌補。

臨近考試,時間太緊迫,致使程式實現的功能在方法上也許不是很完美,但我以後會多向老師請教,自己也要加強對Java 的學習。努力進一步提高自己的編程水平。

參考資料

1、《程式天下》

2、洪維恩、何嘉《java2面向對象程式設計》

3、Java天下-java、jsp編程論壇[黑咖啡屋]

4、黃旭等《java課程設計指導》

5、C編程設計(第三版) 譚浩強(著)