销售管理系统课程设计
程序设计基础及数据结构课程设计
设计题目: 销售管理系统 系(院): 经济管理学院
专 业: 信息管理与信息系统
班 级: 信管 姓 名: 学 号: 姓 名: 学 号: 姓 名: 学 号: 姓 名: 学 号:
指导教师:
学年学期: 第学期
月日
课程设计任务书
目 录
引言 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„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
摘 要
目前,销售管理系统在企业管理中逐步占据重要地位,企业销售管理成为企业经营管理的核心内容之一,它的特点是信息量大、更新速度快、要求信息反馈速度、准确。销售管理系统的应用,解决了人工管理过程中的管理低下、数据部准确、管理部及时等一系列问题;进一步提高了企业经营运作的速度,提升企业的管理水平、提高企业的经济效益,事企业的销售管理更加科学、合理;使企业能够随着市场的变化而随时调整自身的销售计划,并在瞬息万变的市场竞争中立于不败之地。随着商品因为生活,商业等方面的增多,商业的发展也日益的迅猛,由于顾客量的增多,商品出入时间的广泛,商场收益的日益增多,仅仅依靠手写的老式输入记账法,无法满足商场的需求的,同时也浪费人力和时间。开发这个系统,目的就在于能够更好的对商品信息情况,商品销售情况,销售统计等进行精确的修改查询,以便更好的完善和更新商品销售信息。本系统采用Turbo C编写, 设计一个C 语言程序——销售管理系统,系统以菜单方式工作,录入信息用文件保存,修改更新相关销售信息,计算每个人每种产品的销售额,统计每种产品的总销售量,查询每种产品的销售信息。本系统具有良好的灵活性、开放性,用户可以方便地进行信息管理,改变现在的管理内容,该系统还为客户提供了友好的界面。
关键词:销售管理系统,信息管理,Turbo C
引 言
随着计算机的广泛应用以及计算机技术的迅猛发展,基于计算机的销售管理系统将逐步代替传统的管理模式。计算机检索迅速、可靠性高、存储量大、保密性好、寿命长、成本低等优点,极大的提高了销售管理效率。为了更高效的完成销售方面的工作,也为了有更多的时间来处理更多的别的事务,用计算机管理销售信息代替手工管理是大势所趋,企业也将因此摆脱原有的管理模式,完全进入信息化销售管理。
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()流程图
图2.2 主函数流程图
2、输入数据函数void goods()流程图
图2.3 输入数据函数流程图
3、输入数据函数void modify()流程图
图2.4 输入数据函数流程图
4、根据销售员编号来查询数据 void search_salID()流程图
3 代码编写
3.1 源程序
/*#include /*I/O函数*/
#include /*其他说明——主要是为了应用exit()函数*/ #include */ /*屏幕操作函数*/ int INDEX[32];
struct goods{ /*声明货物数据结构体类型*/ int id; int price;
int SM1,SM2,SM3; char name[21]; }goods[32];
3.2 Page_title()函数 /*主界面函数*/
void page_title(char *menu_item){ clrscr();
printf("******** Sales Management System ********\n\n- %s -\n\n",menu_item); }// /*界面显示*/
3.3 return()函数 /*返回函数*/
void return_confirm(void){
printf("\npress any key return to menu\n"); /*按任意键返回*/ getch(); }//
3.4 goods()函数
void goods_new(void){ /*货物销售记录新建*/ int n;
page_title("insert goods information"); for(n=0;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(); }//
int search_id(void){ /*通过编号搜索货物记录*/ int n,i;
printf("Please input goods number:"); scanf("%d",&i); for(n=0;n
printf("\nInput no error.\n"); return -1; }//
void goods_del(void){ /*货物销售记录删除*/ int n;
page_title("Delete goods information"); if((n=search_id())!=-1) { goods[n].id=0; printf("\nGoods been deleted.\n"); /*提示删除成功*/
}
return_confirm(); }//
void goods_edit(void){ /*货物销售记录编辑*/ int n;
page_title("Edit goods information"); if((n=search_id())!=-1) { printf("\nPlease input new information:\nNo:"); /*输入新的记录*/ scanf("%d",&goods[n].id); printf("Name:"); scanf("%s",&goods[n].name); printf("Price:"); scanf("%d",&goods[n].price); }
return_confirm(); }//
3.4 amount()函数
void amount_input(void){ /*货物销售数量输入*/ int s,n,t;
page_title("Insert sales amount");
printf("\nPlease select NO\n1-SM1 2-SM2 3-SM3\n"); scanf("%d",&s); for(n=0;n
return_confirm(); }//
void amount_edit(void){ /*货物销售数量编辑*/ int n;
page_title("Edit amount"); if((n=search_id())!=-1) { printf("SM1:%d SM2:%d SM3:%d\n",goods[n].SM1,goods[n].SM2,goods[n].SM3); printf("\nPlease input new amount:\nSM1:"); scanf("%d",&goods[n].SM1); printf("SM2:"); scanf("%d",&goods[n].SM2); printf("SM3:"); scanf("%d",&goods[n].SM3); }
return_confirm(); }//
3.5 sort()函数 /*对销售数据进行排序整合*/
void sort_it(char nn){
}//
int n,m,p,x,t[32]; for(n=0;n
for(n=0;nx) { x=t[m]; p=m; } } t[p]=-1; INDEX[n]=p; }
3.6 browser()函数 /*浏览基本信息和销售数据*/
void browser(void){ int n,x; char k; sort_it('1'); while(1) { page_title("BROWSE"); printf("Please select the number of sort\n"); printf("No\tName\tPrice\tSM1\tSM2\tSM3\tsum\n"); /*信息汇总与显示*/ for(n=0;n
显示*/ } }//
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'0') sort_it(k); else if(k=='0') break; else continue;
3.7 main()函数 /*主函数*/
void main(void){ menu: page_title("MENU");
printf("Please input the number\n\n");
printf("1 INSERT GOODS\n2 MODIFY GOODS\n");
printf("3 DELETE GOODS\n4 INPUT GOODS AMOUNT\n5 MODIFY GOODS AMOUNT\n");
printf("6 BROWSE GOODS INFORMATION\n0 EXIT\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); /*退出*/ }
goto menu; }
4 程序运行及调试
4.1 程序调试
先进行人工检查,即静态检查。在写好一个程序以后,不要匆匆忙忙上机,而应对纸面上的程序进行人工检查。这一步是十分重要的,它能发现程序设计人员由于疏忽而造成的多数错误。
为了更有效地进行人工检查,所编的程序应注意力求做到以下几点:应当采用结构化程序方法编程,以增加可读性;尽可能多加注释,以帮助理解每段程序的作用;在编写复杂的程序时不要将全部语句都写在main 函数中,而要多利用函数,用一个函数来实现一个单独的功能。这样既易于阅读也便于调试,各函数之间除用参数传递数据这一渠道以外,数据间尽量少出现耦合关系,便于分别检查和处理。
在人工检查无误后,才可以上机调试。通过上机发现错误称动态检查。在编译时给出语法错误的信息,可以根据提示的信息具体找出程序中出错之处并改正之。应当注意的是有时提示的出错并不是真正出错的行,如果在提示出错的行上找不到错误的话应当到上一行再找。有时提示出错的类型并非绝对准确,由于出错的情况繁多各种错误互有关联,因止要善于分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。
如果系统提示的出错信息多,应当从上到下一一改正。有时显示出一大片出错信息往往使人感到问题严重,无从下手。其实可能只有一二个错误。 在改正语法错误后,程序经过连接就得到可执行的目标程序。运行程序,输入程序所需数据,就可得到运行结果。应当对运行结果作分析。看它是否符合要求。
有时,数据比较复杂,难以立即判断结果是否正确。可以事先考虑好一批“试验数据”,输入这些数据可以得出容易判断正确与否的结果。可以在计算的输出结果的程序地方加入一段输出到串口的程序,利用串口窗口可以方便看到结果的,比仿真的都好和直观。必须考虑周全。
事实上,当程序复杂时很难把所有的可能方案全部都试到,选择典型的情况作试验即可。
运行结果不对,大多属于逻辑错误。对这类错误往往需要仔细检查和分析才能发现。可以采用以下办法:
1. 将程序与流程图仔细对照,如果流程图是正确的话,程序写错了,是很容易发现的。
2. 如果实在找不到错误,可以采用“分段检查”的方法。在程序不同的位置设几个printf 函数语句,输出有关变量的值,往下检查。直到找到在哪一段中数据不对为止。这时就已经把错误局限在这一段中了。不断减小“查错区”,就可能发现错误所在。
3. 也可以用“条件编译”命令进行程序调试(在程序调试阶段,若干printf 函数语句就要进行编译并执行。当调试完毕,这些语句不要再编译了,也不再被执行了)。这种方法可以不必一一去printf 函数语句,以提高效率。
4. 如果在程序中没有发现问题,就要检查流程图有无错误,即算法有无问题,如有则改正之,接着修改程序。
5. 有的系统还提供debug 工具,跟踪流程并给出相应信息,使用更为方便。 总之,程序调试是一项细致深入的工作,需要下功夫,动脑子,善于累积经验。在程序调试过程中往往反映出一个人的水平,经验和科学态度。希望读者能给以足够的重视。上机调试程序的目的决不 是为了“验证程序的正确”,而是“掌握调试的方法和技术”,不要一直依赖仿真器来解决,要学会自己找问题,这样慢慢自己就会写出错误较少的实用的程序。
4.2 运行与测试
4.2.1 主菜单显示界面
图4.1 主菜单界面
输入1 则执行输入产品数据的功能 输入2 则执行修改产品数据的功能 输入3 则执行删除产品数据的功能 输入4 则执行输入商品销量的功能 输入5 则执行修改产品销量的功能 输入6 则执行浏览产品销量的功能 输入0 则退出
4.2.2 输入产品数据函数的显示界面
图4.2 输入产品信息
输入成功后,按任意键返回子主菜单。
4.2.3 修改产品数据界面
图4.3 修改产品信息
修改成功后,按任意键返回子主菜单。
4.2.4 删除产品数据界面
图4.4 删除产品信息
删除成功后,按任意键返回子主菜单。
4.2.5 输入销售数据界面
图4.5 输入销售数据
输入成功后,按任意键返回子主菜单。
4.2.6 修改销售数据界面
图4.6 修改销售数据
修改成功后,按任意键返回子主菜单。
4.6.7 销售信息浏览
图4.7 浏览销售信息
总 结
该系统以商品销售管理为背景,实现了管理的多种功能,并且有一定的可行性和安全性,确保了各项指定功能得以运行。本系统以基本函数、结构体、枚举性、文件以及链表等多方位知识贯穿实现。通过此次程序设计实践,可以对所学知识的综合运用,也是程序设计得以提高的表现。通过此次编程培养了我结构化程序设计的思想,加深了对高级语言基本语言要素和控制结构的理解,锻炼我独立思考制作程序的能力,并且掌握了一些课程设计的相关知识与实践操作能力,为以后的学习提供了锻炼的机会。课程设计过程中,我们对很多的函数有了新的认识,也学会了运用多种函数,也明白了编写软件的基本过程和基本方法。编码过程中我们又学到了曾经自己不知道的函数或是自己不会的函数的用法,从而使我对c 语言这门课程有了更好的了解。经过设计和开发,销售管理系统基本开发完毕,对于数据的一致性的问题也通过程序进行了有效的解决,但是由于设计时间较短,所以该系统还有许多不尽如人意的地方,有待进一步改善。
致 谢
在编写程序的过程中,我们得到了董绍斌老师的精心指导以及孜孜不倦的教诲,在老师的指导下,我们的能力得到了提高,同时养成了科学、严谨的作风和习惯,在此,我们对老师的精心栽培表示衷心的感谢!感谢我们小组同学对我的帮助和指点,在生活和学习上帮我许多忙。在课程设计即将完成之际,我的心情无法平静,从开始进入课题到课程设计的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意。
参 考 文 献 1. 王城端、魏先民. 《C 语言程序设计实训》. 中国水利水电出版社 ,2005年
2. 谭浩强. 《C 程序设计(第三版)》. 清华大学出版社, 2005
3. 谭浩强. 《C 程序设计题解与上机指导(第三版)》. 清华大学出版社, 2005 4. 廖湖声.C 程序设计案例教程.人民邮电出版社,2010.9
5. 何钦铭.C 语言程序设计.高等教育出版社,2009.5.
6. 谭浩强.C 程序设计(第2、3、4版).清华大学出版社,2000.1.
7. 杨路明. 《C 语言程序设计教程》. 北京邮电大学出版社.
8. 谭浩强.C 语言程序设计. 清华大学出版社,1999
9. 谭浩强.C 程序设计题解与上机指导. 清华大学出版社,1999