C語言綜合編程訓練_第1頁
C語言綜合編程訓練_第2頁
C語言綜合編程訓練_第3頁
C語言綜合編程訓練_第4頁
C語言綜合編程訓練_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、主要內容課程設計題目介紹圖形操作簡介鼠標操作簡介西文狀態(tài)下漢字的顯示DOS下如何發(fā)聲良好的程序設計風格優(yōu)秀程序選講(1)設計一個簡單計算器;(2)編寫一萬年歷系統(tǒng);(3)通訊錄管理;(4)簡單的行編緝器;(5)模擬時鐘轉動程序;(6)班級學生成績管理系統(tǒng);(7)圖書資料信息管理系統(tǒng);(8)單項選擇題標準化考試系統(tǒng)。課程設計題目 注:1、以上38題需將數(shù)據(jù)保存在文件中。2、教師在布置課程設計任務時,可根據(jù)需要選擇不同的題目進行分組安排。C程序組成C程序源程序1源程序2源程序n預編譯命令函數(shù)1函數(shù)n說明部分執(zhí)行部分開發(fā)方法: 自頂向下,逐步細化,模塊化設計,結構化編碼輸入數(shù)據(jù)模塊,數(shù)據(jù)用文件保存輸

2、出數(shù)據(jù)模塊,數(shù)據(jù)用文件保存基本算法運用模塊(排序、查找、插入、比較算法中至少包含一種)系統(tǒng)盡量以菜單方式工作(文本菜單或圖形菜單)系統(tǒng)進入畫面(靜態(tài)或動畫)系統(tǒng)其它功能實現(xiàn)(任選)設計要求課程題目一:設計一個簡單計算器要求: 在功能上和界面盡量模擬windows操作系統(tǒng)中的計算器可采用鍵盤或是鼠標模擬按鍵按鍵時伴有聲音提示課程題目二:萬年歷系統(tǒng)要求: 模仿現(xiàn)實生活中的掛歷. 當前頁以系統(tǒng)當前日期的月份為準顯示當前月的每一天(顯示出日及對應的星期幾).當系統(tǒng)日期變到下一月時,系統(tǒng)自動翻頁到下一月課程設計題目三:通訊錄管理系統(tǒng)1、通訊錄的每一條信息包括姓名,單位,電話!(字符數(shù)組)2、輸入功能:可

3、以一次完成若干條信息的輸入.3、顯示功能:完成全部通訊錄信息的顯示(一屏最多顯示10條,超過十條應能夠自動分屏顯示)4、查找功能:完成按姓名查找通訊信息.5、刪除功能:完成按姓名刪除通訊信息.6、應提供一個界面來調用各個功能,調用界面和各個功能的操作界面應盡可能清晰美觀!課程設計題目四:學生選修課程管理系統(tǒng)假定有n門課程,每門課程有課程編號,課程名稱,課程性質,總學時,授課學時,實驗或上機學時,學分,開課學期等信息,學生可按要求(如總學分不得少于60)自由選課。試設計一選修課程系統(tǒng),使之能提供以下功能:系統(tǒng)以菜單方式工作課程信息錄入功能(課程信息用文件保存)輸入課程信息瀏覽功能輸出查詢功能:(

4、至少一種查詢方式)算法按學分查詢按課程性質查詢系統(tǒng)進入畫面(靜態(tài)或動畫)學生選修課程(可選項) 課程設計題目五:學生成績管理系統(tǒng)1.主要功能:(1)能按學期、按班級完成對學生成績的錄入、修改(2)能按班級統(tǒng)計學生的成績,求學生的總分及平均分,并能根據(jù)學生的平均成績進行排序(3)能查詢學生成績,不及格科目及學生名單(4)能按班級輸出學生的成績單課程設計題目六:圖書信息管理系統(tǒng)圖書信息包括:登錄號、書名、作者名、分類號、出版單位、出版時間、價格等。試設計一圖書信息管理系統(tǒng),使之能提供以下功能:系統(tǒng)以菜單方式工作圖書信息錄入功能(圖書信息用文件保存)輸入圖書信息瀏覽功能輸出查詢或排序功能:(至少一種

5、查詢方式)算法按書名查詢按作者名查詢系統(tǒng)進入畫面(靜態(tài)或動畫)圖書信息的刪除與修改(可選項)課程設計題目七:職工信息管理系統(tǒng)職工信息包括職工號、姓名、性別、出生年月、學歷、職務、工資、住址、電話等(職工號不重復)。試設計一職工信息管理系統(tǒng),使之能提供以下功能: 職工信息錄入功能(職工信息用文件保存)職工信息瀏覽功能查詢或排序功能:(至少一種查詢方式) 按工資查詢按學歷查詢等 職工信息刪除、修改功能課程設計題目八:飛機訂票系統(tǒng)假定民航機場共有n個航班,每個航班有一航班號、確定的航線(起始站、終點站)、確定的飛行時間(星期幾)和一定的成員訂額。試設計一民航訂票系統(tǒng),使之能提供下列服務: 航班信息錄

