C語言課程設(shè)計(jì)1_第1頁
C語言課程設(shè)計(jì)1_第2頁
C語言課程設(shè)計(jì)1_第3頁
C語言課程設(shè)計(jì)1_第4頁
C語言課程設(shè)計(jì)1_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C語言課程設(shè)計(jì)1題目:簡(jiǎn)單的零件管理系統(tǒng)測(cè)試環(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ò)誤,請(qǐng)正確輸入你的選擇(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ò)誤,請(qǐng)正確輸入你的選擇(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 請(qǐng)輸入希望建立的職工基本信息條數(shù)n:n"); do scanf("%d",&n); if(n<1|n>10) printf("nn輸入范圍有誤,請(qǐng)重新輸入希望建立的零件基本信息條數(shù)n:n"); while(n<1|n>10); /*開始建立n條零件基本信息記錄*/ printf("nn 請(qǐng)每行按【零件型號(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請(qǐng)輸入零件的型號(hào)以便查詢:n");else printf("nn請(qǐng)輸入采購時(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請(qǐng)輸入采購日期:"); 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請(qǐng)輸入要修改記錄的零件型號(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 請(qǐng)輸入該零件的名稱:n"); scanf("%s",p1->name); printf("nn 請(qǐng)輸入該零件的生產(chǎn)廠家:n"); scanf("%s",p1->vender); printf("nn 請(qǐng)輸入該零件的采購日期(yyyy-mm-dd):n")

22、; scanf("%s",p1->time); printf("nn 請(qǐng)輸入該零件的采購數(shù)目:n"); scanf("%s",p1->number); printf("nn 請(qǐng)輸入該零件是否已接收(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("請(qǐng)輸入已到庫的零件型號(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 請(qǐng)輸入該零件是否已接(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 請(qǐng)按【零件型號(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條記錄,請(qǐng)輸入插入的位置n:n",n); do scanf("%d",&m); if(m<1|m>

27、n+1) printf("nn 輸入范圍有誤,請(qǐng)重新輸入希望插入的正確位置(n>=1&&n<=%d):n",n+1); while(m<1|m>n+1); if(m=1) /*插入在數(shù)據(jù)庫的第一個(gè)位置*/ p1=head; getchar(); printf("nn 請(qǐng)按【零件型號(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 請(qǐng)按【零件型號(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 請(qǐng)按【零件型號(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請(qǐng)輸入要?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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論