![高級程序語言課程設計報告題資料_第1頁](http://file4.renrendoc.com/view/1b1a57f200d9eb98a6f2b78483657ab4/1b1a57f200d9eb98a6f2b78483657ab41.gif)
![高級程序語言課程設計報告題資料_第2頁](http://file4.renrendoc.com/view/1b1a57f200d9eb98a6f2b78483657ab4/1b1a57f200d9eb98a6f2b78483657ab42.gif)
![高級程序語言課程設計報告題資料_第3頁](http://file4.renrendoc.com/view/1b1a57f200d9eb98a6f2b78483657ab4/1b1a57f200d9eb98a6f2b78483657ab43.gif)
![高級程序語言課程設計報告題資料_第4頁](http://file4.renrendoc.com/view/1b1a57f200d9eb98a6f2b78483657ab4/1b1a57f200d9eb98a6f2b78483657ab44.gif)
![高級程序語言課程設計報告題資料_第5頁](http://file4.renrendoc.com/view/1b1a57f200d9eb98a6f2b78483657ab4/1b1a57f200d9eb98a6f2b78483657ab45.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、-. z信電學院?C語言課程設計?題目及參考資料說明:前10個題是建議的題目,后面14個題是備選題。見2.算術計算器的實現(xiàn)1.功能說明:設計一個簡單計算器,要求編寫的簡單計算器能夠模擬windows系統(tǒng)的計算器的圖形界面,用戶能夠用鍵盤輸入相關數(shù)據(jù),能夠進展簡單的加、減、乘、除運算,并且在程序運行過程中能夠正常的退出程序。在計算器程序運行中,輸入數(shù)據(jù)時如果遇到輸入錯誤的情況,能夠能過鍵盤上的退格鍵進展刪除,并且重新輸入正確的數(shù)據(jù)。在數(shù)據(jù)輸入完成后,如果需要放棄本次計算操作,可以利用程序中設置好的按鍵進展清零,并為下一次運算作準備。程序運行中如果遇到輸入錯誤情況時能夠相應的進展報錯處理,提醒用戶
2、當前的錯誤輸入情況。2. 設計環(huán)境、原理與說明主函數(shù)main()進入圖形模式函數(shù)initialize();計算器外殼函數(shù)huakuang();計算器函數(shù)pute();關閉圖形模式輸入num1輸入錯誤真輸入運算符輸入num2假計算結果表達式真假開場完畢清零假 1. 簡單計算器構造圖-. z2.1設計環(huán)境由于計算器是一個圖形界面,里面包含了圖形文件頭,圖形文件頭在VC編譯環(huán)境里沒有定義,所以本程序的編譯設計環(huán)境需要在Turbo C在進展,Turbo C里面包含了頭文件,在編譯時可直接調用。3.2流程圖 如圖1所示。3.3說明程序運行時首先從main()函數(shù)開場,然后依次執(zhí)行main()函數(shù)里面的第
3、一條語句,最后完畢于main()函數(shù)。程序進入主函數(shù)后,首先開場執(zhí)行main()函數(shù)里的第一條語句initialize()函數(shù),使得計算器在運行的開場就將系統(tǒng)設置進入圖形模式;然后再進入第二條語句huakuang()函數(shù),這個函數(shù)使得函數(shù)在進入圖形模式的的前提下進展屏幕上的畫圖形操作,在屏幕上畫出一個二維的計算器的外殼界面,為進展計算器的計算而打下根底;接下來程序運行進入的是一個計算器的核心環(huán)節(jié)pute()函數(shù),pute()函數(shù)用來將從鍵盤上輸入的數(shù)字進展統(tǒng)計并且根據(jù)相應的法則進展計算,得出相應的結果并送回到計算器的顯示屏上面;其次,進入的是一個closegraph()函數(shù),closegrap
4、h()函數(shù)在文件頭中已經(jīng)有相應的包含,所以在此直接調用,目的是為了使系統(tǒng)關閉圖形模式返回文本模式;最后,用一句return 0語句來完畢整個程序的運行。4 設計過程4.1 主函數(shù)一個程序有且僅有一個主函數(shù)main( )函數(shù),程序運行時首先從main( )函數(shù)開場,然后依次執(zhí)行main( )函數(shù)里面的第一條語句,最后完畢于main( )函數(shù)。程序進入主函數(shù)后,首先開場執(zhí)行main( )函數(shù)里的第一條語句initialize()函數(shù);然后再進入第二條語句huakuang()函數(shù);接下來程序運行進入的是一個計算器的核心環(huán)節(jié)pute()函數(shù);其次,進入的是一個closegraph()函數(shù),closeg
5、raph()函數(shù)在文件頭中已經(jīng)有相應的包含,所以在此直接調用,目的是為了使系統(tǒng)關閉圖形模式返回文本模式;最后,用一句return 0語句來完畢整個程序的運行。如圖4.2:主函數(shù)系統(tǒng)進入圖形模式運行計算器退出圖像模式進入計算器外殼界面圖2 主函數(shù)組織構造圖4.2設置系統(tǒng)進入圖形模式不同的顯示器適配器有不同的圖形分辨率,即使是同一顯示器適配器, 在不同模式下也有不同分辨率。因此, 在屏幕作圖之前, 必須根據(jù)顯示器適配器種類將顯示器設置成為*種圖形模式,,因此也就在主函數(shù)里面調用了initialize()函數(shù)來到達目的。首先定義兩個變量Ma*,Ma*y來存放屏幕的長寬,然后自動檢測顯示器,分別返回一
6、個數(shù)值給Ma*,Ma*y,使函數(shù)在進展圖形的設計時能夠更好的控制住屏幕的坐標,從而有效的進展分配,方便的進展管理。如圖3:-. z顯示錯誤代碼假完畢讀屏幕尺寸并拷貝到變量中讀面板信息真讀初始化結果自動檢測顯示器進入圖形模式函數(shù)initialize();圖3 系統(tǒng)進入圖形模式函數(shù)流程圖4.3屏幕顏色的設置函數(shù)對于圖形模式的屏幕顏色設置,分為背風光的設置和前風光的設置。在Turbo C中分別用下面兩個函數(shù)。設置背風光setbkcolor( int color); 設置作圖色setcolor(int color),其中color 為圖形方式下顏色的規(guī)定數(shù)值,顏色的符號常數(shù)及數(shù)值可以在conio.h和
7、graphics. h兩個頭文件中查到。4.4封閉圖形的填充填充就是用規(guī)定的顏色和圖模填滿一個封閉圖形。Turbo C提供了一些先畫出根本圖形輪廓, 再按規(guī)定圖模和顏色填充整個封閉圖形的函數(shù)。在沒有改變填充方式時, Turbo C以默認方式填充。bar(int *1, int y1, int *2, int y2)確定一個以(*1, y1)為左上角, (*2, y2)為右下角的矩形窗口, 再按規(guī)定圖模和顏色填充,須要注意的是: bar(int *1, int y1, int *2, int y2)函數(shù)不畫出邊框,因此填充色就是邊框的顏色。bar3d(int *1, int y1, int *2
8、, int y2, int depth, int topflag)當topflag為非0時,以(*1, y1)為左上角, (*2, y2)為右下角,畫出一個三維的長方體。當topflag為0時, 三維圖形不封頂。當depth的值越大時,長方體的深度也就越深。需要說明的是: bar3d()函數(shù)中,長方體第三維的方向不隨任何參數(shù)而變,即始終為45度的方向。4.5圖形模式下的文本輸出在圖形模式下,只能用標準輸出函數(shù),如printf(),puts(),putchar() 函數(shù)輸出文本到屏幕。除此之外, 其它輸出函數(shù)(如窗口輸出函數(shù))不能使用, 即是可以輸出的標準函數(shù),也只以前風光為白色,按80列,25
9、行的文本方式輸出。Turbo C2.0也提供了一些專門用于在圖形顯示模式下的“文本輸出函數(shù)outte*t*y(int *, int y, char far *te*tstring),該函數(shù)輸出字符串指針te*tstring所指的文本在規(guī)定的屏幕的(*, y)位置。 其中* 和y為像素坐標。格式化輸出函數(shù)sprintf(char *str, char *format, variable-list),它與printf()函數(shù)不同之處是將按格式化規(guī)定的容寫入str 指向的字符串中, 返回值等于寫入的字符個數(shù)。例如: sprintf(s, your TOEFL score is %d, mark);
10、這里s應是字符串指針或數(shù)組,mark為整型變量。另外,圖形方式下的文本輸出函數(shù), 可以通過setcolor()函數(shù)設置輸出文本的顏色。4.6計算器名稱函數(shù)計算器名稱函數(shù)void name(void),用于給計算器命名,這樣使得程序構造性增強,便于理解。4.7計算器介面設置函數(shù)此函數(shù)是為了畫出計算器的介面而自定義的一個函數(shù),開場時,先將背景顏色設置成“3對應的顏色,然后將畫線的顏色設置成5對應的顏色,用這種顏色以坐標Ma*/4,Ma*Y/4-40和3*Ma*/4,3*Ma*Y/4畫出計算器的外框;再將顏色值設置成3,以坐標6*Ma*/20-10, 2*Ma*Y/8+10和2*Ma*Y/8+10,
11、 11*Ma*/20+40畫出計算器的顯示器,用以確定數(shù)據(jù)處理后存放的屏幕位置。調用一個name()的自定義函數(shù)用來寫出計算器的名稱,這樣使得程序的構造層次清晰。隨后用一系列的畫框函數(shù)rectangle*1,y1,*2,y2來畫出計算器的介面上各個數(shù)字按鈕,再調用一個outte*t*y函數(shù)來實現(xiàn)在圖形模式下將計算器按鈕上相應的數(shù)字符號寫在相應的坐標位置(如圖4.8) 。到此,計算器的外殼已經(jīng)根本上的完成了。完畢在計算器各按鈕上寫上數(shù)字設置畫線顏色并畫計算器各按鈕外框設置畫線顏色并畫計算器顯示器外框設置畫線顏色并畫計算器外殼設置計算器背風光計算器介面設置函數(shù)圖4 計算器介面設置函數(shù)流程圖4.8自
12、定義按鈕顏色變化函數(shù)自定義按鈕顏色變化函數(shù)void anjian(char input),用它來實現(xiàn)從鍵盤上輸入*個數(shù)字后顯示器上的計算器按鈕有相應顏色變化,其中char input是從鍵盤上輸入的*個數(shù)字或者運算符號。從鍵盤上輸入數(shù)字“1,則該函數(shù)就在計算器的相應位置處的“1那按鈕上變一下顏色,提示有數(shù)字從計算器的鍵盤輸入。注意:用一個循環(huán)for來延長變色時間,引起明顯的顏色變化。如圖5:完畢函數(shù)anjian();畫按鈕外框在按鈕上寫數(shù)字設置前風光畫框并用當前顏色填充真畫框并用當前顏色填充假設置到以前的填充模式表達式設置填充模式為GREEN綠色按鈕顏色變化函數(shù)anjian();圖5按鈕顏色變
13、化函數(shù)流程圖4.9計算器函數(shù)輸入num1真輸入num2真輸入運算符真在顯示屏上顯示計算結果假假假清零真計算器函數(shù)pute;判斷條件假退出輸入錯誤圖6 計算器函數(shù)流程圖計算器函數(shù)void pute(void),這也是一個自定義的函數(shù),目的是用于接收由鍵盤上輸入的數(shù),然后進展加減乘除等運算,從而實現(xiàn)計算器的根本功能。首先,定義三個長浮點型的變量long float num1,num2,res,分別用于存放輸入的數(shù)num1和num2以及運算結果的數(shù)res,定義長浮點型變量的原因是為了防止由于輸入的數(shù)位數(shù)過長而造成無法計算的情況;定義char input,act,s20=,input用于存放從鍵盤上輸
14、入的數(shù),act用于存放進展加減乘除的四種情況,s20用于存放累積輸入的字符串;接下來用一個dowhile語句來實現(xiàn)連續(xù)的鍵盤輸入,這個循環(huán)完畢于從鍵盤上輸入了其它非數(shù)字鍵,當按到運算符“+、“-、“*、“/時,從而跳出循環(huán),進展下一步的運算;接下來又用一個switchcase語句來實現(xiàn)分情況的計算,從而對加減乘除的各種情況下的等式運算,當輸入的字符既不是數(shù)字也不是運算符時,就通過switchcase里面的default語句來提示輸入出錯“input error,從而通過重新輸入正確再進展計算。如圖6:4.10 簡單計算器的實現(xiàn)界面圖7 計算器界面圖-. z5附錄簡單計算器的局部源代碼*incl
15、ude *include *include /*屏幕操作函數(shù)*/*include *include *include *include *include /*字符操作函數(shù)*/*define E*CAPE 27*define ENTER 13struct palettetype palette;int GraphDriver;/* 圖形設備驅動*/int GraphMode;/* 圖形模式值*/int ErrorCode;/* 錯誤代碼*/int Ma*, Ma*Y;int j=0;/*定義全局變量j*/void initialize(void);void pute(void);void hua
16、kuang(void);void name(void);void anjian(char input);int main()initialize();huakuang();pute();return 0;void initialize(void) int gdriver=DETECT, gmode, *asp, yasp; initgraph(&gdriver, &gmode, c:tc); ErrorCode = graphresult(); if( ErrorCode != grOk ) printf(Graphics System Error: %sn, grapherrormsg( E
17、rrorCode ) ); e*it( 1 ); getpalette( &palette ); Ma* = getma*(); Ma*Y = getma*y();void huakuang(void) setbkcolor(3); setcolor(5); bar3d(Ma*/4,Ma*Y/4-40,3*Ma*/4,3*Ma*Y/4, 5,1);setcolor(3);rectangle( 6*Ma*/20-10, 2*Ma*Y/8+10, 11*Ma*/20+40, 3*Ma*Y/8-10);name();setcolor(4);rectangle( 13*Ma*/20+10,2*Ma*Y
18、/8+10, 15*Ma*/20-10, 3*Ma*Y/8-10);/*畫小數(shù)點*/rectangle( 5*Ma*/20+10, 3*Ma*Y/8+10, 7*Ma*/20-10, 4*Ma*Y/8-10);rectangle( 7*Ma*/20+10, 3*Ma*Y/8+10, 9*Ma*/20-10, 4*Ma*Y/8-10);rectangle( 9*Ma*/20+10, 3*Ma*Y/8+10, 11*Ma*/20-10, 4*Ma*Y/8-10);rectangle( 11*Ma*/20+10, 3*Ma*Y/8+10, 13*Ma*/20-10, 4*Ma*Y/8-10);rec
19、tangle( 13*Ma*/20+10, 3*Ma*Y/8+10, 15*Ma*/20-10, 4*Ma*Y/8-10);rectangle( 5*Ma*/20+10, 4*Ma*Y/8+10, 7*Ma*/20-10, 5*Ma*Y/8-10);rectangle( 7*Ma*/20+10, 4*Ma*Y/8+10, 9*Ma*/20-10, 5*Ma*Y/8-10);rectangle( 9*Ma*/20+10, 4*Ma*Y/8+10, 11*Ma*/20-10, 5*Ma*Y/8-10);rectangle( 11*Ma*/20+10, 4*Ma*Y/8+10, 13*Ma*/20-
20、10, 5*Ma*Y/8-10);rectangle( 13*Ma*/20+10, 4*Ma*Y/8+10, 15*Ma*/20-10, 5*Ma*Y/8-10);rectangle( 5*Ma*/20+10, 5*Ma*Y/8+10, 7*Ma*/20-10, 6*Ma*Y/8-10);rectangle( 7*Ma*/20+10, 5*Ma*Y/8+10, 9*Ma*/20-10, 6*Ma*Y/8-10);rectangle( 9*Ma*/20+10, 5*Ma*Y/8+10, 11*Ma*/20-10, 6*Ma*Y/8-10);rectangle( 11*Ma*/20+10, 5*M
21、a*Y/8+10, 13*Ma*/20-10, 6*Ma*Y/8-10);rectangle( 13*Ma*/20+10, 5*Ma*Y/8+10, 15*Ma*/20-10, 6*Ma*Y/8-10);outte*t*y(14*Ma*/20-2.5, 5*Ma*Y/16-2.5,.);outte*t*y(6*Ma*/20-2.5, 7*Ma*Y/16-2.5,1);outte*t*y(8*Ma*/20-2.5, 7*Ma*Y/16-2.5,2);outte*t*y(10*Ma*/20-2.5, 7*Ma*Y/16-2.5,3);outte*t*y(12*Ma*/20-2.5, 7*Ma*Y/
22、16-2.5,+);outte*t*y(14*Ma*/20-2.5, 7*Ma*Y/16-2.5,/);outte*t*y(6*Ma*/20-2.5, 9*Ma*Y/16-2.5,4);outte*t*y(8*Ma*/20-2.5, 9*Ma*Y/16-2.5,5);outte*t*y(10*Ma*/20-2.5, 9*Ma*Y/16-2.5,6);outte*t*y(12*Ma*/20-2.5, 9*Ma*Y/16-2.5,-);outte*t*y(14*Ma*/20-2.5, 9*Ma*Y/16-2.5,*);outte*t*y(6*Ma*/20-2.5, 11*Ma*Y/16-2.5,7
23、);outte*t*y(8*Ma*/20-2.5, 11*Ma*Y/16-2.5,8);outte*t*y(10*Ma*/20-2.5, 11*Ma*Y/16-2.5,9);outte*t*y(12*Ma*/20-2.5, 11*Ma*Y/16-2.5,0);outte*t*y(14*Ma*/20-2.5, 11*Ma*Y/16-2.5,=);void pute(void)/*添加自己代碼*/void anjian(char input)/*添加自己代碼*/void name(void)setcolor(4);outte*t*y(Ma*/4+20,Ma*Y/4-10,Simple Calcul
24、ator 1.0);流星雨的實現(xiàn)功能說明:程序模擬一組流星飛向地面的情景。地面用多行*來表示,流星用大寫字母表示。程序產(chǎn)生一組流星比方10個,從屏幕頂部下降飛向地面。一組流星中,每個流星的字符顏色是隨機的,下降的位置是隨機的,下降的速度也是隨機的。一個流星下落只能去掉一個*號,當最后一行地面有*被去掉時,程序終止。實現(xiàn)提示:程序在下降過程中,程序必須知道流星的字符、顏色、位置、速度,因此程序需要定義以下幾個數(shù)組變量:存放流星字符的數(shù)組,存放流星字符顏色的數(shù)組,存放流星行位置的數(shù)組,存放流星列位置的數(shù)組,存放流星下降速度的數(shù)組。程序的流程圖如下列圖所示。流星雨流程圖可定義二維數(shù)組screen表示
25、地面和天空,此數(shù)組是一個24行81列的字符數(shù)組。上面的行表示天空,數(shù)組單元的值是空格;最下面的幾行如5行表示地面,數(shù)組單元的值是*;整個屏幕的大小是80*25,即25行80列, 為了在輸出最后一行時不換行滾屏,程序只能利用上面的24行空間。把數(shù)組定義成81列的目的是,每行的最后字符賦值成0,就可以按照字符串的方式輸出每行文本了。程序首先輸出地面和天空,即輸出定義的二維數(shù)組screen中的字符串,前19行是空行,后5行是*號。這樣screen2481的字符矩陣就與整個屏幕對應起來。然后隨時機產(chǎn)生一組流星數(shù)據(jù),包括字符、顏色、位置和速度。速度用一次下降多少行來表示,最大的速度是4。由于要隨機產(chǎn)生這
26、些數(shù)據(jù),因此需要調用random函數(shù)。random函數(shù)的原型是 int random(int num); 這個函數(shù)產(chǎn)生一個0num-1之間的一個隨機數(shù)。 流星字符可以這樣產(chǎn)生:random(26)+A; 流星字符的顏色可以這樣產(chǎn)生:random(16)+1;流星下降的位置可以這樣產(chǎn)生:random(4)+1;流星的行位置一開場都是1; 流星的列位置可以這樣產(chǎn)生:random(80)+1;但要保證所有流星的列位置不能一樣設計一個算法來判斷。 調用random之前,用randomize()庫函數(shù)進展初始化。 兩個庫函數(shù)都在stdlib.h文件中。每個流星按照自己的速度下落,所謂的下落就是逐行移動流
27、星字符: 在下一行新的位置上顯示流星字符,在原來的位置上顯示空格以便擦除流星字符,然后再延遲等待幾十毫秒。這樣循環(huán)往復就構成了流星下落的動畫。 但要注意,流星的速度各不一樣,而一次下落多行的流星也要逐行下落。如果流星的新位置所對應的screen的單元格的值是*,則表示撞到了地面。 這種情況下在流星的新位置上輸出空格,擦除*號,并且對screen相應的單元賦值為空格,流星字符也要賦值為空格,以表示流星消失。當screen23中任何一個單元格是空格時,程序終止。三、手機通信錄管理系統(tǒng)需求分析手機通信錄采用文件存儲,因而要提供文件的輸入輸出操作;查看功能要提供顯示操作;增加新數(shù)據(jù)的過程要檢查是否有重
28、復,存儲空間是否已滿,且錄入的新數(shù)據(jù)能按遞增的順序自動進展條目編號,因而要提供查找、統(tǒng)計和排序操作;要提供修改與刪除和自動調整編號功能;另外還要提供鍵盤式選擇菜單以實現(xiàn)功能選擇??傮w設計整個系統(tǒng)可以設計為數(shù)據(jù)查看模塊、數(shù)據(jù)添加模塊、數(shù)據(jù)修改模塊、數(shù)據(jù)刪除模塊。手機通信錄管理系統(tǒng)數(shù)據(jù)查看模塊數(shù)據(jù)添加模塊數(shù)據(jù)修改模塊數(shù)據(jù)刪除模塊辦公類個人類商務類詳細設計數(shù)據(jù)構造采用構造體,設計通信錄構造體:Struct municationMethodChar name20; /Char tel12; /Int type; /分類:0表示辦公類,1表示個人類,2表示商務類Char email20; /電子地址In
29、t num; /條目編號Mtd;1數(shù)據(jù)查看模塊通過菜單項選擇擇查看信息,然后選擇辦公類、個人類或者商務類,則顯示所選類信息列表。這是一個查找與顯示的過程,在手機通信錄文件中查找type類型符合的記錄,輸出。 2數(shù)據(jù)添加模塊 提示輸入一條記錄,將對通信錄執(zhí)行查找操作,查找和字段,如不存在一樣的記錄,則用以追加方式寫入文件,并給記錄的條目字段賦值在檢查有無重復的過程中啟動計數(shù),否則提示“數(shù)據(jù)已經(jīng)存在,請重新輸入或者取消!。 3數(shù)據(jù)修改模塊 修改通信錄信息,則需要讀文件,判斷信息是否是要修改的信息,如果是,修改,重新寫入文件;否則直接重新寫入文件。 4數(shù)據(jù)刪除模塊通過菜單項選擇擇刪除操作,由于C語言
30、沒有提供直接刪除文件記錄的函數(shù),因而需要自己實現(xiàn):讀記錄,判斷是否要刪除與輸入的要刪除的記錄比擬,如果要刪除,則舍棄;否則重新寫入文件。四、工資管理系統(tǒng)需求分析工資信息存放在文件中,提供文件的輸入、輸出等操作;要實現(xiàn)瀏覽功能,提供顯示、排序操作;而查詢功能要現(xiàn)查找操作;另外還應該提供鍵盤式選擇菜單以實現(xiàn)功能選擇。2、總體設計整個系統(tǒng)可以分為信息輸入、信息添加、信息瀏覽、信息排序、信息查詢和信息統(tǒng)計模塊。3、詳細設計工資信息采用構造體數(shù)組:Struct Salary_Info int Card_No; /工資卡號Char name20; / int month; /月份 float Init_S
31、alary; /應發(fā)工資 float Water_Rate; /水費 float Electric_Rate; /電費 float ta*; /稅金 float Final_Salary; /實發(fā)工資SIMA*; /SIMA*中每個數(shù)組元素對應一個職工工資信息1主函數(shù)提供輸入、處理和輸出局部的函數(shù)調用,各功能模塊采用菜單方式選擇。2輸入模塊 按照工資卡號、月份、應發(fā)工資、水費、電費的順序輸入信息,稅金和實發(fā)工資根據(jù)輸入的信息進展計算得到,這些信息被錄入到文件中。稅金的計算:if(應發(fā)工資800&應發(fā)工資1400) 稅金=應發(fā)工資-1400*10%;實發(fā)工資=應發(fā)工資-水費-電費-稅金。3添加模
32、塊增加新的職工工資信息,從鍵盤輸入并逐條寫到原來的輸入文件中,采用追加而不是覆蓋的方式。4瀏覽模塊 通過菜單項選擇擇按照工資卡號還是瀏覽。如果按照卡號瀏覽,則顯示的記錄按照卡號升序輸出;按照瀏覽則按照字典序輸出調用排序模塊的排序功能。5排序模塊排序模塊提供菜單項選擇擇,實現(xiàn)按照工資卡號升序、實發(fā)工資降序以及字典序排序。排序方法可以選擇冒泡排序、插入排序、選擇排序等。6查詢模塊實現(xiàn)按照工資卡號和的查詢,采用根本的查找方法即可。7統(tǒng)計模塊輸入起止月份,按照職工卡號和月份查詢記錄,把起止月份之間的實發(fā)工資金額累加。五、校際運動會管理系統(tǒng)1、需求分析要記錄比賽結果,可以查看參賽學校的信息和比賽工程信息
33、,因而要實現(xiàn)文件的輸入和輸出功能;用戶可以查詢各個學校的比賽成績,查看參賽學校信息和比賽工程信息等,因而要提供查找和顯示功能;另外還應該提供鍵盤式選擇菜單以實現(xiàn)功能選擇。2、總體設計 系統(tǒng)被設計為信息輸入模塊、比賽結果錄入模塊和查詢模塊三個模塊。3、詳細設計 數(shù)據(jù)構造采用構造體數(shù)組,包括學校、工程、運發(fā)動三個構造體。Struct athleteChar name20; /Int age; /年齡Char From20; /來自學校Athlete; /運發(fā)動構造體Struct itemChar name20; /工程名Int* weight; /在運行時根據(jù)用戶的輸入動態(tài)分配空間各工程名次取法不
34、同,weight所指空間依次存放第一名得分、第二名得分等Athlete* player; /指向獲獎運發(fā)動信息的指針I(yè)tem; /工程構造體Struct universityChar name20; /學校名 Item *item; /競賽工程指針,根據(jù)用戶輸入動態(tài)分配空間Int score; /學校得分Uni; /學校構造體Item TotalItemItemNum; /工程構造體數(shù)組Uni AllUniUniNum; /學校構造體數(shù)組1主函數(shù) 提供輸入、處理和輸出局部的函數(shù)調用,各功能模塊采用菜單方式選擇。 2信息輸入模塊輸入?yún)①悓W校總數(shù),M-男子參賽工程數(shù),W-女子參賽工程數(shù)。把參賽學校
35、信息和工程信息以及運發(fā)動信息錄入文件,建立三個文件。例如第i個工程:Scanf(“%s,TotalI); /輸入工程名Ch=Getchar(); /通過輸入1,2,3來選擇工程名次取法Switch(ch)Case 1: n=5;break;Case 2: n=3; break;Case 3: printf(“取前幾名.,&n); break;Default: break;TotalItemi.weight=new intn;TotalItemi.athlete=NULL; /指向獲獎運發(fā)動信息,初始化為空然后寫入文件:fp=fopen(“item.t*t,wb);fwrite
36、(&TotalItemi,sizeof(Item),1,fp);學校信息和運發(fā)動信息的錄入與此類似。2比賽結果錄入模塊 通過菜單項選擇擇進入比賽結果錄入模塊,更改TotalItemi.athlete的值,并把獲獎保存到工程文件中。工程文件格式為:工程名 工程權值按照第一名、第二名給出權值 獲獎運發(fā)動信息按照第一名、第二名給出 3查找模塊查找學校信息文件,生成團體總分報表;用根本查找算法查詢參賽學校信息按照校名查找或者比賽工程信息按照工程名。 六、學生學籍信息管理系統(tǒng)設計1、需求分析學生根本信息、學生成績根本信息要存入文件當中,因而要提供文件的輸入輸出操作;查詢功能要求提供查找和顯示操作;刪除功
37、能要現(xiàn)刪除操作;排序功能要現(xiàn)排序操作;另外還應該提供鍵盤式選擇菜單以實現(xiàn)功能選擇。2、總體設計 整個系統(tǒng)可以設計為數(shù)據(jù)錄入模塊、數(shù)據(jù)查詢模塊、數(shù)據(jù)刪除模塊和數(shù)據(jù)排序模塊。3、詳細設計 設計學生根本信息和學生成績根本信息構造體數(shù)組。Struct int stuNo; /* char name20; / char se*2; /性別 int domNum; /宿舍號 int tel; / StuInfo; /學生根本信息構造體Struct int stuNo; /* char courseNo; /課程編號 char courseName; /課程名稱 int creditHour; /學分Int
38、 triGrade; /平時成績Int e*periGrade; /實驗成績Int e*amGrade; /卷面成績Float totalGrade; /綜合成績Float finalCreHour; /實得學分StuGraInfo; /學生成績根本信息構造體1數(shù)據(jù)錄入模塊學生根本信息文件可以在磁盤建立,采用寫文件方式錄入學生成績根本信息。綜合成績和實得學分通過計算得到。2查詢模塊通過菜單項選擇擇查詢功能,再選擇學生根本情況查詢和成績查詢,假設選擇前者,再通過菜單項選擇擇*、或宿舍,按照根本查找算法查找A.T*T,然后把查找結果輸出假設選擇后者,則先在A.T*T中查找*對應的,再在B.T*T中
39、查找該學生的課程情況,并統(tǒng)計科目和實得總學分,輸出結果。3刪除模塊通過菜單項選擇擇刪除學生的功能,輸入要刪除學生的*,則分別在A.T*T和B.T*T中查找該生信息,刪除之;或者輸入學生的,先在A.T*T中得到該生的*,刪除該生信息,再在B.T*T中刪除該*對應的信息。注意:C語言中沒有直接刪除信息的函數(shù),需要自己實現(xiàn),可以采取讀出數(shù)據(jù),判斷數(shù)據(jù)如果不刪除,則進入緩沖區(qū),否則刪除,寫入數(shù)據(jù)把緩沖區(qū)中的數(shù)據(jù)寫入文件的步驟進展。4排序模塊通過菜單項選擇擇排序依據(jù),采用排序算法冒泡、插入、選擇等對數(shù)據(jù)進展排序并輸出結果。七、學生選修課程管理系統(tǒng)1、需求分析 系統(tǒng)以菜單方式工作,因而要提供鍵盤式選擇菜單
40、以實現(xiàn)功能選擇;由于課程信息要用文件保存,因而要提供文件的輸入輸出操作;由于要瀏覽信息,所以要提供顯示功能;要實現(xiàn)查詢功能,故要提供查找操作。2、總體設計 整個系統(tǒng)可以設計為信息輸入模塊、信息查詢模塊以及信息瀏覽模塊。3、詳細設計 數(shù)據(jù)構造采用構造體,這里采用課程信息構造體和學生選課信息構造體。Struct Char courseCode10; /課程編號Char courseName20; /課程名稱Char courseType10; /課程類別Int totalPeriod; /總學時Int classPeriod; /授課學時Int e*periPeriod; /上機學時Float c
41、reditHour; /學分Int term; /開課學期CourseInfoN; /課程信息構造體StructInt stuNo; /*;Char courseCode10; /課程編號StuCourInfoN; /學生選課信息構造體(1) 信息輸入模塊 從鍵盤輸入課程信息和學生選課信息,寫入文件。(2)信息瀏覽模塊從文件中讀數(shù)據(jù),然后再顯示。(3)信息查詢模塊 通過菜單項選擇擇查詢字段,可以按照課程編號、課程名稱、課程性質、開課學期、學分對課程信息文件進展查找,查找算法可以選擇根本查找、二分查找等算法。 可以通過菜單項選擇擇課程編號,在學生選課信息文件中查詢該課程學生選修情況。八、飛機訂票
42、管理系統(tǒng)1、需求分析 航班信息用文件保存,因而要提供文件的輸入輸出操作;航班信息瀏覽功能需要提供顯示操作;要查詢航線需要提供查找功能;另外要提供鍵盤式選擇菜單以實現(xiàn)功能選擇。2、總體設計 該系統(tǒng)設計為航班信息輸入模塊、航班信息瀏覽模塊和航線查詢模塊。3、詳細設計 數(shù)據(jù)構造采用構造體數(shù)組,設計航班構造體如下:Struct Char flightNo10; /航班號Char start10; /起始站Char end10; /終點站Float day; /飛行時間Int totalTicket; /預售票總數(shù)Int sellTicket; /已售票總數(shù)FlightN; /航班構造體1航班信息輸入模
43、塊把航班信息寫入航班信息文件。2航班信息瀏覽模塊 讀文件然后顯示即可。3航線查詢模塊 通過菜單項選擇擇查詢方式,提供按照航班號、起點站、終點站和飛行時間查詢。采用根本查找算法即可。九、職工信息管理系統(tǒng)需求分析系統(tǒng)要以菜單方式工作,因而要提供鍵盤式選擇菜單以實現(xiàn)功能選擇;職工信息采用文件保存,因而要提供文件的輸入輸出操作;要實現(xiàn)職工信息的瀏覽功能,則要提供信息顯示操作;要實現(xiàn)職工信息查詢功能,則要提供查找操作按學歷查詢和按職工號查詢兩種查詢方式;要實現(xiàn)職工信息刪除、修改功能則要提供文件記錄的刪除、修改操作??傮w設計整個系統(tǒng)被設計為職工信息輸入模塊、職工信息瀏覽模塊、職工信息查詢模塊和職工信息刪除
44、與修改模塊。詳細設計數(shù)據(jù)構造采用構造體,設計職工信息構造體:Struct employeeInfoChar jobNo10; /職工號Char name20; /Char se*; /性別Int age; /年齡Char eduLevel10; /學歷Float salary; /工資Char addr; /地址Char tel11; /EmpInfo; /職工信息構造體1職工信息輸入模塊把職工信息寫入航班信息文件。2職工信息瀏覽模塊讀文件然后顯示即可。3職工信息查詢模塊通過菜單項選擇擇查詢方式,提供按學歷查詢和按職工號查詢兩種查詢方式。采用根本查找算法即可。 4職工信息刪除與修改模塊通過菜單
45、項選擇擇刪除操作,由于C語言沒有提供直接刪除文件記錄的函數(shù),因而需要自己實現(xiàn):讀記錄,判斷是否要刪除與輸入的要刪除的記錄比擬,如果要刪除,則舍棄;否則重新寫入文件。修改操作于刪除操作類似,只是判斷是否是要修改的記錄,如果是,則把修改后的記錄寫入文件,否則直接寫入文件。十、圖書管理系統(tǒng)需求分析圖書管理信息采用文件保存,因而要提供文件的輸入輸出操作;要實現(xiàn)對圖書根本信息的查詢,則要提供查找操作提供按書名、作者名查詢兩種查詢方式和顯示操作;要實現(xiàn)對撤銷圖書信息的刪除則要提供文件記錄的刪除操作;辦理借書或還書手續(xù)需要提供修改操作;另外還要提供鍵盤式選擇菜單以實現(xiàn)功能選擇??傮w設計整個系統(tǒng)被設計為數(shù)據(jù)輸
46、入模塊、數(shù)據(jù)查詢模塊、數(shù)據(jù)刪除模塊和數(shù)據(jù)修改模塊。詳細設計數(shù)據(jù)構造采用構造體,設計圖書信息構造體:Struct bookManageInfoChar bookName20; /圖書名稱Char bookCode20; /圖書編號Float price; /圖書價格Char author10; /作者Int state; /存在狀態(tài),0代表可以出借,1代表已經(jīng)借出Char borrowerName10; /借書人Int se*; /借書人性別,0代表女,1代表男Char stuNo10; /借書人*bookMInfo;1數(shù)據(jù)輸入模塊把圖書根本信息寫入圖書信息文件。2數(shù)據(jù)查詢模塊通過菜單項選擇擇查
47、詢方式,提供按書名查詢和按作者名查詢兩種查詢方式。采用根本查找算法即可。 3數(shù)據(jù)刪除模塊 通過菜單項選擇擇刪除操作,由于C語言沒有提供直接刪除文件記錄的函數(shù),因而需要自己實現(xiàn):讀記錄,判斷是否要刪除與輸入的要刪除的記錄比擬,如果要刪除,則舍棄;否則重新寫入文件。 4數(shù)據(jù)修改模塊 辦理借書手續(xù)時,先要在文件中查找要借的書的存在狀態(tài),假設可以出借,則允許借出,把借書人、性別和*添加到該書的記錄中,并把存在狀態(tài)改為已經(jīng)借出;否則,顯示“抱歉,該書已借出。辦理還書手續(xù)時,在文件中查找該書的記錄,然后把存在狀態(tài)改為允許出借,把借書人、性別和*刪除。具體修改操作可以參考刪除操作。1:管理系統(tǒng)類設計參考例程
48、,可以提供給學生。學生成績管理系統(tǒng)需求分析學生紀錄用文件存儲,因而要提供文件的輸入輸出操作;要實現(xiàn)插入一個新的學生紀錄,因而要提供文件的插入操作;要實現(xiàn)學生紀錄得修改和刪除,以及登記成績和修改成績,因而要提供文件紀錄的修改和刪除操作;要瀏覽全班成績,故要提供顯示操作;計算學生總成績需要提供簡單的統(tǒng)計操作;要按*排序輸出全班成績表,因而要提供排序操作;另外要提供鍵盤式選擇菜單以實現(xiàn)功能選擇??傮w設計整個成績管理系統(tǒng)設計分為1.錄入學員信息2.顯示學員信息3.成績排序信息4.添加學員信息5.刪除學員信息6.修改學員信息7.查詢學員信息8.從文件讀入學員信息9.刪除文件中學員信息10.保存學員信息1
49、1.退出詳細設計數(shù)據(jù)構造采用構造體,設計學生紀錄構造體:struct student int no;/* char name20;/ char se*4;/性別 float score1;/成績1 float score2;/成績2 float score3;/成績3 float sort;/排序成績 float ave;/平均分 float sum;/總分;1主函數(shù)輸出提示菜單:插入學生紀錄 修改學生紀錄 刪除學生紀錄 登記成績修改成績 瀏覽學生紀錄 查看總成績 查看成績表2數(shù)據(jù)插入模塊 采用追加的方式把學生成績信息寫入學生成績信息文件。3數(shù)據(jù)修改模塊通過菜單項選擇擇修改學生紀錄,翻開該文件
50、,從文件中讀一條記錄,判斷是否要修改,如果是,則修改后重新寫入文件;否則直接重新寫入文件,讀下一條記錄。4數(shù)據(jù)刪除模塊通過菜單項選擇擇刪除學生紀錄,翻開該文件,從文件中讀一條記錄,判斷是否要刪除,如果是,則舍棄;否則重新寫入文件,讀下一條記錄。5成績登記模塊 類似數(shù)據(jù)修改模塊,只是修改字段為各個科目的成績。6成績修改模塊 參考數(shù)據(jù)修改模塊。7數(shù)據(jù)瀏覽模塊 讀取學生成績信息文件,顯示輸出。8成績統(tǒng)計模塊 從學生成績信息文件中讀取一個學生紀錄,計算該學生的總成績簡單的成績相加,輸出,然后讀取下一條紀錄。9成績表查看模塊建立構造體數(shù)組Struct SR record; /學生紀錄Float tota
51、l; /總成績stuN;從學生成績信息文件中讀取各個紀錄,total中存放計算得到的總成績。然后采用排序算法冒泡、插入、選擇等對數(shù)組按照總成績進展排序。最后順序輸出。*include *include*include*include *include*define MA* 80void input();void sort();void display();void insert();void del();void average();void find();void save();void read();void del_file();void average();void modify();
52、int now_no=0;struct student int no; char name20; char se*4; float score1; float score2; float score3; float sort; float ave; float sum;struct student stuMA*,*p;main()/*主函數(shù)*/ int as; start: printf(nttt歡送使用學生成績管理系統(tǒng)n); /*一下為功能選擇模塊*/ do printf(ntttt1.錄入學員信息ntttt2.顯示學員信息ntttt3.成績排序信息ntttt4.添加學員信息ntttt5.刪
53、除學員信息ntttt6.修改學員信息ntttt7.查詢學員信息ntttt8.從文件讀入學員信息ntttt9.刪除文件中學員信息ntttt10.保存學員信息ntttt11.退出n); printf(tttt選擇功能選項:); fflush(stdin); scanf(%d,&as); switch(as) case 1:system(cls);input();break; case 2:system(cls);display();break; case 3:system(cls);sort();break; case 4:system(cls);insert();break; case 5:sy
54、stem(cls);del();break; case 6:system(cls);modify();break; case 7:system(cls);find();break; case 8:system(cls);read();break; case 9:system(cls);del_file();break; case 10:system(cls);save();break; case 11:system(e*it);e*it(0); default:system(cls);goto start; while(1); /*至此功能選擇完畢*/void input()/*原始數(shù)據(jù)錄入模
55、塊*/ int i=0; char ch; do printf(tttt1.錄入學員信息n輸入第%d個學員的信息n,i+1); printf(n輸入學生編號:); scanf(%d,&stui.no); fflush(stdin); printf(n輸入學員:); fflush(stdin); gets(); printf(n輸入學員性別:); fflush(stdin); gets(stui.se*); printf(n輸入學員成績1:); fflush(stdin); scanf(%f,&stui.score1); printf(n輸入學員成績2:); fflush(st
56、din); scanf(%f,&stui.score2); printf(n輸入學員成績3:); fflush(stdin); scanf(%f,&stui.score3); printf(nn); i+; now_no=i; printf(是否繼續(xù)輸入?(Y/N); fflush(stdin); ch=getch(); system(cls); while(ch!=n&ch!=N); system(cls);void sort()/*排序數(shù)據(jù)函數(shù)*/ struct student temp; int i,j; average(); for(i=1;inow_no;i+) for(j=1;j=
57、now_no-i;j+) if(stuj-1.avestuj.ave) temp=stuj; stuj=stuj-1; stuj-1=temp; void display()/*顯示數(shù)據(jù)函數(shù)*/ int i; char as; average(); do printf(ttt班級學員信息列表n); printf(t編號tt性別t成績1t成績2t成績3t平均值n); for(i=0;inow_no&0;i+)printf(t%dt%st%st%.2ft%.2ft%.2ft%.2fn,stui.no,,stui.se*,stui.score1,stui.scor
58、e2,stui.score3,stui.ave); printf(tt按任意鍵返回主菜單.); fflush(stdin); as=getch(); while(!as); system(cls);void insert()/*插入數(shù)據(jù)函數(shù)*/ char ch; do printf(ntt輸入新插入學員隊信息n); printf(n輸入學生編號:); scanf(%d,&stunow_no.no); fflush(stdin); printf(n輸入學員:); fflush(stdin); gets(stunow_); printf(n輸入學員性別:); fflush(stdin
59、); gets(stunow_no.se*); printf(n輸入學員成績1:); fflush(stdin); scanf(%f,&stunow_no.score1); printf(n輸入學員成績2:); fflush(stdin); scanf(%f,&stunow_no.score2); printf(n輸入學員成績3:); fflush(stdin); scanf(%f,&stunow_no.score3); printf(nn); now_no=now_no+1; sort(); printf(是否繼續(xù)輸入?(Y/N); fflush(stdin); ch=getch(); sy
60、stem(cls); while(ch!=n&ch!=N);void del()/*刪除數(shù)據(jù)函數(shù)*/ int inum,i,j; printf(輸入要刪除學員的編號:); fflush(stdin); scanf(%d,&inum); for(i=0;inow_no;i+) if(stui.no=inum) if(i=now_no)now_no-=1; else stui=stunow_no-1; now_no-=1; sort(); break; system(cls);void save()/*保存數(shù)據(jù)函數(shù)*/ FILE *fp; int i; char filepath20; print
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- PreQ1-biotin-生命科學試劑-MCE-4211
- 2-4-6-TMPEA-hydrochloride-生命科學試劑-MCE-2109
- 二零二五年度特色酒館經(jīng)營權轉讓協(xié)議書
- 2025年度門面轉讓及商業(yè)地產(chǎn)項目投資合同
- 2025年度簡易混凝土建筑廢棄物運輸與處理服務合同
- 二零二五年度體育用品連鎖店籃球教練聘用合同
- 個人住房貸款合同
- 臨時工合作合同示范文本
- 二手房買賣合同:回購權益條款
- 二手房銷售合同樣本范文
- 中華人民共和國政府信息公開條例解讀PPT
- 《陳列展覽項目支出預算方案編制規(guī)范和預算編制標準試行辦法》的通知(財辦預〔2017〕56號)
- 《質量手冊》培訓教材課件
- 公司戰(zhàn)略和績效管理doc資料
- 特種設備日管控、周排查、月調度模板
- 人大商學院博士研究生入學考試試題-企業(yè)管理歷年卷
- 2023質量月知識競賽試題及答案
- 《民航服務溝通技巧》教案第12課病殘旅客服務溝通
- 直埋電纜溝工程專項施工組織設計
- 第五章北方雜劇創(chuàng)作
- GB/T 4214.1-2017家用和類似用途電器噪聲測試方法通用要求
評論
0/150
提交評論