您好,欢迎访问三七文档
1湖北汽车工业学院电气与信息工程学院《C语言程序设计》课设报告项目:商品销售管理班级:姓名:成绩:2一、需求分析1、问题根据需求,该系统所应包含的信息有以下一些:商品的基本信息:商品编号,商品名称,商品产地,商品库存。顾客的基本信息:顾客代码,购买数量,销售日期根据需求,该系统所应实现的功能有以下一些:各种基本数据的录入。如:销售基本信息录入。基于各种数据的查询。例如输入张三姓名,查询顾客张三的销售信息。数据导出:将销售中信息导出到指定文件。2、系统采用C语言实现,开发环境为VC,可以运行在操作系统windows98及以上皆可。3、运行要求能不受限制的录入销售信息界面友好,操作方便,例如删除前需要提示用户是否删除容错性强,例如数据导出时,如果文件不存在需要提示用户。二、总体设计1、系统流程设计根据系统要求,设计如下的系统流程菜单显示用户输入操作判断用户选择的操作执行相应的操作退出退出32、系统模块设计根据系统的功能设计,如下模块主界面模块:完成系统菜单的显示功能选择模块:根据用户的选择,完成其相应的功能。商品信息录入:完成用户从文件读入库存信息。销售信息录入:完成用户从界面输入销售信息。根据编号查询历史:完成用户从界面输入商品编号,在系统查询符合条件的销售信息,并在界面上显示的功能。根据顾客查询历史:完成用户从界面输入顾客姓名,查询该客户的购买历史。显示顾客姓名:完成用户从界面查看所有顾客姓名。三、详细设计1、数据结构设计根据系统要求,系统中需要保存的数据有商品,销售和顾客的信息,其结构如下:数据项名称数据项系统表示数据类型数据长度备注产品编号num整型4产品名称name字符串20产品价格price浮点型4产品产地prodplace字符串40产品库存amount整型4初始1000由于知道商品有10种,则采用结构体数组来保存商品信息使用C语言创建的结构体(和结构体数组)如下:structproduction_list{intnum;charname[20];floatprice;charprodplace[40];销售系统输入顾客购买货物的信息并保存根据产品编号查询产品的销售历史计算时间段内各个产品的销售总额根据顾客姓名查询购买历史显示所有顾客的姓名读入货物当前库存信息并显示4intamount;}production[10];为了能实现不受限制的保存和查看销售信息,采用链表的结构保存销售的信息,在增加销售的基本信息时,创建一个销售的节点,将其插入到链表中,其数据结构如下:使用C语言创建的结构体如下:structsell_information{intnum;charname[10];charpro_name[20];intamount;chartime[10];structsell_information*next;};2、界面设计主界面:根据系统要求,设计一个字符界面,显示系统的菜单,为了体现友好性,将在每个菜单前显示该菜单项对应的数字用户输入菜单项前面的数字,主菜单消失,进入该模块的相应界面,进行相应的操作,完成后,回到主界面。数据项名称数据项系统表示数据类型数据长度备注顾客代码num整型4顾客姓名name字符型10产品名称pro_name字符型20销售数量amount整型4销售日期time字符型105读入产品信息界面:在光标下输入销售的信息,用空格将信息隔开销售界面:输入销售信息,保存在链表中。根据产品编号查询产品销售历史界面:6计算各个时段的销售额界面:输入起始时间和终止时间计算销售额根据顾客姓名查询购买历史界面:输入顾客姓名,即导出顾客购买信息。顾客姓名显示:7选择该功能将显示所有顾客姓名3、模块实现主界面实现:主函数中用printf(\t\t***************T1023-9徐孟玲*******************\t\t”);printf(\t\t***************T1023-9徐孟玲*******************\t\t”);printf(\t\t*\t1.读入产品当前库存信息并显示*\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*\t7.显示当前仓库信息*\n\n);printf(\t\t*\t0.退出查询系统*\n\n);printf(\t\t***********************************************\n);printf(\n\n);printf(\t\t请输入你的选择:);实现。scanf(%d,&choice);printf(\n*****************************************\n);switch(choice){case1:system(cls);Readdata();break;case2:system(cls);head=sell(head);break;case3:system(cls);getshopingdata(head);break;case4:system(cls);sell_total(head);break;case5:system(cls);getnamedata(head);break;case6:system(cls);list_custome(head);break;case7:system(cls);list_store();break;进行功能选择。模块流程:定义新节点打印主界面选择功能实现各个功能退出程序8对应函数:voidmain()读入产品当前库存模块实现:模块说明:从文件中读取已经写好的产品信息,存入数组production[10]模块流程:对应函数:voidReaddata()键盘输入顾客购买产品的信息模块实现:模块说明:从键盘按提示输入销售信息,并且存入链表中,在输入的时候调用判断函数来判断输入数据的合法性,以确保数据存储的正确性。模块流程:打开产品信息文件数据写入相应成员关闭文件回主菜单i10假真代入头结点存入结点回主菜单flag假真键入销售信息continue真假9对应函数:structsell_information*sell(structsell_information*head)判断输入信息模块实现:模块说明:对输入的数据进行合法性判断,若不合法,提示用户重新输入模块流程:对应函数:intDateAmountProname(structsell_information*p)判断编号模块:模块说明:对销售功能中输入的编号与productin[10].num进行对比,如果存在,返回1,不存在则返回0。模块流程:编号存入a[10]i=0回主菜单i10假真c=strcmp(a,production[i].namec真假flag=1flag=0代入销售信息判断编号判断日期判断每月的天数判断闰年全真有假flag=1flag=0返回flag判断库存10对应函数:intjudge_proname(char*p)判断库存量模块:模块说明:对当期仓库信息进行判断,若超出库存量返回0,否则返回1。对应函数:intjugde_amount(intamount,char*p)判断日期模块:模块说明:把日期的年月日进行分别判断,还有对每个月,以及闰年对二月的影响等做出相应的判断。库存量存入a[10]i=0回主菜单i10假真c=strcmp(a,production[i].namec真假flag=1flag=0年月日分别存入all_year,all_month,all_dayall_month=1,3,5,7,8,10,12真all_day=31all_month=2真假11对应函数:intJudge_date(char*p)intNumberDay(intComplete_year,intComplete_month,intComplete_day)intIsleapyear(intyear)根据产品编号查询产品销售历史模块:模块说明:输入产品编号,查看该产品销售的历史信息,若商品存在会显示相应信息,若不存在则会提示出错。模块流程:输入产品编号打印产品信息存在真假返回主菜单12对应函数:voidgetshopingdata(structsell_information*head)根据顾客姓名查询购买历史模块:模块说明:输入产顾客姓名,查看该顾客的购买历史信息,若鼓了存在会显示相应信息,若不存在则会提示出错。模块流程:对应函数:voidgetnamedata(structsell_information*head)计算各时间段产品销售总额模块:模块说明:输入需要查询总额的时间起始点和终止点,计算这段时间销售的总额。模块流程:sum=0输入起始日期和终止日期查找符合日期的节点sum+=对应商品销售量*价格输出sum返回主菜单13对应函数:voidgetnamedata(structsell_information*head)显示所有顾客姓名模块:四、测试结果1、录入销售测试测试数据:输入小样湖北汽车工业学院,13872839461,8241470测试结果:程序运行出现错误,如下原因电话输入的长度超过了电话表示的长度测试数据:输入张吴波湖北汽车工业学院,13872839461测试结果:程序运行正常,正确的插入到链表的最后位置sum=0输入起始日期和终止日期查找符合日期的节点sum+=对应商品销售量*价格输出sum返回主菜单14测试数据:输入:张吴波湖北汽车工业学院8241470425测试结果:程序运行不正常,可以将张吴波湖北汽车工业学院,8241470插入到链表的最后位置,但是425不能保存原因:使用了scanf(“%s”),将空格作为截止符2、修改销售测试测试数据:在系统中存在4个名称为li的销售测试结果:输入修改的姓名li,显示了第一个姓名为li的销售信息,输入修改后的信息:张吴波湖北汽车工业学院13872839461将第一个姓名为li的销售修改成功15测试数据:在系统中不存在名称为张三的销售,输入后,提示姓名不存在,如下图3、导入销售测试测试数据:输入C:\dd.tst路径(系统中不存在该文件)测试结果:提示不能打开文件,不能导入16回车后程序结束原因:不能打开文件文件使用了exit函数测试数据:输入C:\data.txt路径(系统中该文件,格式符合程序要求)测试结果:提示能将文件中的数据正确导入data.txt的文件内容如下:17测试数据:输入C:\data1.txt路径(系统中该文件,格式不符合程序要求)测试结果:提示能将文件中的数据正确导入,但导入的数据不正确查询结果,数据未正确导入12lixing88888zhangxxx1222zhouyi88999lixing88888zhangxxx1222zhouyi88999lixing88888zhangxxx1222zhouyi88999lixing88888zhangxxx1222zhouyi8899918data1.txt文件内容如下:查询模块测试:略删除模块测试略五、实训总结:实训感想对系统开发的总结(设计亮点,存在的不足,需要改进的地方)(略)六、附录程序源代码//头文件lixingzhangxxx1222zhouyizhouccccccc8899919#includestdio.h#includestdlib.h#includestring.hstructproduction_list{intnum;charname[20];floatprice;charprodplace[40];intamount;}production[10];s
本文标题:商品销售管理
链接地址:https://www.777doc.com/doc-1625521 .html