ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:168.60KB ,
资源ID:8898462      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8898462.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(商品销售管理.docx)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

商品销售管理.docx

1、湖北汽车工业学院电气与信息工程学院         《C语言程序设计》 课设报告     项目: 商品销售管理 班级: 姓名: 成绩:       一、需求分析 1、问题 根据需求,该系统所应包含的信息有以下一些: 商品的基本信息: 商品编号,商品名称,商品产地,商品库存。 顾客的基本信息: 顾客代码,购买

2、数量,销售日期 根据需求,该系统所应实现的功能有以下一些: 各种基本数据的录入。如:销售基本信息录入。 基于各种数据的查询。例如输入张三姓名,查询顾客张三的销售信息。 数据导出:将销售中信息导出到指定文件。 2、系统 采用C语言实现,开发环境为VC,可以运行在操作系统windows98及以上皆可。 3、运行要求 能不受限制的录入销售信息 界面友好,操作方便,例如删除前需要提示用户是否删除 容错性强,例如数据导出时,如果文件不存在需要提示用户。 二、总体设计 1、系统流程设计 根据系统要求,设计如下的系统流程 2、系统模块

3、设计 根据系统的功能设计,如下模块 销售系统 输入顾客购买货物的信息并保存 根据产品编号查询产品的销售历史 计算时间段内各个产品的销售总额 根据顾客姓名查询购买历史 显示所有顾客的姓名 读入货物当前库存信息并显示 主界面模块:完成系统菜单的显示 功能选择模块:根据用户的选择,完成其相应的功能。 商品信息录入:完成用户从文件读入库存信息。 销售信息录入:完成用户从界面输入销售信息。 根据编号查询历史:完成用户从界面输入商品编号,在系统查询符合条件的销售信息,并在界面上显示的功能。 根据顾客查询历史

4、完成用户从界面输入顾客姓名,查询该客户的购买历史。显示顾客姓名:完成用户从界面查看所有顾客姓名。 三、详细设计 1、数据结构设计 根据系统要求,系统中需要保存的数据有商品,销售和顾客的信息,其结构如下: 数据项名称 数据项系统表示 数据类型 数据长度 备注 产品编号 num 整型 4 产品名称 name 字符串 20 产品价格 price 浮点型 4 产品产地 prodplace 字符串 40 产品库存 amount 整型 4 初始1000 由于知道商品有10种,则采用结构体数组来保存商品信息 使用C语言创建的结构

5、体(和结构体数组)如下: struct production_list{ int num; char name[20]; float price; char prodplace[40]; int amount; }production[10]; 为了能实现不受限制的保存和查看销售信息,采用链表的结构保存销售的信息,在增加销售的基本信息时,创建一个销售的节点,将其插入到链表中,其数据结构如下: 数据项名称 数据项系统表示 数据类型 数据长度 备注 顾客代码 num 整型 4 顾客姓名 name 字符型 10 产品名称 pro_nam

6、e 字符型 20 销售数量 amount 整型 4 销售日期 time 字符型 10 使用C语言创建的结构体如下: struct sell_information{ int num; char name[10]; char pro_name[20]; int amount; char time[10]; struct sell_information *next; }; 2、界面设计 主界面: 根据系统要求,设计一个字符界面,显示系统的菜单,为了体现友好性,将在每个菜单前显示该菜单项

7、对应的数字 用户输入菜单项前面的数字,主菜单消失,进入该模块的相应界面,进行相应的操作,完成后,回到主界面。 读入产品信息界面: 在光标下输入销售的信息,用空格将信息隔开 销售界面: 输入销售信息,保存在链表中。 根据产品编号查询产品销售历史界面: 计算各个时段的销售额界面: 输入起始时间和终止时间计

