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頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、c語言程序設(shè)計之交通處罰單管理系統(tǒng)一、 題目要求【要求】:交通處罰單涉及到車輛,駕駛員和開單交警的信息,還有交通處罰單號碼,處罰時間等信息?!竟δ堋浚?1) 要求可以輸入,刪除,瀏覽交通處罰單信息。 (2)可以按車輛,駕駛員和開單交警查詢。(3)統(tǒng)計某時間段某個駕駛員的交通處罰數(shù)目及交通處罰單號碼。 【提示】:(1)需求分析:交通處罰單信息用文件存儲,提供文件的輸輸出操作;要求可以輸入,輸出,刪除,瀏覽交通處罰單信息,因而要提供輸入,刪除和顯示操作;要實現(xiàn)按車輛,駕駛員和開單交警查詢,則要提供查找操作;另外提供統(tǒng)計操作和鍵盤式選擇菜單以實現(xiàn)功能選擇。 (2)總體設(shè)計:整個管理系統(tǒng)被設(shè)計為信息錄

2、入模塊,信息刪除模塊,信息瀏覽模塊,信息查詢模塊,信息統(tǒng)計模塊。交通處罰單管理系統(tǒng)信息輸入信息刪除信息瀏覽信息查詢信息統(tǒng)計退出二、詳細設(shè)計:(一)處罰單管理系統(tǒng)界面函數(shù)【功能說明】此函數(shù)包括的功能包括信息錄入,信息刪除,信息瀏覽,信息查詢(可分別根據(jù)車牌號、罰單號、開單交警號進行查詢)、信息統(tǒng)計和退出?!局骱瘮?shù)流程圖】顯示一系列功能選項輸入n,判斷n是否是16根據(jù)n的值調(diào)用各功能模塊函數(shù)【主函數(shù)程序】void menu() int n; int r; do system(cls);printf(nttt 交通處罰單管理系統(tǒng)n); printf(*); printf( 菜單: 1-信息錄入 n)

3、; printf( 2-信息刪除 n);printf( 3-信息瀏覽 n);printf( 4-信息查詢 n);printf( 5-信息統(tǒng)計 n);printf( 6-退出系統(tǒng) n); printf(*); printf(請從輸入數(shù)字選擇相應(yīng)的功能:); scanf(%d,&n); if(n6) r=1; getchar(); else r=0; while(r=1);switch(n) case 1:input();break; case 2:dele();break; case 3:browse();break; case 4:search();break; case 5:count();

4、break; case 6:exit(0); (二)各功能模塊設(shè)計1、錄入處罰單模塊【功能說明】處罰單包含的內(nèi)容有車牌號,駕駛員姓名,交警姓名,交警號,處罰單號和處罰日期,因此相應(yīng)的函數(shù)也應(yīng)包含這些內(nèi)容,在這個函數(shù)所控制的操作會依次提示輸入以上內(nèi)容。特別的,罰單號不能有重復,若輸入的罰單號有重復,操作界面會提示罰單好重復,請重新輸入。用結(jié)構(gòu)體數(shù)組的形式存放若干條處罰單信息。struct plist /處罰單 char vno20; /車牌號 char dname20; /駕駛員姓名 char pname20; /交警姓名 char pno20; /交警編號 char no20; /處罰單編號

5、char date20; /處罰日期 listn; /處罰單數(shù)組【注意】listn中的n為處罰單條數(shù),本程序采用宏定義#define n 100?!据斎肽K流程圖】輸入用戶要輸入處罰單紀錄的條數(shù)j能否打開文件i從0到j(luò)-1依次輸入處罰單信息,并保存到文件中j開始選擇瀏覽還是返回主菜單【輸入模塊程序】void input() file*fp; int num; int i,j; if(fp=fopen(list.txt,r+)=null) if(fp=fopen(list.txt,w)=null) printf(文件打開或創(chuàng)建失敗!n); printf(npress enter to retur

