交通處罰單管理系統(tǒng)_C語言實習報告2.doc_第1頁
交通處罰單管理系統(tǒng)_C語言實習報告2.doc_第2頁
交通處罰單管理系統(tǒng)_C語言實習報告2.doc_第3頁
交通處罰單管理系統(tǒng)_C語言實習報告2.doc_第4頁
交通處罰單管理系統(tǒng)_C語言實習報告2.doc_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

年鍵入公司名稱user交通處罰單管理系統(tǒng)在此處鍵入文檔的摘要。摘要通常是對文檔內容的簡短總結。在此處鍵入文檔的摘要。摘要通常是對文檔內容的簡短總結。中 國 地 質 大 學(武漢) C語言課程設計論文課程名稱: 學籍信息管理系統(tǒng)設計 教師姓名: 顧保磊 本科生姓名: 072111班 吳忠云 本科生學號: 20111003601 本科生專業(yè): 機械設計制造及其自動化 所在院系: 機械與電子信息學院 類別: 理工類 日期: 2012-6 課程設計評語對課程論文的評語:平時成績:課程論文成績:總 成 績:評閱人簽名:注:1、無評閱人簽名成績無效;2、必須用鋼筆或圓珠筆批閱,用鉛筆閱卷無效;3、如有平時成績,必須在上面評分表中標出,并計算入總成績。目 錄課程設計評語目 錄1課程論文題目2程序設計思路3功能模塊圖4數(shù)據(jù)結構設計5算法設計6程序代碼7程序運行結果8編程中遇到的困難及解決方法9總結心得及良好建議10致謝1.題目要求 設計“交通處罰單管理系統(tǒng)”,交通處罰單必須涉及到車輛、駕駛員和開單交警的信息,還有交通處罰單號碼、處罰時間等信。要求功能: (1)可以輸入、刪除、瀏覽交通處罰單信息; (2)可以按車輛、駕駛員和開單交警查詢; (3)統(tǒng)計某時間段某個駕駛員的交通處罰單數(shù)目及交通處罰單號碼。一、 需求分析交通處罰單信息用文件存儲,提供文件的輸入輸出操作;要求可以輸入、刪除、瀏覽交通處罰單信息,因而要提供信息的輸入、刪除和顯示操作;要實現(xiàn)按車輛、駕駛員和開單交警查詢,則要提供查找操作;另外提供統(tǒng)計操作和鍵盤式選擇菜單以實現(xiàn)功能選擇。二、 總體設計思路 整個管理系統(tǒng)被設計為輸出模塊,信息刪除模塊,信息瀏覽模塊,信息查詢模塊和信息統(tǒng)計模塊。2程序設計思路根據(jù)題目要求應提供鍵盤式菜單實現(xiàn)功能選擇,還應該提供信息的輸入操作,由于在程序中提供查詢功能所以應有查找等操作。根據(jù)上面的需求分析,可以將這個系統(tǒng)的設計分為1.增添、刪除、查詢、修改輸入模塊 2.統(tǒng)計、瀏覽、排序等編輯模塊。針對這些模塊的設定另外在加入一下退出程序、顯示設計者信息、儲存在text文件等功能。再按照編程的基本思路進行編程。3功能模塊圖總體設計輸入模塊刪除模塊瀏覽模塊查詢模塊統(tǒng)計模塊4數(shù)據(jù)結構設計1.主函數(shù)主函數(shù)一般設計得比較簡潔,只提供輸入、處理和輸出部分的函數(shù)調用。其中各個功能模塊用菜單方式選擇。程序main() /*主函數(shù)*/ int a,w; /*變量a保存選擇菜單數(shù)字,w判斷輸入的數(shù)字是否在功能菜單對應數(shù)字范圍內*/ do puts(nn*MENU*nn);puts(n 1.Shuru data); printf(請輸入車牌號碼:n);puts(n 2.Shanchu data);puts(n 3.Liulan data);puts(n 4.Chaxun data);puts(n 5.Tongji data)puts(nnnn 6.Exit);puts(nntt *n);printf(choice your number(0-5): bb);scanf(%d,&n);if(n6) w=1; getchar();else w=0; while(w=1);/*選擇功能*/ switch (n) case 1:shuru();break;/*輸入模塊*/ case 2:shanchu();break;/*刪除模塊*/ case 3:liulan();break;/* 瀏覽模塊*/ case 4:chaxun();break;/* 查詢模塊*/ case 5:tongji();break;/* 統(tǒng)計模塊*/ case 6:exit(0); /*退出*/ /*主函數(shù)*/main() menu();2、各功能模塊設計(1) 輸入模塊 分析 單獨看各個數(shù)據(jù)信息,開單日期以及駕駛員姓名為字符型,可以采用字符型數(shù)組;處罰單號碼、車牌號碼以及交警ID為整型,可以采用整型數(shù)組。一條記錄對應一張交通處罰單,方便交通部門管理。程序/*輸入模塊*/void shuru() /*輸入模塊*/ FILE *fp; if(fp=fopen(data.txt,w)=NULL) printf(Can not open the filen); /*若打不開此文件則會退出輸入模塊*/ exit(0); scanf(%d,&dan0.chepai); printf(請輸入駕駛員姓名:n); scanf(%s,); printf(請輸交警ID:n); scanf(%d,&dan0.id); printf(請輸入開單日期:n); scanf(%s,dan0.time); printf(請輸入處罰單號:n); scanf(%d,&dan0.num); if(fwrite(&dan0,sizeof(struct cfd),1,fp)!=1) printf(file write errorn); else printf(輸入信息成功!n); fclose(fp);(2) 刪除模塊 分析 該模塊的功能需要刪除交通處罰單信息,要根據(jù)處罰單號、車輛號碼、駕駛員姓名、開單時間以及交警ID查找處罰記錄并刪除。 程序 /*刪除模塊*/void shanchu() int i,w,v,c; FILE *fp; printf(請輸入要刪除的處罰單號:); scanf(%d,&w); fp=fopen(data.txt,rb); for(i=0;i1000;i+) if(fread(&dani,sizeof(struct cfd),1,fp)!=1) break; v=i; for(i=0;iv;i+) if(w=dani.num) c=i; fclose(fp); fp=fopen(data.txt,wb); for(i=0;iv;i+) if(i!=c) fwrite(&dani,sizeof(struct cfd),1,fp); fclose(fp); (3)瀏覽模塊分析該模塊的功能是顯示所有的處罰信息。程序/*瀏覽(全部)模塊*/void liulan() int i; FILE *fp; fp=fopen(data.txt,rb); for(i=0;i1000;i+) if(fread(&dani,sizeof(struct cfd),1,fp)=1) printf(處罰單號:%dn,dani.num); printf(車牌號碼:%dn,dani.chepai); printf(司機姓名:);puts(); printf(警察I D :%dn,dani.id); printf(處罰時間:);puts(dani.time); printf(-n); else break; fclose(fp);(4)查詢模塊 分析該模塊的功能是根據(jù)輸入的處罰單號、車輛號碼、駕駛員姓名、開單時間以及交警ID查找相應的記錄,方便駕駛員了解自己的處罰情況。程序void chaxun() int i,w,x,flag; FILE *fp; char v8; printf(請輸入你想查詢的信息:n); printf(1 - 按車牌號查詢n); /*查詢方式*/ printf(2 - 按司機姓名查詢n); printf(3 - 按警察ID查詢n); scanf(%d,&x); if(x=3) flag=0; printf(請輸入要查詢的警察ID:); scanf(%d,&w); fp=fopen(data.txt,rb); for(i=0;i1000;i+) if(fread(&dani,sizeof(struct cfd),1,fp)!=1) break; if(dani.id=w) printf(處罰單號:%dn,dani.num); printf(車牌號碼:%dn,dani.chepai); printf(司機姓名:);puts(); printf(警察I D :%dn,dani.id); printf(處罰時間:);puts(dani.time); printf(-n); flag=1; break; if(flag=0) printf(找不到此處罰單信息!n); fclose(fp); else if(x=2) flag=0; printf(請輸入要查詢的司機姓名:); scanf(%s,v); fp=fopen(data.txt,rb); for(i=0;i1000;i+) if(fread(&dani,sizeof(struct cfd),1,fp)!=1) break; if(strcmp(,v)=0) printf(處罰單號:%dn,dani.num); printf(車牌號碼:%dn,dani.chepai); printf(司機姓名:);puts(); printf(警察I D :%dn,dani.id); printf(處罰時間:);puts(dani.time); printf(-n); flag=1; break; if(flag=0) printf(找不到此處罰單信息!n); fclose(fp); else if(x=1) flag=0; printf(請輸入要查詢的處罰單號:); scanf(%d,&w); fp=fopen(data.txt,rb); for(i=0;i1000;i+) if(fread(&dani,sizeof(struct cfd),1,fp)!=1) break; if(dani.num=w) printf(處罰單號:%dn,dani.num); printf(車牌號碼:%dn,dani.chepai); printf(司機姓名:);puts(); printf(警察I D :%dn,dani.id); printf(處罰時間:);puts(dani.time); printf(-n); flag=1; break; if(flag=0) printf(找不到此處罰單信息!n); fclose(fp); else printf(輸入錯誤!n);(5)統(tǒng)計模塊 分析該模塊的功能是統(tǒng)計某時間段某個駕駛員的交通處罰單數(shù)目及交通處罰單號碼,這樣可以方便交通部門管理駕駛員信息,統(tǒng)計駕駛員的違規(guī)情況。程序void tongji() int i; FILE *fp; fp=fopen(data.txt,rb); for(i=0;i1000;i+) if(fread(&dani,sizeof(struct cfd),1,fp)!=1) break; printf(共有%d張?zhí)幜P單!具體信息請看瀏覽。n,i); fclose(fp);六程序代碼#include#include#include#define N 100struct Plist /處罰單 char vno20; /車牌號 char dname20; /駕駛員姓名 char pname20; /交警姓名 char pno20; /交警編號 char no20; /處罰單編號 char date20; /處罰日期 listN; /處罰單數(shù)組void input(); /輸入模塊void dele(); /刪除模塊void browse(); /瀏覽模塊void search(); /查詢模塊void count(); /統(tǒng)計模塊void menu(); /主菜單void vno_search(); /按車牌號查詢void dna_search(); /按駕駛員姓名查詢void pna_search(); /按開單交警姓名查詢main() menu(); getchar();void menu() int n; int r; do system(cls); printf(ntttt交通處罰單管理系統(tǒng)n); printf(); printf( 菜單: 1-信息錄入 2-信息刪除 3-信息瀏覽 4-信息查詢 5-信息統(tǒng)計 6-退出系統(tǒng)n); printf(); printf(請從輸入數(shù)字選擇相應的功能:); 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();break; case 6:exit(0); 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 return 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結構體數(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); 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();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 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-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(); 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(); getchar(); menu(); 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(); 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,listj.pno,listj.no,listj.date); printf(npress enter to return menun); getchar(); getchar(); menu();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:dna_search();break;case 3:pna_search();break;case 4:menu(); void vno_search() int f=-1; int num; int j; char no20; 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,&listj.pname,&listj.pno,&listj.no,&listj.date); num=j; fclose(fp); printf(n請輸入車牌號:); scanf(%s,no); printf(n罰單的信息為:nn); printf(車牌號 駕駛員姓名 交警姓名 交警編號 處罰單編號 處罰日期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();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=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%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();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,&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.pname)=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();void count() int f=-1; int num; /所有罰單單數(shù) int j; int total=0; /某駕駛員的罰單數(shù) char name20; char time120; char time220; 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,&listj.pname,&listj.pno,&listj.no,&listj.date); num=j; fclose(fp); printf(n請根據(jù)提示輸入駕駛員的姓名和一個時間段,統(tǒng)計某個駕駛員在某段時間內的處罰單數(shù)目和罰單號n); printf(nn請輸入駕駛員的姓名:); scanf(%s,name); printf(n請輸入一個較早的時間:); scanf(%s,time1); printf(n請輸入一個最近的時間:); scanf(%s,time2); 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ù): (2) 輸入模塊 在主界面出現(xiàn)后輸入1并按ENTER鍵,如圖。輸入要輸入的記錄數(shù),然后逐條增加,如圖(3) 刪除模塊(4) 瀏覽模塊(5) 查詢模塊 (6) 統(tǒng)計模塊8編程中遇到的困難及解決方法1.程序的

溫馨提示

  • 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

提交評論