某学院销售管理课件设计分析报告.docx

上传人:牧羊曲112 文档编号:2028104 上传时间:2023-01-02 格式:DOCX 页数:30 大小:339.49KB
返回 下载 相关 举报
某学院销售管理课件设计分析报告.docx_第1页
第1页 / 共30页
某学院销售管理课件设计分析报告.docx_第2页
第2页 / 共30页
某学院销售管理课件设计分析报告.docx_第3页
第3页 / 共30页
某学院销售管理课件设计分析报告.docx_第4页
第4页 / 共30页
某学院销售管理课件设计分析报告.docx_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《某学院销售管理课件设计分析报告.docx》由会员分享,可在线阅读,更多相关《某学院销售管理课件设计分析报告.docx(30页珍藏版)》请在三一办公上搜索。

1、30湖北汽车工业学院电气与信息工程学院 C语言程序设计课设报告 项目: 商品销售管理 班级: 姓名: 成绩: 一、需求分析1、问题根据需求,该系统所应包含的信息有以下一些:商品的基本信息:商品编号,商品名称,商品产地,商品库存。顾客的基本信息:顾客代码,购买数量,销售日期根据需求,该系统所应实现的功能有以下一些:各种基本数据的录入。如:销售基本信息录入。基于各种数据的查询。例如输入张三姓名,查询顾客张三的销售信息。数据导出:将销售中信息导出到指定文件。2、系统 采用C语言实现,开发环境为VC,可以运行在操作系统windows98及以上皆可。3、运行要求 能不受限制的录入销售信息 界面友好,操作

2、方便,例如删除前需要提示用户是否删除 容错性强,例如数据导出时,如果文件不存在需要提示用户。 二、总体设计1、系统流程设计根据系统要求,设计如下的系统流程2、系统模块设计根据系统的功能设计,如下模块销售系统输入顾客购买货物的信息并保存根据产品编号查询产品的销售历史计算时间段内各个产品的销售总额根据顾客姓名查询购买历史显示所有顾客的姓名读入货物当前库存信息并显示主界面模块:完成系统菜单的显示功能选择模块:根据用户的选择,完成其相应的功能。商品信息录入:完成用户从文件读入库存信息。销售信息录入:完成用户从界面输入销售信息。根据编号查询历史:完成用户从界面输入商品编号,在系统查询符合条件的销售信息,

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

4、20;float price;char prodplace40;int amount;production10;为了能实现不受限制的保存和查看销售信息,采用链表的结构保存销售的信息,在增加销售的基本信息时,创建一个销售的节点,将其插入到链表中,其数据结构如下:数据项名称数据项系统表示数据类型数据长度备注顾客代码num整型4顾客姓名name字符型10产品名称pro_name字符型20销售数量amount整型4销售日期time字符型10使用C语言创建的结构体如下:struct sell_information int num;char name10;char pro_name20;int amou

5、nt; char time10; struct sell_information *next;2、界面设计主界面:根据系统要求,设计一个字符界面,显示系统的菜单,为了体现友好性,将在每个菜单前显示该菜单项对应的数字用户输入菜单项前面的数字,主菜单消失,进入该模块的相应界面,进行相应的操作,完成后,回到主界面。读入产品信息界面: 在光标下输入销售的信息,用空格将信息隔开销售界面:输入销售信息,保存在链表中。根据产品编号查询产品销售历史界面:计算各个时段的销售额界面: 输入起始时间和终止时间计算销售额根据顾客姓名查询购买历史界面:输入顾客姓名,即导出顾客购买信息。顾客姓名显示:选择该功能将显示所有