6、n menun); getchar(); menu(); printf(n請輸入處罰單數(shù)量:); scanf(%d,&i); printf(nn); for(j=0;ji;j+) printf(輸入第%d張?zhí)幜P單的:n,j+1); printf(n 車牌號、駕駛員姓名、交警姓名、交警號、處罰單號、日期(如20101112)n); printf(n注意:中間用空格隔開!n);scanf(%s%s%s%s%s%s,&listj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.no,&listj.date); for(j=0;jn) printf(n結(jié)

7、構(gòu)體數(shù)組數(shù)的n太小,請先修改n的值n); printf(npress enter to return menun); getchar(); getchar(); menu(); printf(n); for(j=0;ji;j+) printf(輸入第%d張?zhí)幜P單的:n,j+1); printf(n車牌號、駕駛員姓名、交警姓名、交警號、處罰單號、日期(如20101112)n);printf(n注意:中間用空格隔開!n); scanf(%s%s%s%s%s%s,&listj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.no,&listj.date

8、); for(j=0;ji;j+) fprintf(fp,n%st%st%st%st%st%s,listj.vno,listj.dname,listj.pname,listj.pno,listj.no,listj.date); fclose(fp); printf(n保存成功!); printf(npress enter to return menun); getchar(); getchar(); menu();2、刪除處罰單模塊:【功能說明】操作者先輸入刪除命令2,在按操作要求輸入要刪除的處罰單號碼,系統(tǒng)瀏覽處罰單,找到相關(guān)信息后,在刪除這張?zhí)幜P信息,再把這個信息的尾地址結(jié)到下一個信息的頭

9、地址上從而達到刪除此信息的作用?!緞h除模塊流程圖】打開文件輸入要刪除的處罰單的處罰單號s1s1=listj.no關(guān)閉文件關(guān)閉文件把要求刪除的罰單后面的處罰單信息依次覆蓋前一個信息能否打開文件回到主函數(shù)依次從文件中讀取處罰單信息將新生成的結(jié)構(gòu)體數(shù)組保存在源文件中文件能否打開沒找到該學號文件打不開【刪除模塊程序】void dele() int j; int num; int f=-1; file*fp1,*fp2; char s120; if(fp1=fopen(list.txt,r)=null) printf(can not open filen); printf(npress enter to

10、 return menun); getchar(); getchar(); menu(); for(j=0;!feof(fp1);j+) /讀取文件 fscanf(fp1,%s%s%s%s%s%s,&listj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.no,&listj.date); num=j; fclose(fp1); printf(請輸入要刪除的處罰單的編號n); scanf(%s,s1); for(j=0;jnum;j+) if(strcmp(s1,listj.no)=0) f=j; if(fnum-1) for(j=f;jnum

11、-1;j+) strcpy(listj.vno,listj+1.vno); strcpy(listj.dname,listj+1.dname); strcpy(listj.pname,listj+1.pname); strcpy(listj.pno,listj+1.pno); strcpy(listj.no,listj+1.no); strcpy(listj.date,listj.date); if(fp2=fopen(list.txt,w)=null) printf(文件打不開!n); printf(npress enter to return menun); getchar(); menu

12、(); for(j=0;jnum-1;j+) /保存文件 fprintf(fp2,n%st%st%st%st%st%s,listj.vno,listj.dname,listj.pname,listj.pno,listj.no,listj.date); fclose(fp2); printf(n刪除成功!n); printf(npress enter to return menun); getchar(); getchar(); menu(); if(f0) printf(n沒有找到該學號的記錄:n); printf(npress enter to return menun); getchar(

13、); getchar(); menu(); 3、信息瀏覽模塊:【功能說明】先輸入命令3,系統(tǒng)將打開已存在的文件(如果不存在則提示無法打開),并將已經(jīng)錄入的處罰單信息依次從文件中讀出來,顯示在屏幕上?!拘畔g覽模塊流程圖】打開文件逐條顯示文件中的處罰單信息關(guān)閉文件返回主函數(shù) 【刪除模塊程序】void browse() int j; int num; file*fp; if(fp=fopen(list.txt,r)=null) printf(can not open filen); printf(npress enter to return menun); getchar(); getchar()

