java畢業(yè)論文范文5篇(3)
java畢業(yè)論文范文篇四:
摘要
本文圍繞Java編程語言在網(wǎng)絡編程方面的具體應用,論述了使用面向對象方法,對計算器程序進行需求分析、概要設計、詳細設計,最后使用Java編程實現(xiàn)的全過程。
java語言,是目前比較流行的編程語言。經過10多年的發(fā)展,java已經滲透到全球每個角落。在當今這個網(wǎng)絡的時代,java語言在網(wǎng)絡編程方面的優(yōu)勢使得網(wǎng)絡編程有了更好的選擇。Java語言最令人矚目的特點是具有跨平臺性,使其不受平臺不同的影響,并得到了廣泛的應用。
設計內容:設計GUI界面的計算器。用戶可以通過鼠標依次輸入?yún)⒓佑嬎愕臄?shù)值,進行加、減、乘、除等混合運算。
設計要求:
1.系統(tǒng)界面的上面是數(shù)字輸入對話框,用來顯示所輸入的數(shù)字和運行的結果。
2.系統(tǒng)界面下面的左側是記憶 + - * /。
3. 系統(tǒng)界面下面的中部是數(shù)字輸入按鈕,用來輸入數(shù)字。
4.系統(tǒng)界面下面的右側是運算符號按鈕,用來實現(xiàn)具體的運算。
關鍵字:java面向對象 計算器 網(wǎng)絡編程
第一章 概述
1.1 設計目的
計算器是日常生活中十分便捷有效的工具,能實現(xiàn)加、減、乘、除、開方、求倒數(shù)等簡單運算的功能。本論文采用java編程語言實現(xiàn)計算器功能。該計算器大大的降低了數(shù)字計算的難度并且提高了計算的準確度和精確度。使用簡單,適合廣大工作人員和中小學生使用。
1.2 計算器系統(tǒng)概述
標準計算器的界面采用“圖形界面程序設計(GUI)”。GUI為用戶和應用程序之間的交互提供了直觀、方便的交流方式。用戶使用鼠標、鍵盤操作圖形界面上的按鈕、菜單等元素湘計算機系統(tǒng)發(fā)送命令,系統(tǒng)運行的結果以圖形的方式顯示給用戶。
編寫java計算器主要使用了Swing組件和AWT布局類。Swing組件主要包括按鈕、標簽、文本輸入類、等組件,AWT主要運用了其中的布局管理器。
1.2.1 Swing組件
Swing組件的按鈕用JButton類表示,計算器的界面主要由JButton按鈕組成,以響應用戶的操作;
Swing中的標簽用JLabel類表示,標簽上可以顯示圖標和文本;
Swing的文本輸入類包括文本框JTextField、文本區(qū)JTextArea和密碼框JPasswordField。
本計算器中僅僅使用了文本框JTextField,用于文本數(shù)字的顯示。
1.2.2 AWT組件
布局管理器管理組件如何放置在容器中,AWT中最常用的四種布局類:FlowLayout、BorderLayout、GridLayout、CardLayout。本項目主要采用了GridLayout布局。
1.3功能模塊設計
★標準計算器。
以下是標準計算器的各項功能:
(1)加法:
兩個及兩個以上數(shù)據(jù)進行加法操作,可以為小數(shù)形式。
(2)減法:
兩個及兩個以上數(shù)據(jù)進行減法操作,可以為負數(shù)形式。
(3)乘法:
兩個及兩個以上數(shù)據(jù)進行乘法操作。
(4)除法:
兩個及兩個以上數(shù)據(jù)進行除法操作。
(5)開平方:
對任意數(shù)開平方,可以為小數(shù)(不能為負數(shù))。
(6)求倒數(shù):
對任意數(shù)求倒數(shù),0除外。
(7)求百分數(shù):
對任意一個數(shù)進行百分號操作。
1.4 系統(tǒng)功能圖。
標準計算器
求倒數(shù)
開平方
求百分號
加法
減法
乘法
除法
圖1.1 計算器系統(tǒng)功能圖
第二章 項目設計說明
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 數(shù)字鍵及運算符號代碼
圖2.5 數(shù)字鍵圖
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);
(注:其他數(shù)字鍵、運算符號鍵與“7”定義相同。)
第三章 程序運行效果
3.1加法運算
本計算器可以實現(xiàn)多個運算數(shù)相加,例如:1+2+3+4
計算結果為10,所有數(shù)據(jù)均為double類型。
3.2減法運算
本計算器可以實現(xiàn)多個運算數(shù)相減(正負數(shù)),例如:6-5-3-1
計算結果為-3,數(shù)據(jù)類型為double類型。
3.3乘法運算
本計算器可以實現(xiàn)多個運算數(shù)相乘,例如2*3*4*5
運算結果為120,數(shù)據(jù)類型為double類型。
3.4除法運算
本計算器可以實現(xiàn)多個運算數(shù)相除(除數(shù)不為0)例如:15/3/5/2
運算結果為0.5,數(shù)據(jù)類型為double類型
當除數(shù)為0時,計算器自動報錯,例如:15/0
3.5開方運算
當被開方數(shù)為非負數(shù)時,計算器自動開方,例如:25開方
運算結果為5.
3.6求倒數(shù)運算
當按下求倒數(shù)鍵時,計算器自動為運算數(shù)求其倒數(shù)。例如:5的倒數(shù)
運算結果為0.2.
第四章 項目重難點分析
4.1重難點分析
Java計算器中整體框架的建立,按鈕的設置,整體布局在操作過程中都是很順暢的。計算器的關鍵步驟也是重點是實現(xiàn)計算器的計算方法。
實現(xiàn)兩個數(shù)的加減乘除等運算是比較簡單的,但是一個計算器需要做到的是實現(xiàn)多個運算數(shù)的運算。此時就用到了我在項目一開始定義的兩個數(shù)據(jù)
每執(zhí)行一次運算操作就把運算結果賦值給操作數(shù)1 “op1”,并判斷下一步操作是“=”或者“其他運算符”,決定下一步計算器的操作。
4.2程序中存在的問題
(1)菜單欄中雖然設置了編輯、查看、幫助等選項,但是項目中并沒有實際的功能。
(2)程序中設置了內存的有關操作但是并沒有達到其預期的功能。
(3)百分號的實際功能并沒有實現(xiàn)。
(4)當被開方數(shù)是負數(shù)時,計算器并不能給出錯誤提示。
[參考文獻]
《Java編程實用技術與案例 》 譯作者:楊紹方
《軟件工程Java語言實現(xiàn)SoftwareEngineeringwithJava》StephenR.Schach譯者:袁兆山等
程序員天堂( 英文網(wǎng)站 大量的程序, 庫, 包) http://www.programmersheavean.com
java畢業(yè)論文范文篇五:
一、引言
加深對《Java2面向對象程序設計》課程所學知識的理解,進一步鞏固 Java語言的語法規(guī)則。分析系統(tǒng)的可行性,讓系統(tǒng)有一個明確的方向,使開發(fā)更具合理性,并能分析出系統(tǒng)的具體流程,為后面的開發(fā)做好鋪墊。明確本次課程設計所要用到的技術點并到網(wǎng)上搜索以及查閱相關的書籍來搜集資料。通過編寫一個基于JAVA的應用系統(tǒng)綜合實例,來掌握Java語言編程技巧。并學會編制結構清晰、風格良好的、數(shù)據(jù)結構適當?shù)腏ava語言程序,從而具備解決綜合性實際問題的能力
二、課題內容
用Java設計一個職工信息管理系統(tǒng),并實現(xiàn)相關功能。
三、系統(tǒng)程序要求
1、設計一個職工信息管理系統(tǒng)
2、要求包括職工信息包括職工號、姓名、性別、年齡、學歷、工資、
住 址、電話(職工號不重復)
3、本系統(tǒng)功能描述:
職工信息錄入功能(職工信息用文本保存);
職工信息瀏覽功能;
查詢功能(至少一種查詢方式):
按工資查詢, 按學歷查詢
4、職工信息刪除、修改功能(這兩個功能任選)。
四、程序設計思想
該課題要求是輸入職工信息,對職工信息進行一系列的處理。既要輸入工號又要能查找到與之對應的職工,還要對實現(xiàn)建立,顯示,查找,刪除,信息的保存。
因為考慮到信息管理信息的實用性,我額外添加了一個“讀文件”功能,使利用void read()方法來實現(xiàn)的。這個“讀文件模塊"!是我用來擴充信息管理系統(tǒng)功能的!可以使系統(tǒng)在用戶不用輸入信息就能讀取先前已存在的職工信息文件。
根據(jù)課題要求,我是這樣設計的:首先對要實現(xiàn)的功能類型分為三大類——Public類、方法類、信息類;然后細分為六個方法——void caidan()、void creat()、void output()、void search()、void delete()、void read ()。這些類和方法構成了能夠實現(xiàn)不同功能的模塊,很好地體現(xiàn)了面向對象的Java語言的編程模塊塊的思想。
我通過調用各功能模塊的幾個方法,隨后在各個method中具體實現(xiàn)相關的功能。當然要利用throws IOException進行一些異常處理,包括輸入異常和數(shù)據(jù)的異常。在數(shù)據(jù)的錄入與輸出的過程中涉及到文件的相關操作(包括打開與關閉等)最后是系統(tǒng)的安全退出。大部分功能都是在具體的模塊中加以實現(xiàn)的。
如search方法實現(xiàn)查詢職工信息功能;caidan方法實現(xiàn)系統(tǒng)選擇菜單界面的輸出等相關功能;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個類數(shù)組
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菜單選擇、增加(建立)職工信息、輸出(預覽)、查詢、刪除這些功能,以數(shù)組類為參數(shù)
}
}
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 //方法類,主要實現(xiàn)職工信息的建立,顯示,查找,刪除,信息的保存與讀取;這個類是整個程序的操作類。
{
public String recordkey;
public int i=0;//i用來存放職工的人數(shù)
public String filename="Infomation.txt";
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
//此處是JAVA語言中輸入數(shù)據(jù)的基本格式,功能有如C中的scanf函數(shù)
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("┃★ 職工管理系統(tǒng)主菜單界面 ★┃");
System.out.println("┣━━━━━━━━━━━━━━━━━━┫");
System.out.println("┃ ★?、?輸入職工信息 ★ ┃");
System.out.println("┃ ★ ②.預覽職工信息 ★ ┃");
System.out.println("┃ ★ ③.查找職工信息 ★ ┃");
System.out.println("┃ ★ ④.刪除職工信息 ★ ┃");
System.out.println("┃ ★ ⑤.安全退出系統(tǒng) ★ ┃");
System.out.println("┃ ★ ⑥.讀取數(shù)據(jù) ★ ┃");
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
//這個方法是實現(xiàn)“增加(建立)職工信息”;是建立信息模塊
{
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)
//用數(shù)組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
//這里是實現(xiàn)“輸出(預覽)職工信息”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
//這里是實現(xiàn)職工信息的查詢功能的模塊
{
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是字符串比較函數(shù)相等返回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++)
//利用順序表的刪除算法,刪除值之后,再把后面的值往前移位,從而實現(xiàn)刪除
{
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--;//職工人數(shù)要減一
flg=false;
}
}
if(flg)
System.out.println("對不起,查無此人!。");
else System.out.println("已經刪除!。");
}
void save(staffInfo staffOne[]) throws IOException
//數(shù)據(jù)的保存模塊, 把輸入的職工信息保存到相應的文件里。
{
int k;
final FileWriter fw=new FileWriter(filename);
//調用構造函數(shù)FileWriter()創(chuàng)建FileWriter類的對象。
//文件的讀取(書216頁13-2-2)
fw.write( i+"\n");//把職工的人數(shù)保存到文件中以便下次讀取是使用
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 系統(tǒng)已經安全退出!感謝您的使用!");
System.exit(0);
}
void read(staffInfo staffOne[]) throws IOException
//這是程序的“讀文件模塊"!是我自己添加進去擴充系統(tǒng)功能的!可以使系統(tǒng)不用輸入信息就能讀取先前已存在的職工信息文件。
{
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(); 這是程序的“讀文件模塊",
是我自己添加進去擴充系統(tǒng)功
staffOne[j].num=bfr.readLine(); 能的!可以使系統(tǒng)不用輸入信息
就能讀取先前已存在的職工信息
staffOne[j].sex=bfr.readLine(); 文件,從中讀取數(shù)據(jù)。利用了書
本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 數(shù)據(jù)已經成功讀取!");
}
}
六、心得體會
我自己感覺此次課程設計做得挺成功的,通過這一次,我學到了不少實際編程的知識。
在這次設計開始的第一天開始,我就開始著手修改一個用“職工信息管理系統(tǒng)”的JAVA程序。這一過程太不順利,調試的時候都沒有成功。后來我請教一個學長,在他的指導下我不斷的發(fā)現(xiàn)錯誤,并改正它們,功夫不負有心人人,我的程序最后運行成功了。
這其中了不少的東西,磨礪了我的意志;同時還鞏固了以前所學的知識,學到了不少書本上沒有的知識;學到了很多java編程知識,并學會了簡單的使用eclipse來開發(fā)java程序的一些使用技巧這次課程設計是對我本學期所學的知識的檢驗,由此我發(fā)現(xiàn)了不少的問題??梢哉f它給了我一次自我評估的機會。通過設計讓我知道了那些方面我還是有欠缺的,促使我花時間彌補。
臨近考試,時間太緊迫,致使程序實現(xiàn)的功能在方法上也許不是很完美,但我以后會多向老師請教,自己也要加強對Java 的學習。努力進一步提高自己的編程水平。
參考資料
1、《程序天下》
2、洪維恩、何嘉《java2面向對象程序設計》
3、Java天下-java、jsp編程論壇[黑咖啡屋]
4、黃旭等《java課程設計指導》
5、C編程設計(第三版) 譚浩強(著)
看了java畢業(yè)論文范文的人還看了: