销售管理系统C语言课程设计.docx
- 文档编号:23132703
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:27
- 大小:149.26KB
销售管理系统C语言课程设计.docx
《销售管理系统C语言课程设计.docx》由会员分享,可在线阅读,更多相关《销售管理系统C语言课程设计.docx(27页珍藏版)》请在冰豆网上搜索。
销售管理系统C语言课程设计
程序设计基础及数据结构课程设计
设计题目:
销售管理系统
系(院):
经济管理学院
专业:
信息管理与信息系统
班级:
信管1121
姓名:
学号:
姓名:
学号:
姓名:
学号:
姓名:
学号:
指导教师:
学年学期:
2013~2014学年第1学期2013年12月16日
课程设计任务书
课程设计题目
商品销售管理系统
课程设计目的
(1)培养学生正确的设计思想,将理论与实际相结合,严肃认真、实事求是的科学态度和勇于探索的创新精神。
(2)培养学生综合运用所学知识与生产实践经验,分析和解决工程技术问题的能力。
(3)通过课程设计实践,建立系统设计的整体思想,锻炼编写程序、调试程序的能力,学习文档编写规范,培养独立学习、吸取他人经验、探索前言知识的习惯。
同时,C++语言程序设计课程设计可以充分弥补课堂教学及普通实验中知识深度与广度有限的缺陷,更好地帮助学生从全局角度把握课程体系。
课程设计环境
硬件:
P4以上计算机
软件:
VisualC++/TurboC
MicrosoftWindowsXP
课程设计任务和要求
任务:
用C语言对销售管理系统进行编程;
要求:
1、要充分认识C++语言程序设计课程设计的重要性,认真做好各项准备工作;既要虚心接受老师的指导,又要充分发挥主观能动性,要结合课题,独立思考,努力钻研,勤于实践,勇于创新;收集资料,自学相关知识,拓宽知识面,根据课题的基本要求,自行完成设计任务。
要按时、独立完成规定的工作任务,不弄虚作假,不抄袭他人;严格遵守学习和劳动纪律,不无故缺席,不迟到早退,不懈怠,不拖拉,要积极主动;严格要求自己,树立严肃、严密、严谨的科学态度,按时、按质、按量完成。
工作进度计划
序号
起止日期
工作内容
01
2013.12.16~2013.12.17
查找资料,熟悉操作环境,开始编写程序
02
2013.12.18~2013.12.20
编写程序,调试程序
03
2013.12.21~2013.12.23
写实验报告
指导老师签字(盖章):
年月日
目录
引言………………………………………………………………………………………………1
1需求分析……………………………………………………………………………………1
2系统设计……………………………………………………………………………………1
2.1总体方案设计……………………………………………………………………………2
2.2算法设计…………………………………………………………………………………2
2.3实现方法…………………………………………………………………………………3
2.4流程图……………………………………………………………………………………3
3代码编写……………………………………………………………………………………4
4程序运行及调试……………………………………………………………………………9
4.1程序调试…………………………………………………………………………………9
4.2运行与测试………………………………………………………………………………11
总结………………………………………………………………………………………………15
致谢………………………………………………………………………………………………16
参考文献………………………………………………………………………………………17
摘要
目前,销售管理系统在企业管理中逐步占据重要地位,企业销售管理成为企业经营管理的核心内容之一,它的特点是信息量大、更新速度快、要求信息反馈速度、准确。
销售管理系统的应用,解决了人工管理过程中的管理低下、数据部准确、管理部及时等一系列问题;进一步提高了企业经营运作的速度,提升企业的管理水平、提高企业的经济效益,事企业的销售管理更加科学、合理;使企业能够随着市场的变化而随时调整自身的销售计划,并在瞬息万变的市场竞争中立于不败之地。
随着商品因为生活,商业等方面的增多,商业的发展也日益的迅猛,由于顾客量的增多,商品出入时间的广泛,商场收益的日益增多,仅仅依靠手写的老式输入记账法,无法满足商场的需求的,同时也浪费人力和时间。
开发这个系统,目的就在于能够更好的对商品信息情况,商品销售情况,销售统计等进行精确的修改查询,以便更好的完善和更新商品销售信息。
本系统采用TurboC编写,设计一个C语言程序——销售管理系统,系统以菜单方式工作,录入信息用文件保存,修改更新相关销售信息,计算每个人每种产品的销售额,统计每种产品的总销售量,查询每种产品的销售信息。
本系统具有良好的灵活性、开放性,用户可以方便地进行信息管理,改变现在的管理内容,该系统还为客户提供了友好的界面。
关键词:
销售管理系统,信息管理,TurboC
引言
随着计算机的广泛应用以及计算机技术的迅猛发展,基于计算机的销售管理系统将逐步代替传统的管理模式。
计算机检索迅速、可靠性高、存储量大、保密性好、寿命长、成本低等优点,极大的提高了销售管理效率。
为了更高效的完成销售方面的工作,也为了有更多的时间来处理更多的别的事务,用计算机管理销售信息代替手工管理是大势所趋,企业也将因此摆脱原有的管理模式,完全进入信息化销售管理。
1需求分析
在当今全球信息化大潮流中,互联网(即因特网——Internet)异军突起,计算机发展得越加迅猛,给20世纪末的人类社会增添了无限的活力。
现今社会是信息化的大社会。
与人们的生活息息相关。
传统的手工管理方式现在已经逐渐被信息化管理所取代。
商品销售管理系统对超市商品管理有着极其重要的作用,传统的手工管理方式现在已经逐渐被信息化管理所取代,但现在大多数商品企业的销售管理,只是实现简单的电脑存储、计算操作,随着计算机的快速发展,只是简单的电脑存储、计算操作,已经不能满足企业透明化的需求。
商品销售管理系统实现的功能如下:
1.输入基本数据和销售数据:
基本数据包括产品数据,销售数据包括销售员编号、销售产品编号、销售产品数量。
2.编辑数据:
可添加、删除、修改产品数据销售数据。
3.计算:
计算每个销售员的销售总额;计算每种产品的销售数量及销售额。
4.查询:
可按销售员的编号查询销售情况;也可按产品编号查询销售情况。
5.浏览:
可浏览输入、修改或计算的数据。
6.退出:
退出系统
2系统设计
2.1总体方案设计
按系统分析的功能要求将系统划分为以下几个主要功能模块,如图2.1。
2.2算法设计
算法:
第一步:
进入系统,按界面提示选择0~6按键,进入所需要的界面。
第二步:
若选择1进入,按系统提示进行初始化并输入商品信息;若选择2进入,按系统提示对已有商品信息进行修改更新;若选择3进入,进入信息删除界面,输入商品号修改相应商品信息;若选择4进入销售量统计界面,按要求输入记录,对不同商品的销售量进行统计;若选择5进入销售量修改界面,修改不同销售员的销售量;若选择6,则进入浏览界面中,对已输入数据进行浏览;选择0则退出程序。
第三步:
完成所需要求,退出系统。
图2.1系统功能模块图
2.3实现方法
分别通过顺序结构、选择结构,按照顺序,通过判断输入数据是否满足条件进行操作,同时调用C语言本身具有的一些函数,如struct(),getch(),_sleep(),strcmp()等等函数,在关键的地方进行选择判断,从而保证系统的进行与操作正确。
2.4流程图
1、主函数main()流程图
while
(1);
clrscr();清屏幕
welcome();
输出“Pleaseselect1-6-0-menu=:
”提示选择
输入menu
switch(menu)
1
输入货物记录
2
编辑货物数据
3
删除货物记录
4
插入数量记录
5
修改数量记录
6
浏览汇总信息
0
退出
图2.2主函数流程图
2、输入数据函数voidgoods()流程图
voidgood;函数声明
clrscr();清屏幕
输出子菜单
输入NO
switch(M)
1
输入货物编号
2
输入货物名称
3
输入货物价格
ANYKEY
返回主界面
图2.3输入数据函数流程图
3、输入数据函数voidmodify()流程图
voidmodify();函数声明
clrscr();清屏幕
输出子菜单
输入NO
switch(M)
1
输入货物编号
2
输入新货物编号
3
输入新货物名称
4
输入货物新价格
ANYKEY
返回主界面
图2.4输入数据函数流程图
4、根据销售员编号来查询数据voidsearch_salID()流程图
输入要查询的销售员的编号
for(i=0;i N Y if(strcmp(sada[i].salman.ID,ID)==0) 在屏幕输出他的相关销售数据,flag=1 if(flag==0)输出"Thenumberisnotexist! " save() 图2.5查询数据流程图 3代码编写 3.1源程序 /*#include #include #include intINDEX[32]; structgoods{/*声明货物数据结构体类型*/ intid; intprice; intSM1,SM2,SM3; charname[21]; }goods[32]; 3.2Page_title()函数/*主界面函数*/ voidpage_title(char*menu_item){ clrscr(); printf("********SalesManagementSystem********\n\n-%s-\n\n",menu_item); }///*界面显示*/ 3.3return()函数/*返回函数*/ voidreturn_confirm(void){ printf("\npressanykeyreturntomenu\n");/*按任意键返回*/ getch(); }// 3.4goods()函数 voidgoods_new(void){/*货物销售记录新建*/ intn; page_title("insertgoodsinformation"); for(n=0;n<32;n++) if(goods[n].id==0)break; printf("NO: ");/*输入记录*/ scanf("%d",&goods[n].id); printf("NAME: "); scanf("%s",&goods[n].name); printf("price: "); scanf("%d",&goods[n].price); return_confirm(); }// intsearch_id(void){/*通过编号搜索货物记录*/ intn,i; printf("Pleaseinputgoodsnumber: "); scanf("%d",&i); for(n=0;n<32;n++) { if(goods[n].id==i&&goods[n].id! =0) { printf("NO: %d\n",goods[n].id);/*输入数据*/ printf("NAME: %s\n",goods[n].name); printf("price: %d\n",goods[n].price); returnn; } } printf("\nInputnoerror.\n"); return-1; }// voidgoods_del(void){/*货物销售记录删除*/ intn; page_title("Deletegoodsinformation"); if((n=search_id())! =-1) { goods[n].id=0; printf("\nGoodsbeendeleted.\n");/*提示删除成功*/ } return_confirm(); }// voidgoods_edit(void){/*货物销售记录编辑*/ intn; page_title("Editgoodsinformation"); if((n=search_id())! =-1) { printf("\nPleaseinputnewinformation: \nNo: ");/*输入新的记录*/ scanf("%d",&goods[n].id); printf("Name: "); scanf("%s",&goods[n].name); printf("Price: "); scanf("%d",&goods[n].price); } return_confirm(); }// 3.4amount()函数 voidamount_input(void){/*货物销售数量输入*/ ints,n,t; page_title("Insertsalesamount"); printf("\nPleaseselectNO\n1-SM12-SM23-SM3\n"); scanf("%d",&s); for(n=0;n<32;n++) { if(goods[n].id! =0) { printf("No: %dName: %samount: ",goods[n].id,goods[n].name); scanf("%d",&t); switch(s) { case1: goods[n].SM1=t;break; case2: goods[n].SM2=t;break; case3: goods[n].SM3=t;break; } } } return_confirm(); }// voidamount_edit(void){/*货物销售数量编辑*/ intn; page_title("Editamount"); if((n=search_id())! =-1) { printf("SM1: %dSM2: %dSM3: %d\n",goods[n].SM1,goods[n].SM2,goods[n].SM3); printf("\nPleaseinputnewamount: \nSM1: "); scanf("%d",&goods[n].SM1); printf("SM2: "); scanf("%d",&goods[n].SM2); printf("SM3: "); scanf("%d",&goods[n].SM3); } return_confirm(); }// 3.5sort()函数/*对销售数据进行排序整合*/ voidsort_it(charnn){ intn,m,p,x,t[32]; for(n=0;n<32;n++) { switch(nn) { case'1': t[n]=goods[n].id;break;/*货物编号显示*/ case'2': t[n]=goods[n].SM1;break;/*销售员销售记录的汇总与显示*/ case'3': t[n]=goods[n].SM2;break; case'4': t[n]=goods[n].SM3;break; case'5': t[n]=goods[n].SM1+goods[n].SM2+goods[n].SM3;break; } } for(n=0;n<32;n++) { x=0; p=-1; for(m=0;m<32;m++) { if(t[m]>x) { x=t[m]; p=m; } } t[p]=-1; INDEX[n]=p; } }// 3.6browser()函数/*浏览基本信息和销售数据*/ voidbrowser(void){ intn,x; chark; sort_it('1'); while (1) { page_title("BROWSE"); printf("Pleaseselectthenumberofsort\n"); printf("No\tName\tPrice\tSM1\tSM2\tSM3\tsum\n");/*信息汇总与显示*/ for(n=0;n<32;n++) { if(INDEX[n]! =-1) { x=INDEX[n]; printf("%d\t%s\t",goods[x].id,goods[x].name);/*所有信息的汇总显示*/ printf("%d\t%d\t",goods[x].price,goods[x].SM1); printf("%d\t%d\t",goods[x].SM2,goods[x].SM3); printf("%d\n",goods[x].SM1+goods[x].SM2+goods[x].SM3); } } k=getch(); if(k<'6'&&k>'0')sort_it(k); elseif(k=='0')break; elsecontinue; } }// 3.7main()函数/*主函数*/ voidmain(void){ menu: page_title("MENU"); printf("Pleaseinputthenumber\n\n"); printf("1INSERTGOODS\n2MODIFYGOODS\n"); printf("3DELETEGOODS\n4INPUTGOODSAMOUNT\n5MODIFYGOODSAMOUNT\n"); printf("6BROWSEGOODSINFORMATION\n0EXIT\n"); switch(getch()) { case'1': goods_new();break;/*输入销售货物记录*/ case'2': goods_edit();break;/*编辑销售货物记录*/ case'3': goods_del();break;/*删除销售货物记录*/ case'4': amount_input();break;/*输入销售数量记录*/ case'5': amount_edit();break;/*编辑销售数量记录*/ case'6': browser();break;/*浏览汇总信息*/ case'0': exit(0);/*退出*/ } gotomenu; } 4程序运行及调试 4.1程序调试 先进行人工检查,即静态检查。 在写好一个程序以后,不要匆匆忙忙上机,而应对纸面上的程序进行人工检查。 这一步是十分重要的,它能发现程序设计人员由于疏忽而造成的多数错误。 为了更有效地进行人工检查,所编的程序应注意力求做到以下几点: 应当采用结构化程序方法编程,以增加可读性;尽可能多加注释,以帮助理解每段程序的作用;在编写复杂的程序时不要将全部语句都写在main函数中,而要多利用函数,用一个函数来实现一个单独的功能。 这样既易于阅读也便于调试,各函数之间除用参数传递数据这一渠道以外,数据间尽量少出现耦合关系,便于分别检查和处理。 在人工检查无误后,才可以上机调试。 通过上机发现错误称动态检查。 在编译时给出语法错误的信息,可以根据提示的信息具体找出程序中出错之处并改正之。 应当注意的是有时提示的出错并不是真正出错的行,如果在提示出错的行上找不到错误的话应当到上一行再找。 有时提示出错的类型并非绝对准确,由于出错的情况繁多各种错误互有关联,因止要善于分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。 如果系统提示的出错信息多,应当从上到下一一改正。 有时显示出一大片出错信息往往使人感到问题严重,无从下手。 其实可能只有一二个错误。 在改正语法错误后,程序经过连接就得到可执行的目标程序。 运行程序,输入程序所需数据,就可得到运行结果。 应当对运行结果作分析。 看它是否符合要求。 有时,数据比较复杂,难以立即判断结果是否正确。 可以事先考虑好一批“试验数据”,输入这些数据可以得出容易判断正确与否的结果。 可以在计算的输出结果的程序地方加入一段输出到串口的程序,利用串口窗口可以方便看到结果的,比仿真的都好和直观。 必须考虑周全。 事实上,当程序复杂时很难把所有的可能方案全部都试到,选择典型的情况作试验即可。 运行结果不对,大多属于逻辑错误。 对这类错误往往需要仔细检查和分析才能发现。 可以采用以下办法: 1.将程序与流程图仔细对照,如果流程图是正确的话,程序写错了,是很容易发现的。 2.如果实在找不到错误,可以采用“分段检查”的方法。 在程序不同的位置设几个printf函数语句,输出有关变量的值,往下检查。 直到找到在哪一段中数据不对为止。 这时就已经把错误局限在这一段中了。 不断减小“查错区”,就可能发现错误所在。 3.也可以用“条件编译”命令进行程序调试(在程序调试阶段,若干printf函数语句就要进行编译并执行。 当调试完毕,这些语句不要再编译了,也不再被执行了)。 这种方法可以不必一一去printf函数语句,以提高效率。 4.如果在程序中没有发现问题,就要检查流程图有无错误,即算法有无问题,如有则改正之,接着修改程序。 5.有的系统还提供debug工具,跟踪流程并给出相应信息,使用更为方便。 总之,程序调试是一项细致深入的工作,需要下功夫,动脑子,善于累积经验。 在程序调试过程中往往反映出一个人的水平,经验和科学态度。 希望读者能给以足够的重视。 上机调试程序的目的决不是为了“验证程序的正确”,而是“掌握调试的方法和技术”,不要一直依赖仿真器来解决,要学会自己找问题,这样慢慢自己就会写出错误较少的实用的程序。 4.2运行与测试 4.2.1主菜单显示界面 图4.1主菜单界面 输入1则执行输入产品数据的功能 输入2则执行修改产品数据的功能 输入3则执行删除产品数据的功能 输入4则执行输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 销售 管理 系统 语言 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)