14、; menu(); for(j=0;!feof(fp);j+) /讀取文件 fscanf(fp,%s%s%s%s%s%s,&listj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.no,&listj.date); fclose(fp); num=j; printf(n已添加%d條記錄nn,num); printf(車牌號 駕駛員姓名 交警姓名 交警編號 處罰單編號 處罰日期n); for(j=0;jnum;j+) /輸出 printf(n%st%st%st%st%st%s,listj.vno,listj.dname,listj.pname,l

15、istj.pno,listj.no,listj.date); printf(npress enter to return menun); getchar(); getchar(); menu();4、信息查詢模塊:【功能說明】先輸入命令4,系統(tǒng)將刷新界面進入到一個查詢專用界面。用戶可以分別根據(jù)車牌號、駕駛員姓名和開單交警姓名進行查詢。用戶選擇數(shù)字進行相應(yīng)的操作。【信息查詢模塊流程圖】打開文件輸入用戶要查詢的信息x用戶選擇輸入查詢的車牌號n輸入查詢的駕駛員姓名name輸入查詢的開單警察name輸入錯誤listj.vno=nostrcmp(listj.pname)=name)=0strcmp(li

16、stj.dname,name)=0顯示“沒有找到該班號的記錄”關(guān)閉文件返回主菜單顯示找到的此罰單信息顯示找到的此罰單信息顯示“沒有找到該班號的記錄”【信息查詢模塊程序】void search() int n; int r; do system(cls); printf(n請選擇查詢類型:nt1-按車牌號 2-按駕駛員姓名3:按開單交警姓名 4-返回主菜單n); printf(n請輸入數(shù)字選擇:); scanf(%d,&n); if(n4) r=1; getchar(); else r=0;while(r=1);switch(n) case 1:vno_search();break;case 2

17、:dna_search();break;case 3:pna_search();break;case 4:menu(); (1)按車牌號查詢系統(tǒng)首先進行檢查,如果要打開的文件不存在,則會進行提示。如果能打開,則將文件中的內(nèi)容讀入系統(tǒng)中以備查詢。當用戶輸入車牌號時,系統(tǒng)將依次將從文件中讀入的處罰單中的車牌號信息與用戶錄入車牌號進行比對,并最終將查找到的與該車牌號有關(guān)的的所有處罰單信息打印在屏幕上。如果沒有找到,則打印沒有找到記錄。void vno_search() int f=-1; int num; int j; char no20; file*fp; if(fp=fopen(list.txt

18、,r)=null) printf(文件打不開!n); printf(npress enter to return menun); getchar(); menu(); for(j=0;!feof(fp);j+) /讀取文件 fscanf(fp,%s%s%s%s%s%s,&listj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.no,&listj.date); num=j; fclose(fp); printf(n請輸入車牌號:); scanf(%s,no); printf(n罰單的信息為:nn); printf(車牌號 駕駛員姓名 交警姓名

19、交警編號 處罰單編號 處罰日期n); for(j=0;jnum;j+) if(strcmp(no,listj.vno)=0) f=j;printf(n%st%st%st%st%st%s,listj.vno,listj.dname,listj.pname,listj.pno,listj.no,listj.date); if(f0)printf(n沒有找到該班號的記錄!n); printf(npress enter to return sub menun); getchar(); getchar(); search();(2)按駕駛員姓名查詢系統(tǒng)首先進行檢查,如果要打開的文件不存在,則會進行提示。

20、如果能打開,則將文件中的內(nèi)容讀入系統(tǒng)中以備查詢。當用戶輸入駕駛員姓名時,系統(tǒng)將依次將從文件中讀入的處罰單中的駕駛員姓名信息與用戶錄入的駕駛員姓名進行比對,并最終將查找到的與駕駛員姓名有關(guān)的所有處罰單信息打印在屏幕上。如果沒有找到,則打印沒有找到記錄。void dna_search() int f=-1; int num; int j; char name20; file*fp; if(fp=fopen(list.txt,r)=null) printf(文件打不開!n); printf(npress enter to return menun); getchar(); menu(); for(j

21、=0;!feof(fp);j+) /讀取文件 fscanf(fp,%s%s%s%s%s%s,&listj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.no,&listj.date); num=j; fclose(fp); printf(n請輸入駕駛員的姓名:); scanf(%s,name); printf(n罰單的信息為:nn); printf(車牌號 駕駛員姓名 交警姓名 交警編號 處罰單編號 處罰日期n); for(j=0;jnum;j+) if(strcmp(name,listj.dname)=0) f=j;printf(n%st%s

22、t%st%st%st%s,listj.vno,listj.dname,listj.pname,listj.pno,listj.no,listj.date); if(f0)printf(n沒有找到該班號的記錄!n); printf(npress enter to return sub menun); getchar(); getchar(); search();(3)按開單交警姓名查詢系統(tǒng)首先進行檢查,如果要打開的文件不存在,則會進行提示。如果能打開,則將文件中的內(nèi)容讀入系統(tǒng)中以備查詢。當用戶輸入開單交警姓名時,系統(tǒng)將依次將從文件中讀入的處罰單中的開單交警姓名信息與用戶錄入的開單交警姓名進行比對

