c語言課程設(shè)計--同學錄系統(tǒng)_第1頁
c語言課程設(shè)計--同學錄系統(tǒng)_第2頁
c語言課程設(shè)計--同學錄系統(tǒng)_第3頁
c語言課程設(shè)計--同學錄系統(tǒng)_第4頁
c語言課程設(shè)計--同學錄系統(tǒng)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、目 錄1摘要22功能與數(shù)據(jù)分析32.1功能分析 32.2數(shù)據(jù)分析33總體設(shè)計 43.1設(shè)計框圖 44模塊介紹 54.1添加功能54.2顯示功能65編寫與測試75.1程序問題及解法 76用法說明86.1程序用法87總結(jié)128附錄13摘 要車站的票務(wù)管理系統(tǒng)的主要的目的在于便于掌握當天的車次運行情況,對運行信息進行添加和刪除,也有利于旅客按各種不同的方式查詢自己所需要的車次情況。擺脫了繁瑣的勞動,提高了工作的效率,大大提高了車站資源的利用率,便于旅客及時準確地獲得需要的信息。主要通過數(shù)組存放數(shù)據(jù),應(yīng)用循環(huán)和選擇語句對數(shù)據(jù)實現(xiàn)錄入和刪除功能。關(guān)鍵詞:車次信息,結(jié)構(gòu)體數(shù)組,選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)2 功能分

2、析2.1功能分析這是一個同學錄系統(tǒng),便于同學信息的查詢、修改、刪除、添加。數(shù)據(jù)以文件的形式保存在文件中。顯示時,數(shù)據(jù)從文件中輸入到顯示器。接受數(shù)據(jù)的則應(yīng)該是一個結(jié)構(gòu)體數(shù)組,再顯示;或一個結(jié)構(gòu)體變量,讀取一次數(shù)據(jù),顯示在顯示器上,然后再接受數(shù)據(jù),不停的循環(huán),直到文件中的數(shù)據(jù)被讀完為止。查詢時,只需要選定所要查詢同學的編號,就會顯示出改同學的全部信息。刪除功能的實現(xiàn),需要首先打開文件,把文件里面的信息全部輸入到結(jié)構(gòu)體數(shù)組中。然后根據(jù)程序選中的同學信息覆蓋。修改時,只需要選定該同學的編號,對他(她)的內(nèi)容逐一進行修改。添加,輸入編號及其學生信息即可。2.2數(shù)據(jù)分析由于顯示的內(nèi)容包括姓名、性別、生日、

3、同學類型、籍貫、以及工作單位,所以必須一個結(jié)構(gòu)體的數(shù)組來實現(xiàn)。寫入文件還需要對文件進行操作。需要定義一個指向文件的指針。文件名為“file1.txt”,生成在默認的tc的安裝目錄里邊。查詢需要輸入想要的一些內(nèi)容,這些數(shù)據(jù)的類型和結(jié)構(gòu)體的元素的類型一致,所以需要定義一個整型的number,一個整型的name,一個字符串sex,一個字符串birth,一個字符串type,一個字符串jiguan,一個字符串job。此外,循環(huán)所需要的整型的數(shù)和一個計數(shù)器。系統(tǒng)在接受你輸入的字符,以判斷程序的走向,還需要一個字符型的變量來接受輸入的提示。3 總體設(shè)計3.1 設(shè)計框圖本程序涉及到幾個方面功能:添加,刪除,顯

4、示,查詢,修改和退出。我的任務(wù)主要是幾個功能的實現(xiàn)。所以這里只對各個功能做詳細闡述,總體設(shè)計只簡單描述。先定義一個結(jié)構(gòu)體的數(shù)組和一個結(jié)構(gòu)體變量。通過循環(huán)的方式,向變量賦值,采用追加的方式打開文件,然后在文件中輸出,即把信息保存在文件中。由此可以進行輸入或添加的功能。把信息從文件輸入到結(jié)構(gòu)體數(shù)組,每輸入一遍,結(jié)構(gòu)體數(shù)組bi中i自加,記數(shù)器自加1,可表示一共有幾組信息。然后i從0到計數(shù)器最后顯示的大小,循環(huán)輸出結(jié)構(gòu)體數(shù)組的值到顯示器。以達到顯示的目的。運行程序,顯示器上顯示查詢,修改,刪除、添加和退出幾項后,要求輸入對應(yīng)的編號。輸入標號n,進入查詢項目,是按姓名查詢。顯示的內(nèi)容包括姓名、性別、生日

5、、同學類型、籍貫、以及工作單位。輸入標號c,進入查詢項目,是按類型查詢。顯示的內(nèi)容包括姓名、性別、生日、同學類型、籍貫、以及工作單位輸入標號s,進入刪除項目。選中要刪除的同學編號,程序會刪除該同學的所有信息。輸入標號x,進入修改項目。輸入標號r,進入添加項目輸入標號e,退出系統(tǒng)。所顯示的內(nèi)容的進行圖表示:(見圖3-1)開始按姓名查詢按類別查詢刪除信息修改信息添加信息退出顯示后返回開始顯示后返回顯示后返回顯示后返回顯示后返回4 模塊介紹我的主要任務(wù)是各個功能的實現(xiàn),這里主要介紹這各個功能模塊。4.1 兩個查詢功能幾個功能都是直接在主函數(shù)中進行的,外部主要定義了按幾種方式查詢的函數(shù)和屏幕提示內(nèi)容顯