8、算销售额 根据顾客姓名查询购买历史界面: 输入顾客姓名,即导出顾客购买信息。 顾客姓名显示: 选择该功能将显示所有顾客姓名 3、模块实现 主界面实现: 主函数中用 printf("\t\t***************T1023-9徐孟玲*******************\t\t”); printf("\t\t***************T1023-9徐孟玲*******************\t\t”); printf("\t\t*\t1.读入产品当前库存信息并显示

9、 *\n\n"); printf("\t\t*\t2.键盘输入顾客购买产品的信息并保存 *\n\n"); printf("\t\t*\t3.根据产品编号查询产品销售历史 *\n\n"); printf("\t\t*\t4.计算各时间段产品销售总额 *\n\n"); printf("\t\t*\t5.根据顾客姓名查询购买历史 *\n\n"); printf("\t\t*\t6.显示所有顾客姓名 *\n\n"); printf("\t\t*\t

10、7.显示当前仓库信息 *\n\n"); printf("\t\t*\t0.退出查询系统 *\n\n"); printf("\t\t***********************************************\n"); printf("\n\n"); printf("\t\t请输入你的选择:"); 实现。 scanf("%d",&choice); printf("\n*****************************************\n"); sw

11、itch(choice){ case 1:system("cls");Readdata();break; case 2:system("cls");head=sell(head);break; case 3:system("cls");getshopingdata(head);break; case 4:system("cls");sell_total(head);break; case 5:system("cls");getnamedata(head);break; case 6:system("cls");list_custome(head);break; case 7:sy

12、stem("cls");list_store();break; 进行功能选择。 定义新节点 打印主界面 选择功能 实现各个功能 退出程序 模块流程: 对应函数:void main() 读入产品当前库存模块实现: 模块说明:从文件中读取已经写好的产品信息,存入数组production[10] 模块流程: 打开产品信息文件 数据写入相应成员 关闭文件回主菜单 i<10 假 真 对应函数:void Readdata() 键盘输入顾客购

13、买产品的信息模块实现: 模块说明:从键盘按提示输入销售信息,并且存入链表中,在输入的时候调用判断函数来判断输入数据的合法性,以确保数据存储的正确性。 模块流程: 代入头结点 存入结点 回主菜单 flag 假 真 键入销售信息 continue 真 假 对应函数:struct sell_information * sell(struct sell_information *head) 判断输入信息模块实现: 模块说明:对输入的数据进行合法性判断,若不合法,提示用户重新输入 模块

14、流程: 代入销售信息 判断编号 判断日期 判断每月的天数 判断闰年 全真 有假 flag=1 flag=0 返回flag 判断库存 对应函数:int DateAmountProname(struct sell_information *p) 判断编号模块: 模块说明:对销售功能中输入的编号与productin[10].num进行对比,如果存在,返回1,不存在则返回0。 编号存入a[10] i=0 回主菜单 i<10 假 真 c= strcmp(a,production[i].name c

15、 真 假 flag=1 flag=0 模块流程: 对应函数:int judge_proname(char *p) 判断库存量模块: 模块说明:对当期仓库信息进行判断,若超出库存量返回0,否则返回1。 库存量存入a[10] i=0 回主菜单 i<10 假 真 c= strcmp(a,production[i].name c 真 假 flag=1 flag=0 对应函数:int jugde_am

16、ount(int amount,char *p) 判断日期模块: 模块说明:把日期的年月日进行分别判断,还有对每个月,以及闰年对二月的影响等做出相应的判断。 年月日分别存入all_year,all_month,all_day 回主菜单 all_month=1,3,5,7,8,10,12 假 真 all_day<=31 all_month=2 真 假 all_day<=28 all_day<=30 all_year闰年 all_day<=29 真 假 flag=1 flag=0 真 假

17、 对应函数:int Judge_date(char *p) int NumberDay(int Complete_year,int Complete_month,int Complete_day) int Isleapyear(int year) 根据产品编号查询产品销售历史模块: 模块说明:输入产品编号,查看该产品销售的历史信息,若商品存在会显示相应信息,若不存在则会提示出错。 模块流程: 输入客户姓名 打销售信息 存在 真 假 返回主菜单 输入产品编号 打印产品信息 存在

18、真 假 返回主菜单 对应函数:void getshopingdata(struct sell_information *head) 根据顾客姓名查询购买历史模块: 模块说明:输入产顾客姓名,查看该顾客的购买历史信息,若鼓了存在会显示相应信息,若不存在则会提示出错。 模块流程: 对应函数:void getnamedata(struct sell_information *head) 计算各时间段产品销售总额模块: 模块说明:输入需要查询总额的时间起始点和终止点,计

19、算这段时间销售的总额。 模块流程: sum=0 输入起始日期和终止日期 查找符合日期的节点 sum+=对应商品销售量*价格 输出sum 返回主菜单 对应函数:void getnamedata(struct sell_information *head) 显示所有顾客姓名模块: sum=0 输入起始日期和终止日期 查找符合日期的节点 sum+=对应商品销售量*价格 输出sum 返回主菜单 四、测

20、试结果 1、录入销售测试 测试数据: 输入小样 湖北汽车工业学院, 13872839461,8241470 测试结果: 程序运行出现错误,如下 原因 电话输入的长度超过了电话表示的长度 测试数据: 输入张吴波 湖北汽车工业学院, 13872839461 测试结果: 程序运行正常,正确的插入到链表的最后位置 测试数据: 输入:张吴波 湖北汽车工业学院 8241470 425 测试结果: 程序运行不正常,可以将张吴波 湖北汽车工业学院, 8241470插入到链表的最后位置,但是425不能保存 原因:使用了scanf

21、s”),将空格作为截止符 2、修改销售测试 测试数据:在系统中存在4个名称为li的销售 测试结果:输入修改的姓名 li ,显示了第一个姓名为li的销售信息,输入修改后的信息:张吴波 湖北汽车工业学院 13872839461将第一个姓名为li的销售修改成功 测试数据:在系统中不存在名称为张三的销售,输入后,提示姓名不存在,如下图 3、导入销售测试 测试数据:输入C:\dd.tst路径(系统中不存在该文件) 测试结果:提示不能打开文件,不能导入 回车后程序结束 原因:不能打开文件文件使用了exit函数 测试数据:输入

22、C:\data.txt路径(系统中该文件,格式符合程序要求) 测试结果:提示能将文件中的数据正确导入 data.txt的文件内容如下: 12 li xing 88888 zhang xxx 1222 zhou yi 88999 li xing

23、 88888 zhang xxx 1222 zhou yi 88999 li xing 88888 zhang xxx 1222 zhou

24、 yi 88999 li xing 88888 zhang xxx 1222 zhou yi 88999 测试数据:输入C:\data1.txt路径(系统中该文件,格式不符合程序要求)

25、测试结果:提示能将文件中的数据正确导入,但导入的数据不正确 查询结果,数据未正确导入 data1.txt文件内容如下: li xing zhang xxx 1222 zhou yi zhou ccccccc 88999

26、 查询模块测试: 略 删除模块测试 略 五、实训总结: 实训感想 对系统开发的总结(设计亮点,存在的不足,需要改进的地方) (略) 六、附录 程序源代码 //头文件 #include #include #include struct production_list { int num; char name[20]; float price; char prodplace[40];

27、 int amount; }production[10]; struct time { int year; int month; int day; }ymd; struct sell_information{ char name[10]; char pro_name[20]; int amount; char time[10];/*(2009-01-02)*/ struct sell_information *next;/*链表指针指向下一个*/ }; void Readdata(); struct s

28、ell_information * sell(struct sell_information *head); void getnamedata(struct sell_information *head); void getshopingdata(struct sell_information *head); int n[10]={1000,1000,1000,1000,1000,1000,1000,1000,1000,1000}; int DateAmountProname(struct sell_information *p); /*1.读入货物当前库存信息并显示*/ vo

29、id Readdata() { FILE *fp; int i=0; if((fp=fopen("productions information.txt","r"))==NULL) { printf("文件打开错误!\n"); exit(0); } while(i<10) { fscanf(fp,"%6d%s%f%s%d",&production[i].num,production[i].name,&production[i].price,production[i].prodplace,&production[i].amount);

30、 printf("%6d\t\t%s\t\t%6.2f\t\t%s\t\t%6d\n",production[i].num,production[i].name,production[i].price,production[i].prodplace,production[i].amount); i++; }; printf("\n"); if(fclose(fp)) { printf("!\n"); exit(0); } } /*2.键盘输入顾客购买货物的信息并保存*/ struct sell_information * sell(struct

31、sell_information *head) { struct sell_information *p1,*p2,*p3; int n; int m; do{ if(head->next!=NULL) { p1=(struct sell_information *)malloc (sizeof (struct sell_information)); p3=head->next; head->next=p1; p1->next=p3; } else { p3=p1=p2=(s

32、truct sell_information *)malloc (sizeof (struct sell_information)); head->next=p1; p2->next=NULL; } do { printf("\t\t\t\t请输入顾客信息:\n"); printf("*******************************************************************************\n"); printf("请输入顾客姓名\t:"); sca

33、nf("%s",&p1->name); printf("请输入顾客所购货物名称\t:"); scanf("%s",p1->pro_name); printf("请输入顾客购物数量:"); scanf("%d",&p1->amount); printf("请输入顾客购物时间:"); scanf("%s",p1->time); printf("\n"); if(DateAmountProname(p1)) { printf("输入正确!请按0继续下面的步骤!\n

34、"); scanf("%d",&n); } else printf("输入错误!请重新输入!"); if(n==0) break; }while(1); printf("*******************************************************************************\n"); printf("如果想停止购买,请按0,如果要继续入库,请按其它数字键\n"); scanf("%d",&m); if(m==0) break; }while(1)

35、 return head; } /*判断输入信息是否正确*/ int DateAmountProname(struct sell_information *p) { int Judge_date(char *p); int judge_proname(char *p); int jugde_amount(amount,pro_name); if(Judge_date(p->time)&&judge_proname(p->pro_name)&&jugde_amount(p->amount,p->pro_name)) return 1; else

36、 return 0; } /*判断编号*/ int judge_proname(char *p) { int i=0,flag; char a[10]; while(*p) a[i++]=*p++; a[i]=0; for(i=0;i<10;i++) { if(strcmp(a,production[i].name)==0) { flag=1; break; } } if(i==10) flag=0; return flag;

37、} int jugde_amount(int amount,char *p) { int i=0; int flag; char a[10]; while(*p) a[i++]=*p++; a[i]=0; for(i=0;i<10;i++) if(strcmp(a,production[i].name)==0) { flag=1; n[i]-=amount; break; } if(n[i]>0) return 1; else return 0;

38、 } /*判断日期是否合法*/ int Judge_date(char *p) { int i=0; char s[5]; char m[3]; char n[3]; int NumberDay(int Complete_year,int Complete_month,int Complete_day); int all_year; int all_month; int all_day; char date[10]; while(*p) date[i++]=*p++; date[i]=0; if(i

39、10 && date[4]=='-' && date[7]=='-') { for(i=0; i<4; i++ ) { s[i]=date[i]; } s[i]=0; all_year=atoi(s); /*把前4位保存到年里*/ for(i=5; i<7; i++ ) { m[i-5]=date[i]; } m[i-5]=0; all_month=atoi(m);

40、 /*把第5-7位转化保存到月成员中*/ for(i=8; i<10; i++ ) { n[i-8]=date[i]; } n[i-8]=0; all_day=atoi(n); /*把后两位保存到日成员中*/ } else { printf("日期格式有误请从新输入!!!\n"); return 0;

41、} if(NumberDay(all_year,all_month,all_day)) return 1; else { printf("输入的天数或年份或月份有误请从来!!!\n"); return 0; } } /*功能:判断每月的天数是否合法*/ int NumberDay(int Complete_year,int Complete_month,int Complete_day) { int Isleapyear(int year);/*判断闰年函数*/ int t[1

42、3]={0,31,28,31,30,31,30,31,31,30,31,30,31}; /*定义数组*/ if(Isleapyear(Complete_year)) { if(Complete_month!=2) { if(Complete_month<=12&&Complete_day<=t[Complete_month]) return 1; else return 0; } else { if(Complete_month<=12&&Complete_day<=t[Complete_mont

43、h]+1) return 1; else return 0; } } else { if(Complete_month<=12&&Complete_day<=t[Complete_month]) return 1; else return 0; } } /*功能:判断闰年*/ int Isleapyear(int year) { int leap; leap=((year%4==0 && year%100!=0) || year%400==0);/*闰年条件*/ re

44、turn leap; } /*3.根据产品编号查询货物销售历史*/ void getshopingdata(struct sell_information *head) { int number; char s[20]; char pro_name[20]="a"; char *b=pro_name; int Judge_proname(int p,char *); struct sell_information *p1=head; printf("请输入产品编号:"); scanf("%d",&number); if(Judge_pron

45、ame(number,b)) { strcpy(s,pro_name); printf("该代号产品的名称是:%s",s); p1->next; } else printf("产品代号不存在!"); while(p1!=NULL)/*链表的遍历过程*/ { if(strcmp(s,p1->pro_name)==0) { printf("**********************************************\n"); printf("\t\t\t\t顾客购买信息为\n");

46、printf("顾客姓名: 产品名称: 购物数量: 购物时间:\n"); printf("%-10s%-20s%-10d%-10s\n",p1->name,p1->pro_name,p1->amount,p1->time); printf("**********************************************\n"); } else printf("产品未出售,没有销售记录!"); p1=p1->next; } } int Judge_proname(int p, char *b) {

47、 int i; int flag=0; for(i=0;i<10;i++) { if(production[i].num==p) { flag=1; strcpy(b,production[i].name); break; } } return flag; } /*4.计算各时间段产品销售总额*/ void sell_total(struct sell_information *head) { struct sell_information *p1=head; int s_year,s

48、month,s_day,e_year,e_month,e_day,i,j; char s[5]; char m[3]; char n[3]; int all_year; int all_month; int all_day; char date[10]; float sum=0; printf("请输入起始日期:"); scanf("%d-%d-%d",&s_year,&s_month,&s_day); printf("请输入终止日期:"); scanf("%d-%d-%d",&e_year,&e_month,&e_day); while(p1

49、NULL)/*链表的遍历过程*/ { for(i=0; i<10; i++ ) date[i]=p1->time[i]; for(i=0; i<4; i++ ) { s[i]=date[i]; } s[i]=0; all_year=atoi(s); /*把前4位保存到年里*/ for(i=5; i<7; i++ ) { m[i-5]=date[i]; } m

50、[i-5]=0; all_month=atoi(m); /*把第5-7位转化保存到月成员中*/ for(i=8; i<10; i++ ) { n[i-8]=date[i]; } n[i-8]=0; all_day=atoi(n); /*把后两位保存到日成员中*/ if(all_year>s_year&&all_year

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服