23、,并最終將查找到的與開單交警姓名有關(guān)的所有處罰單信息打印在屏幕上。如果沒有找到,則打印沒有找到記錄。void pna_search() int f=-1; int num; int j; char name20; file*fp; if(fp=fopen(list.txt,r)=null) printf(文件打不開!n); printf(npress enter to return menun); getchar(); menu(); for(j=0;!feof(fp);j+) /讀取文件 fscanf(fp,%s%s%s%s%s%s,&listj.vno,&listj.dname,&list

24、j.pname,&listj.pno,&listj.no,&listj.date); num=j; fclose(fp); printf(n請輸入開單交警的姓名:); scanf(%s,name); printf(n罰單的信息為:nn); printf(車牌號 駕駛員姓名 交警姓名 交警編號 處罰單編號 處罰日期n); for(j=0;jnum;j+) if(strcmp(name,listj.pname)=0) f=j;printf(n%st%st%st%st%st%s,listj.vno,listj.dname,listj.pname,listj.pno,listj.no,listj.da

25、te); if(f0) printf(n輸入錯誤!請重新輸入!n); getchar(); getchar(); count(); else for(j=0;j=0)&(strcmp(listj.date,time2)=0) f=j; total+; printf(n罰單號:%sn,listj.no); if(f0)printf(n沒有找到記錄!n); printf(n罰單總數(shù)為:%dn,total); printf(npress enter to return menun); getchar(); getchar(); menu();三、上機操作:1、數(shù)據(jù)源(1)處罰單號01 車牌號碼200

26、1 司機姓名樓超陽 警察姓名權(quán)永彬 交警號110 處罰日期20110601(2)處罰單號02 車牌號碼2002 司機姓名禇志偉 警察姓名孟漢青 交警號111 處罰日期20110602(3)處罰單號03 車牌號碼2003 司機姓名李進福 警察姓名權(quán)永彬 交警號110 處罰日期20110603(4)處罰單號04 車牌號碼2001 司機姓名樓超陽 警察姓名陶志楠 交警號112 處罰日期20110604(5)處罰單號05 車牌號碼2003 司機姓名李進福 警察姓名劉正芳 交警號113 處罰日期20110605 2、 運行結(jié)果(1) 主菜單函數(shù)(2)信息錄入模塊(3)信息刪除模塊 (4)信息瀏覽模塊(5

27、)按車牌號查找并瀏覽相關(guān)信息模塊 (6)按駕駛員姓名查詢并瀏覽相關(guān)信息模塊 (7)按開單交警姓名查詢并瀏覽相關(guān)信息模塊 (8)信息統(tǒng)計模塊四、實習總結(jié)在這個星期里,我們在專業(yè)老師的帶領(lǐng)下進行了c語言程序?qū)嵺`學習。在這之前,我們已經(jīng)對c語言這門課程學習了一個學期,對其有了一定的了解,但是也僅僅是停留在了解的范圍,對里面的好多東西還是很陌生,更多的在運用起來的時候還是感到很棘手,畢竟,萬事開頭難。在編寫c程序的過程中,得到了老師和同學耐心的指導和幫助,很多問題都是在老師和同學的幫助下我才能夠解決的,沒有你們的幫助我部可能順利的完成此次編程。以前對c的概念比較模糊,但是在這次實習中我發(fā)現(xiàn)了c在生產(chǎn)生活中有著廣泛的應(yīng)用,比如我這次編寫的交通交通處罰單管理系統(tǒng),還有其他同學編寫的一些等等。在實際交通管理中運用此類程序會節(jié)省大量的體力和腦力勞動。而且使得交通管理比較容易,避免了以往的那種繁瑣的人力勞動。準確率也會大幅度上升,不會造成因為人為失誤造成不必要的麻煩。以下是這次實習對我的幫助和我的一點心得體會:1、加深了對課堂講授內(nèi)容的理解課堂上要講授許多關(guān)于c語言的語法規(guī)則,聽起來十分枯燥無味,也不容易記住,死記硬背是不可取的。然而要使用c語言這個工具解決實際問題,又必須掌握它。通過多次上機練習,對于語法知識有了感性的認識,加深對它的理解,在理解的基礎(chǔ)上就會自然而然地掌握c語言的語

溫馨提示

  • 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

提交評論