1、C语言课程设计商品销售信息管理系统 #include#include#include#includestruct product /定义商品数据结构 int num; /商品编号 char productname20; /商品名称 float price; /商品售价 char place30; /商品产地 int storage; /商品库存 struct product *next; *head,*p1,*p2; /定义主结构体数组和备用结构体数组及指针struct time /定义时间结构体int year;int month;int day;struct sell /定义销售数据结构
2、int ID; /用户代码 char customername20; /用户姓名 int num; /商品编号 int count; /销售数量 char date10; /日期 struct sell * next1; *head1; /定义头指针head,缓冲指针p1,和尾指针p2/*函数申明*/void Enter_productmessage(); /导入商品信息void Creat(); /输入销售统计void Search_num(); /按编号查询销售历史void Search_customername(); /按用户姓名查询购置历史void Printf_customernam
3、e(); /显示用户信息void Search_date(); /计算时间段内销售总额void Save_product(); /保留销售信息void Save_customername(); /保留用户信息void Exit(); /退出程序/*主菜单*/int select()int c; printf(tt*欢迎使用商品销售管理程序*n);printf(tt T1123-5班 胡 军 一分耕耘 一分收获 n);printf(n-n);printf(n);printf(tt*n); printf(tt*欢迎使用商品销售管理系统*n); printf(tt* *n); printf(tt*
4、1:导入商品信息 *n); printf(tt* 2:输入销售统计 *n); printf(tt* 3:按编号查询销售历史 *n); printf(tt* 4: 按用户姓名查询购置历史 *n); printf(tt* 5:计算时段内各销售总额 *n); printf(tt* 6:显示用户信息 *n); printf(tt* 7:保留销售信息 *n); printf(tt* 8:保留用户信息 *n);printf(tt* 0:退出 *n); printf(tt*n); printf(n-n); printf(tt请输入您选择(08整数): );scanf(%d,&c);return c;/*主函
5、数*/int main()for(;)switch(select()case 1:system(cls);Enter_productmessage();break;case 2:system(cls);Creat();break;case 3:system(cls);Search_num();break;case 4:system(cls);Search_customername();break;case 5:system(cls);Search_date();break;case 6:system(cls);Printf_customername();break;case 7:system(
6、cls);Save_product();break;case 8:system(cls);Save_customername();break; case 0:system(cls);Exit();break;default : system(cls); printf(nnnnnn);printf(tt*n); printf(tt* 输入错误!请重新输入您选择(08整数) *n);printf(tt* 请按Enter键返回! *n);printf(tt*n); getchar();getchar();system(cls);return 0;/*/int judgech(char *a) /判定
7、是否为汉字int i,flag;for(i=0;ai!=0;i+)if(ai=0)flag=0;break;else flag=1; return flag;int judgedate(char date10) /判定日期是否正当int i,year,month,day,s1=0; /日期格式输入正确则s1=1,不然s1=0for(i=0;i0&day0&day0&day0&daynext=p1;p1-next=NULL;p2=p1;fscanf(fp,%d%s%f%s%d,&p2-num,p2-productname,&p2-price,p2-place,&p2-storage); whil
8、e(k=1)if(p2-num10|p2-numnum);k=1;else k=0;while(j=1)if(judgech(p2-productname)=0)printf(tt第%d个商品名称错误!请重新输入(汉字):,i+1); rewind(stdin);scanf(%s,p2-productname);j=1;else j=0;while(o=1)if(p2-price0):,i+1); rewind(stdin); scanf(%f,&p2-price);o=1; else o=0;while(c=1)if(judgech(p2-place)=0) printf(tt第%d个商品产
9、地格式错误!请重新输入(汉字):,i+1); rewind(stdin);scanf(%s,p2-place);c=0; else c=0;while(v=1)if(p2-storage!=1000) printf(t*n); printf(tt第%d个商品数量错误!请输入1000:,i+1); rewind(stdin);scanf(%d,&p2-storage);v=1;else v=0;printf(t%-12d%-15s %-15.2f%-15s%-12dn,p2-num,p2-productname,p2-price,p2-place,p2-storage); fclose(fp);
10、 void comp() FILE *fp;int i=0,n,k=1,m=1,c=1,l=1,d=1;char filename20,a;printf(t请输入商品信息保留路径:);rewind(stdin);gets(filename);p1=p2=head=(struct product*)malloc(sizeof(struct product);if(fp=fopen(filename,a+)=NULL) printf(tt*n); printf(tt* 不能打开文件!请检验文件路径! *n); printf(tt*n); getchar(); system(cls); Enter_
11、productmessage(); printf(nnn); printf(tt*n);printf(tt* 若输入路径和从文件导入商品信息路径相同!*n); printf(tt* 并已导入十个商品信息,请不要再导入! *n); printf(tt* 注意商品编号不要和已导入编码反复! *n);printf(tt*n);printf(nnn);getchar();system(cls);printf(t已从文件导入个数和要输入个数和不超出十!nn);printf(t请输入要导入销售统计个数:);scanf(%d,&n);if(n0)dop1=(struct product*)malloc(si
12、zeof(struct product); p2-next=p1;p1-next=NULL; p2=p1; printf(*商品信息*n); printf( 编号(整数) 名称(汉字) 价格(数字) 产地(汉字) 库存数量n); scanf(%d%s%f%s%d,&p2-num,p2-productname,&p2-price,p2-place,&p2-storage); while(k=1)if(p2-num10|p2-numnum);k=1;else k=0;while(m=1)if(judgech(p2-productname)=0)printf(tt商品名称错误!请重新输入(汉字):)
13、; rewind(stdin);scanf(%s,p2-productname);m=1;else m=0;while(l=1)if(p2-price0):); rewind(stdin); scanf(%f,&p2-price);l=1; else l=0;while(c=1)if(judgech(p2-place)=0) printf(tt商品产地格式错误!请重新输入(汉字):); rewind(stdin);scanf(%s,p2-place);c=1; else c=0;while(d=1)if(p2-storage!=1000) printf(t*n); printf(tt 商品数量
14、错误!请输入1000:); rewind(stdin);scanf(%d,&p2-storage);d=1;else d=0;p2=head-next;fprintf(fp,n%-6d%-6s%-6.2f%-6s%-6dn,p2-num,p2-productname,p2-price,p2-place,p2-storage);printf(n%-6d%-6s%-6.2f%-6s%-6dn,p2-num,p2-productname,p2-price,p2-place,p2-storage); printf(tt是否继续输入信息(Y/N)?n);getchar(); a=getchar();wh
15、ile(a=Y|a=y);fclose(fp); /关闭文件夹if(n=0) printf(tt不从键盘输入入信息!);getchar(); getchar();system(cls); fclose(fp); /关闭文件夹 void Enter_productmessage() /导入销售信息 int a;printf(t*n); printf(t* 请输入10种产品信息-编号、名称、价格、产地、数量: *n);printf(t* 1:经过文件导入(推荐)! *n);printf(t* 2: 经过键盘输入! *n);printf(t*n); printf(t 请输入您选择(1或2): );
16、scanf(%d,&a);getchar();system(cls);if(a!=1&a!=2)printf(tt输入错误!请重新输入您选择(1或2):); scanf(%d,&a);switch(a) case 1:system(cls); file();break; case 2:system(cls); comp();break; printf(*n);printf(t*n);printf(t* 数据类信息操作成功!请按Enter键继续! *n);printf(t*n); getchar();getchar();system(cls); void Creat() /输入销售信息函数 in
17、t i=0,k=1,code; char a; struct sell *p3,*p4; srand(0); code=1+rand()%90; p3=p4=head1=(struct sell *)malloc(sizeof(struct sell); p3=head1; printf(tt请输入销售统计:n); /提醒输入统计 printf(-n); do p3=(struct sell *)malloc(sizeof(struct sell); p4-next1=p3; p3-next1=NULL; p4=p3; printf( 用户姓名(汉字) 商品编号(1-10整数) 销售数量(数字
18、) 销售日期(YYYY-MM-DD)n); printf(-n); scanf(%s%d%d%s,p4-customername,&p4-num,&p4-count,p4-date); /输入统计 do if(judgech(p4-customername)=0) printf(t*n); printf(tt用户名字输入错!请重新输入用户名字(汉字):); scanf(%s,p4-customername); rewind(stdin); k=1; else k=0; while(k=1); do if(p4-num10|p4-numnum); rewind(stdin); k=1; else
19、 k=0; while(k=1); do if(p4-count1000|p4-countcount);rewind(stdin);k=1;else k=0; while(k=1); doif(judgedate(p4-date)!=1) printf(t*n);printf(t 输入日期不正当!请重新输入(YYYY-MM-DD):); scanf(%s,p4-date); rewind(stdin);k=1;else k=0; while(k=1); p4-ID=code+i; i+; printf(nn); printf(是否继续输入销售统计(Y/N)?n); getchar(); a=g
20、etchar(); while(a=Y|a=y); system(cls); printf(nnnn); printf(t*n); printf(t* 销售信息输入成功!按Enter键继续! *n); printf(t*n); getchar(); getchar(); system(cls); return; void Search_num() /依据产品编号查询产品销售历史int num,flag=1,i=0;struct sell *p3;struct product *p;printf(tt请输入商品编号(1-10整数):);scanf(%d,&num);getchar();syste
21、m(cls);printf( 用户姓名 商品编号 销售数量 销售总额 销售日期n);printf( -n);p3=head1;p=head;while(p3!=NULL) if(p3-num=num)p=head;while(p!=NULL)if(p-num=num)break;elsep=p-next;printf( %-15s%-13d%-13d%-13.2f%-10sn,p3-customername,p3-num,p3-count,p-price*p3-count,p3-date);flag=0;p3=p3-next1;if(flag=1) printf(tt*n); printf(t
22、t* 无此编码商品销售统计!请查实后再输入! *n);printf(tt* 请按Enter键返回! *n); printf(tt*n);getchar();system(cls);return;printf(-n);printf(tt*n); printf(tt* 销售统计查询完成!请按Enter键返回! *n);printf(tt*n); getchar();getchar();system(cls);return;void Search_customername() /依据用户姓名查询购置历史 int k=1,m=0;float a=0; char name20,b;struct product *p; struct sell *p3;p3=head1;p=head;prin