C语言课程设计报告销售管理系统设计模板.docx
《C语言课程设计报告销售管理系统设计模板.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告销售管理系统设计模板.docx(29页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告销售管理系统设计模板
1.设计内容
1、程序设计(包括框图设计、源程序编辑、编译、调试)
2、对问题有完整的分析过程,要求把分析设计过程写入报告
3、编写设计报告
本程序设计的主要内容:
1.1销售管理系统
该系统是一个销售管理系统,即对某公司有四个销售员(编号:
1-4),负责销售五种产品(编号:
1-5)进行合理管制。
每个销售员都将当天出售的每种产品各写一张便条交上来。
每张便条包含内容:
1)销售员的代号
2)产品的代号
3)这种产品的当天的销售额
每位销售员每天可能上缴0-5张便条。
假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。
1)计算上个月每个人每种产品的销售额。
2)按销售额对销售员进行排序,输出排序结果(销售员代号)
3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)
4)输出统计报表
2.设计目的与要求
2.1设计目的
1.进一步掌握运用C进行程序设计的能力;
3.进一步理解和运用面向过程程序设计的思想和方法;
3.初步掌握开发一个小型实用系统的基本方法;
4.学会调试一个较长程序的基本方法;
5.学会利用互联网查找相关的知识并学习;
2.2要求
含设计中用到的相关技术的解释或讲解介绍和正文两大部份。
正文包括以下7个内容:
1.需求分析
以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?
并明确规定:
(1)输入的形式和输入值的范围;
(2)输出的形式;
(3)程序所能达到的功能;
(4)测试数据:
包括正确的输入及其输出结果和含有错误的输入及其输出结果。
2.概要设计
说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。
3.详细设计
实现概要设计中定义的所有类,对每个操作只需要写出伪码算法;可采用流程图等进行描述,画出函数和过程的调用关系图。
4.调试分析
内容包括:
a.调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;
b.改进设想;
c.经验和体会等。
5.用户使用说明
说明如何使用你编写的程序,详细列出每一步的操作步骤。
6.测试结果
列出你的测试结果,包括输入和输出。
这里的测试数据应该完整和严格,最好多于需求分析中所列。
7、课程设计总结。
8、源程序(主要函数代码,并附说明)。
9.参考文献
列出参考的相关资料和书籍。
10.加封面(采用统一格式)之后装订。
3.设计原理
该软件系本人经过两周时间完成,其中每一步都有较为详细的提示.当用户进入这个程序时,系统会出现一个主菜单,有七个功能,进商品销售管理系统;输入商品信息;删除与更改信息;确认购买并输入购买信息;系统信息统计系统;保存所有信息写入文件,读取一份已存在的信息,退出系统。
本程序是通过对文件的读写来实现的,主要运用了循环、数组结构,对数据的输入、修改、删除的连续进行,进入系统后,能够根据提示进行输入、修改、删除以及查询等功能。
在输入信息的时候,可以根据提示进行重复输入多个信息,修改、删除、查询也可以重复使用,这些就是运用的循环结构。
在输入、修改、删除、查询信息、信息写入文件、读取信息、退出系统时该系统会用(1退出系统2继续)提示你。
注意:
在使用过程中,查询商品时只能先输入商品的代号;输入的各项数据不能超过其本身设定的最大的位数。
4.详细设计
4.1系统的总体流程图
图4.1系统流程图
4.2各功能函数流程图
图4.2main()函数流程图
图4.3insert()函数流程图
图4.4renew()函数流程图
图4.5seek()函数流程图
4.6save()函数流程图
图4.7statistics()函数流程图
5.运行结果与分析
5.1程序运行
(1).第一次使用这个软件的时。
图5.1系统对话框
(2).输入销售员销售信息
图5.2“商品输入信息”窗口
(3).进入系统输入销售员代号查询销售员的销售信息。
图5.3查询窗口
(4).进入系统按“4”就可以更改销售员的销售信息。
图5.4显示修改循环输入窗口
(5).输入数据后按“4”就可以保存销售员的销售信息。
图5.5保存数据窗口
(6).当使用完销售管理系统按“0”就可以退出系统。
图5.6退出销售管理系统
5.2程序分析
1.程序要写正确,不然不能读出。
2.信息代码也要输入正确,按照程序要求输入,不然正确输出信息。
3.循环与否点击您是否继续进行信息录入(y/n)即可。
6.总结
这次课程设计虽然只有短短的两周时间,但此过程中我得到的收获却没有时间的界限。
在这期间,我有刚开始对于设计的茫然,也有设计过程中面对不熟悉的知识的焦急,更有面对程序运行出错时的惆怅,同时还有当自己把设计的思路一点点想清楚,把程序代码上出现的错误一个个改正确,把程序成功运行出来的那份难以表述的喜悦!
成功的背后有过一丝丝彷徨,但拨开乌云的天空通常看到的是美丽的彩虹!
对于我精神上的收获确实不少,学习上也受益匪浅。
通过这次“销售管理系统”课题的设计,通过这个阶段的实践,使我对C语言进行了深入的学习。
同时设计的过程中,为了实现预期的功能,我利用了图书馆内相关的资料进行参考,也使我懂得一些初次学习过程中不太熟悉的知识。
在实践中,我利用图书馆和网络,查找了相关的信息。
也明确在以后的学习过程中,我应该多利用这些有效的途径来充实自己的知识点,学习得更深入,“善假于物”也是一种有效的学习方法。
在程序调试的过程中,遇到了好几个自己没能及时解决的问题,我选择的是请教老师和同学,在你们的指导下,我成功调试出程序。
学习的过程除了需要自己要独立思考问题之外,还应该要有与他人的互动。
我想这也就是集体的智慧,团结的力量!
在此过程中,我也发现了许多自己的不足。
在我刚开始设计的时候,头脑里没有一点清晰的思路,这就与平时自己看得少,练得少有关系。
所以我觉得学习任何一门语言还是需要多看书,多编写程序,特别是当自己突然有一丝灵感的时候,最好记录下来,甚至把它想出来,想明白。
实践的过程中,要明确自己写这些程序是为了达到什么目的,实践后,要考虑这样编写是不是最好的,还能不能做其它方法来做,在编写这个程序中遇到了什么样的错误,为什么会遇到,以后应该怎样避免。
这样的学习,就会更深入,学习得更好!
致谢
在此我要向对我们的实践进行指导的熊茜老师,还有在程序调试过程中请教的同学进行感谢,感谢你们给我们提供的帮助,使我的设计得以成功的实现各项功能。
再次向您们致以最真诚的感谢!
参考文献
[1]谭浩强等.C语言程序设计教程.北京:
高等教育出版社,1997
[2]谭浩强.C程序设计.第2版.北京:
清华大学出版社,1999
[3]郭浩志.C语言程序设计.北京.北京邮电大学出版社,2005
[4]《C陷阱与缺陷》.北京:
人民邮电出版社,2008
[5]谭浩强、张基温.C语言程序设计教程.北京:
高等教育出版社,2006
[6]《C程序设计经典教程》.北京:
清华大学出版社,2006
程序清单
#include
#include
#include
#include
#definenull0
structseller
{
intnum;
charsex;
charname[8];
intapple;
intgrape;
intbanana;
intpear;
intwatermellon;
intsum;
}sell[4];
structfruite
{
intnum;
intp_num[10];
intf_num;
intsum;
}f[5];
intn;
charf_name[10];
voidinsert();
voidrenew();
voidseek();
voidchange();
voidstatistics();
voidsave();
voidask1();
voidask2();
voidload();
voidmenu()
{
printf("\n********************************欢迎进入销售管理系统************************\n\n");
printf("\t\t\t\t1:
数据插入\n\n");
printf("\t\t\t\t2:
数据更新\n\n");
printf("\t\t\t\t3:
数据查询\n\n");
printf("\t\t\t\t4:
数据更改\n\n");
printf("\t\t\t\t5:
数据统计\n\n");
printf("\t\t\t\t6:
数据保存\n\n");
printf("\t\t\t\t7:
退出系统\n\n");
printf("*****************************************************************************");
printf("\n版权所有自普本07,马哥\n");printf("\n请输入你要执行的任务:
");
}
voidmain()
{
chart;
inti=0,k=0;
system("color2e");
menu();
for(i=1;i<5;i++)
{
sell[i].num=i;
};
sell[0].sex='M';
strcpy(sell[0].name,"刘德华");
sell[1].sex='F';
strcpy(sell[1].name,"张学友");
sell[2].sex='F';
strcpy(sell[2].name,"郭富城");
sell[3].sex='M';//初始化
strcpy(sell[3].name,"黎明");
f[0].num=001;
f[1].num=002;
f[2].num=003;
f[3].num=004;
f[4].num=005;
for(i=0;i<4;i++)
{
sell[i].apple=0;
sell[i].grape=0;
sell[i].banana=0;
sell[i].pear=0;
sell[i].watermellon=0;
sell[i].sum=0;
}
for(i=0;i<5;i++)
{
f[i].f_num=0;
f[i].sum=0;}
while(t!
=7)
{
scanf("%c",&t);
switch(t)
{
case'1':
insert();break;
case'2':
renew();ask2();break;
case'3':
seek();break;
case'4':
change();break;
case'5':
statistics();ask1();break;
case'6':
save();break;
case'7':
exit(0);
default:
printf("请输入任务范围内的数:
");
}
t=getchar();
}getch();
}
voidinsert()
{
inti=0,j=0,k=0,l=0;
putchar('\n');
printf("你是要手动插入还是从文件读入\n\n1手动2读入\n\n您选择:
");
scanf("%d",&i);
if(i==1)
{
printf("请输入你要插入的天数:
");
scanf("%d",&n);
printf("第1号的销售额\n");
for(j=0;j<4;j++)
{
for(l=0;l<5;l++)
f[l].f_num=0;
for(k=0;k<5;k++)
{
printf("请输入00%d号水果的一星期销售额:
\n",k+1);
for(i=0;i{
scanf("%d",&f[k].p_num[i]);
f[k].f_num=f[k].p_num[i]+f[k].f_num;
}
}
sell[j].apple=f[0].f_num;
sell[j].grape=f[1].f_num;
sell[j].banana=f[2].f_num;
sell[j].pear=f[3].f_num;
sell[j].watermellon=f[4].f_num;
printf("第%d号的销售额",j+2);
}
printf("\b\b\b\b\b\b\b\b\b\b\b\b\b输入完毕,任意键确定");
getch();
system("color2e");
system("cls");
menu();
putchar('\n');
}
if(i==2)
load();
}
voidrenew()//数据更新
{
intt;inti=0,j=0,k=0;
printf("您是否为第一次更新?
1是2否\n");
scanf("%d",&t);
if(t==2)
{
for(i=0;i<5;i++)
f[i].sum=0;
}
for(j=0;j<4;j++)
f[0].sum=sell[j].apple+f[0].sum;
for(j=0;j<4;j++)
f[1].sum=sell[j].grape+f[1].sum;
for(j=0;j<4;j++)
f[2].sum=sell[j].banana+f[2].sum;
for(j=0;j<4;j++)
f[3].sum=sell[j].pear+f[3].sum;
for(j=0;j<4;j++)
f[4].sum=sell[j].watermellon+f[4].sum;
for(i=0;i<4;i++)
sell[i].sum=sell[i].apple+sell[i].grape+sell[i].banana+sell[i].pear+sell[i].watermellon;
}
voidseek()//数据查询
{
intt,s,c,e,d;
system("cls");
printf("\n\n*************************欢迎进行信息查询*****************************\n\n");
do{
printf("您要查询的是单个产品还是销售额排序\n\n**1单个产品**2整体排序\n");
scanf("%d",&t);
if(t==1)
{
printf("\n\n***********您是要对下面哪个进行查询****************:
\n\n****1销售员\n****2产品\n您选择:
");
scanf("%d",&t);
if(t==1)
{
do{
printf("\n*************请输入该销售员的编号*****************\n您选择:
");
scanf("%d",&s);
switch(s)
{
case1:
printf("\n\t%s销售总额为%d\n",sell[0].name,sell[0].sum);break;
case2:
printf("\n\t%s销售总额为%d\n",sell[1].name,sell[1].sum);break;
case3:
printf("\n\t%s销售总额为%d\n",sell[2].name,sell[2].sum);break;
case4:
printf("\n\t%s销售总额为%d\n",sell[3].name,sell[3].sum);break;
default:
printf("请输入正确的编号\n");
}
printf("\n\n数字1返回上一层,任意键继续查询销售员信息...\n");
scanf("%d",&c);
if(c==1)
s=0;
}while(s!
=0);
}
if(t==2)
{
do{
printf("\n*******请输入你要查询的产品代号*******:
");
printf("\n**apple1\n");
printf("**grape2\n");
printf("**banana3\n");
printf("**pear4\n");
printf("**watermellon5\n");
scanf("%d",&s);
switch(s)
{
case1:
printf("apple销售总额为%d\n",f[0].sum);break;
case2:
printf("grape销售总额为%d\n",f[1].sum);break;
case3:
printf("banana销售总额为%d\n",f[2].sum);break;
case4:
printf("pear销售总额为%d\n",f[3].sum);break;
case5:
printf("watermellon销售总额为%d\n",f[4].sum);break;
default:
printf("请输入正确的编号\n");
}
printf("\n\n*************************欢迎回到信息查询主页*****************************\n\n");
printf("\n返回上一层输入1继续查询任意键...\n\n");
scanf("%d",&c);
if(c==1)
s=0;
}while(s!
=0);
}
}
if(t==2)
{
do
{
printf("*****请输入您要查询的对象****\n");
printf("***对销售员排序查询请输入1\n***对产品排序查询输入2\n");
scanf("%d",&e);
if(e==1)
{
printf("编号为%-10d%-10d%-10d%-10d\n",sell[0].num,sell[1].num,sell[2].num,sell[3].num);
printf("名字为%-10s%-10s%-10s%-10s\n",sell[0].name,sell[1].name,sell[2].name,sell[3].name);
printf("%-10d%-10d%-10d%-10d\n\n\n",sell[0].sum,sell[1].sum,sell[2].sum,sell[3].sum);
}
if(e==2)
{
printf("编号为00%-10d00%-10d00%-10d00%-10d00%-10d\n",f[0].num,f[1].num,f[2].num,f[3].num,f[4].num);
printf("%-10d%-10d%-10d%-10d%-10d\n\n",f[0].sum,f[1].sum,f[2].sum,f[3].sum,f[4].sum);
}
printf("返回上一层请输入1任意键继续\n");
scanf("%d",&d);
}while(d!
=1);
}
printf("返回上一层请输入1任意键继续\n");
scanf("%d",&d);
}while(d!
=1);
system("cls");
menu();
putchar('\n');
}
voidchange()//数据更改
{
ints,c;
chart;
do
{
printf("请输入你要更改的销售员编号及产品编号\n");
printf("************销售员编号:
\n");
scanf("%d",&s);
t=getchar();
printf("***产品编号:
\n");
printf("***apple1\n");
printf("***grape2\n");
printf("***banana3\n");
printf("***pear4\n");
printf("***watermellon5\n");
scanf("%c",&t);
switch(s)//搜索数据
{
case1:
switch(t){
case'1':
printf("你要更改的人为%s,原始数据为%d\t更改为:
",sell[0].name,sell[0].apple);
scanf("%d",&sell[0].apple);break;
case'2':
printf("你要更改的人为%s,原始数据为%d\t更改为:
",sell[0].name,sell[0].grape);
scanf("%d",&sell[0].grape);break;
case'3':
printf("你要更改的人为%s,原始数据为%d\t更改为:
",sell[0].name,sell[0].banana);
scanf("%d",&sell[0].banana);break;
case'4':
printf("你要更改的人为%s,原始数据为%d\t更改为:
",sell[0].name,sell[0].pear);
scanf("%d",&sell[0].pear);break;
case'5':
printf("你要更改的人为%s,原始数据为%d\t更改为:
",sell[0].name,sell[0].watermellon);
scanf("%d",&sell[0].watermellon);break;
default:
printf("请输入正确的产品编号\n");}break;
case2:
switch(t){
case'1':
printf("你要更改的人为%s,原始数据为%d\t更改为:
",sell[1].name,sell[1].apple);
scanf("%d",&sell[0].apple);break;
case'2':
printf("你要更改的人为%s,原始数据为%d\t更改为:
",sell[1].name,sell[1].grape);
scanf("%d",&sell[0].grape);break;