版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子科技大学成都学院程序综合设计
俏售管理系统设计
学生姓名
学号
同组人
专业名称机械设计制造和其自动化
班级
指导教师
电子科技大学成都学院
二。一三年十二月
目录
1.序言
2.设计目的・••・
3.功能描述・•・・
4.总体设计・・・・
1、功能模块设计
2、数据构造设计................................................................5
3、函数功能描述................................................................6
5.程序实现........................................................................8
1、源程序(略)................................................................8
2、运行成果...................................................................13
6.小结16
1.序言
C语言是今年来国内外得到迅速推广使用的一种高级语言。C语言功能丰富,体现能力强,使用灵活以
便,应用广,目的程序效率高,可移植性好,既具有高级语言的长处,乂具有低级语言的语言特点,因此
C语言对我们来说很重要,本程序是我们小组运用网络和书本等资源公共完毕的一种销售管理系统,深刻
理解中小型C语言程序设计。
2.设计目的
(1)理解管理信息系统(I勺开发流程,熟悉C语言的文献和构造数组的多种基本操作。
(2)掌握高级程序设计语言的知识。
(3)实践中逐渐掌握程序设计H勺思想和措施,培养问题求解和语言的应用能力。
(4)本程序中涉和构造体、数组、文献等方面的知识。通过本程序的训练,能对C语言
的文献操作有一种更深刻的理解。
(5)要提高与程序设计和软件开发有关的多种综合能力。
(6)掌握运用数组存储构迨实现薄管理的原理,为深入开发出高质量的信息管理系统打下坚实的基
础。
3.功能描述程序
功能规定:
某企业有四个销售员(编号:厂4),负责销售五种产品(编号:1-5)。每个销售员都将当日发售的每种
产品各写一张便条交上来。每张便条包括内容:1)销售员时代号,2)产品的代号,3)这种产品的当日的
销售额。每位销售员每天上缴1张便条。
试设计一种便条管理系统,使之能提供如下功能:
#include<stdio.h>
#include<conio,h>
#include<stdlib.h>
#include<string.h>
^defineM155
功能函数申明:
voiddetai1();〃显示销售状况
voidforeachO;〃从文献读取数据兵分类整顿
voidmenu。;〃菜单
voidproduct();〃对产品进行记录
voidreaddata();〃从文献读取数据
voidseller。;//对销售员进行记录
voidtotal。;//输出报表
voidchoice。;//选择输出信息
数据构造:
原始数据有销售员代码、产品代号和销售额,因此定义•种全局构造体数组scrip用于保留原始数据。然
后定义。然后定义全局变量n保留纸条数目,定义数组s用于保留分类后的信息。
structss
intsid;//销售员代号
intpid;〃产品代号
intsn;//销售额
ss「M];
intn;〃纸条数目
ints[4][5]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0),{0,0,0,0,0}};〃用于保留员工和产品信息
主函数:
显示程序设计者有关信息和调用文献读取函数、数据初始化函数和主菜单函数。
voidmainO〃入口函数即主函数
readdataO;〃读取文献数据
foreachO:〃根据文献初始数据初始化便于操作的数组
menu();//显东主菜单
函数功能描述:
每人每种产品销售额记录函数detail()
〃计算上个月每个人每种产品H勺销售额
voiddetail()〃显示销售状况
inti,j;
for(i=0;i<4:i++)〃遍历销售员
printf(*\n\t\t%d号销售员销售状况:\n",i+1);for(j=0;j<5;j++)/*按销售员分类遍历所有产品并显
示信息*/
printf(*\t\t9kl号产品销售数量:舟d\n”,j+1,s[i][j]);
choice();
文献读取函数readdata()
读出便条中的内容,并保留到文献构造体中。
voidforeachO//从纸条读取数据并分类整顿
inti:
for(i=0;i〈n:i++)〃遍历所有纸条
switch(ss[i].pid)〃按点品分大类,根据大类分销售员小类,累加个人各产品销售数量
case1:
switch(ss[i].sid)
case1:s[0][0]+=ss[i].sn:break:
case2:s[l][0]+=ss[i].sn:break:
case3:s[2][0]+=ss[i].sn:break:
case4:s[3][0]+=ss[i].sn;break:
break;
case2:
switch(ss[i].sid)
case1:s[0][1]+=ss[i].sn;break;
case2:s[l][l]+=ss[i].snjbreak;
case3:s[2][l]+=ss[i].sn;break;
case4:s[3][1]+=ss[i].sn;break;
break;
case3:
switch(ss[i].sid)
case1:s[0][2]+=ss[i].sn;break;
case2:s[l][2]+=ss[i].sn;break;
case3:s[2][2]+=ss[i].sn;break;
case4:s[3][2]+=ss[i].sn;break:
break:
case4:
switch(ss[i].sid)
case1:s[0][3]+=ss[i].sn:break;
case2:s[l][3]+=ss[i].sn;break;
case3:s[2][3]+=ss[i].sn:break;
case4:s[3][3]+=ss[i].sn:break;
break:
case5:
switch(ss[i].sid)
case1:s[0][4]+=ss[i].sn:break:
case2:s[l][4]-i-=ss[i].sn:break:
case3:s[2][4]+=ss[i].sn;break;
case4:s[3][4]+=ss[i].sn:break:
break;
主菜单函数menu()
显示系统功能菜单以供顾客选择有关功能使用,根据顾客选择分别可调用。
voidmenuO
intw,c;
puts(z/\t\t******》*************菜单************木********\n\n");
puts(*\t\t1.查看每人每种产品的俏售额\n");
putsC\t\t2.按年售额对销售员排序(销售员代号八n');
puts(*\t\t3.对每种产品总销售额从高到低排序(产品代号和销售额八n");
puts(*\t\t4.输出记录报表\n");
puts(*\t\t5.退出\n");
puts("\n\n\t\l*********************************************\n");
printf("请选择(1-5):[八b'b");
scanfC'M",&c);
if(c<l|c>5)〃错误输入则重新获取输如
w=l;
getchar():
elsew=0;
whiie(w==l);
switch(c)〃根据输入实现对应函数调用
case1:
detailO;break;//'每个销售员每种产品的销售额统j计
case2:
sellerO;break;
case3:
product();break;
case4:
total();break;
case5:
exit(O):
记录报表输出函数total()
记录每种产品的总销售额,对这些产品按从高到低的次序输出排序成果(需输出产品代号和销售额)
voidtotal。〃输出报表
inti,j;
printf(*\n\t销售员\t产品\t销量\n");
for(i=0;i<4:i++)
for(j=0:j<5;j++)
printf(*\t%d\t%d\t%d\n*»i+1,j+1,s[i][j]);
choice();
5.程序实现
1、源程序
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
ftdefineM155
voiddetail。;〃显示销售状况
voidforeachO;〃从文献读取数据兵分类整帧
voidmenu。;〃菜单
voidproduct。;〃对产品进行记录
voidreaddata();〃从文献读取数据
voidtotal。;//输出报表
voidchoice。;//选择输出信息
structss
intsid;〃销售员代号
intpid;〃产品代号
intsn;〃销售额
ss[M];
intn;〃纸条数目
ints[4][5]={{0,0,0,0,0},{0,0,0,0.0},{0,0,0,0,0},{0,0,0,0,0}};//用于保留员工和产品信息
voidmainO〃入口函数即主函数
readdata();//读取文献数据
foreachO;//根据文献初始数据初始化便于操作的数组
menu。;//显示主菜单
voidreaddata()〃从文献读取数据
FILE*fp;
if((fp=fopen(wlist.txi","r"))==NULL)
printf(^Can*topenthefile!\n*);
exit(O);
else
for(n=0;!feof(fp);n++)
fscanf(fp,*%d%d%d\n*,&ss[n].sid,&ss[n].pid,&ss[n].sn);
)〃保留文献数据到构造体
fclose(fp);
voidforeach。//从纸条读取数据并分类整顿
inti;
for(i=0;i<n:i++)〃遍历所有纸条
switch(ss[i].pid)〃按点品分大类,根据大类分销售员小类,累加个人各产品销售数量
case1:
switch(ss[i].sid)
casel:s[0][0]+=ss[i].sn:break:
case2:s[l][0]+=ss[i].sn:break:
case3:s[2][0]+=ss[i].sn:break:
case4:s[3][0]+=ss[i].sn:break:
break;
case2:
switch(ss[i].sid)
case1:s[01[l]+=ss[i].sn;break;
case2:s[l][l]+=ss[i].snjbreak;
case3:s[2][l]+=ss[i].snjbreak;
case4:s[3][1]+=ss[i].sn:break;
break;
case3:
switch(ss[i].sid)
case1:s[0][2]+=ss[i].sn;break;
case2:s[l][2]+=ss[i].sn;break;
case3:s[2][2]+=ss[i].sn;break;
case4:s[3][2]+=ss[i].sn;break;
break:
case4:
switch(ss[i].sid)
casel:s[0][3]+=ss[i].sn;break;
case2:s[1][3]+=ss[i].sn;break;
case3:s[2][3]+=ss[i].sn;break;
case4:s[3][3]+=ss[i].sn;break;
break;
case5:
switch(ss[i].sid)
case1:s[01⑷+=ss[i].sn;break;
case2:s[l][4]+=ss[i].sn;break:
case3:s[2][4]+=ss[i].sn;break:
case4:s[3][4]+=ss[i].sn:break:
break;
voidmenu()
intw,c;
do
puts("\t\t******》*************菜单*********************\n\n");
puts("\t\t1.查看每人每种产品的销售额\n");
puts(*\t\t2.按销售额对销售员排序(销售员代号八n‘);
puts(*\t\t3.对每种产品总销售额从高到低排序(产品代号和销售额八n");
puts(*\t\t4.输出记录报去\n");
puts(*\t\t5.退出\rT);
puts("\n\n\t\t*********************************************\n");
printf("请选择(1-5):[八b'b");
scanf(飞d",&c);
if(c<lc>5)〃错误输入则重新获取输如
w=l;
getcharO;
elsew=0;
while(w==l);
switch(c)〃根据输入实现对应函数调用
case1:
detail。;break;//每个销售员每种产品的错售额统j计
case2:
sellerO;break;
case3:
product();break;
case4:
total():break;
case5:
exit(O);
voiddetail()〃显示销售状况
inti,j;
for(i=0;i<4;i++)〃遍历销售员
printf号销售员伴.售状况:\n",i+D;for(j=0;j<5;j++)/*按销售员分类遍历所有产品并显示信
息*/
printf(*\t\t9kl号产品销售数量:舟d\n”,j+1,s[i][j]);
choice();
voidsellerO
inti,j,k;
intsp[4]=[0,0,0,0};
for(i=0;i<4:i++)
for(j=0:j<5:j++)
sp[i]+=s[i][j];//计算每单个销售员所有产品镜售状况
for(i=0:i〈4;i++)〃比较四次,每次选出最大数
k=0;〃用于标识单轮最大数
for(j=0;j<4;j++)
if(sp[kksp[j])k=j;//获取最大数标号
printfC\t\t第%d名是%d号销售员!\rT,i-1,k+D;sp[k]=-l;/*输出最大数和排名,
将最大数标识为负*/
choice();}
voidproduct()〃与seller,原理同样,用于对产品进行记录
inti,j,k;
intp[5]={0,0,0,0,0);
for(j=0;j<5;j++)
for(i=0:i<4;i++)
p[j]+=s⑴[j];
for(j=0:j<5;j++)
k=0;
for(i=0;i<5;i++)
if(p[k]<p[i])k=i;
printfC\t\t第%d名是%d号产品!\t销量为%d!\n”,j+1,k+1,p[k]);p[k]=-l;
choice();
voidtotal()〃输出报表
inti,j;
printf(*\n\t销售员\t产品\t销量\n");
for(i=0;i<4:i++)
for(j=0;j<5:j++)
printf(*\t%d\t%d\t%d\n*,i+1,j+1,s[i][j]);
choice();
voidchoice()〃用于输出信息功能选择
intc:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年化工企业防中毒窒息安全培训试题及答案
- 2026年多发创伤急救处置考核考试试卷试题及答案
- 2026年不合格品处置流程考核考试试卷试题及答案
- 关于团员青年思想状况的调研报告(3篇)
- 未成年人思想道德建设说明报告表(3篇)
- 课时15 锋与天气 课时作业
- 天津公共考试常见试题及答案
- 《钳工实训(中级)》课件 项目九 刮削
- 预防中小学生沉迷网络市公开课获奖课件省名师示范课获奖课件
- 《童年》阅读试题及答案解析
- 普华永道:2026年全球AI就业晴雨表-AI时代就业的两种未来图景(2026年-中文版)
- 2026秋小学西师大版音乐二年级上册(新教材)教学计划含教学进度表
- 小学科学苏教版(新教材)六年级上册第一单元《物质的变化》单元小结课件
- 2026年计算机专业综合应用题库
- 油田集输系统技术培训课件
- 成都盐道街中学2026初一入学语文分班考试真题含答案
- 阅读理解(专项训练)五升六英语暑假专项提升(人教PEP版)
- 小区绿化养护合同
- 2026年秋季六年级数学上册教学计划(人教版)
- 2025北京市事业单位就业援藏专项招聘21人备考试题含答案
- 成都蜀华2025初一入学英语分班考试真题含答案
评论
0/150
提交评论