C语言课程设计1_第1页
C语言课程设计1_第2页
C语言课程设计1_第3页
C语言课程设计1_第4页
C语言课程设计1_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言课程设计1题目:简单的零件管理系统测试环境:vc+6.0说明:需要先在F盘里建一个“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)/*结构体定义*/struct worker char id20; char name20; char vender20; cha

2、r time20; char number20; char receive3; struct worker *next;/*函数声明*/void createRec(); /*新建零件记录*/void loadRec(); /*从磁盘文件导入零件信息到内存*/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();/*子菜单*/*链表操作所用结构体指针*/struct worker *head=NULL,*p1,*p2,*p3;/*定义结构体指针head 为头指针p1 为输入数据缓存空间指针p2 为尾指针*/*零件记录保存标志全局变量*/int writeinfo_flag=0;/*主函数*/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 选择错误,请正确输入你的选择(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 选择错误,请正确输入你的选择(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;/*从磁盘文件导入职工信息到内存*/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); /*开辟一个新单元*/ 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); /*开辟一个新单元*/ p1->next =p2; p3=p1; p1=p2; p1->next =NULL; free(p2); p3->next=NULL; writeinfo_flag=0; /*设置保存记录标志*/ if( fclose(fp) ) /* 关闭文件 */ 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 零件信息数据库已存在,新建零件信息将接续在信息库的后面!nn 按任意键继续添加.:n"); getchar(); system("cls"); /*清屏*/ p3->next=p1=(struct worker *)malloc(LEN); /*开辟一个新单元*/ else head=p1=(struct worker *)malloc(LEN); /*开辟一个新单元*/ p1->next

