




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目錄1、 課程設計題目與要求.12、 系統(tǒng)設計.23、 程序測試與運行結果.84、 課程設計總結.145、 程序源代碼.151、 課程設計與題目1、 題目描述: 已知在汽車零部件生產過程中,需要對生產的零部件進行質量檢測,保證生產質量,以便對出現(xiàn)生產質量問題的責任人進行考核,設計一個汽車零部件質檢管理程序,該程序應該具有完成如下功能: (1)能從鍵盤輸入質檢信息。 (2)指定質檢編號,顯示質檢信息。 (3)指定生產者,顯示質檢信息。 (4)指定質檢編號,修改質檢信息。 (5)指定質檢編號,刪除質檢信息。 2、 題目要求: (1)按照分析、設計、編碼、調試、測試的軟件過程完成這個應用程序。 (2
2、)質檢信息包括:質檢編號、零部件名稱、生產者、生產部門、質檢結果(合格/不合格)、質量問題(設計缺陷/裝配質量/加工質量)、質檢員、質檢日期。 (3)為各項操作功能設計一個菜單,應用程序運行后,先顯示這個菜單,然后用戶通過菜單項選擇希望進行的操作項目。3、輸入要求: (1)應用程序運行后在屏幕上顯示一個菜單。用戶可以根據需求,選定相應的操作項目。進入每個操作后,根據應用程序的提示信息,從鍵盤輸入相應的信息。程序根據用戶輸入的信息完成相應的處理,實現(xiàn)要求的功能。 (2)能對輸入的數據進行簡單的校驗,例如,質檢日期必須是一個合法的日期格式,質檢編號是唯一的(一個質檢編號對應一次質檢的質檢信息)。4
3、、輸出要求: (1)應用程序運行后,要在屏幕上顯示一個菜單。 (2)要求用戶輸入數據時,給出清晰、明確的提示信息,包括輸入的數據內容、格式以及結束方式等。 (3)在程序完成處理后,要清楚地給出程序的處理結果。例如,在給定質檢編號刪除質檢信息時,如果該質檢信息不存在,要提示沒能刪除,如果刪除成功要提示刪除成功。5、實現(xiàn)要求 (1)在程序中使用鏈表存儲質檢信息。(2)采用模塊化程序設計的方法,將程序中的各項功能用函數實現(xiàn)。2、 系統(tǒng)設計1、分析題目 根據題目要求,質檢信息可以從文本文件中存取,所以本程序應該提供讀寫文件,顯示、查詢、修改記錄,保存文件等操作,此外,還應該提供鍵盤式選擇菜單實現(xiàn)功能。
4、2、總體設計主函數界面 根據需求分析,可以把這個系統(tǒng)的設計分為添加、修改、查詢、顯示、刪除五大模塊,其中查詢模塊可以分為兩個子模塊,子模塊下面還有子函數;系統(tǒng)功能模塊圖如下所示:刪除質檢信息修改質檢信息查詢質檢信息添加質檢信息顯示質檢信息顯示質檢信息按生產者查詢按質檢編號查詢3、 模塊設計 (1)數據結構設計根據系統(tǒng)要求,系統(tǒng)中需要保存的數據信息,其結構如下:數據項名稱數據項系統(tǒng)表示數據類型數據長度質檢編號qid字符串15零件名稱qname字符串15生產者producer字符串15生產部門pd字符串15質檢結果qresult字符串15質檢問題qproblem字符串15質檢員qpersons字符
5、串15質檢日期time字符串12(2)、結構體定義如下:struct information char qid15; char qname15; char producer15; char pd15; char qresult15; char qproblem15; char qpersons15; char time12; struct information *next;(3)、函數聲明void createRec(); /*新建質檢信息*/void loadRec(); /*從磁盤文件導入質檢信息到內存*/void searchRecqid(); /*查詢質檢信息(根據質檢編號)*/vo
6、id searchRecpro(); /*查詢質檢信息(根據生產者)*/void modifyRec(); /*修改質檢信息*/void deleteRec(); /*刪除質檢信息*/void listRec(); /*顯示所有質檢信息*/void writeInfo(); /*保存質檢信息*/void exit0(); /*退出*/int menu_select(); *主菜單*/int fqid(char a); /判斷質檢編號是否已被輸入/int check(char date) /判斷日期是否合法/(4)、定義兩個全局變量:/*鏈表操作所用結構體指針*/struct student *
7、head=NULL,*p1,*p2,*p3,p0;/*定義結構體指針head 為頭指針p1 為輸入數據緩存空間指針p2 為尾指針 p0為調用鏈表循環(huán)時所用指針*/*學生記錄保存標志全局變量*/Int writeinfo_flag=0;顯示主菜單(5)主函數流程圖接受用戶選項N是否合法YNY是否為0調用對應函數退出系統(tǒng)主菜單(6)添加質檢信息函數流程圖接受用戶信息N是否合法Y根據提示輸入質檢信息保存并返回主菜單查詢函數設計(根據質檢編號)主菜單接受用戶信息N是否合法Y輸入查詢質檢編碼顯示質檢信息保存并返回主菜單主菜單查詢函數設計(根據生產者)接受用戶信息是否合法N輸入查詢生產者Y輸入查詢生產者顯
8、示質檢信息保存并返回主菜單主菜單(6) 修改質檢信息函數設計接受用戶信息N是否合法Y輸入修改質檢編號輸入修改后的質檢信息保存并返回主菜單主菜單(7) 刪除質檢信息函數設計接受用戶信息是否合法NY輸入刪除質檢編號顯示刪除結果保存并返回主菜單三、程序測試與運行結果1、 主菜單界面若輸入的數字不是07,則會提示輸入錯誤2、添加信息界面若輸入的質檢編號已經存在。會提示編號以存在,重新輸入。若輸入的時間結構不正確,會提示輸入不合法,請重新輸入。3、修改界面4、查詢信息界面(學號查詢)若輸入的質檢編號是不存在的質檢編號,在提示找不到該質檢編號。(2)、按生產者查詢6、刪除信息界面若要刪除的質檢信息不存在,
9、則提示找不到信息。7、顯示全部信息界面8、保存信息界面四、課程設計總結 本次C語言課程設計非常有意義,它鍛煉了我們解決實際問題的能力。由于本人對編程感興趣,在編程方面有一定基礎,因此嘗試著由自己完成整個系統(tǒng),在設計的過程里也遇到了很多麻煩,但是通過查詢參考書和網絡,一個個疑難迎刃而解。通過這次實踐課,不只是強化了我們C語言編程的能力,更重要的是使我們學會了一種工作方法,學會了如何規(guī)劃、組織、設計、實施項目,從整體到局部,從局部又到整體。 在編程過程中,我嘗試將質檢結果和質檢問題一起輸入,但是總是出現(xiàn)錯誤,沒有辦法顯示正確的結果,最后實在沒辦法,只能放棄,采取分開輸入的方法。五、源代碼/*所使用
10、的有頭文件*/#include<stdio.h>#include<string.h>#include<malloc.h>#include <stdlib.h>#include<conio.h>#define LEN sizeof(struct information)/*結構體定義*/struct informationchar qid15;char qname15;char producer15;char pd15;char qresult15;char qproblem15;char qpersons15;char time12;
11、struct information *next;/*函數聲明*/void createRec();/*新建質檢信息*/void loadRec();/*從磁盤文件導入質檢信息到內存*/void searchRecqid();/*查詢質檢信息(根據質檢編號)*/void searchRecpro(); /*查詢質檢信息(根據生產者)*/void modifyRec();/*修改質檢信息*/void deleteRec();/*刪除質檢信息*/void listRec();/*顯示所有質檢信息*/void writeInfo();/*保存質檢信息*/void exit0();/*退出*/int
12、menu_select();/*主菜單*/int fqid(char a); /判斷質檢編號是否已被輸入/int check(char date) /判斷日期是否合法/int year,month,day,i,leap; /要求格式判斷/for(i=0,year=0;i<4;i+)year=year*10+(datei-'0');for(i=5,month=0;i<7;i+)month=month*10+(datei-'0');for(i=8,day=0;i<10;i+)day=day*10+(datei-'0');if(mon
13、th<0|month>12)return 0;else /日期存在判斷/leap=(year%4=0&&year%100!=0|year%400=0);if(month=1|month=3|month=5|month=7|month=8|month=10|month=12)if(day<0|day>31)return 0;elsereturn 1;if(month=4|month=6|month=9|month=11)if(day<0|day>30)return 0;elsereturn 1;if(leap=1&&month=
14、2)if(day<0|day>29)return 0;elsereturn 1;if(leap=0&&month=2)if(day<0|day>28)return 0;elsereturn 1;return 0;/*鏈表操作所用結構體指針*/struct information *head=NULL,*p1,*p2,*p3,*p0;/*定義結構體指針head 為頭指針p1 為輸入數據緩存空間指針p2 為尾指針*/*質檢記錄保存標志全局變量*/intwriteinfo_flag=0;/*主函數*/int main() loadRec(); system(&
15、quot;cls"); for(;)switch(menu_select()case 1: system("cls"); createRec();break;case 2: system("cls"); searchRecqid();break;case 3: system("cls"); searchRecpro();break;case 4: system("cls"); modifyRec();break;case 5: system("cls"); deleteRec();br
16、eak;case 6: system("cls"); listRec();break;case 7: system("cls"); writeInfo();break;case 0: system("cls"); exit0();return 0;default :getchar();printf("n 選擇錯誤,請正確輸入你的選擇(07),:");printf("n 按任意鍵返回.n");getchar();system("cls");/*清屏*/ return 0;/*主
17、菜單*/int menu_select()int c,flag=1; char w10;printf("tt*菜單*n");printf("ttt1.新建質檢信息n");printf("ttt2.查詢質檢信息(質檢編號)n");printf("ttt3.查詢質檢信息(生產者)n");printf("ttt4.修改質檢信息n");printf("ttt5.刪除質檢信息n");printf("ttt6.顯示所有信息n");printf("ttt7.保
18、存質檢信息n");printf("ttt0.退出(任何情況下按Ctrl+C 退出程序)n"); printf("tt*n");printf("n 輸入你的選擇(07):");doscanf("%s", w);if(strlen(w) != 1)flag = 0;printf("n選擇錯誤,請正確輸入你的選擇(07):");else if(strcmp(w,"0") < 0 | strcmp(w, "7") > 0) flag = 0;
19、 printf("n選擇錯誤,請正確輸入你的選擇(07):");else flag = 1;c = atoi(w);while(!flag);return c;/*從磁盤文件導入質檢信息到內存*/void loadRec()FILE *fp;int n=0;if(fp=fopen("LY.txt","r")=NULL)/*打開文件*/printf("文件不存在或無法打開!n");system("pause");return ;head=p1=(struct information *)mallo
20、c(LEN);/*開辟一個新單元*/memset(p1,0,LEN);p1->next =NULL;while(!feof(fp)n+;fscanf(fp,"%s%s%s%s%s%s%s%sn", p1->qid,p1->qname,p1->producer,p1->pd, p1->qresult,p1->qproblem,p1->qpersons,p1->time);p2=(struct information *)malloc(LEN);p1->next =p2;p3=p1;p1=p2;p1->next
21、=NULL;free(p2);p3->next=NULL;printf("n %d項信息輸入完畢,按任意鍵返回.n",n);getch();system("cls");/*清屏*/writeinfo_flag=0;/*設置保存記錄標志*/if( fclose(fp) )/* 關閉文件 */ printf( "Can not close the file!n" ); exit(0); return ;/*新建質檢信息*/void createRec()if(head!=0) p3=head;while( p3->next!=
22、NULL)p3=p3->next;printf("n 質檢信息數據庫已存在,新建質檢信息將接續(xù)在信息庫的后面,按任意鍵繼續(xù).:n");getchar();system("cls");/*清屏*/p3->next=p1=(struct information *)malloc(LEN);/*開辟一個新單元*/ elsehead=p1=(struct information *)malloc(LEN);/*開辟一個新單元*/ p1->next =NULL; printf("n請輸入質檢編號:");scanf("
23、%s",p1->qid);while(fqid(p1->qid)=1)printf("n您輸入的質檢編號已存在,請重新輸入:"); /驗證是否存在/scanf("%s",p1->qid);printf("n請輸入零部件名稱:");scanf("%s",p1->qname);printf("n請輸入生產者:");scanf("%s",p1->producer);printf("n請輸入生產部門:");scanf(&qu
24、ot;%s",p1->pd);printf("n請輸入質檢結果(合格/不合格):");scanf("%s",p1->qresult);printf("n請輸入質檢問題(無/設計缺陷/裝配質量/加工質量):");scanf("%s",p1->qproblem);printf("n請輸入質檢員:");scanf("%s",p1->qpersons);printf("n請輸入質檢日期(形如2015-06-20):");scanf
25、("%s",p1->time);while(p1->time4!='-')|(p1->time7!='-')|strlen(p1->time)!=10|check(p1->time)=0)/*判斷開始統(tǒng)計的時間輸入是否合法*/ printf("入住時間輸入不合法,請重新輸入:"); scanf("%s",p1->time); getchar();p2=(struct information *)malloc(LEN);/*開辟一個新單元*/p1->next =p
26、2;p3=p1;p1=p2;p1->next =NULL;free(p2);p3->next=NULL;printf("n 信息輸入完畢,按任意鍵返回.n");getch();system("cls");/*清屏*/writeinfo_flag=1;return;/*查詢質檢信息(根據質檢編號)*/void searchRecqid()char qid10;p1=head; if(p1=NULL) printf("nn質檢信息數據庫為空! n"); printf("n 按任意鍵返回.n"); getch
27、(); system("cls");/*清屏*/ return ; printf("nn 請輸入質檢編號以便查證:"); scanf("%s",qid); printf("n質檢編號 零件名稱 生產者 生產部門 質檢結果 質檢問題 質檢員 質檢日期n"); while(p1!=NULL) if(strcmp(p1->qid,qid )=0) printf("%-12s%-12s%-12s%-12s%-12s%-12s%-12s%-12s", p1->qid,p1->qname,
28、p1->producer,p1->pd, p1->qresult,p1->qproblem,p1->qpersons,p1->time);break; else p1=p1->next ; if(p1=NULL) printf("nn找不到該質檢信息!n"); printf("n 按任意鍵返回.n"); getch(); system("cls");/*查詢質檢信息(根據生產者)*/ void searchRecpro()int i=0;char producer10;p1=head; if(
29、p1=NULL) printf("nn質檢信息數據庫為空! n"); printf("n 按任意鍵返回.n"); getch(); system("cls");/*清屏*/ return ; printf("nn 請輸入生產者以便查證:"); scanf("%s",producer); printf("n質檢編號 零件名稱 生產者 生產部門 質檢結果 質檢問題 質檢員 質檢日期n"); while(p1!=NULL) if(strcmp(p1->producer,pro
30、ducer )=0) printf("%-12s%-12s%-12s%-12s%-12s%-12s%-12s%-12sn", p1->qid,p1->qname,p1->producer,p1->pd, p1->qresult,p1->qproblem,p1->qpersons,p1->time);i+;p1=p1->next;continue; else p1=p1->next ; if(p1=NULL) printf("nn%d項質檢信息輸入完畢!n",i); printf("n
31、按任意鍵返回.n"); getch(); system("cls");/*修改指定質檢編號的信息*/void modifyRec()char qid19;if(head=NULL)getchar();printf("n 產品信息數據庫為空,不能修改,按任意鍵將返回:n");getchar();system("cls");/*清屏*/return;p1=head;printf("ntt請輸入要修改記錄的質檢編號:");scanf("%s",qid); while(strcmp(qid,p
32、1->qid )!=NULL&&p1->next!=NULL)p1=p1->next ;if(strcmp(qid,p1->qid )=0)printf("n請輸入修改后質檢編號:");scanf("%s",p1->qid);while(fqid(p1->qid)=1)printf("n您輸入的質檢編號已存在,請重新輸入:"); /驗證是否存在/scanf("%s",p1->qid);printf("n請輸入零部件名稱:");scanf(
33、"%s",p1->qname);printf("n請輸入生產者:");scanf("%s",p1->producer);printf("n請輸入生產部門:");scanf("%s",p1->pd);printf("n請輸入質檢結果(合格/不合格):");scanf("%s",p1->qresult);printf("n請輸入質檢問題(無/設計缺陷/裝配質量/加工質量):");scanf("%s"
34、;,p1->qproblem);printf("n請輸入質檢員:");scanf("%s",p1->qpersons);printf("n請輸入質檢日期:");scanf("%s",p1->time);while(p1->time4!='-')|(p1->time7!='-')|strlen(p1->time)!=10|check(p1->time)=0)/*判斷開始統(tǒng)計的時間輸入是否合法*/ printf("質檢時間輸入不合法,請
35、重新輸入:"); scanf("%s",p1->time); printf("n1項信息修改完畢。");system("pause");else printf("nn找不到該質檢號信息!");printf("按任意鍵將返回n");getch();system("cls");/*清屏*/writeinfo_flag=1;/*清除保存記錄標志*/return;/*刪除指定質檢編號的記錄*/void deleteRec()char qid19;if(head=NUL
36、L) getchar();printf("n 質檢信息數據庫為空,不能刪除,按任意鍵將返回:n");system("cls");/*清屏*/return;p1=head;printf("n請輸入要刪除的質檢號:");scanf("%s",qid);while(strcmp(qid,p1->qid )!=0&&p1->next!=NULL)p2=p1;p1=p1->next ;if(strcmp(qid,p1->qid )=0)if(head->next=NULL)fre
37、e(head);head=NULL;else if(head=p1)head=p1->next;free(p1);elsep2->next=p1->next;free(p1);printf("n刪除完畢;");else printf("nn找不到該質檢號信息!");getchar();printf("按任意鍵返回:n");system("pause");system("cls");/*清屏*/writeinfo_flag=1;/*清除保存記錄標志*/return;/*顯示所有信息*/void listRec()if(head=NULL) printf("n數據庫中沒有學生信息,按任意鍵返回。n");getch();system("cls");return;printf("tt全部質檢信息如下:n");printf("n質檢編號 零件名稱 生產者 生產部門 質檢結果 質檢問題 質檢員 質檢日期n");p1=head;while(p1!=NULL)printf("n%-12s%-12s%
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院放射科火災應急預案(3篇)
- 火災專項環(huán)境應急預案(3篇)
- 音頻處理與編程基礎試題及答案
- 2025年企業(yè)戰(zhàn)略創(chuàng)新試題及答案
- 虛擬化技術應用試題及答案
- 計算機考試常見問題與試題
- 農村土地流轉的法律問題試題及答案
- 法律文本與社會現(xiàn)實的對應關系試題及答案
- 軟件架構設計的關鍵試題及答案
- 2025年公司戰(zhàn)略變化與風險管理試題及答案
- GA/T 832-2014道路交通安全違法行為圖像取證技術規(guī)范
- 博士生招生面試評分表
- SWOT分析法很全面課件
- 膀胱造瘺的護理課件
- 基坑工程施工驗收記錄表
- 消防應急疏散演練人員簽到表(標準通用版)
- 微生物實驗室病原微生物評估報告
- 陜旅版五年級英語上冊句型詞匯知識點總結
- 漢字構字的基本原理和識字教學模式分析
- RouterOS介紹
- 十字軸鍛造成型工藝及模具設計畢業(yè)論文
評論
0/150
提交評論