課程設計論文
⑴ c語言課程設計論文
談及C語言,我想凡是學過它的朋友都有這樣一種感覺,那就是「讓我歡喜讓我憂。」歡喜的是,C語言功能非常強大、應用廣泛,一旦掌握了後,你就可以理直氣壯地對他人說「我是電腦高手!」,而且以後若是再自學其他語言就顯得輕而易舉了。憂慮的是,C語言猶如「少林武功」一般博大精深,太難學了。其實就筆者認為C語言並非是「difficult(困難)」的,只要你能理清思路,掌握它的精髓,那麼自學C語言是一件非常容易且又其樂無窮的事。今天本人就與大家一起談談如何學習C語言或者說學習C語言應從哪幾方面著手。
了解一些基本知識
一.C語言的背景
就個人感觸,無論學習哪門語言首先應該了解一下自己所學語言的背景,也可以說它的發展史。
C語言屬於高級程序語言的一種,它的前身是「ALGOL」。其創始人是布朗·W·卡尼漢和丹尼斯·M·利奇。C語言問世時是帶有很大的局限性,因為它只能用於UNIX系統上。然而隨著科學技術的進步,計算機工業的發展,C語言逐漸脫離UNIX。1987年美國標准化協會制定了C語言的國際標准,簡稱「ANSI C」,從此以後它便成為一種廣泛使用的程序語言。C語言的優點很多,主要的有如下四點:
1.兼備高級語言與低級語言的優點,屬於一種中間語言。
2.它是一種結構化程序設計語言,非常適合結構化程序設計。
3.有較豐富的數據類型、運算符以及函數供以選用。
4.直接與內存打交道,使修改、編輯其他程序與文檔變得輕松,簡單。
二.二大語系二種不同的學習方法
其實高級程序語言分為兩大語系。例如:C,C++(C語言的擴展),QBASIC,VB(BASIC的可視化),JAVAs cript,Js cript ,VBs cript,JAVA,ASP,FOXPRO,PERL等等。一路是以C為主的程序語言,例如:JAVAs cript,JAVA等,這類語言在函數的調用,程序語句的書寫,循環的控制都極為相似。另一路是以BASIC為首的程序語言,例如:FOXPRO,VBs cript等,此類語言同樣具有相似的函數調用,程序語句書寫以及循環控制,但與C語系是不同的。因此若是您以前是從QBASIC起家的,那麼在學習C語言前最好是先洗洗腦,千萬不要把學習BASIC的方法以及思路用在C身上。
講到這里,我想大家對C語言一定有了感性認識吧!下面讓我們再升華一下,全方位親密接觸它。學習C語言必須從以下四點入手,也就是說,只要你能掌握這四點的內容,那麼基本上就大功告成了。
親密接觸C語言
一.輸入輸出
C語言的輸入輸出是非常嚴格的,或許在其他程序語言中我們可以不關心這個問題,但在C語言中,我們必須要徹底了解它。由於篇幅有限,因此筆者不能詳談,有興趣的朋友可以參考由著名程序語言教授譚浩強先生主編,由清華大學出版社出版的《C程序設計第二版》。不過這里筆者還是有幾點要簡單的談一下。
1.二維浮點數數組的輸入
二維浮點數數組的輸入(即:通過鍵盤給二維浮點數數組賦值)在很多專業書中都沒有詳細講過這個問題。在給二維浮點數數組賦值時一定要先聲明一個變數,接著把數值賦予這個變數,最後把變數數值賦予二維浮點數數組賦值。
2.注意輸出格式中「%」後的字元
C語言的輸出說復雜不復雜,因為常用的都很簡單。可說不復雜也未必,記得曾在一次等級考前輔導我們C語言的教授講道:「如果C語言要考得很難的話,根本不用考什麼指針,只要專考輸出格式,我想百分之九十九的學生都不及格。」當時我們無不認同。從這則事例中可以看出C語言的輸出格式之復雜程度。因此大家在學習它時千萬要學會辨別輸出格式中「%」後的字元,每個字元都有其意義,也都有其作用。
二.優先順序
說道優先順序,有很多朋友都不是很了解或說很模糊。為此筆者想先通過一個例子讓各位有個概念。什麼叫優先順序?比方說,我們在公交車終點站排座隊時總會遇到70歲以上的老人不需要排隊就能上車的情景,這就是優先順序的涵義。C程序在運行時也象排隊坐車一樣,首先照顧那些優先順序高的運算符,若是優先順序相同,那麼就象遇到兩位(或兩位以上)70歲以上的老人那樣,讓他們依次上車。但是C語言中的優先順序的運算並不是千篇一律的,只能說是在大多數情況下,有些運算符的優先順序有其自己的特點,因此這點大家要注意。例如條件表達式:條件?結果1:結果2,這種表達式很多朋友都知道,它的作用與IF…ELSE…條件判斷語句很雷同,它運算時的優先順序就不是按照C語言的規則來完成的。所以說對於優先順序各位編程愛好者一定靈活掌握,不要死記硬背。
三.指針
就個人認為,C語言中的指針是最有特色的,當然也是最難學的。指針說穿了,其實是變數的一種表現形式,只不過這種變數記載的不是數值而是地址。就象一個人可以用姓名來表示自己,也可以用身份證號碼來表示自己一樣。筆者涉足編程已經有三年多了,在這期間曾經收到過很多網友的電子郵件詢問學習指針的方法。就本人感觸,學習指針最好是先學些計算機硬體工作的原理,例如:直接定址,間接定址等,只有了解了這些內容以後,你再學指針就比較容易理會,畢竟C語言是一門介於機器語言與高級語言中間的語言,沒有一些硬體工作知識是很難領悟它的真諦的。然而事事並非絕對,如果你沒有這些知識也不要緊,只要清楚知道以下筆者總結的二點再加上多練習便可:
1.指針是地址變數:它的值有兩種:其一是地址,其二是內容。不同的表達方式可以取不同的值,這有點象一個家庭地址在不同的場合標識的人物也不同。例如:父母親在他們的單位所登記的家庭地址就代表他們自己,而你在學校中登記的同樣的家庭地址就代表你自己。
2.指針是可以運算的,它的運演算法則與變數是一致的。
另外,在編寫一個程序時,除非萬不得已,一般不要使用指針變數。因為指針是比較復雜的,用不好就「當機」。所以筆者建議各位對於指針只要能看懂就行,當然如果你是准備參加考試的就另當別論了。
四.函數
雖說很多程序語言都有函數這一內容,但筆者覺得C語言的函數是最有魅力的。如果你能完全掌握C語言的函數,那麼學習C++就不成問題了(C++是一門建立在C語言上,但又不同於C語言的高級程序語言,它增添了很多函數。)。學習函數的方法是比較簡單的,只有兩個字「牢記」,即:牢記函數的功能,牢記函數的用途以及如何輸入輸出。有些朋友認為,程序語言中的函數沒有多大用處,其實這並不正確,函數從本質上講是一段通用程序,用它可以幫助我們節約很多編程的時間,一個聰明的編程者在編寫程序前往往總是先找自己所編寫的程序中有多少是可以用函數來代替的。筆者曾經作過一個比較字元串的實驗,用C語言中的strcmp()函數只要一句話,而自己編寫的話30句話都擺不平,可想而知函數是多麼實用呀!
⑵ 誰教教我怎麼寫JAVA的課程設計論文
目 錄
一、概要設計……………………………………………………………3
二、程序整體設計說明…………………………………………….…..4
三、程序部分源代碼及注釋…………………………………………….9
四、測試結果………………………………………………………….24
五、設計心得…………………………………………………………25
六、致 謝…………………………………………………………25
七、參考文獻…………………………………………………………25
【摘 要】該程序是一個圖形界面的java文檔編輯器,其界面主要採用了awt包, 程序實現了文本編輯器的基本功能有:新建文件、打開文件、文件保存、文件另存為、剪切、復制、粘貼、刪除、查找/替換、改變字體大小,另外還利用Time類的schele方法實現了文件的定時自動更新功能,並創建備份文件,由於該編輯器是用的awt包,所以在技術上沒有實現將Java的關鍵字以不同顏色顯示功能。
【關鍵字】java 編輯器
一、概要設計
Java程序編輯器是:圖形界面、線程、流與文件等技術的綜合應用。
圖形界面的實現:考慮到簡單、實用、高效等特點,就選擇了AWT來完成實現,在選擇組件上,文本編輯區就選用了TaxtArea作為主要的部件。
線程實現文件自動保存:在相關的參考書上查閱到在Time類中有一個schele方法可以在後台自動完成一定的功能,而且調用起來相當簡單,於是就用了Time類中的schele方法來實現文件自動保存及備份功能。
文件操作的實現:利用了字元文件流FileReader和FileWriter類來實現。
由於Java的特性,可能用任何一個編輯器來編輯,於是就將Windows中的記事本作為模仿對象,根據實現情況刪減了其中的一些功能,如自動換行,設置字體,列印等功能。
在設計類的時候,考慮到簡單明了,就用了兩個類,一個主類和一個默認屬性類作為程序的整體框架,所有的對象和方法都是在默認屬性類中創建和實現的,以及為各組件注冊事件監聽程序也是在默認屬性類中實現的。主類完成對象的實例化及顯示。這們設計的優點是:條理清晰,容易理解,容易修改。這樣設計的缺點是:不利於共享類中的方法。
二、程序整體設計說明
2.1、程序框架圖
2.2、程序中所用類說明
(1)用戶自定義類
類名:EditInstantiation
作用:實例化對象
繼承的父類:WindowAdapter
主要成員變數:
Frame myFrm // 定義主窗體
TextArea myText // 定義文本編輯區
Dialog myDlgFind,myDlgFindont //查找及設置字體對話框
TextField TFfind, TFreplace, TffontSize
//查找對話框和字體窗體中的文本行
Button BfontOK, Bfind, Breplace, Bnext, Bcancel //定義和創建各按鈕
Label Lf, Lr, Ls //定義和創建各標簽
MenuBar Mbbar //定義和創建主菜單
Menu Mfile,Medit,Mformation,Mhelp //定義和創建主菜單中的選項
Toolkit toolKit
Clipboard myCB //剪切板對象
FileDialog myFDlg //定義文件對話框
Choice ChfontName //定義和創建字體選擇框
private int VIindex = 1; //構成文件名後綴變數
private String VSsubFixStr=".java"; //構成文件名擴展名變數
private String VSmyFileName = "Document1",VSmyBFileName;
//文件名及備份文件名變數
private File VFmyFile=new File(VSmyFileName+VIindex+".java");
//文件名變數
private int VIsearchPosition=0; //查找位置指針
private Timer VTtime; //實例化一個Time類
private int VImin=1; // schele方法中的一個時間參數
private int VItype=JOptionPane.INFORMATION_MESSAGE;
//提示對話框類型
private String VStitle; //提示對話框標題
private String VSmessage; //提示對話框信息
private boolean VBchanged = true; //改變字體的一個標識
private int VIfontSizeMin = 8, VIfontSizeMax = 40, VIfontSizeChangedStep = 2; //設置字體大小及步長
主要成員方法:
public void init() //初始化各部件菜單的定義和事件的監聽
public void displayEdit ()//顯示窗體及調用Time中的schele方法
public void windowClosing () //關閉窗體
public void save //保存文件方法
a.內部類類名:KeyEvents
作用:實現菜單的事件的響應功能
繼承的父類:KeyAdapter
主要成員變數:無
成員方法:actionPerformed()、keyPressed()
b.內部類類名:FindKeyEvent
作用:實現查找中各部件事件的響應功能
繼承的父類:無
主要成員變數:無
成員方法:actionPerformed ()
c.內部類類名:fontEvent
作用:實現字體中各部件事件的響應功能
繼承的父類:無
主要成員變數:無
成員方法:ItemListener(),ActionListener()
(2)用戶自定義類與Java類的繼承關系圖如下:
自定義類 Java 類
線程使用說明
2.3、實現介面方法
本程序用到的方法有:schele其方法描述如下:
schele(事件,啟動時間,間隔時間);
2.4、線程應用
本程序為文本編輯器,為實現自動更新,應用到了線程,每隔1分鍾對文件進行自動更新
2.5、異常處理說明
(1)打開文件時的異常處理
需要處理的異常:IOException
處理方法:捕獲異常後,顯示捕獲的異常
(2)保存文件時的異常處理
需要處理的異常:IOException
處理方法:捕獲異常後,顯示捕獲的異常
2.6、程序運行效果及存在的問題
(1)程序運行主要界面如下:
a、主界面
b、打開文件對話框
c、保存文件對話框
d、另存為文件對話框
e、查找/替換對話框
f.字體對話框
2.7.程序尚還存在的問題
我花費了近一個多星期的時間,查閱了許多相關的資料,終於把這個Java編輯器,程序基本實現了該課程設計的基本要求。但由於自己水平有限,使得程序還有不是很完善,首先,最重要的一點是該設計的最重要的功能自動改變java關鍵字的顏色沒有實現。
三、程序部分源代碼及注釋
//****************************************************
// class name :Edit
// implements :none
// extends :none
// attribute :public
// founction :entrance of the class
//*****************************************************
public class Edit{ //主類
public static void main(String args[]){
EditInstantiation myEdit= new EditInstantiation();
myEdit.init(); //初始化
myEdit.displayEdit(); //顯示窗體
}
//****************************************************
// class name :EditInstantiation
// implements :none
// extends :WindowAdapter
// attribute :default
// founction :EditInstantiation of the main class
//*****************************************************
class EditInstantiation extends WindowAdapter{ //默認屬性類
//define sources 定義各部件
Frame myFrm=new Frame("我的編輯器"); //定義窗體
TextArea myText=new TextArea(); //定義窗體
Dialog myDlgFind=new Dialog(myFrm,"查找",true); //定義查找對話框
Dialog myDlgFindont=new Dialog(myFrm,"字體",true); //定義字體對話框
TextField TFfind=new TextField(30);//定義查找對話中的查找輸入框
TextField TFreplace=new TextField(30); //定義查找對話中的替換輸入框
TextField TFfontSize,TFfontDemo;//定義字體大小文本框和示例框
Choice CHfontName;//定義字體大小選擇框
List LTfontSize; //定義字體大小標簽
Button BfontOK,BfontCancel; //定義字體大小對話中的確定及取消按鈕
Button Bfind=new Button("查找");//定義查找對話中的查找按鈕
Button Breplace=new Button("替換");//定義查找對話中的替換及取消按鈕
Button Bnext=new Button("下一個");//定義查找對話中的下一個及取消按鈕
Button Bcancel=new Button("取消");//定義查找對話中的確定及取消按鈕
Label Lf=new Label("查找內容:");
Label Lr=new Label("替換為: ");
Label Ls=new Label("字體大小:");
FileDialog myFDlg;
Clipboard myCB=Toolkit.getDefaultToolkit().getSystemClipboard(); //剪切板對象
Menu Mfile,Medit,Mformation,Mhelp;
MenuBar MBbar;
//define varities //定義各變數
private int VIindex = 1;
private String VSsubFixStr=".java";
private String VSmyFileName = "Document1",VSmyBFileName;
private File VFmyFile=new File(VSmyFileName+VIindex+".java");
private int VIsearchPosition=0;
private Timer VTtime;
private int VImin=1; // parameter in time schel
private int VItype=JOptionPane.INFORMATION_MESSAGE;
private String VStitle;
private String VSmessage;
// flag of the changeing
private boolean VBchanged = true;
// the scope of the font
private int VIfontSizeMin = 8, VIfontSizeMax = 40, VIfontSizeChangedStep = 2;
//************************************************
//founction name:init()
//parameter :none
//attribute :public
//founction :initia all compont
//************************************************
public void init(){ //初始化各部件
//------------------ set menu ------------------
MBbar=new MenuBar();
myFrm.setMenuBar(MBbar);
Mfile=new Menu("文件");
Medit=new Menu("編輯");
Mformation=new Menu("格式");
Mhelp=new Menu("幫助");
MBbar.add(Mfile);
MBbar.add(Medit);
MBbar.add(Mformation);
MBbar.add(Mhelp);
//文件菜單 add File menu
Mfile.add(new MenuItem("新建",new MenuShortcut(KeyEvent.VK_N)));
Mfile.add(new MenuItem("打開",new MenuShortcut(KeyEvent.VK_O)));
Mfile.add(new MenuItem("保存",new MenuShortcut(KeyEvent.VK_S)));
Mfile.add(new MenuItem("另存為"));
Mfile.addSeparator();//分隔線
Mfile.add(new MenuItem("退出",new MenuShortcut(KeyEvent.VK_E)));
//編輯菜單 add Edit menu
Medit.add(new MenuItem("剪切"));//,new MenuShortcut(KeyEvent.VK_X)));
Medit.add(new MenuItem("復制"));//new MenuShortcut(KeyEvent.VK_C)));
Medit.add(new MenuItem("粘貼"));//new MenuShortcut(KeyEvent.VK_V)));
Medit.add(new MenuItem("刪除"));//new MenuShortcut(KeyEvent.VK_D)));
Medit.addSeparator();//分隔線
Medit.add(new MenuItem("查找/替換",new MenuShortcut(KeyEvent.VK_F)));
Medit.addSeparator();//分隔線
Medit.add(new MenuItem("全選",new MenuShortcut(KeyEvent.VK_A)));
//格式菜單 add Formation menu
Mformation.add(new MenuItem("字體",new MenuShortcut(KeyEvent.VK_U)));
//幫助菜單 add Formation menu
Mhelp.add(new MenuItem("關於作者"));
//----------------- menu add end -------------------------
//add Menu Action Listener
Mfile.addActionListener(new KeyEvents());
Medit.addActionListener(new KeyEvents());
Mformation.addActionListener(new KeyEvents());
Mhelp.addActionListener(new FindKeyEvent());
//--------------------------- Find dialog-----------------
myDlgFind.setSize(350,115);
myDlgFind.setLocation(250,150);
myDlgFind.setLayout(new FlowLayout(FlowLayout.CENTER));
myDlgFind.setBackground(Color.LIGHT_GRAY);
Bfind.setEnabled(false);
Breplace.setEnabled(false);
Bnext.setEnabled(false);
myDlgFind.add(Lf);
myDlgFind.add(TFfind);
myDlgFind.add(Lr);
myDlgFind.add(TFreplace);
myDlgFind.add(Bfind);
myDlgFind.add(Breplace);
myDlgFind.add(Bnext);
myDlgFind.add(Bcancel);
myDlgFind.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
myDlgFind.setVisible(false);
}});//為查找對話框窗體注冊事件監聽
TFfind.addKeyListener(new KeyEvents());//注冊事件監聽
Bfind.addActionListener(new FindKeyEvent());
Breplace.addActionListener(new FindKeyEvent());
Bcancel.addActionListener(new FindKeyEvent());
Bnext.addActionListener(new FindKeyEvent());
//--------------- end add action listener ------------
//================set font dialog ==============
//font size text field
TFfontSize = new TextField("8",14);
TFfontSize.selectAll();
//font size list field
LTfontSize = new java.awt.List(5, false);
LTfontSize.addItemListener(new fontEvent());
for(int i = VIfontSizeMin; i <= VIfontSizeMax; i = i + VIfontSizeChangedStep)
LTfontSize.add(i + "");//添加字體大小
LTfontSize.select(0);
//two Button Ok Cancel
BfontOK = new Button("確定");
BfontOK.addActionListener(new fontEvent());
BfontCancel = new Button("取消");
BfontCancel.addActionListener(new fontEvent());
//a TextField for demo the font
TFfontDemo = new TextField("Java awt",37);
TFfontDemo.setEditable(false);
// my font dialog設置字體對話框
myDlgFindont.setLayout(new FlowLayout(FlowLayout.LEFT));
myDlgFindont.setBackground(Color.LIGHT_GRAY);
myDlgFindont.add(Ls);
myDlgFindont.add(TFfontSize);
myDlgFindont.add(BfontOK);
myDlgFindont.add(BfontCancel);
myDlgFindont.add(LTfontSize);
myDlgFindont.add(TFfontDemo);
myDlgFindont.setSize(300,200);
myDlgFindont.setLocation(300,200);
myDlgFindont.setResizable(false);
myDlgFindont.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
myDlgFindont.show(false);
}
}); //為字體對話框窗體注冊事件監聽
//=============end set font dialog
// =======set Edit frame設置編輯器窗休
myFrm.add(myText,BorderLayout.CENTER);
myFrm.setSize(500,400);
myFrm.setBackground(Color.lightGray);
myFrm.addWindowListener(this);
myFrm.setSize(500,400);
myFrm.setLocation(200,100);
myFrm.setTitle("Java編輯器");
}
//************************************************
//founction name:displayEdit()
//parameter :none
//attribute :public
//founction :initial and display the frame
//************************************************
public void displayEdit(){ //顯示窗體
myFrm.setVisible(true);
//---------------------- auto save ---------------------
VTtime = new Timer(true);
VTtime.schele(new java.util.TimerTask(){
public void run(){
if(VSmyFileName!=null){
save(VSmyFileName+".java");
VSmyBFileName=VSmyFileName+".bak";
} //添加自動保存功能
save(VSmyBFileName);
}
}, VImin*60*1000,VImin*60*1000);
//parament 1 the task
//parament 2 when to start the task
//parament 3 set the interval time }
//****************************************************
// class name :KeyEvents
// implements :ActionListener
// extends :KeyAdapter
// attribute :default
// founction :implement the mouse and key action
//*****************************************************
class KeyEvents extends KeyAdapter implements ActionListener{
//********************************************************
//founction name:actionPerformed()
//parameter :none
//attribute :public
//return :void
//founction :realize the key action in the menu
//*********************************************************
public void actionPerformed(ActionEvent e){
//完成菜單事件的功能
// File Menu
if (e.getActionCommand()=="新建"){
//remind you
JFrame aFrame=new JFrame();
aFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JOptionPane optionPane=new JOptionPane();
String choices[]={"是","否","取消"};
int n=optionPane.showOptionDialog(aFrame,"文件正文已更改,是否保存更改","文本編輯器",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE,null,choices,choices[0]);
//保存文件後新建
if(n==0){//若文件存在,保存在原文件中,再新建文件
try{
if(VFmyFile.exists()){
save(VSmyFileName); // call the save founction
myText.setText("");
VIindex++;
}
else{//若文件不存在,則保存後再新建
myFDlg=new FileDialog(myFrm,"保存文件",FileDialog.SAVE);
myFDlg.setFile(VSmyFileName);
myFDlg.show();
VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();
save(VSmyFileName);
myText.setText("");
VIindex++;
}
}
catch(Exception ne){}
}
//不保存文件新建
if(n==1){
myText.setText("");
VIindex++;
}
//取消新建
if(n==0){return;}
}
//打開菜單 Open Menu
if (e.getActionCommand()=="打開") {
myFDlg=new FileDialog(myFrm,"打開",FileDialog.LOAD);
myFDlg.show();
if (myFDlg.getFile()!="") {
VFmyFile=new File(myFDlg.getDirectory()+myFDlg.getFile());
VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();
if( VFmyFile.exists()){
try{
FileReader fr=new FileReader(VFmyFile);
BufferedReader br=new BufferedReader(fr);
String text;
myText.setText("");
while ((text=br.readLine())!=null)
myText.append(text+"\r\n");
br.close();
fr.close();
}
catch(IOException ioe){
VStitle="提示";
VSmessage="打開文件出錯";
JOptionPane.showMessageDialog(myFrm,VSmessage,VStitle,VItype);
}
}
}
}
//保存菜單 Save Menu
if (e.getActionCommand()=="保存"){
myFDlg=new FileDialog(myFrm,"保存文件",FileDialog.SAVE);
myFDlg.setFile(VSmyFileName);
myFDlg.show();
VSmyFileName=myFDlg.getFile();
if(VSmyFileName!=null){
VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();
save(VSmyFileName);
}
}
//另存為菜單 SaveAs Menu
if (e.getActionCommand()=="另存為"){
myFDlg=new FileDialog(myFrm,"文件另存為",1);
myFDlg.setFile(VSmyFileName);
myFDlg.show();
VSmyFileName=myFDlg.getFile();
if(VSmyFileName!=null){
VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();
save(VSmyFileName);
}
}
//退出菜單 exit Menu
if (e.getActionCommand()=="退出")
System.exit(0);
//編輯 Edit Menu
if (e.getActionCommand()=="剪切"){
//Cut
String text =myText.getSelectedText();
StringSelection selection = new StringSelection(text);
myCB.setContents(selection, null);
myText.replaceRange("",myText.getSelectionStart(),myText.getSelectionEnd());
}
if (e.getActionCommand()=="復制"){
//
String text=myText.getSelectedText();
if(text!=null){
StringSelection selection=new StringSelect
⑶ plc課程設計論文
分給我吧。
⑷ 課程設計論文怎麼寫啊
基於51單片機的溫度測量系統的設計
摘要: 單片機在檢測和控制系統中得到廣泛的應用, 溫度則是系統常需要測量、控制和保持的一個量。 本文從硬體和軟體兩方面介紹了AT89C2051單片機溫度控制系統的設計,對硬體原理圖和程序框圖作了簡潔的描述。
關鍵詞: 單片機AT89C2051;溫度感測器DS18B20;溫度;測量
引言
單片機在電子產品中的應用已經越來越廣泛,並且在很多電子產品中也將其用到溫度檢測和溫度控制。為此在本文中作者設計了基於atmel公司的AT89C2051的溫度測量系統。這是一種低成本的利用單片機多餘I/O口實現的溫度檢測電路, 該電路非常簡單, 易於實現, 並且適用於幾乎所有類型的單片機。
一.系統硬體設計
系統的硬體結構如圖1所示。
1.1數據採集
數據採集電路如圖2所示, 由溫度感測器DS18B20採集被控對象的實時溫度, 提供給AT89C2051的P3.2口作為數據輸入。在本次設計中我們所控的對象為所處室溫。當然作為改進我們可以把感測器與電路板分離,由數據線相連進行通訊,便於測量多種對象。
DS18B20是DALLAS公司生產的一線式數字溫度感測器,具有3引腳TO-92小體積封裝形式;溫度測量范圍為-55℃~+125℃,可編程為9位~12位A/D轉換精度,測溫解析度可達0.0625℃,被測溫度用符號擴展的16位數字量方式串列輸出,支持3V~5.5V的電壓范圍,使系統設計更靈活、方便;其工作電源既可在遠端引入,也可採用寄生電源方式產生;多個DS18B20可以並聯到3根或2根線上,CPU只需一根埠線就能與諸多DS18B20通信,佔用微處理器的埠較少,可節省大量的引線和邏輯電路。以上特點使DS18B20非常適用於遠距離多點溫度檢測系統。解析度設定,及用戶設定的報警溫度存儲在EEPROM中,掉電後依然保存。DS18B20使電壓、特性有更多的選擇,讓我們可以構建適合自己的經濟的測溫系統。如圖2所示DS18B20的2腳DQ為數字信號輸入/輸出端;1腳GND為電源地;3腳VDD為外接供電電源輸入端。
AT89C2051(以下簡稱2051)是一枚8051兼容的單片機微控器,與Intel的MCS-51完全兼容,內藏2K的可程序化Flash存儲體,內部有128B位元組的數據存儲器空間,可直接推動LED,與8051完全相同,有15個可程序化的I/O點,分別是P1埠與P3埠(少了P3.6)。
1.2介面電路
圖2 單片機2051與溫度感測器DS18B20的連接圖
介面電路由ATMEL公司的2051單片機、ULN2003達林頓晶元、4511BCD解碼器、串列EEPROM24C16(保存系統參數)、MAX232、數碼管及外圍電路構成, 單片機以並行通信方式從P1.0~P1.7口輸出控制信號,通過4511BCD解碼器解碼,用2個共陰極LED靜態顯示溫度的十位、個位。
串列EEPROM24C16是標准I2C規格且只要兩根引腳就能讀寫。由於單片機2051的P1是一個雙向的I/O埠,所以在我們在設計中將P1埠當成輸出埠用。由圖2可知,P1.7作為串性的時鍾輸出信號與24C16的第6腳相接,P1.6則作為串列數據輸出接到24C16的第5腳。P1. 4和P1.5則作為兩個數碼管的位選信號控制,在P1.4=1時,選中第一個數碼管(個位);P1.5=1時,選中第二個數碼管(十位)。P1.0~P1.3的輸出信號接到解碼器4511上作為數碼管的顯示。此外,由於單片機2051的P3埠有特殊的功能,P3.0(RXD)串列輸入埠,P3.1(TXD)串列輸出埠,P3.2(INTO)外部中斷0,P3.3(INT1)外部中斷1P3.4,(T0) 外部定時/計數輸入點,P3.5(T1)外部定時/計數輸入點。由圖2可知,P3.0和P3.1作為與MAX232串列通信的介面;P3.2和P3.3作為中斷信號介面;P3.4和P3.5作為外部定時/記數輸入點。P3.7作為一個脈沖輸出,控制發光二極體的亮滅。
由於在電路中採用的共陰極的LED數碼管,所以在設計電路時加了一個達林頓電路ULN2003對信號進行放大,產生足夠大的電流驅動數碼管顯示。由於4511隻能進行BCD十進制解碼,只能譯到0至9,所以在這里我們利用4511解碼輸出我們所需要的溫度。
1.3報警電路簡介
圖3 溫度在七段數碼管上顯示連接圖
本文中所設計的報警電路較為簡單,由一個自我震盪型的蜂鳴器(只要在蜂鳴器兩端加上超過3V的電壓,蜂鳴器就會叫個不停)和一個發光二極體組成(如圖3所示)。在這次設計中蜂鳴器是通過ULN2003電流放大IC來控制。在我們所要求的溫度達到一定的上界或者下界時(在文中我們設置的上界溫度是45℃,下界溫度是5℃),報警電路開始工作,主要程序設計如下:
main()//主函數
{unsigned char i=0; <br/>unsigned int m,n; <br/>while(1) <br/>{i=ReadTemperature();//讀溫度}
if(i>0 && i<=10) //如果溫度在0到10度之間直接給七段數碼管賦值
{P1=designP1[i];}
else//如果溫度大於10度
{m=i%10;//先給第一個七段數碼管賦值 <br/>D1=1; <br/>D2=0; <br/>P1=designP1[m]; <br/>n=i/10;//再給第二個七段數碼管賦值 <br/>D1=0; <br/>D2=1; <br/>P1=designP1[n]; <br/>if(n>=4&&m>=5)%%(m<=5)//判斷溫度的取值范圍,如果大於45或小於5度,則蜂鳴器叫,發光二極體閃爍 <br/>{ int a,b; <br/>Q1=1;//蜂鳴器叫 <br/>for(a=0;a<1000;a++)//發光二極體閃爍 <br/>for(b=0;b<1000;b++) <br/>Q2=1; <br/>for(a=0;a<1000;a++) <br/>for(b=0;b<1000;b++) <br/>Q2=0;}}}
⑸ 課程設計和論文有什麼區別
論文:是對某一事物的解釋。也有畢業論文。
畢業設計:是在大四的下學期,這一個學期都要從事的工作,也是一個必修環節,是對你本科所學知識的融會貫通。針對你四年來所學的知識,做一個實體出來,比如你學的計算機專業,你可能就會做個xx系統,xx網站出來。最後還需要答辯。
課程設計:針對你學完的某一門課,最後做的設計,比如說你學過了機械設計這門課程,老師會安排你專門抽出兩周左右的時間,給出一些機械設計相關的題目,可以任選其一(一般可以組隊),完成這個題目,最後要做簡單的答辯。
⑹ SQL課程設計論文怎麼寫
SQL全稱是「結構化查詢語言(Structured Query Language)」,最早的是IBM的聖約瑟研究實驗室為其關系資料庫管理系統SYSTEM R開發的一種查詢語言,它的前身是SQUARE語言。SQL語言結構簡潔,功能強大,簡單易學,所以自從IBM公司1981年推出以來,SQL語言,得到了廣泛的應用。如今無論是像Oracle ,Sybase,Informix,SQL server這些大型的資料庫管理系統,還是像Visual Foxporo,PowerBuilder這些微機上常用的資料庫開發系統,都支持SQL語言作為查詢語言。SQL是高級的非過程化編程語言,允許用戶在高層數據結構上工作。他不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統可以使用相同的SQL語言作為數據輸入與管理的介面。它以記錄集合作為操縱對象,所有SQL語句接受集合作為輸入,返回集合作為輸出,這種集合特性允許一條SQL語句的輸出作為另一條SQL語句的輸入,所以SQL語言可以嵌套,這使他具有極大的靈活性和強大的功能,在多數情況下,在其他語言中需要一大段程序實現的一個單獨事件只需要一個SQL語句就可以達到目的,這也意味著用SQL語言可以寫出非常復雜的語句。
⑺ 請問本科課程設計論文,要求至少寫10頁,我寫了25頁,算不算多
不算多,不要少就行,但為了方便同學通過答辯,指導老師會有一些建議,所以最好給指導老師看一下,來決定。
打字不易,且行且珍惜
⑻ 課程設計論文格式是啥樣子的啊
一、課程設計(論文)資料的組成 1.課程設計(論文)任務書; 2.課程設計(論文)——標題、中專英文摘要(關鍵詞)屬、正文、參考文獻; 3.課程設計(論文)答辯紀錄及教師評語。二、課程設計(論文)資料的填寫與裝訂 統一使用學校印製的課程設計(論文)資料袋和學院印製的封面。課程設計(論文)資料按要求認真填寫,字體要工整,版面要整潔,手寫一律用黑或蘭黑墨水,最好使用A4紙計算機列印。裝訂一律按「標題、中英文摘要(關鍵詞)、正文、參考文獻」順序,在左側裝訂。三、課程設計(論文)的撰寫規范 1.課程設計(論文)的撰寫規范完全按照南工校教[2006]28號文「本科生畢業設計(論文)撰寫規范(2006年修訂)」和學院相關文件執行。 2.課程設計(論文)寫作格式參考科研期刊雜志論文投稿要求,不要求目錄、不需分章,連續寫作。 3.頁眉格式: 奇數頁:南京工業大學課程設計(論文)——單寫「設計」或「論文」) 偶數頁:課程設計(論文)題目