1. java課程設計結束了,老師要我們寫心得體會,好心人幫我寫一份吧
Java 是一門高科技語言...學習上要做到嚴謹細心 平時要多加練習 實際操作 總的來說這課有點難
2. 哪個學哥,學姐有用過的JAVA課程設計啊~給我一份~~謝謝啦 急需~~~
Java課程設計報告
題 目: 計算器
院(系):xxx學院
年級專業: xxx班
學生姓名: xxx
指導老師: xx老師
開始時間: 200x-xx-xx
完成時間: 200x-xx-xx
目 錄
1. 摘 要
2. 概要設計
3. 詳細設計
4. 測試分析
5. 參考文獻
一、摘 要
本計算器可以進行簡單的四則運算(加、減、乘、除)但僅限於十進制下,還可以進行(八進制,十進制,十六進制)之間的相互轉換,八進制最多可以輸入19位數,十進制最多可以輸入18位數,十六進制最多可以輸入14位數,backspace表示退格, clear表示初始化,在window下直接運行(jsp2003.bat)即可,界面為灰白對稱。
二、概要設計
(1) 自定義類說明
**********************************************************
* 類名: This_number_too_big *
* 作用: 自定義的異常類,用來處理計算結果溢出 *
* 繼承的父類: Exception類 *
* 實現的介面: 沒有 *
**********************************************************
class This_number_too_big extends Exception
{
}//自定義的一個結果溢出異常類
**********************************************************
* 類名: Jsp2003 *
* 作用: 主類。 *
* 繼承的父類: Frame類 *
* 實現的介面: ItemListener類,ActionListener類 *
**********************************************************
class Jsp2003 extends Frame implements ItemListener,ActionListener
{
public int number=0,length=18;
//number是用來記錄輸入的數字個數,
//length是用來設置在不同進制下允許輸入的最多數字位數,默認為十進制 public char mark='n';
//設置運算符號為沒有即為『n』,它的值是『+』『-』『*』『/』
public double data=0;
//設置運算數據為零
public char ch;
//用來臨時存放所按按鈕的第一個字元
public boolean Refresh=false;
//設置lab是否要在輸入數據的時候刷新,初始為否
主要方法說明:
------------------------------------------------------------------------------------------------
//用來處理按了運算符後的計算-
public void js() throws This_number_too_big //指定由method拋出異常
{if (mark=='n') //沒有運算符
{mark=ch; //,則設置運算符為剛剛輸入的字元,
data=Double.parseDouble(lab.getText());//則設置運算數據為lab的值
Refresh=true;//則設置下一次輸入的時候要刷新lab
}
else //如果採用的是連續運算(即沒有使用『=』號)則運行下面的語句
{switch (mark) //根據運算符計算結果,並把結果保存到data
{ case '+': data+=Double.parseDouble(lab.getText()); break;
case '-': data-=Double.parseDouble(lab.getText()); break;
case '*': data*=Double.parseDouble(lab.getText()); break;
case '/': data/=Double.parseDouble(lab.getText()); break;}
lab.setText(Double.toString(data)); //顯示運算結果
mark=ch;//設置運算符為剛剛按下的運算符
Refresh=true;//則設置下一次輸入的時候要刷新lab
number=lab.getText().length();//設置輸入的字元個數
// System.out.println(lab.getText());//用來調試用的
if (data>Double.MAX_VALUE)
//如果data超過double類型的最大值則拋出自定義的一個異常類
{throw new This_number_too_big(); }
}
}//end js() method
----------------------------------------------------------------------------------------------------
public void enter()//處理輸入字元
{if(Refresh==true)
//如果已經設置了 運算符則在下一次輸入數據的時候要把以前lab的內容清除掉
{lab.setText("0"); number=0; Refresh=false;}
if(lab.getText().charAt(0)=='0'&& lab.getText().length()==1)
//如果lab的內容為0則,lab的內容將被所輸入的字元代替,
//否則直接在lab的內容後面加上所輸入的字元
{lab.setText(Character.toString(ch)); number++;}
else
if(number<length)
{number++;lab.setText(lab.getText()+ch);}
}//end enter() method
--------------------------------------------------------------------------------------------------------
//八進制或十六進制轉換成十進制I
public String goto_10(String s,long l)
//參數s: 是要轉換的字元串,由於輸入的控制,保證了字元串的合法性;
//參數l: 使用來設置是將8進制還是16進制轉換成10進制,它的有效值為8或16;
{ String str=s; //用來轉換的字元串
long j=l; //表示進制
long lg=0,jing=1;//lg用來記錄權乘和,jing用來記錄位權
char cha;//臨時記錄要轉換的字元
for(int i=1;i<=str.length();i++)
{ cha=str.charAt(str.length()-i);
switch(cha)
{ case '1': lg=lg+1*jing;break;
case '2': lg=lg+2*jing;break;
case '3': lg=lg+3*jing;break;
case '4': lg=lg+4*jing;break;
case '5': lg=lg+5*jing;break;
case '6': lg=lg+6*jing;break;
case '7': lg=lg+7*jing;break;
case '8': lg=lg+8*jing;break;
case '9': lg=lg+9*jing;break;
case 'A': lg=lg+10*jing;break;
case 'B': lg=lg+11*jing;break;
case 'C': lg=lg+12*jing;break;
case 'D': lg=lg+13*jing;break;
case 'E': lg=lg+14*jing;break;
case 'F': lg=lg+15*jing;break;}
jing*=j; //位權升一級,為下次使用做好准備
}
return Long.toString(lg);
}//end String goto_10() method
}
(2)程序流程圖
三、詳細設計
import java.awt.*;
import java.awt.event.*;
class This_number_too_big extends Exception
{}//自定義的一個結果溢出異常類
class Jsp2003 extends Frame implements ItemListener,ActionListener {
public Jsp2003() {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
}
static Jsp2003 mainFrame = new Jsp2003();
static Label lab=new Label("0");
static Panel pnl1=new Panel(new GridLayout(4,3,3,3));
static Panel pnl2=new Panel(new GridLayout(4,1,3,3));
static Panel pnl3=new Panel(new GridLayout(1,2,3,3));
static Panel pnl4=new Panel(new GridLayout(6,1,3,3));
static Button bt9=new Button("9");
static Button bt8=new Button("8");
static Button bt7=new Button("7");
static Button bt6=new Button("6");
static Button bt5=new Button("5");
static Button bt4=new Button("4");
static Button bt3=new Button("3");
static Button bt2=new Button("2");
static Button bt1=new Button("1");
static Button bt0=new Button("0");
static Button btdot=new Button(".");
static Button btequ=new Button("=");
static Button btadd=new Button("+");
static Button btsub=new Button("-");
static Button btmul=new Button("*");
static Button btdev=new Button("/");
static Button btA=new Button("A");
static Button btB=new Button("B");
static Button btC=new Button("C");
static Button btD=new Button("D");
static Button btE=new Button("E");
static Button btF=new Button("F");
static Checkbox ckb8=new Checkbox("八進制");
static Checkbox ckb10=new Checkbox("十進制");
static Checkbox ckb16=new Checkbox("十六進制");
static Button btc=new Button("clear");
static Button btt=new Button("backspace");
public int number=0,length=18;
//number是用來記錄輸入的數字個數,length是用來設置在不同進制下允許輸入的最多數字位數,默認為十進制
public char mark='n'; //設置運算符號為沒有即為『n』,它的值是『+』『-』『*』『/』
public double data=0; //設置運算數據為零
public char ch; //用來臨時存放所按按鈕的第一個字元
public boolean Refresh=false;//設置lab是否要在輸入數據的時候刷新,初始為否
public static void main(String args[]) {
System.out.println("Starting Jsp2003...");
lab.setAlignment(Label.RIGHT);
lab.setBackground(Color.lightGray);
lab.setForeground(Color.BLUE);
lab.setFont(new Font("Serief",Font.BOLD,18));
lab.setBounds(14,33,216,40);
mainFrame.add(lab);
CheckboxGroup grp=new CheckboxGroup();
ckb8.setCheckboxGroup(grp);
ckb10.setCheckboxGroup(grp);
ckb16.setCheckboxGroup(grp);
ckb8.setBounds(14,75,55,25);
ckb10.setBounds(69,75,55,25);
ckb16.setBounds(124,75,65,25);
ckb8.setState(false);
ckb10.setState(true);
ckb16.setState(false);
mainFrame.add(ckb8);
mainFrame.add(ckb10);
mainFrame.add(ckb16);
pnl1.setBounds(14,140,120,150);
pnl2.setBounds(144,140,40,150);
pnl3.setBounds(14,100,170,36);
pnl4.setBounds(190,100,40,190);
pnl1.add(bt7);
pnl1.add(bt8);
pnl1.add(bt9);
pnl1.add(bt4);
pnl1.add(bt5);
pnl1.add(bt6);
pnl1.add(bt1);
pnl1.add(bt2);
pnl1.add(bt3);
pnl1.add(bt0);
pnl1.add(btdot);
pnl1.add(btequ);
pnl2.add(btadd);
pnl2.add(btsub);
pnl2.add(btmul);
pnl2.add(btdev);
pnl3.add(btt);
pnl3.add(btc);
pnl4.add(btA);
pnl4.add(btB);
pnl4.add(btC);
pnl4.add(btD);
pnl4.add(btE);
pnl4.add(btF);
btA.enable(false);
btB.enable(false);
btC.enable(false);
btD.enable(false);
btE.enable(false);
btF.enable(false);
mainFrame.add(pnl1);
mainFrame.add(pnl2);
mainFrame.add(pnl3);
mainFrame.add(pnl4);
mainFrame.setResizable(false);
mainFrame.setLayout(null);
mainFrame.setSize(240,300 );
mainFrame.setTitle("計算器");
mainFrame.setVisible(true);
ckb8.addItemListener(mainFrame);
ckb10.addItemListener(mainFrame);
ckb16.addItemListener(mainFrame);
//把事件聆聽者向各個組鍵注冊
bt1.addActionListener(mainFrame);
bt2.addActionListener(mainFrame);
bt3.addActionListener(mainFrame);
bt4.addActionListener(mainFrame);
bt5.addActionListener(mainFrame);
bt6.addActionListener(mainFrame);
bt7.addActionListener(mainFrame);
bt8.addActionListener(mainFrame);
bt9.addActionListener(mainFrame);
bt0.addActionListener(mainFrame);
btadd.addActionListener(mainFrame);
btsub.addActionListener(mainFrame);
btmul.addActionListener(mainFrame);
btdev.addActionListener(mainFrame);
btt.addActionListener(mainFrame);
btc.addActionListener(mainFrame);
btdot.addActionListener(mainFrame);
btequ.addActionListener(mainFrame);
btA.addActionListener(mainFrame);
btB.addActionListener(mainFrame);
btC.addActionListener(mainFrame);
btD.addActionListener(mainFrame);
btE.addActionListener(mainFrame);
btF.addActionListener(mainFrame);
}// end main() mothed
//---------------------------------------------
//checkbox 事件的處理
public void itemStateChanged(ItemEvent e)
{ mark='n';
Refresh=false;
//規定當進制轉換時以前輸入的運算符失效
if (ckb8.getState()==true)
{ btA.enable(false);
btB.enable(false);
btC.enable(false);
btD.enable(false);
btE.enable(false);
btF.enable(false);
bt9.enable(false);
bt8.enable(false);
btdot.enable(false);
btadd.enable(false);
btmul.enable(false);
btsub.enable(false);
btdev.enable(false);
btequ.enable(false);
//在八進制的情況下對有些按件的管理
if(length==18) { lab.setText(goto10_8(lab.getText()));
number=lab.getText().length();
}
if(length==14) { lab.setText(goto_10(lab.getText(),16L));
lab.setText(goto10_8(lab.getText()));
number=lab.getText().length();
}
//將其他進制轉換成八進制
length=19;
//在八進制下允許輸入數字個數最多為19位
}
if(ckb10.getState()==true)
{ btA.enable(false);
btB.enable(false);
btC.enable(false);
btD.enable(false);
btE.enable(false);
btF.enable(false);
bt9.enable(true);
bt8.enable(true);
btdot.enable(true);
btadd.enable(true);
btmul.enable(true);
btsub.enable(true);
btdev.enable(true);
btequ.enable(true);
//在十進制的情況下對有些按件的管理
if(length==19) { lab.setText(goto_10(lab.getText(),8L));
number=lab.getText().length();}
if(length==14) { lab.setText(goto_10(lab.getText(),16L));
number=lab.getText().length();}
//進制轉換成十進制
length=18;
//在十進制下允許輸入數字個數最多為18位
}
if(ckb16.getState()==true)
{ btA.enable(true);
btB.enable(true);
btC.enable(true);
btD.enable(true);
btE.enable(true);
btF.enable(true);
bt9.enable(true);
bt8.enable(true);
btdot.enable(false);
btadd.enable(false);
btmul.enable(false);
btsub.enable(false);
btdev.enable(false);
btequ.enable(false);
//在十六進制的情況下對有些按件的管理
if(length==18) { lab.setText(goto10_16(lab.getText()));
number=lab.getText().length();}
if(length==19) { lab.setText(goto_10(lab.getText(),8L));
lab.setText(goto10_16(lab.getText()));
number=lab.getText().length();}
//將其他進制轉換成十六進制
length=14;
//在十六進制下允許輸入數字個數最多為14位
}
}//end itemStateChanged(ItemEvent e) method
//------------------------------------------------------------
//按鈕事件的處理
public void actionPerformed(ActionEvent m)
{
Button btn=(Button) m.getSource();
ch=btn.getLabel().charAt(0);
switch (ch)
{ case 'c': {lab.setText("0"); number=0; mark='n'; Refresh=false;}break;//初始化
case '1': enter(); break;
case '2': enter(); break;
case '3': enter(); break;
case '4': enter(); break;
case '5': enter(); break;
case '6': enter(); break;
case '7': enter(); break;
case '8': enter(); break;
case '9': enter(); break;
case '0': {if(Refresh==true) { lab.setText("0"); number=0; Refresh=false; }
if(lab.getText().charAt(0)=='0'&& lab.getText().length()==1)
break;
if(number<length)
{number++;lab.setText(lab.getText()+ch);} else break;
} break;
case 'A': enter(); break;
case 'B': enter(); break;
case 'C': enter(); break;
case 'D': enter(); break;
case 'E': enter(); break;
case 'F': enter(); break;
case '.': {if(Refresh==true) {lab.setText("0"); number=0; Refresh=false;}
if(lab.getText().indexOf('.')== -1)
{number++;lab.setText(lab.getText()+ch);}
else
break;
}
break;
case 'b': {if(number==0) break;
else
{if(--number==0) {lab.setText("0"); number=0;}
else
{if (number!=1) lab.setText(lab.getText().substring(0,number));
else
lab.setText(Character.toString(lab.getText().charAt(0)));}
}
}break;
case '+': try
{ js();}
catch(This_number_too_big e)
{lab.setText("0"); number=0; mark='n';
Refresh=false; System.out.println("The number is too big");} break;
//如果出現異常則初始化效果如同clear鍵
case '-': try
{ js();}
catch(This_number_too_big e)
{lab.setText("0"); number=0; mark='n';
Refresh=false; System.out.println("The number is too big");} break;
//如果出現異常則初始化效果如同clear鍵
case '*': try
{ js();}
catch(This_number_too_big e)
{lab.setText("0"); number=0; mark='n';
Refresh=false; System.out.println("The number is too big");} break;
//如果出現異常則初始化效果如同clear鍵
case '/': try
{ js();}
catch(This_number_too_big e)
{lab.setText("0"); number=0; mark='n';
Refresh=false; System.out.println("The number is too big");} break;
//如果出現異常則初始化效果如同clear鍵
case '=': try
{ js();}
catch(This_number_too_big e)
{lab.setText("0"); number=0; mark='n';
Refresh=false; System.out.println("The number is too big");} break;
//如果出現異常則初始化效果如同clear鍵
}
3. Java課程設計報告+源碼-萬年歷的設計與實現
預習報告成績:指導教師審核(簽名):年 月 日
預習報告
一、實驗目的
1、鞏固並加強Java基礎中循環、數組、對象的使用及邏輯能力的提高;
2、熟悉Java代碼的編寫規范。
二、實驗要求
1、實驗前書寫實驗預習報告;
2、掌握Java開發環境;
3、掌握方法參數的傳遞過程;
4、使用三元運算符簡化代碼;
5、使用類的方法提高代碼復用性;
6、寫出實驗報告。
程序運行參考效果如下:
三、實驗用設備、軟體環境
奔騰以上計算機,MyEclipse等編譯環境。
四、實驗原理、方案設計、程序框圖、預編程序
實驗原理:
方案設計:
a:先輸出提示語句,並接受用戶輸入的年、月。
b:根據用戶輸入的年,先判斷是否是閏年。
C:根據用戶輸入的月來判斷月的天數。
D:用循環計算用戶輸入的年份距1900年1月1日的總天數。
E:用循環計算用戶輸入的月份距輸入的年份的1月1日共有多少天。
F:相加D與E的天數,得到總天數。
G:用總天數來計算輸入月的第一天的星期數。
H:根據G的值,格式化輸出這個月的日歷!
程序框圖:
預編程序:
包:lll.experiment.experiment2
類:Calendar1
方法:day、Println、getYearDays、getMonthDays、week、year
類:CalendarText
方法:main
實驗報告成績:指導教師審核(簽名):年 月 日
實驗報告
實驗內容:
1、搭建Java編譯環境;
2、編寫程序實現計算某一年第一天星期幾;
3、編寫程序實現計算某一年是否為閏年,某一月有多少天;
4、使用循環正確列印一年中的月份及每月日期;
5、學會使用函數解決問題;
6、調試運行程序。
實驗步驟、程序調試方式:
1、安裝JDK,設置環境變數,搭建Java編譯運行環境;
2、編寫並調試實現計算功能的程序;
3、編寫並調試實現列印功能的程序;
4、調試運行程序,檢查結果。
源碼:
類:Calendar1
方法:day、Println、getYearDays、getMonthDays、week、year
類:CalendarText
方法:main
四、結果
結果如圖所示(例如輸入2020年10月)
五、實驗中存在的問題:
1.計算某一年某月第一天星期幾時,不知如何下手計算。
處理方法:找到1900年1月1日是星期一為計算憑借,通過計算當前年月的第一天距離1900年1月1日的天數對7取余得出某一年某月第一天星期幾。
2.列印日歷時,出現無法對齊的情況以及換行問題。
處理方法:通過for循環列印月的每天,列印天時加/t便巧妙化解;定義一個整數用來計數,每七個元素便換行,就解決了換行問題。
六、體會及思考:
通過這次課程實驗,掌握了Java的開發環境,方法參數的傳遞過程,學會了使用類的方法提高代碼復用性。更讓我明白了編寫程序不僅要求對課本知識有較深刻的了解,同時要求程序設計者有較強的思維和動手能力。還要熟悉常用的編程技巧和編程思想,不能只關心程序的運行結果,更要注重程序代碼的結構,編程者更要有嚴謹地態度。通過設計過程中大量地查閱網路文章,對一些關鍵知識點逐個地了解並解決相關問題,網路這個強大的工具確實是我們學習之中可以藉助的一個很好的幫手。
4. java課程設計
這是學校的課程設計么?規模不小啊......
解決這個問題應該首先先對增刪改查的流程認識清楚,
不知道你們這個用不用框架,應該是不用,
先想想頁面流程,先把網頁的UI設計好
根據功能分出模塊,
然後把各個頁面打通,仔細想想各個表的關系和Sql語句怎麼寫
然後一個模塊一個模塊的解決,
如果用Javabean+jsp的模式做應該是兩周時間夠用了!
而且要求說的是盡可能多的實現功能!
我做一個這玩意也得2、3天的!
多了也沒法幫你!