6、入功能(航班信息用文件保存)航班信息瀏覽功能查詢航線:(至少一種查詢方式)按航班號查詢按終點站查詢 承辦訂票和退票業(yè)務設計要求與設計報告設計要求可自己選定題目,但至少包含五個功能模塊模塊化程序設計緊縮對齊書寫格式必須上機調試通過實習報告語言簡練,條理清楚,圖表規(guī)范程序設計組成框圖、流程圖模塊功能說明(如函數(shù)功能、入口及出口參數(shù)說明,函數(shù)調用關系描述等)調試與測試:調試方法,測試結果的分析與討論,測試過程中遇到的主要問題及采取的解決措施源程序清單和執(zhí)行結果:清單中應有足夠的注釋1 顯示系統(tǒng)顯示器:CRT(陰極射線管)與控制電路組成適配器(圖形卡):CPU與顯示器的接口,由寄存器組、存儲器和控制電

7、路組成主機圖形控制器顯示存儲器顯示控制器適配器CRT將要顯示的字符和圖形以數(shù)字形式存儲在卡上的視頻RAM中,再轉換成視頻模擬信號傳送給相應的顯示器圖形設計顯示模式文本模式:顯示緩沖區(qū)中存放顯示字符的代碼(ASCII碼或漢字機內碼),及字符的屬性,顯示屏幕按字符分成若干行、列,如80列25行圖形模式:顯示緩沖區(qū)中存放顯示屏幕上每點(象素)的顏色或灰度值,顯示屏幕按象素分成若干行、列,如640480一般開機后的模式都是80 25的文本模式2 Turbo C繪圖Turbo C支持的適配器和圖形模式xy(0,0)分辨率:640 480(0,0)(0,0)(20,50)(639,479)(400,150

8、)圖形庫文件與圖形頭文件 graphics.lib與graphics.h圖形顯示的坐標與象素適配器模式分辨率顏色數(shù)標識符CGA(彩色圖形適配器)EGA(增強圖形適配器)VGA(視頻圖形陣列)0320 2004CGAC04640 2002CGAHI1320 2004CGAC12320 2004CGAC23320 2004CGAC30640 20016EGAL01640 35016EGAHI0640 20016VGAL01640 35016VGAMED2640 48016VGAHI圖形系統(tǒng)初始化函數(shù)void initgraph(int *driver,int *mode,char *pathtod

9、river)其中:driver顯示適配器驅動程序的枚舉變量mode圖形模式(模式號或模式標識符)pathtodriver適配器驅動程序的尋找路徑,“”表示在當前目錄下(*.BGI)enum graphics_driverDETECT,CGA,MCGA,EGA,EGA64,VGA,PC3270;DETECT自動檢測所用顯示適配器的類型,將相應的驅動程序裝入,并將其最高顯示模式作為當前顯示模式使用圖形方式時先進行圖形系統(tǒng)初始化,檢測或設置指定的圖形模式。#include main() int driver=DETECT,mode; initgraph(&driver,&mode, “”); . c

10、losegraph();initgraph(&driver,&mode, “d:tcbgi”);#include main() int driver=VGA; int mode=VGAHI; initgraph(&driver,&mode, “”); . closegraph();將指定模式的驅動程序 (*.GBI)從當前路徑下調入內存關閉圖形系統(tǒng)回到文本模式圖形程序的獨立運行問題為使圖形方式的C源程序能夠脫離TC環(huán)境下運行,應對EGAVGA顯示器的驅動程序.BGI轉換成.OBJ文件: C:TCBGIOBJ EGAVGA然后,將EGAVGA.OBJ與GRAPHICS.LIB進行連接: C:TC

11、TLIB LIBGRAPHICS.LIB+EGAVGA.OBJ程序中,initgraph()調用前要用registerbgidriver()進行登記: registerbgidriver(EGAVGA_driver);清屏和恢復顯示方式函數(shù)void cleardevice(void);void closegraph(void);基本圖形函數(shù)畫點:putpixel() getpixel()坐標移動:moveto() moverel() getx() gety()畫線:line() lineto() linerel()畫矩形和條形圖:rectangle() bar()橢圓、圓、圓弧和扇形:elli