6、示的一些函數(shù)。下面就幾個重要的功能模塊做詳細介紹:查詢:先定義一個變量stu.number,選擇查詢按扭后,在stu.number不為0的前提下,顯示你如果輸入大或小寫的n,你可以根據(jù)姓名查詢信息,顯示信息后返回開始界面;如果輸入大或小寫的c,你可以根據(jù)類型查詢信息查詢信息,顯示信息后返回開始界面。輸入一個字符賦給字符型變量char,如果為大或小寫的y,以追加的方式打開文件file.txt,用鍵盤輸入的方式分別輸入,賦給變量p,寫入文件,關(guān)閉文件。仍滿足stu.number不為0,再循環(huán)。查詢的流程圖如(圖4-1):輸入編號n查詢顯示內(nèi)容并返回主函數(shù)編號是否存在重新輸入 圖4-1“4.2 刪除

7、與修改功能全部顯示:數(shù)據(jù)在文件中,要把他從里邊拿出來,顯示在屏幕上。首先打開文件,在內(nèi)容不為0結(jié)束標志時,把里邊的內(nèi)容輸出到結(jié)構(gòu)體數(shù)組中,(循環(huán)的方式)。然后再通過循環(huán),顯示結(jié)構(gòu)體叔祖的內(nèi)容到顯示器。刪除的流程圖如(圖4-2):輸入編號刪除刪除內(nèi)容并返回主函數(shù)編號是否存在重新輸入圖4-2“刪除”流程圖修改流程圖:輸入編號修改修改內(nèi)容并返回主函數(shù)編號是否存在重新輸入5 調(diào)試與測試5.1程序的編寫和調(diào)試我們在進行程序的編寫的時候,首先設(shè)想好運行是畫面信息的顯示,設(shè)計好這個框架。然后在這個框架中對應(yīng)的地方添加函數(shù),最后在主函數(shù)中實現(xiàn)文件的調(diào)試是在tc中進行。最常見的錯誤有:某個字符沒有定義,結(jié)構(gòu)不匹

8、配,缺少分號等等。但是,此次問題比較嚴重的是在利用鏈表的時候,其利用的靈活性不是很好。所一把鏈表的內(nèi)容去掉,改為了結(jié)構(gòu)體。再一個就是對文件的操作不是很順利,文件的輸入和輸出一直是困擾此次程序的主要原因。主要表現(xiàn)在:1、不能生成文件。該部分的主要的目的是把信息輸入到文件中保存起來?;蛘咭恍┐笮懙牟唤y(tǒng)一。函數(shù)的錯誤?;旧蠈儆诖中拇笠庠斐傻腻e誤。再一個,程序在計算機房運行,可以生成文件。但是同樣的程序,帶回寢室,在自己的機器上運行,則不能顯示。這也是困擾我很長時間的問題。因為在次之前,我的序程序一直在此機器上調(diào)試。不能生成文件,可能和此原因有關(guān)系。2、查詢時顯示無限循環(huán)的亂碼?,F(xiàn)象就不多作解釋。

9、主要原因是,在輸入要查詢的車次號碼、發(fā)車時間或其他的信息時,沒有寫上“&”取地址符。以至于要查詢的信息不能輸入到程序。要使得相同后顯示的條件永遠不能實現(xiàn)。3、還存在一個算法上的錯誤。修改前是這樣的: for(i=0;ij;i+) if(bi.number=number) m=i; if(m=1)這是判斷文件里面是否只有一項信息的代碼。錯在m為1上。如果只有一行,當i等于0是成立,為1時結(jié)束循環(huán),所以m永遠不能為1,那么條件永遠成立。事實上把所有的信息都清空了。以上是這次程序設(shè)計主要的幾處問題的展示。6 用法說明6.1 程序的使用1、在windows xp vc+6.0環(huán)境下運行次程序,顯示為:

10、(如圖6-1) 圖6-1主顯示其中n按姓名查詢,c為按類別查詢,s是信息刪除,x是修改信息,e是退出程序r是添加功能2、我們首先按n,進入按姓名查詢:(如圖6-2)輸入編號:圖6-2管理顯示3、按c為按類別查詢:與上面類似就不做介紹了。4、按s進入刪除信息系統(tǒng):輸入編號:5、修改同學的信息:輸入編號:修改:6、添加同學信息:添加:各種功能正常進行總結(jié)課程設(shè)計總結(jié)通過此次課程設(shè)計,我基本上對制作一個相對來說比較大的程序有了一定的認識和了解。這一周多來的制作,不但對這一學期c語言的知識有了一定的鞏固,還增加了我們的動手能力。就這個體統(tǒng)而言,涉及到結(jié)構(gòu)體,文件和循環(huán)的知識,所以尤其對這幾個方面有所加