6、顾客姓名3、模块实现主界面实现:主函数中用printf(tt*T1023-9徐孟玲*tt”);printf(tt*T1023-9徐孟玲*tt”);printf(tt*t1.读入产品当前库存信息并显示 *nn);printf(tt*t2.键盘输入顾客购买产品的信息并保存 *nn);printf(tt*t3.根据产品编号查询产品销售历史 *nn);printf(tt*t4.计算各时间段产品销售总额 *nn);printf(tt*t5.根据顾客姓名查询购买历史 *nn);printf(tt*t6.显示所有顾客姓名 *nn);printf(tt*t7.显示当前仓库信息 *nn);printf(tt*t

7、0.退出查询系统 *nn);printf(tt*n);printf(nn);printf(tt请输入你的选择:);实现。scanf(%d,&choice);printf(n*n);switch(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(

8、head);break;case 6:system(cls);list_custome(head);break;case 7:system(cls);list_store();break;进行功能选择。定义新节点打印主界面选择功能实现各个功能退出程序模块流程:对应函数:void main()读入产品当前库存模块实现:模块说明:从文件中读取已经写好的产品信息,存入数组production10模块流程:打开产品信息文件数据写入相应成员关闭文件回主菜单i10假真 对应函数:void Readdata()键盘输入顾客购买产品的信息模块实现:模块说明:从键盘按提示输入销售信息,并且存入链表中,在输入的时

9、候调用判断函数来判断输入数据的合法性,以确保数据存储的正确性。模块流程:代入头结点存入结点回主菜单flag假真键入销售信息continue真假对应函数:struct sell_information * sell(struct sell_information *head)判断输入信息模块实现:模块说明:对输入的数据进行合法性判断,若不合法,提示用户重新输入模块流程:代入销售信息判断编号判断日期判断每月的天数判断闰年全真有假flag=1flag=0返回flag判断库存对应函数:int DateAmountProname(struct sell_information *p)判断编号模块:模块说

10、明:对销售功能中输入的编号与productin10.num进行对比,如果存在,返回1,不存在则返回0。编号存入a10i=0回主菜单i10假真c= strcmp(a,productioni.namec真假flag=1flag=0模块流程:对应函数:int judge_proname(char *p)判断库存量模块:模块说明:对当期仓库信息进行判断,若超出库存量返回0,否则返回1。库存量存入a10i=0回主菜单i10假真c= strcmp(a,productioni.namec真假flag=1flag=0对应函数:int jugde_amount(int amount,char *p)判断日期模块

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

12、int year)根据产品编号查询产品销售历史模块:模块说明:输入产品编号,查看该产品销售的历史信息,若商品存在会显示相应信息,若不存在则会提示出错。模块流程:输入客户姓名打销售信息存在真假返回主菜单输入产品编号打印产品信息存在真假返回主菜单对应函数:void getshopingdata(struct sell_information *head)根据顾客姓名查询购买历史模块:模块说明:输入产顾客姓名,查看该顾客的购买历史信息,若鼓了存在会显示相应信息,若不存在则会提示出错。模块流程:对应函数:void getnamedata(struct sell_information *head)计算

13、各时间段产品销售总额模块:模块说明:输入需要查询总额的时间起始点和终止点,计算这段时间销售的总额。模块流程:sum=0输入起始日期和终止日期查找符合日期的节点sum+=对应商品销售量*价格输出sum返回主菜单对应函数:void getnamedata(struct sell_information *head)显示所有顾客姓名模块:sum=0输入起始日期和终止日期查找符合日期的节点sum+=对应商品销售量*价格输出sum返回主菜单四、测试结果1、录入销售测试 测试数据:输入小样 湖北汽车工业学院, 13872839461,8241470 测试结果:程序运行出现错误,如下 原因 电话输入的长度超

14、过了电话表示的长度测试数据:输入张吴波 湖北汽车工业学院, 13872839461测试结果:程序运行正常,正确的插入到链表的最后位置测试数据:输入:张吴波 湖北汽车工业学院 8241470 425测试结果:程序运行不正常,可以将张吴波 湖北汽车工业学院, 8241470插入到链表的最后位置,但是425不能保存原因:使用了scanf(“%s”),将空格作为截止符2、修改销售测试 测试数据:在系统中存在4个名称为li的销售 测试结果:输入修改的姓名 li ,显示了第一个姓名为li的销售信息,输入修改后的信息:张吴波 湖北汽车工业学院 13872839461将第一个姓名为li的销售修改成功测试数据:

15、在系统中不存在名称为张三的销售,输入后,提示姓名不存在,如下图3、导入销售测试 测试数据:输入C:dd.tst路径(系统中不存在该文件) 测试结果:提示不能打开文件,不能导入回车后程序结束原因:不能打开文件文件使用了exit函数测试数据:输入C:data.txt路径(系统中该文件,格式符合程序要求)测试结果:提示能将文件中的数据正确导入data.txt的文件内容如下:12li xing 88888 zhang xxx 1222 zhou yi 88999 li xing 88888 zhang xxx 1222 zhou yi 88999 li xing 88888 zhang xxx 122

16、2 zhou yi 88999 li xing 88888 zhang xxx 1222 zhou yi 88999 测试数据:输入C:data1.txt路径(系统中该文件,格式不符合程序要求)测试结果:提示能将文件中的数据正确导入,但导入的数据不正确查询结果,数据未正确导入data1.txt文件内容如下:li xing zhang xxx 1222 zhou yi zhou ccccccc 88999 查询模块测试: 略删除模块测试 略五、实训总结: 实训感想对系统开发的总结(设计亮点,存在的不足,需要改进的地方)(略)六、附录程序源代码/头文件#include#include#includ

17、estruct production_listint num; char name20; float price; char prodplace40; int amount;production10;struct timeint year;int month;int day;ymd;struct sell_informationchar name10;char pro_name20;int amount; char time10;/*(2009-01-02)*/ struct sell_information *next;/*链表指针指向下一个*/;void Readdata();struct

18、 sell_information * sell(struct sell_information *head);void getnamedata(struct sell_information *head);void getshopingdata(struct sell_information *head);int n10=1000,1000,1000,1000,1000,1000,1000,1000,1000,1000;int DateAmountProname(struct sell_information *p);/*1.读入货物当前库存信息并显示*/void Readdata()FIL

19、E *fp; int i=0;if(fp=fopen(productions information.txt,r)=NULL)printf(文件打开错误!n);exit(0);while(inext!=NULL)p1=(struct sell_information *)malloc (sizeof (struct sell_information);p3=head-next; head-next=p1;p1-next=p3;elsep3=p1=p2=(struct sell_information *)malloc (sizeof (struct sell_information);head

20、-next=p1; p2-next=NULL;doprintf(tttt请输入顾客信息:n); printf(*n); printf(请输入顾客姓名t:); scanf(%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);scanf(%d,&n);

21、 else printf(输入错误!请重新输入!); if(n=0) break;while(1);printf(*n);printf(如果想停止购买,请按0,如果要继续入库,请按其它数字键n);scanf(%d,&m);if(m=0)break;while(1);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(Jud

22、ge_date(p-time)&judge_proname(p-pro_name)&jugde_amount(p-amount,p-pro_name)return 1;else return 0;/*判断编号*/int judge_proname(char *p)int i=0,flag;char a10;while(*p)ai+=*p+; ai=0; for(i=0;i10;i+) if(strcmp(a,productioni.name)=0) flag=1; break; if(i=10)flag=0;return flag;int jugde_amount(int amount,cha

23、r *p) int i=0;int flag;char a10;while(*p)ai+=*p+; ai=0;for(i=0;i0)return 1;elsereturn 0;/*判断日期是否合法*/int Judge_date(char *p) int i=0; char s5; char m3; char n3;int NumberDay(int Complete_year,int Complete_month,int Complete_day);int all_year;int all_month;int all_day;char date10;while(*p)datei+=*p+;

24、datei=0; if(i=10 & date4=- & date7=-) for(i=0; i4; i+ ) si=datei;si=0; all_year=atoi(s); /*把前4位保存到年里*/ for(i=5; i7; i+ ) mi-5=datei;mi-5=0; all_month=atoi(m); /*把第5-7位转化保存到月成员中*/ for(i=8; i10; i+ ) ni-8=datei;ni-8=0; all_day=atoi(n); /*把后两位保存到日成员中*/ else printf(日期格式有误请从新输入!n); return 0; if(NumberDay

25、(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 t13=0,31,28,31,30,31,30,31,31,30,31,30,31; /*定义数组*/if(Isleapyear(Complete_year)if(Complete_mo

26、nth!=2)if(Complete_month=12&Complete_day=tComplete_month)return 1;elsereturn 0;elseif(Complete_month=12&Complete_day=tComplete_month+1)return 1;else return 0;elseif(Complete_month=12&Complete_daynext;else printf(产品代号不存在!); while(p1!=NULL)/*链表的遍历过程*/if(strcmp(s,p1-pro_name)=0) printf(*n);printf(tttt顾

27、客购买信息为n);printf(顾客姓名: 产品名称: 购物数量: 购物时间:n); printf(%-10s%-20s%-10d%-10sn,p1-name,p1-pro_name,p1-amount,p1-time);printf(*n);elseprintf(产品未出售,没有销售记录!);p1=p1-next;int Judge_proname(int p, char *b) int i;int flag=0; for(i=0;i10;i+) if(productioni.num=p)flag=1;strcpy(b,productioni.name); break;return flag

28、;/*4.计算各时间段产品销售总额*/void sell_total(struct sell_information *head)struct sell_information *p1=head;int s_year,s_month,s_day,e_year,e_month,e_day,i,j;char s5;char m3;char n3;int all_year;int all_month;int all_day;char date10;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!=NULL)/*链表的遍历过程*/ for(i=0; itimei; for(i=0; i4; i+ ) si=datei;si=0; all_year=atoi(s); /*把前4位保存到年里*/ for(i=5; i7; i+ ) mi-5=datei;mi-5=0; all_month=atoi(m); /*把第5-7位转化保存到月成员中*/ for(i=8; is_year&all_yeare_year|all_year

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号