12、pse() circle() arc() pieslice()顏色控制函數(shù)設調色板:setpalette()設背景色:setbkcolor()設繪圖色:setcolor()關閉圖形系統(tǒng)回到文本模式顏色值顏色名顏色顏色值顏色名顏色0123456789101112131415BLACKBLUEGREENCYANREDMAGENTABROWNLIGHTGRAYDARKGRAYLIGHTBLUELIGHTGREENLIGHTCYANLIGHTREDLIGHTMAGENTAYELLOWWHITE黑藍綠青紅洋紅棕淺灰深灰淡藍淡綠淡青淡紅淡洋紅黃白設定線型函數(shù): setlinestyle()填充函數(shù)設定填充

13、模式:setfillstyle() 常用函數(shù):bar3d() sector() fillellipse() fillpoly()屏幕操作函數(shù)屏幕圖象存儲與顯示: getimage() putimage() imagesize()視口函數(shù)setviewport()clearviewport()圖形方式下的文本輸出文本輸出:outtext() outtextxy()定義文本字型:settextstyle()#include 屏幕坐標(1,1)(80,25)文本的屏幕輸出文本方式控制函數(shù)void textmode(int newmode);Turbo C支持5種文本顯示方式方式方式名行列和顏色0BW

14、4040 25 黑白1C4040 25 彩色2BW8080 25 黑白3C8080 25 彩色7MONO80 25 單色-1LASTMODE上一次的顯示方式文本方式下顏色控制函數(shù)文本顏色 textcolor()文本背景 textbackground()文本屬性 textattr()BLINKRGBIRGB背景色字符色閃爍加亮字符顯示亮度控制函數(shù)highvideo()lowvideo()normvideo()窗口設置與文本輸出函數(shù)window()cprintf()cputs()putch()清屏與光標操作函數(shù)clrscr()clreol()delline()gotoxy() wherex() w

15、herey()屏幕文本移動與存取函數(shù)movetext()gettext()puttext()菜單作用:由若干任務項組成的畫面(界面),選擇一項按鍵確定后,即執(zhí)行相應的功能菜單顯示方式:文本方式菜單與圖形方式菜單菜單種類:固定式菜單、彈出式菜單,下拉式菜單菜單及其設計要點菜單設計要點:菜單窗口圖象的存儲與顯示新的窗口出現(xiàn)時,會覆蓋原窗口的區(qū)域可事先保存要覆蓋的區(qū)域,新窗口消失后,再恢復原區(qū)域的顯示圖形方式:getimage() putimage() imagesize() malloc()文本方式:gettext() puttext()菜單窗口和菜單項的生成生成背景圖象,在指定位置顯示菜單項文字

16、光條的生成光條的產生及光條在光標鍵的控制下而移動(保存與再現(xiàn))鍵識別當按下菜單上的選項(如:功能鍵或光標移動鍵)時,根據(jù)鍵值轉入相應的功能處理菜單的連接功能執(zhí)行小程序可以嵌入在菜單中,大程序做成功能模塊,根據(jù)鍵碼直接調用鼠標簡介 鼠標系統(tǒng)實際上由兩個主要元素組成:鼠標機制和稱作鼠標驅動程序的內存駐留程序。鼠標驅動程序提供與鼠標通信所需的全部低級支持。此外,它自動維持鼠標光標位置和發(fā)現(xiàn)是否按下了某個鍵。一旦裝入驅動程序,鼠標就可以被隨后執(zhí)行的任意程序使用。 可以通過PC中斷33H訪問鼠標和鼠標驅動程序的各種功能。所選擇的特定函數(shù)依賴于中斷時AX寄存器的值。三個其它寄存器(BX、CX和DX)用于把

17、各種參數(shù)傳送給鼠標例程。同樣,鼠標函數(shù)使用這四個寄存器把鼠標的位置和按鈕的狀態(tài)返回給調用函數(shù)。鼠標驅動程序主要功能鼠標功能調用方法 用TC通過INT33H中斷來編制基本函數(shù),有三種常用方法:嵌入?yún)R編程序,如:ASM CLI清中斷利用全程變量賦予寄存器值,然后通過函數(shù)geninterrupt( )調用中斷實現(xiàn)利用聯(lián)合類型REGS,SREGS通過函數(shù)int86(),int86x()調用中斷,原型在dos.h鼠標的初始化InitMouse() union REGS regs; regs.x.ax=0; int86(0 x33,®s,®s); if(regs.x.ax=0) return

