版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C語言課程設(shè)計(jì)1題目:簡單的零件管理系統(tǒng)測試環(huán)境:vc+6.0說明:需要先在F盤里建一個(gè)“info.dat”的文件源代碼:#include<stdio.h>#include<string.h>#include<malloc.h>#include <stdlib.h>#include<conio.h>#include<math.h>#define LEN sizeof(struct worker)/*結(jié)構(gòu)體定義*/struct worker char id20; char name20; char vender20; cha
2、r time20; char number20; char receive3; struct worker *next;/*函數(shù)聲明*/void createRec(); /*新建零件記錄*/void loadRec(); /*從磁盤文件導(dǎo)入零件信息到內(nèi)存*/void searchRec(int c,int d); /*查詢零件記錄*/void modifyRec(int c); /*修改零件記錄*/void insertRec(); /*插入零件記錄*/void deleteRec(); /*刪除零件記錄*/void listRec(int c); /*顯示所有零件信息*/void writ
3、eInfo(); /*保存零件記錄*/void exit0(); /*退出*/void registers(); /*登記零件收到信息*/void searchweek();/*查詢一周要采購零件的信息*/int menu_select(); /*主菜單*/int menu_son();/*子菜單*/*鏈表操作所用結(jié)構(gòu)體指針*/struct worker *head=NULL,*p1,*p2,*p3;/*定義結(jié)構(gòu)體指針head 為頭指針p1 為輸入數(shù)據(jù)緩存空間指針p2 為尾指針*/*零件記錄保存標(biāo)志全局變量*/int writeinfo_flag=0;/*主函數(shù)*/void main() in
4、t c; loadRec(); for(;) switch(menu_select() case 1: system("cls"); createRec();break; case 2: system("cls"); while(1)c=0; switch(menu_son() case 0:c=1;break; case 1:system("cls");searchweek();break; case 2:searchRec(1,1);break; case 3:listRec(1);break; case 4:searchRec(
5、0,1);break; default : getchar(); printf("n 選擇錯(cuò)誤,請正確輸入你的選擇(04),:n"); printf("n 按任意鍵返回.n"); getchar();break; system("cls"); if(c=1) break;break; case 3: system("cls"); modifyRec(0);break; case 4: system("cls"); insertRec();break; case 5: system("c
6、ls"); deleteRec();break; case 6: system("cls"); listRec(0);break; case 7: system("cls"); registers();break; case 0: system("cls"); exit0(); default : getchar(); printf("n 選擇錯(cuò)誤,請正確輸入你的選擇(07),:n"); printf("n 按任意鍵返回.n"); getchar(); getchar(); syste
7、m("cls"); /*清屏*/ /*主菜單*/int menu_select() int c; printf("t*菜單*nn"); printf("ttt1.新建零件信息記錄n"); printf("ttt2.查詢零件信息記錄n"); printf("ttt3.修改零件信息記錄n"); printf("ttt4.插入零件信息記錄n"); printf("ttt5.刪除零件信息記錄n"); printf("ttt6.顯示所有零件信息n"
8、;); printf("ttt7.登記收到零件信息n"); printf("ttt0.退出(任何情況下按Ctrl+C 退出程序)n"); printf("n*n"); printf("n 輸入你的選擇(07):n"); scanf("%d",&c); return c;/*從磁盤文件導(dǎo)入職工信息到內(nèi)存*/void loadRec() FILE *fp; int n=0; if(fp=fopen("f:info.dat","r")=NULL) /*打
9、開文件*/ printf("文件不存在或無法打開!n"); return; head=p1=(struct worker *)malloc(LEN); /*開辟一個(gè)新單元*/ p1->next =NULL; while(!feof(fp) n+; fscanf(fp,"%s%s%s%s%s%s", p1->id,p1->name,p1->vender,p1->time,p1->number,p1->receive); if(p1->id0<'0'|p1->id0>'
10、9') n-;break; p2=(struct worker *)malloc(LEN); /*開辟一個(gè)新單元*/ p1->next =p2; p3=p1; p1=p2; p1->next =NULL; free(p2); p3->next=NULL; writeinfo_flag=0; /*設(shè)置保存記錄標(biāo)志*/ if( fclose(fp) ) /* 關(guān)閉文件 */ printf( "Can not close the file!n" ); exit(0); /*新建零件記錄*/void createRec() int n,i; if(head
11、!=0) p3=head; while( p3->next!=NULL) p3=p3->next; getchar(); printf("n 零件信息數(shù)據(jù)庫已存在,新建零件信息將接續(xù)在信息庫的后面!nn 按任意鍵繼續(xù)添加.:n"); getchar(); system("cls"); /*清屏*/ p3->next=p1=(struct worker *)malloc(LEN); /*開辟一個(gè)新單元*/ else head=p1=(struct worker *)malloc(LEN); /*開辟一個(gè)新單元*/ p1->next
12、=NULL; printf("nn 請輸入希望建立的職工基本信息條數(shù)n:n"); do scanf("%d",&n); if(n<1|n>10) printf("nn輸入范圍有誤,請重新輸入希望建立的零件基本信息條數(shù)n:n"); while(n<1|n>10); /*開始建立n條零件基本信息記錄*/ printf("nn 請每行按【零件型號(hào) 零件名稱 生產(chǎn)廠家 采購日期(yyyy-mm-dd) 采購數(shù)目 是否收到(y/n)】的形式輸入%d條零件記錄:n",n); for(i=0;i&
13、lt;n;i+) scanf("%s%s%s%s%s%s", p1->id,p1->name,p1->vender,p1->time,p1->number,p1->receive); p2=(struct worker *)malloc(LEN); /*開辟一個(gè)新單元*/ p1->next =p2; p3=p1; p1=p2; p1->next=NULL; free(p2); p3->next=NULL; printf("n %d項(xiàng)信息輸入完畢,按任意鍵返回.n",n); getchar(); sys
14、tem("cls"); /*清屏*/ writeinfo_flag=1; /*清除保存記錄標(biāo)志*/*查詢零件記錄*/void searchRec(int c,int d) char time20; char receive3; int i=0; if(d=0) strcpy(receive,"y"); else strcpy(receive,"n"); p1=head; if(p1=NULL) printf("nn零件數(shù)據(jù)庫為空! n"); printf("n 按任意鍵返回.n"); getch
15、(); system("cls"); /*清屏*/ return ; if(d!=2) if(c=0) printf("nn請輸入零件的型號(hào)以便查詢:n");else printf("nn請輸入采購時(shí)間以便查證:n"); scanf("%s",time); printf("*"); if(c!=0) printf("n t%s有如下零件未到庫:n",time); else printf("n t%s型號(hào)零件信息如下:n",time); while(p1!=
16、NULL) if(strcmp(p1->time,time )=0&&(strcmp(p1->receive,receive)=0)|(strcmp(p1->id,time)=0) printf("t該零件信息如下:nt 零件型號(hào):"); printf("%sn",p1->id ); printf("t 零件名稱:"); printf("%sn",p1->name ); printf("t 生產(chǎn)廠家:"); printf("%sn"
17、;,p1->vender ); printf("t 采購日期:"); printf("%sn",p1->time); printf("t 采購數(shù)目:"); printf("%sn",p1->number); printf("t 是否接收:"); printf("%sn", p1->receive); printf("n"); i=1; if(p1=NULL) break; p1=p1->next; if(i=0) printf
18、("nn找不到該零件信息!n"); printf("n 按任意鍵返回.n"); getch(); system("cls"); /*清屏*/ else printf("n請輸入采購日期:"); scanf("t%s",time); printf("*n"); printf(" %s日待登記的零件有:n",time); printf("n零 件 型 號(hào) * 零 件 名 稱 * 生 產(chǎn) 廠 家 * 采 購 日 期 * 采購數(shù)目 * 是否接收 n&qu
19、ot;);while(p1!=NULL) if(strcmp(p1->time,time)=0)&&(strcmp(p1->receive,receive)=0) printf(" %-15s%-15s%-16s%-15s%-13s%-15sn",p1->id,p1->name,p1->vender,p1->time,p1->number,p1->receive );i=2; p1=p1->next; if(i=0)printf("n%s這天沒有可登記的零件!n",time); /*修
20、改指定零件型號(hào)的記錄*/void modifyRec(int c) char id20; char f20="0" if(head=NULL) getchar(); printf("n 零件信息數(shù)據(jù)庫為空,不能修改,按任意鍵將返回:n"); getchar(); system("cls"); /*清屏*/ return; p1=head; if(c=0) printf("nn請輸入要修改記錄的零件型號(hào):n"); scanf("%s",id); while(strcmp(id,p1->id
21、)!=NULL&&p1->next!=NULL) p1=p1->next ; if(strcmp(id,p1->id )=NULL) strcpy(p1->id,id); printf("nn 請輸入該零件的名稱:n"); scanf("%s",p1->name); printf("nn 請輸入該零件的生產(chǎn)廠家:n"); scanf("%s",p1->vender); printf("nn 請輸入該零件的采購日期(yyyy-mm-dd):n")
22、; scanf("%s",p1->time); printf("nn 請輸入該零件的采購數(shù)目:n"); scanf("%s",p1->number); printf("nn 請輸入該零件是否已接收(y/n):n"); scanf("%s",p1->receive); printf("n1項(xiàng)信息修改完畢!"); else printf("nn找不到該零件型號(hào)信息!"); getchar(); else while(c) printf(&qu
23、ot;*n"); printf("請輸入已到庫的零件型號(hào)以便記錄(輸入0 退出登記!):n"); scanf("%s",id); if(strcmp(id,f)=0) break;while(strcmp(id,p1->id )!=NULL&&p1->next!=NULL) p1=p1->next; if(strcmp(id,p1->id )=NULL) strcpy(p1->id,id); printf("nn 請輸入該零件是否已接(y/n):n"); scanf("
24、%s",p1->receive); printf("n1項(xiàng)信息修改完畢!"); printf("按任意鍵將返回:n"); getchar(); system("cls"); /*清屏*/ writeinfo_flag=1; /*清除保存記錄標(biāo)志*/ return;/*插入零件記錄*/void insertRec() int n=0,m,i; p1=head; if(head=NULL) /*空數(shù)據(jù)庫插入在第一個(gè)位置*/ getchar(); printf("n 零件信息數(shù)據(jù)庫為空,只能插入第一個(gè)位置,按任意鍵
25、將繼續(xù)。:n"); getchar(); printf("nn 請按【零件型號(hào) 零件名稱 生產(chǎn)廠家 采購日期(yyyy-mm-dd) 采購數(shù)目 是否接收(y/n)】的形式輸入1條零件記錄:n"); head=(struct worker *)malloc(LEN); /*開辟一個(gè)新單元*/ head->next =NULL; scanf("%s%s%s%s%s%s", head->id,head->name,head->vender,head->time,head->number,head->recei
26、ve); printf("n1項(xiàng)信息輸入完畢,按任意鍵返回.n"); getchar(); system("cls"); /*清屏*/ writeinfo_flag=1; /*清除保存記錄標(biāo)志*/ return; /*數(shù)據(jù)庫不為空時(shí),分插入第一個(gè)位置,中間位置,最后一個(gè)位置三種情況*/ do n+; p1=p1->next; while(p1!=0); printf("職工信息數(shù)據(jù)庫中共有%d條記錄,請輸入插入的位置n:n",n); do scanf("%d",&m); if(m<1|m>
27、n+1) printf("nn 輸入范圍有誤,請重新輸入希望插入的正確位置(n>=1&&n<=%d):n",n+1); while(m<1|m>n+1); if(m=1) /*插入在數(shù)據(jù)庫的第一個(gè)位置*/ p1=head; getchar(); printf("nn 請按【零件型號(hào) 零件名稱 生產(chǎn)廠家 采購日期(yyyy-mm-dd) 采購數(shù)目 是否接收(y/n)】的形式輸入1條職工記錄:n"); head=(struct worker *)malloc(LEN); /*開辟一個(gè)新單元*/ scanf("
28、%s%s%s%s%s%s", head->id,head->name,head->vender,head->time,head->number,head->receive); head->next =p1; printf("n1項(xiàng)信息輸入完畢,按任意鍵返回.n"); getchar(); system("cls"); /*清屏*/ writeinfo_flag=1; /*清除保存記錄標(biāo)志*/ return; if(m=n+1) /*插入在數(shù)據(jù)庫的最后一個(gè)位置*/ p1=head; while( p1-&
29、gt;next!=NULL) p1=p1->next; printf("nn 請按【零件型號(hào) 零件名稱 生產(chǎn)廠家 采購日期(yyyy-mm-dd) 采購數(shù)目 是否接收(y/n)】的形式輸入1條職工記錄:n"); p2=(struct worker *)malloc(LEN); /*開辟一個(gè)新單元*/ scanf("%s%s%s%s%s%s", p2->id,p2->name,p2->vender,p2->time,p2->number,p2->receive); p2->next=NULL; p1->
30、next =p2; printf("n1項(xiàng)信息輸入完畢,按任意鍵返回.n"); getchar(); system("cls"); /*清屏*/ writeinfo_flag=1; /*清除保存記錄標(biāo)志*/ return; /*插入在數(shù)據(jù)庫的中間第n個(gè)位置*/ p1=head; for(i=1;i<m;i+) p2=p1; p1=p1->next; printf("nn 請按【零件型號(hào) 零件名稱 生產(chǎn)廠家 采購日期 采購數(shù)目 是否接收】的形式輸入1條職工記錄:n"); p3=(struct worker *)malloc(
31、LEN); /*開辟一個(gè)新單元*/ scanf("%s%s&s%s%s%s", p3->id,p3->name,p3->vender,p3->time,p3->number,p3->receive); p3->next=p1; p2->next =p3; printf("n1項(xiàng)信息輸入完畢,按任意鍵返回.n"); getchar(); system("cls"); /*清屏*/ writeinfo_flag=1; /*清除保存記錄標(biāo)志*/ return; /*刪除指定零件型號(hào)的記
32、錄*/void deleteRec() char id19; if(head=NULL) getchar(); printf("n 零件信息數(shù)據(jù)庫為空,不能刪除,按任意鍵將返回:n"); getchar(); system("cls"); /*清屏*/ return; p1=head; printf("nn請輸入要?jiǎng)h除的零件型號(hào):n"); scanf("%s",id); while(strcmp(id,p1->id )!=0&&p1->next!=NULL) p2=p1; p1=p1-&
33、gt;next ; if(strcmp(id,p1->id )=0) if(head->next=NULL) free(head); head=NULL; else if(head=p1) head=p1->next; free(p1); else p2->next=p1->next; free(p1); printf("n刪除完畢;"); else printf("nn找不到該零件型號(hào)信息!"); getchar(); printf("按任意鍵返回:n"); getchar(); system(&quo
34、t;cls"); /*清屏*/ writeinfo_flag=1; /*清除保存記錄標(biāo)志*/ return;/*顯示所有信息*/void listRec(int c) char receive3="y" if(head=NULL) printf("n數(shù)據(jù)庫中沒有零件信息,按任意鍵返回。n"); getch(); system("cls"); return; printf("n全部零件信息如下:n"); printf("n零 件 型 號(hào) * 零 件 名 稱 * 生 產(chǎn) 廠 家 * 采 購 日 期
35、* 采購數(shù)目 * 是否接收 n"); p1=head; while(p1!=NULL) if(c=0|strcmp(p1->receive,receive)=0) printf(" %-15s%-15s%-16s%-15s%-13s%-15sn",p1->id,p1->name,p1->vender,p1->time,p1->number,p1->receive ); p1=p1->next; printf("n按任意鍵返回!.n"); getch(); system("cls"
36、;); /*清屏*/*保存零件記錄*/void writeInfo() FILE *fp; /*定義文件指針*/ if(head=NULL) printf("n數(shù)據(jù)庫中沒有零件信息,按任意鍵返回。n"); getch(); system("cls"); return; if(writeinfo_flag=0) printf("n數(shù)據(jù)庫中零件信息已保存過,按任意鍵退出。n"); getch(); system("cls"); return; if(fp=fopen("f:info.dat",&qu
37、ot;w")=NULL) /*打開文件*/ printf("n數(shù)據(jù)庫中零件信息無法保存,按任意鍵退出。n"); getch(); system("cls"); return; p1=head; while(p1!=NULL) fprintf(fp,"t%st%st%st%st%st%sn",p1->id,p1->name,p1->vender,p1->time,p1->number,p1->receive ); p1=p1->next; fclose(fp); printf(&quo
38、t;n數(shù)據(jù)庫中零件信息保存完畢,按任意鍵退出!n"); getch(); system("cls"); writeinfo_flag=0; /*設(shè)置保存記錄標(biāo)志*/ return; /*退出*/void exit0() if(writeinfo_flag=1) /*修改過記錄時(shí),先保存,再退出*/ writeInfo(); p1=head; while( p1!=NULL) p2=p1->next; free(p1); p1=p2; printf("nntt歡迎使用!謝謝!nn"); exit(0);int menu_son() int
39、c; printf("t*查詢子菜單*nn"); printf("tt 1: 查詢一周需要采購的零件信息。n"); printf("tt 2: 查詢一天內(nèi)未收到的零件信息。n"); printf("tt 3: 查詢已收到的零件信息。n"); printf("tt 4: 根據(jù)零件型號(hào)查詢零件信息。n"); printf("tt 0: 退出查詢子菜單。n"); printf("輸入您的選擇(04):n"); scanf("%d",&c); return c;void registers() searchRec(1,2); modifyRec(1);void searchweek() char *
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版電商平臺(tái)客戶數(shù)據(jù)保密及隱私保護(hù)合同3篇
- 二零二五版農(nóng)業(yè)產(chǎn)業(yè)化合同管理與農(nóng)產(chǎn)品質(zhì)量安全協(xié)議3篇
- 二零二五版智能廣告終端設(shè)備投放與維護(hù)合同3篇
- 二零二五年綠色環(huán)保抵押貸款合同范本分享3篇
- 二零二五版一期臨床試驗(yàn)統(tǒng)計(jì)分析合同3篇
- 二零二五年度辣椒種植與冷鏈物流運(yùn)輸合同3篇
- 二零二五版餐廳智能點(diǎn)餐系統(tǒng)維護(hù)與升級(jí)合同3篇
- 二零二五年度餐飲企業(yè)承包經(jīng)營與品牌升級(jí)合同3篇
- 二零二五版智能簽約二手房購房合同范本2篇
- 二零二五版新能源汽車電池購銷合同樣本3篇
- 冬春季呼吸道傳染病防控
- 中介費(fèi)合同范本(2025年)
- 《kdigo專家共識(shí):補(bǔ)體系統(tǒng)在腎臟疾病的作用》解讀
- 生產(chǎn)調(diào)度員崗位面試題及答案(經(jīng)典版)
- 【物 理】2024-2025學(xué)年八年級(jí)上冊物理寒假作業(yè)人教版
- 交通運(yùn)輸安全生產(chǎn)管理規(guī)范
- 電力行業(yè) 電力施工組織設(shè)計(jì)(施工方案)
- 《法制宣傳之盜竊罪》課件
- 通信工程單位勞動(dòng)合同
- 查對(duì)制度 課件
- 2024-2030年中國豬肉市場銷售規(guī)模及競爭前景預(yù)測報(bào)告~
評(píng)論
0/150
提交評(píng)論