商品销售管理系统设计_第1页
商品销售管理系统设计_第2页
商品销售管理系统设计_第3页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

1、、商品销售管理问题描述:已知一公司有10种产品(产品编号,产品名称,产品价格,产品产地,库存数量(最 开始为1000个),设计一程序,完成以下功能:1)1)销售:从键盘输入顾客姓名,销售数量、销售日期,实现销售功能。需要判断产品是否存在,销售数量是否小于库存数量,销售日期格式是否合法(格式为:YYYY-MM-D如 2009-01-02 )2)2)能根据产品编号查询产品的销售历史3)3)计算时间段内各个产品的销售总额4)4)能根据顾客姓名,查询购买历史5)5)能显示所有顾客的姓名提示:定义一个日期结构体保存日期,具体信息为:年、月、日判断存款日期和取款日期的格式是否合法时,需要判断长度是否为 1

2、0,第5位和第8位是否为-',字符,将1-4位表示的年份,6-7位表示的月份,9-10位表示 的日期分别转换成整数。判断是否满足构成日期的条件闰年月份只能是1-12之间的数,如果是闰年,二月可以是 29天否则不能大于 28,1,3,5,乙8,10,12 月可以是31天,其余只能小于等于 30 (建议写成函数)。定义一个结构体数组保存10种产品信息,具体信息为:产品编号,产品名称,产品价格,产品产地,库存数量(最开始为1000个)定义一个链表,保存销售信息,具体为:顾客代码,销售数量、销售日期。定义一个链表保存顾客信息,具体为:顾客代码,顾客姓名当输入销售信息时查询顾客链表,如果在链表中

3、存在该姓名的顾客记录,则将其代码在该销售链表中插入一条记录,如果不存在,则在顾客链表中插入一条记录,(顾客代码需要自动生成)。#i nclude "stdio.h"/*l/0 函数 */#include "stdlib.h" /*标准库函数*/#include "string.h"/*字符串函数*/#include "ctype.h" /*字符操作函数*/#in clude "time.h" /*时钟函数*/#i nclude "cstdlib"#i nclude "

4、;coni o.h"int x , k; /*定义全局变量用于保存当前商品种类*/struct product /*定义商品数据结构*/int num; /*商品编号*/char name20; /* 商品名称 */float price ;/* 商品售价 */char place 10; /* 商品名称 */int storage ;/* 商品库存 */_product 10, product1 10; /定义主结构体数组和备用结构体数组 struct data /定义日期结构体 int year , mon th, day;struct sell /*定义销售数据结构*/int

5、cus ; /*顾客代码*/int num; /*商品编号*/float sells ; /* 销售数量 */char datal 12; /* 日期 */struct sell * next;* head_s,* pp,* tail_s ;/定义头指针操、作指针以及尾指针struct customer /*定义销售数据结构*/int cus ; /*顾客代码*/char name 10; /* 顾客姓名 */struct customer * next;* head_c,* qq,* tail_c ; /定义头指针操、作指针以及尾指针void load (); /读取文件函数 void ad

6、d (); /添加销售信息函数int search_num(); /根据商品编号查询商品的销售历史void cal (); /计算时间段内各个商品的销售总额int search_name(); /根据顾客姓名,查询购买历史void list_name (); /显示所有顾客的姓名void main (); / 主函数int judge (); /主体判断函数int judge_data (char *data1); /细节判断函数,用于判断日期是否合法void download_s(); /写入销售信息(顾客代码,销售数量、销售日期)文件void download_c(); /导出顾客购买记录