18、false;else return true;鼠標光標的隱藏HideCur() union REGS regs; if(visual) regs.x.ax=2; int86(0 x33,®s,®s); visual=false;鼠標光標的顯示ShowCur() union REGS regs; if(!visual) regs.x.ax=1; int86(0 x33,®s,®s); visual=true;鼠標光標的顯示與隱藏 在鼠標驅動程序中,鼠標的顯示狀態(tài)用0值表示,隱藏用負值表示,每調用一次顯示功能則該值加一,每調用一次隱藏功能,則該值減一。這樣,在多次調用了驅動

19、程序的隱藏鼠標光標功能后,再調用顯示鼠標光標功能時,將不能正常顯示鼠標光標。需要加入一個visual布爾型變量,來取代驅動程序中的數(shù)值。讀取鼠標的狀態(tài)Status( )union REGS regs; regs.x.ax=3; int86(0 x33,®s,®s);x=regs.x.cx; y=regs.x.dx;status=regs.x.bx;讀取鼠標的狀態(tài)其中X,Y為光標位置status&1左鍵狀態(tài),1為按下,0為未按status&2右鍵狀態(tài),1為按下,0為未按status&4中鍵狀態(tài),1為按下,0為未按 要注意循環(huán)檢測時的抖動現(xiàn)象,可增加一些空循環(huán)或延時來清除剩余的按鍵信號

20、。設置光標位置void MoveMouse(int x,int y)REGS regs; regs.x.ax=4; regs.x.cx=x; regs.x.dx=y; int86(0 x33,®s,®s);設置鼠標光標形狀設置鼠標光標需要三個方面信息:鼠標的外邊界:8*8點陣,16個整數(shù)鼠標的內部形狀:8*8點陣,16個整數(shù)以及鼠標的熱點的相對坐標:int x,y其中外邊界和內邊界連續(xù)存放,為長度為32的整型數(shù)組 int marks32設置鼠標光標形狀SetCurs(unsigned masks32,x,y) union REGS regs; struct SREGS sregs;

21、regs.x.ax=9; regs.x.bx=x; regs.x.cx=y;/* hot spot*/ regs.x.dx=(unsigned)masks; segread(&sregs); int86(0 x33,®s,®s);手的光標數(shù)據(jù) 0 xffff, 0 xffff, 0 xffff, 0 xffff, 0 xffff, 0 xffff, 0 xffff, 0 xffff, 0 xffff, 0 xffff, 0 xffff, 0 xffff, 0 xffff, 0 xffff, 0 xffff, 0 xffff, /*cursor mask*/ 0 x0c00, 0 x

22、1200, 0 x1200, 0 x1200, 0 x13fe, 0 x1249, 0 x1249, 0 x1249, 0 x7249, 0 x9001, 0 x9001, 0 x9001, 0 x8001, 0 x8001, 0 x4002, 0 x3ffc /*cursor mask*/4,0 /*hot spot*/設置鼠標的移動范圍SetMouseArea(int x0,int y0,int x1,int y1)union REGS regs;regs.x.ax=7;regs.x.cx=x0;regs.x.dx=x1;int86(0 x33,®s;®s);regs.x.ax

23、=8;regs.x.cx=y0;regs.x.dx=y1;int86(0 x33,®s,®s);漢字庫簡介 程序中可直接使用UCDOS中的HZK16,ASC16和HZK24三個文件。HZK16中存儲的是16*16點陣漢字是按行存儲的以便于顯示,每個漢字字模32BYTE,按照國標碼順序存儲,其中也包含了682個純中文符號字母。漢字庫的情況ASC16存儲256個西文ASCII碼的8*16點陣格式,按行存儲,每個ASCII碼16字節(jié)。HZK24X存儲24*24點陣打印字模,按列存儲,每個漢字字模占576字節(jié)。24*24點陣漢字存儲兩比較大,所以從16區(qū)1位“啊”字開始存儲,以減少字庫大小。其中X為KS表示楷體,宋體等。取得字節(jié)某一位的值int getbit(unsigned char byte,int bit)if(bit7)return 0; return (bytebit)&0 x1;函數(shù)getbit用于得出一個字節(jié)中每個位(bit)是0還是1。顯示24點陣的漢字void PutChn24(x,y,char *by,color)int i1,i2,i3; for(i1=0;i124;i1+) /LINES for(i2=0;i23;i2+) /3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論