12、=NULL; printf("nn 请输入希望建立的职工基本信息条数n:n"); do scanf("%d",&n); if(n<1|n>10) printf("nn输入范围有误,请重新输入希望建立的零件基本信息条数n:n"); while(n<1|n>10); /*开始建立n条零件基本信息记录*/ printf("nn 请每行按【零件型号 零件名称 生产厂家 采购日期(yyyy-mm-dd) 采购数目 是否收到(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); /*开辟一个新单元*/ p1->next =p2; p3=p1; p1=p2; p1->next=NULL; free(p2); p3->next=NULL; printf("n %d项信息输入完毕,按任意键返回.n",n); getchar(); sys

14、tem("cls"); /*清屏*/ writeinfo_flag=1; /*清除保存记录标志*/*查询零件记录*/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零件数据库为空! n"); printf("n 按任意键返回.n"); getch

15、(); system("cls"); /*清屏*/ return ; if(d!=2) if(c=0) printf("nn请输入零件的型号以便查询:n");else printf("nn请输入采购时间以便查证:n"); scanf("%s",time); printf("*"); if(c!=0) printf("n t%s有如下零件未到库:n",time); else printf("n t%s型号零件信息如下: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 零件型号:"); printf("%sn",p1->id ); printf("t 零件名称:"); printf("%sn",p1->name ); printf("t 生产厂家:"); printf("%sn"

17、;,p1->vender ); printf("t 采购日期:"); printf("%sn",p1->time); printf("t 采购数目:"); 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零 件 型 号 * 零 件 名 称 * 生 产 厂 家 * 采 购 日 期 * 采购数目 * 是否接收 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、改指定零件型号的记录*/void modifyRec(int c) char id20; char f20="0" if(head=NULL) getchar(); printf("n 零件信息数据库为空,不能修改,按任意键将返回:n"); getchar(); system("cls"); /*清屏*/ return; p1=head; if(c=0) printf("nn请输入要修改记录的零件型号: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 请输入该零件的生产厂家:n"); scanf("%s",p1->vender); printf("nn 请输入该零件的采购日期(yyyy-mm-dd):n")

22、; scanf("%s",p1->time); printf("nn 请输入该零件的采购数目:n"); scanf("%s",p1->number); printf("nn 请输入该零件是否已接收(y/n):n"); scanf("%s",p1->receive); printf("n1项信息修改完毕!"); else printf("nn找不到该零件型号信息!"); getchar(); else while(c) printf(&qu

23、ot;*n"); printf("请输入已到库的零件型号以便记录(输入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项信息修改完毕!"); printf("按任意键将返回:n"); getchar(); system("cls"); /*清屏*/ writeinfo_flag=1; /*清除保存记录标志*/ return;/*插入零件记录*/void insertRec() int n=0,m,i; p1=head; if(head=NULL) /*空数据库插入在第一个位置*/ getchar(); printf("n 零件信息数据库为空,只能插入第一个位置,按任意键

25、将继续。:n"); getchar(); printf("nn 请按【零件型号 零件名称 生产厂家 采购日期(yyyy-mm-dd) 采购数目 是否接收(y/n)】的形式输入1条零件记录:n"); head=(struct worker *)malloc(LEN); /*开辟一个新单元*/ 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项信息输入完毕,按任意键返回.n"); getchar(); system("cls"); /*清屏*/ writeinfo_flag=1; /*清除保存记录标志*/ return; /*数据库不为空时,分插入第一个位置,中间位置,最后一个位置三种情况*/ do n+; p1=p1->next; while(p1!=0); printf("职工信息数据库中共有%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) /*插入在数据库的第一个位置*/ p1=head; getchar(); printf("nn 请按【零件型号 零件名称 生产厂家 采购日期(yyyy-mm-dd) 采购数目 是否接收(y/n)】的形式输入1条职工记录:n"); head=(struct worker *)malloc(LEN); /*开辟一个新单元*/ 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项信息输入完毕,按任意键返回.n"); getchar(); system("cls"); /*清屏*/ writeinfo_flag=1; /*清除保存记录标志*/ return; if(m=n+1) /*插入在数据库的最后一个位置*/ p1=head; while( p1-&

29、gt;next!=NULL) p1=p1->next; printf("nn 请按【零件型号 零件名称 生产厂家 采购日期(yyyy-mm-dd) 采购数目 是否接收(y/n)】的形式输入1条职工记录:n"); p2=(struct worker *)malloc(LEN); /*开辟一个新单元*/ 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项信息输入完毕,按任意键返回.n"); getchar(); system("cls"); /*清屏*/ writeinfo_flag=1; /*清除保存记录标志*/ return; /*插入在数据库的中间第n个位置*/ p1=head; for(i=1;i<m;i+) p2=p1; p1=p1->next; printf("nn 请按【零件型号 零件名称 生产厂家 采购日期 采购数目 是否接收】的形式输入1条职工记录:n"); p3=(struct worker *)malloc(

31、LEN); /*开辟一个新单元*/ 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项信息输入完毕,按任意键返回.n"); getchar(); system("cls"); /*清屏*/ writeinfo_flag=1; /*清除保存记录标志*/ return; /*删除指定零件型号的记

32、录*/void deleteRec() char id19; if(head=NULL) getchar(); printf("n 零件信息数据库为空,不能删除,按任意键将返回:n"); getchar(); system("cls"); /*清屏*/ return; p1=head; printf("nn请输入要删除的零件型号: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找不到该零件型号信息!"); getchar(); printf("按任意键返回:n"); getchar(); system(&quo

34、t;cls"); /*清屏*/ writeinfo_flag=1; /*清除保存记录标志*/ return;/*显示所有信息*/void listRec(int c) char receive3="y" if(head=NULL) printf("n数据库中没有零件信息,按任意键返回。n"); getch(); system("cls"); return; printf("n全部零件信息如下:n"); printf("n零 件 型 号 * 零 件 名 称 * 生 产 厂 家 * 采 购 日 期

35、* 采购数目 * 是否接收 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数据库中没有零件信息,按任意键返回。n"); getch(); system("cls"); return; if(writeinfo_flag=0) printf("n数据库中零件信息已保存过,按任意键退出。n"); getch(); system("cls"); return; if(fp=fopen("f:info.dat",&qu

37、ot;w")=NULL) /*打开文件*/ printf("n数据库中零件信息无法保存,按任意键退出。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数据库中零件信息保存完毕,按任意键退出!n"); getch(); system("cls"); writeinfo_flag=0; /*设置保存记录标志*/ return; /*退出*/void exit0() if(writeinfo_flag=1) /*修改过记录时,先保存,再退出*/ 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"); printf("tt 3: 查询已收到的零件信息。n"); printf("tt 4: 根据零件型号查询零件信息。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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论