7、void display (); /显示现在的商品信息/主函数void main ()doprintf售管理系统!*、nn("* );欢迎使用商品销int choice struct customer * head; / 定义结构指针head=malloc (sizeof (struct customer); / 申请动态存储空间head- >n ext =NULLprintf ("1. 导入商品信息n");printf ("2. 显示商品信息n");printf ("3. 输入销售记录记录n");printf (&q

8、uot;4. 按编号查寻商品销售历史n");printf ("5. 计算时间段内各个销售总额n");printf ("6. 按顾客姓名查找购买历史n");printf ("7. 显示顾客姓名n");printf ("8. 导出销售信息(顾客代码,销售数量、销售日期)文件n");printf ("9. 导出顾客信息文件n");printf0.退出n");printf*n"printf输入其它值会提前退出n");("("*);("

9、请选择不同功能 输入0-9的数字n若seanf ("%d",&choice );system ("els");switch (choice )case 1:load ();system ("cls");break;case 2:display ();break;case 3:add ();break;case 4:search _nu m();break;case 5:cal ();break;case 6:search_ name();break;case 7:list_name (head);break;case 8:do

10、wnload_s ();break;case 9:download_c ();break;case 0:printf ("nnnn");printf("*谢谢使用*nnnn");break;while (choice >0&choice <=9);void display ()int code , i =0;pp=(struct sell *) malloc (sizeof (struct sell ); / 申请动态存储空间 并将指针转变为结构类型qq=( struct customer *) malloc (sizeof (str

11、uct customer ); / 申请动态 存储空间并将指针转变为结构类型p»>next =NULL/*清屏*/qq->next =NULL system ("cis");printf("*商品信息*、nnn");printf (" 商品编号库存数量n");商品名称商品价格商品产while (i <10)/输出商品记录printf ("%8d%12s %12.2f%10s%14dn" _product i . num _product i . name_product i . pric

12、e ,_product i . place , _product i . sto rage);i +;printf ("nn查询完毕,请按任意键继续 ");getch ();system ("cis");void load () /读取文件函数int i =0, n=0, a, b, j ;FILE *fp ; /指向文件的指针doprintf ("请选择导入商品信息的方法n1:通过键盘输入n2:通 过文件导入n");sca nf ("%d",&a);if (a=2)if (fp =fopen("

13、商品信息.txt" , "rb" )= NULL/ 打开文件printf("不能打开文件,请检查文件路径n" );/不能打开exit (0);/ 退出 */pri ntf"*88商品信息88*n");printf ("编号名称价格库存数量n");while (! feof (fp)/读入文件fscanf (fp , "%d%s%f%s%&_product i . num)_prod uct i . name&_product i . price , _product i . pl

14、ace,&_product i . storage ); 一 一printf ("%-10d%-10s %-10.2f%-12s%-12dn" , _prod uct i . num, _product i . name_product i . price,product i . place , _prod uct i . storage );i +;for (i =0; i <10; i +)product1 i = _product i ;/ 对备用结构体数组赋值fclose (fp); / 关闭文件printf ("tt数据读入成功!按任意键继

15、续n");if (a=1) if (fp =fopen("商品信息 1.txt" , "w")= NULL/ 打开文件printf("不能打开文件,请检查文件路径n" );/不能打开exit (0);/ 退出 */printf ("请输入商品种数");sea nf ("%d", &b);printf("*商品信息*n");printf ("编号 名称 价格 产地 库存数量n");for (j =1; j <=b; j +)seanf

16、 ("%d%s%f%s%&'_product i . num)_product i . name&_ product i . price,product i . place,&_product i . storage );fprintf (fp , "%-6d%-6s%-6.2f%-6s%-6dn",product i . num)_ product i . name_product i . price , _product i . place , _product i . stora ge);fclose (fp); / 关闭文件

17、printf ("tt数据读入成功!按任意键继续n");while (a!= 1&&a!=2);/细节判断函数,用于判断日期是否合法int judge_data (char *data1)intn=1, m, year =(data1 0- 48)* 1000+( datal 1- 48)* 100+(datal 2- 48)* 10+( dat a13- 48),month=(data1 5- 48)* 10+(data1 6- 48), day=(dat a18- 48)* 10+(data1 9- 48);m=strlen (data1);if(m=1

18、0)n =0;if (data14!= '-' | data17!='-')n =0;if (year>10000| year<1000| month>12| month<1| day>31| day< 1) n =0;if ( year %4=0&&year %100!= 0)|( year %400=0)&&month=2)if (day>30) n =0;if (month=2&&day>=29) n =0;if (month=4| month=6| month

19、=9| month=11) if (day>30) n =0; return n;/判断函数int judge () /判断商品编号 数量 日期是否正确int i , j =0, k, temp;for (i =0; i <10; i +)if (pp-> num=_product i . nun) j +;x =k=i ;temp =_product k. storage ;if ( _product k. storage -( int ) pp->sells )>=0)_product k. storage -= (int ) pp->sells ;/判

20、断计算剩余量break;if (j =0) return 3;/判断是否存在输入编号的商品else if (temp-( int ) pp->sells <0) return 2; / 判断 输入量是否大于剩余库存量elseif (pp->sells -( int ) pp-> sells >=1e-6) return 4; / 商品量elseif (judge_data (pp->data1 )=0) return 0;/ 判断日期else return 1;/完全正确/添加销售信息函数void add ()int code , i =0, n, m;pp

21、=(struct sell *) malloc (sizeof (struct sell ); / 申请动态存储空间 并将指针转变为结构类型qq=( struct customer *) malloc (sizeof (struct customer ); / 申请动态 存储空间并将指针转变为结构类型sran d(time(0);code=ra nd ();p»>next =NULLqq->next =NULLsystem("cls" );/* 清屏 */printf ("请输入销售记录nnn" ); /*提示输入记录*/print

22、f ("顾客姓名商品编号销售数量销售日期n");printf ("-n");scanf ("%s%d%f%s"qq-> name&pp-> num&pp->sells , pp->data1);/* 输入记录*/n=(int ) pp-> sellsif (n<=0)printf ("商品数量有误!!!请从新输入");scanf("%f",&pp->sells );while (1)m=judge (); /判断商品编号数量日期是

23、否正确if (m=1)/ pp=(struct sell *)malloc(sizeof(struct sell);/申请动态存储空间并将指针转变为结构类型/ qq=(struct customer *)malloc(sizeof(structcustomer);pp -> cus=qq-> cus=code; / 随机数if (head_s=NULLhead_c=qq;输入成功!按任意键继续head_s =pp;elsetail_s ->n ext =pp;tail_s =pp;if (head_c=NULLelse tail_c ->next =qq;tail_c

24、=qq;printf ("tt 销售信息 n");getch ();system ("cls");break;else if (m=2)system ("cis");printf ("销售数量已大于库存数量,请重新输入:nnn");printf ("请输入销售数 量nnn" ); /*提示输入记录*/printf ("销售数量 n");scanf ("%f",&pp->sells);/*输入记录*/continue ;else if (m=3

25、)system ("cls");printf ("无此商品,请重新输入:nnn");录nnn" ); /*提示输入记录*/号 n");/*输入记录*/else if (m=4)错误,请重新输入商品数量:nnn");录nnn" ); /*提示输入记录*/量:n");printf("请输入销售记printf ("商品编 scanf ("%d",&pp-> nun); continue ;system ("cis");printf(&qu

26、ot;商品数量输入printf("请输入销售记printf ("销售数 scanf ("%f",&pp->sellscontinue ;);/*输入记录*/else if (m=0)system ("cis");printf ("销售日期不合法,请重新输入销售日期:nnn"); /*提示输入记录*/printf ("销售日期 n");scanf ("%s", pp-> datal);/*输入记录*/continue ;k+;/根据商品编号查询商品的销售历史

27、search _num()int i , num k=0, flag =1, n=0;struct sell * ptr ;system("cls");printf ("请输入商品编号:n");sca nf ("%d",&n un);for (i =0; i <10; i +)if (num=_product i . nun) flag =0; break;if (flag =1) system ("cls");入!");printf ("无此商品,请查实商品编号后按任意键准备重新

28、输getch ();system("cls");return 0;for (ptr =head_s; ptr ; ptr =:ptr -> next)if (nun=ptr->nun)if (k=0)printf ("商品编号销售数量销售总额销售日期n");printf ("-n");k +;printf ("%5d%20d%20.2f%15sn"ptr->num( int )ptr ->sells ,(int ) ptr -> sells *_pr oduct i . price ,

29、 ptr ->data1);if (k=0) printf ("该商品记录为空!按任意键继续");getch ();system ("cis");return 0;elseprintf ("nn查询完毕,请按任意 键继续");getch ();system("cls");return 0;/计算时间段内各个商品的销售总额void cal ()int i , n=0;struct sell si , s2,* p=&s1 ,* q=&s2,* ptr ;system ("cis&quo

30、t;);printf ("请输入开始日期:");scanf ("%s", p->data1);system ("cis");if (judge_data (pp->data1 )!= 1)printf("输入日期不合法,请重新输入:");seanf ("%s", p->data1);system ("els");n =1;elsen =0; while (n=1);printf ("请输入结束日期:");scanf ("%s&q

31、uot;, q->data1);system ("cls");doif (judge_data (q->data1 )!= 1)printf("输入日期不合法,请重新输入:");scanf ("%s", q->data1);system ("cis");n =1;elsen =0; while (n=1);printf ("销售记录如下:tt时间:%s至%sn", p-> data1 , q->data1);销售总额n"););printf ("

32、nntt 商品编号printf ("ttnn"for (ptr =head_s; ptr ; ptr =ptr -> next)for (i =0; i <10; i +)if (productl i . nun=p tr->nun) break;productl i . storage -=( int ) ptr ->se Ils ;for (i =0; i <10; i +)printf ("tt%2dtt%.2fn", product1 i . nun,product1 i . price *( 1000- produ

33、ct1 i . storage );printf ("nn查询完毕,请按任意键继续 ");getch ();system ("cls");/根据顾客姓名,查询购买历史int search_name()int i ,k=1;char n ame 10;struct customer * ptrl ;struct sell * ptr2 ;system("cls");printf ("请输入顾客姓名:n");scanf ("%s", name;for (ptr1 =head_c; ptr1 ; pt

34、r1 =ptr1 -> next) for (ptr2 =head_s; ptr2 ; ptr2 =ptr2 -> next)break;if (ptr1 ->cus=ptr2 ->cus)for (i =0; i<10; i +)if (ptr2 ->num=_product i . nun) break;if (strcmp (name ptrl -> name= 0)/ if(k=0|k%8=0)printf ("顾客姓名顾客代码商品编号购买数量购买总额购买日期n");printf ("-n");%1pri

35、ntf ("%2s%15d%15d%10d%15.2f5sn" , ptrl ->nameptrl ->cus, ptr2 ->num( int ) ptr2 ->sells ,( int ) ptr2 ->sel Is )* productl i . price , ptr2 ->data1);k+;k =0;if (k=0)续");printf("不存在此顾客!按任意键继ls");else 键继续");printf ("nn查询完毕,getch ();system("cls&

36、quot;);return 0;getch ();system ("creturn 0;请按任意/显示所有顾客的姓名 void list_name () int n=1;struct customer * ptr ;system ("cis");if (head_c!=NULL判断链表是否为空printf ("顾客姓名如下:n" ); /用来显示所有顾客 的姓名for (ptr =head_c; ptr ; ptr =ptr -> next)printf ("tt%sn", ptr -> name;n +;pri

37、ntf ("nn顾客姓名查询完毕,请按任意键继续");getch ();system ("cis");elseprintf("顾客链表为空!请按任意键继续");getch ();system ("cis");void download_s ()/写入销售信息(顾客代码,销售数量、销售日期)文件 int i =0;FILE *fp;struct customer *ptr1 ;struct sell *ptr2 ;system ("cis");if (fp =fopen("销售信息文件.txt" ,"w")= NULLprintf("销售信息文件无法生成!n");exit (0);if (qq!=NULLfprintf (fp,&q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论