11、深和鞏固。其中又包括結(jié)構(gòu)體的賦值,寫到文件中。從文件中賦值給結(jié)構(gòu)體。此外,還接觸到幾個我們平時接觸不是很多的函數(shù):頭文件:#include#include#include#define p %ld %s %s %s %s %s %sn返回值:輸出成功時,返回輸出的字節(jié)數(shù);錯誤時,返回主函數(shù)。此外還有g(shù)oto函數(shù),雖然用的很少,但是關(guān)鍵時候還是很好用的。但是也的確在此次上機對他們有所了解。這個系統(tǒng)也存在許多不足:1、 沒有建立文檔。2、 由于上面的關(guān)系,程序顯得繁瑣,而且不能打印,和保存。同時在這里,也希望我自己能夠很好的利用眼前假期的時間,好好學習有關(guān)c語言變成的知識,為下學期的編程課程打下基

12、礎(chǔ)。也是對以前學習過的知識是一種復習和鞏固。這就是我對這次課程設(shè)計的一點總結(jié)附錄:源程序代碼#include#include#include#define p %ld %s %s %s %s %s %snstruct student long num;char name100;char sex100;har birth100;char type100;char jiguan100;char job100;stu100=1,小陳,男,1989、3、18,大學同學,漢,學校,2,小李,男,1989、3、28,大學同學,漢,銀行,3,小王,女,1990、7、14,大學同學,滿,警察局,4,小吳,男,

13、1989、6、22,中學同學,漢,飯店,5,小羅,女,1990、5、18,中學同學,苗,博物館,6,小文,女,1989、3、25,中學同學,苗,圖書館,7,小肖,男,1989、6、6,小學同學,漢,旅館,8,小劉,男,1989、4、8 ,小學同學,漢,網(wǎng)吧,9,小魏,女,1990、8、13 ,小學同學,漢,軟件公司;void introduce()int a,i,j;printf(您想查詢哪個同學的詳細信息?請輸入姓名編號:);scanf(%d,&a);getchar();printf(n);for(i=0;stui.num!=0;i+)if(stui.num=a)break;printf(p

14、,stui.num,,stui.sex,stui.birth,stui.type,stui.jiguan,stui.job); void introduces() char b10;int i,j;printf(你想查詢那類學生的信息?請輸入類別:);scanf(%s,&b);getchar();printf(n);for(i=0;stui.num!=0;i+)if (strcmp(stui.type,b)=0)printf(p,stui.num,,stui.sex,stui.birth,stui.type,stui.jiguan,stui.job); vo

15、id del()long d;int i,j;printf(你想刪除那個學生的信息?請輸入編號:);scanf(%ld,&d);getchar();for(i=0;stui.num!=0;i+)if(stui.num=d)/*找到了需要刪除的學生,即stui*/for(j=i;stuj.num!=0;j+)stuj=stuj+1; void xg()long f;int i;printf(你想修改那個學生的信息?請輸入編號:);l: scanf(%ld,&f);getchar();for(i=0;stui.num!=0;i+)if(stui.num=f)printf(小陳 男 1989、3、1

16、8 大學同學 漢 學校n);printf(請嚴格按照上面格式輸入:);scanf(%s%s%s%s%s%s,,stui.sex,stui.birth,stui.type,stui.jiguan,stui.job);getchar(); break; if(stui.num=0) printf(無,請重新輸入:n);goto l;void rand()int i; printf(1 小陳 男 1989、3、18 大學同學 漢 學校n);printf(請嚴格按照上面格式輸入:);for(i=0;stui.num!=0;i+)if(stui-1.num!=0&stui.num=0)

17、break;scanf(%d%s%s%s%s%s%s,&stui.num,,stui.sex,stui.birth,stui.type,stui.jiguan,stui.job);getchar();void main() char k; int i;while(1)printf( _ n);printf(| 歡迎使用同學信息查詢系統(tǒng)! |n);printf(| |n);printf(| 1.同學信息查詢(按姓名查詢:n鍵、按類別查詢:c鍵) |n);printf(| 2.刪改同學信息(刪除信息按:s鍵、修改信息按:x鍵) |n);printf(| 3.退出系統(tǒng)請按 e 鍵.

18、 4.添加信息請按:r鍵 |n);printf( _ n); printf(同學姓名:n);for(i=0;stui.num!=0;i+)printf(%ld %st,stui.num,);if(stui.num%9=0)printf(n); printf(n);printf(請選擇服務(wù):);scanf(%c,&k); printf(nn);switch(k) case n:case n:printf(進入同學信息查詢.nn);introduce();break; case c:case c:printf(進入同學類別信息查詢.nn);printf(n);introduces();break;case s:case s:printf(進入同學信息刪除系統(tǒng).nn);printf(n);del();printf(刪除成功!n);break;case x:case x:printf(進入同學信息修改系統(tǒng).nn);xg();printf(

溫馨提示

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

評論

0/150

提交評論