资源描述
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零碎的总体流程图
开场
编译运转
有
有/错
无
MAIN
挪用MENU
K=0
EXIT
K≠0
挪用各个功用函
衔接
履行
数〔K=?〕
过错
输入准确
图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.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<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#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:
printf("\t\t\t\t2:
printf("\t\t\t\t3:
printf("\t\t\t\t4:
printf("\t\t\t\t5:
printf("\t\t\t\t6:
printf("\t\t\t\t7:
数据拔出\n\n");
数据更新\n\n");
数据查问\n\n");
数据变动\n\n");
数据统计\n\n");
数据保管\n\n");
加入零碎\n\n");
printf("*******************************************************************
**********");
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<n;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***********
1贩卖员\n****2
scanf("%d",&t);
你是要对上面哪个进展查问****************:\n\n****
产物\n你选择:");
if(t==1)
{
do{
printf("\n*************
scanf("%d",&s);
switch(s)
请输入该贩卖员的编号*****************
\n你选择:");
{
case1:printf("\n\t%s
case2:printf("\n\t%s
贩卖总额为%d\n",sell[0].name,sell[0].sum);break;
贩卖总额为%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**apple
printf("**grape
printf("**banana
请输入你要查问的产物代号*******:");
1\n");
2\n");
3\n");
printf("**pear
4\n");
printf("**watermellon5\n");
scanf("%d",&s);
switch(s)
{
case1:printf("apple
case2:printf("grape
贩卖总额为%d\n",f[0].sum);break;
贩卖总额为%d\n",f[1].sum);break;
贩卖总额为%d\n",f[2].sum);break;
case3:printf("banana
case4:printf("pear
case5:printf("watermellon
贩卖总额为%d\n",f[3].sum);break;
贩卖总额为%d\n",f[4].sum);break;
default:printf("
请输入准确的编号\n");
}
printf("\n\n*************************
*****************************\n\n");
欢送回到信息查问主页
printf("\n
scanf("%d",&c);
if(c==1)
前往上一层输入1接着查问恣意键...\n\n");
s=0;
}while(s!=0);
}
}
if(t==2)
{
do
{
printf("*****
printf("***
2\n");
请输入你要查问的工具****\n");
对贩卖员排序查问请输入1\n***
对产物排序查问输入
scanf("%d",&e);
if(e==1)
{
printf("编号
为%-10d%-10d%-10d%-10d\n",sell[0].num,sell[1].num,sell[2].num,sell[3].n
um);
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,sel
l[2].sum,sell[3].sum);
}
if(e==2)
{
printf("编号为00%-10d00%-10d00%-10d00%-10d
00%-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");
贩卖员编号:\n");
printf("************
scanf("%d",&s);
t=getchar();
printf("***
产物编号:\n");
printf("***apple
printf("***grape
printf("***banana
printf("***pear
1\n");
2\n");
3\n");
4\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;
case'3':printf("
你要变动的工资%s,原始数据为%d\t变动
为:",sell[1].name,sell[1].banana);
scanf("%d",&sell[0].banana);break;
case'4':printf("
你要变动的工资%s,原始数据为%d\t变动
为:",sell[1].name,sell[1].pear);
scanf("%d",&sell[0].pear);break;
case'5':printf("
你要变动的工资%s,原始数据为%d\t变动
为:",sell[1].name,sell[1].watermellon);
scanf("%d",&sell[0].watermellon);break;
default:printf("
请输入准确的产物编号g");}break;
case3:
switch(t){
case'1':printf("
你要变动的工资%s,原始数据为%d\t变动
为:",sell[2].name,sell[2].apple);
scanf("%d",&sell[0].apple);break;
case'2':printf("
你要变动的工资%s,原始数据为%d\t变动
为:",sell[2].name,sell[2].grape);
scanf("%d",&sell[0].grape);break;
case'3':printf("
你要变动的工资%s,原始数据为%d\t变动
为:",sell[2].name,sell[2].banana);
scanf("%d",&sell[0].banana);break;
case'4':printf("
你要变动的工资%s,原始数据为%d\t变动
为:",sell[2].name,sell[2].pear);
scanf("%d",&sell[0].pear);break;
case'5':printf("
你要变动的工资%s,原始数据为%d\t变动
为:",sell[2].name,sell[2].watermellon);
scanf("%d",&sell[0].watermellon);break;
default:printf("
case4:
请输入准确的产物编号");}break;
switch(t){
case'1':printf("
你要变动的工资%s,原始数据为%d\t变动
为:",sell[3].name,sell[3].apple);
scanf("%d",&sell[0].apple);break;
case'2':printf("
你要变动的工资%s,原始数据为%d\t变动
为:",sell[3].name,sell[3].grape);
scanf("%d",&sell[0].grape);break;
case'3':printf("
你要变动的工资%s,原始数据为%d\t变动
为:",sell[3].name,sell[3].banana);
scanf("%d",&sell[0].banana);break;
case'4':printf("
你要变动的工资%s,原始数据为%d\t变动
为:",sell[3].name,sell[3].pear);
scanf("%d",&sell[0].pear);break;
case'5':printf("
你要变动的工资%s,原始数据为%d\t变动
为:",sell[3].name,sell[3].watermellon);
scanf("%d",&sell[0].watermellon);break;
default:printf("
case5:exit(0);
default:printf("
}
请输入准确的产物编号");}break;
请输入准确的贩卖员编号\n");
printf("数据的变动已改动全体数据,能否破刻进展更新及统计:\n\n1:是2:稍后:
");
scanf("%d",&c);
if(c==1)
{
renew();
statistics();
printf("\n\n
数据已更新并统计\n\n");
}
else
printf("数据未更新\n");
printf("
前往上一层输入1接着输入输入恣意整数\n");
scanf("%d",&c);
if(c==1)
s=0;
}while(s!=0);
system("cls");
menu();
putchar('\n');
}
voidsave()
{
FILE*in;
inti;
printf("\n
因为零碎只能从mage.txt中读取数据,你自己创破的文件能够无奈读取,
能否接着\n");
printf("\n1
scanf("%d",&i);
if(i==1)
接着操纵2
采纳零碎文件\n你选择:");
{
printf("请输入你所要保管的文件名\n");
scanf("%s",f_name);
printf("你已创破一文件,同时存盘....");}
else{
strcpy(f_name,"mage.txt");
printf("你已将数据存到零碎开拓的文件mage.txt中,请检查\n");}
if((in=fopen(f_name,"w"))==null)
{
printf("不克不及翻开文件");
exit(0);
}
fprintf(in,"
性不
名字
产物代号
贩卖之跟\n");
fprintf(in,"
贩卖员代号
1
2
3
4
5\n");
//
保管至文件
for(i=0;i<4;i++)
fprintf(in,"%-10d%-10c%-10s%-10d%-10d%-10d%-10d%-10d\n",sell[i].num+1,sell[
i].sex,sell[i].name,\
sell[i].apple,sell[i].grape,sell[i].banana,sell[i].pear,sell[i].watermellon
);
fprintf(in,"%-10d%-10d%-10d%-10d%-10d",f[0].sum,f[1].sum,f[2].sum,f[3].sum,
f[4].sum);
fclose(in);
putchar('\n');
printf("\n
getch();
menu();
putchar('\n');
}
输入恣意键断定\n");
voidstatistics()
//
统计排序
{
inti,j,temp;
for(i=0;i<4;i++)
for(j=0;j<3-j;j++)
if(sell[j].sum<sell[j+1].sum)
{
temp=sell[j+1].sum;
sell[j+1].sum=sell[j].sum;
sell[j].sum=temp;
}
for(i=0;i<5;i++)
for(j=0;j<4-j;j++)
if(f[j].sum<f[j+1].sum)
{
temp=f[j+1].sum;
f[j+1].sum=f[j].sum;
f[j].sum=temp;
}
}
voidask1()
{
intc;
printf("\n
getch();
统计终了.....恣意键断定\n");
system("cls");
menu();
putchar('\n');
}
voidask2()
{
intc;
printf("\n\n
getch();
数据已更新....\n\n
恣意键断定\n");
system("color2e");
system("cls");
menu();
putchar('\n');
}
voidload()
{
FILE*fp;
inti;
if((fp=fopen("mage.txt","rb"))==0)
{
}
printf("cannotopenthefilepelasecheck...\n\n");
exit(0);
fscanf(fp,"
性不
名字
产物代号
贩卖之跟\n");
fscanf(fp,"贩卖员代号
5\n");
1
2
3
4
for(i=0;i<4;i++)
fscanf(fp,"%10d%10c%10s%10d%10d%10d%10d%10d",&sell[i].num+1,&sell[i].sex,&s
ell[i].name,\
&sell[i].apple,&sell[i].grape,&sell[i].banana,&sell[i].pear,&sell[i].waterm
ellon);
fscanf(fp,"%10d%10d%10d%10d%10d",&f[0].sum,&f[1].sum,&f[2].sum,&f[3].sum,&f
[4].sum);
fclose(fp);
printf("\n\n
getch();
读入胜利恣意键断定,恣意键可接着进展操纵...");
system("cls");
menu();
展开阅读全文