下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子科技大学成都学院程序综合设计销售管理系统设计学生姓名冯垚学 号 1240840106同组人武侠红苗迅专业名称 机械设计制造及其自动化班 级指导教师陈陈芳电子科技大学成都学院二O三年十二月1前言32设计目的33功能描述34. 总体设计41、功能模块设计 42、数据结构设计 53、函数功能描述 65. 程序实现81、源程序(略) 82、运行结果136. 小结16/、八1前言C语言是今年来国内外得到迅速推广使用的一种高级语言。C语言功能丰富,表达能力强,使用灵活方便,应用广,目标程序效率高,可移植性好,既具有高级语言的优点,又具 有低级语言的语言特点, 因此C语言对我们来说很重要, 本程序是我们
2、小组利用网络和书本 等资源公共完成的一个销售管理系统,深刻了解中小型C语言程序设计。2设计目的(1)了解管理信息系统的开发流程,熟悉 C语言的文件和结构数组的各种基本操作。(2)掌握高级程序设计语言的知识。(3)实践中逐步掌握程序设计的思想和方法,培养问题求解和语言的应用能力。(4)本程序中涉及结构体、数组、文件等方面的知识。通过本程序的训练,能对C语言的文件操作有一个更深刻的了解。(5)要提高与程序设计和软件开发有关的各种综合能力。(6)掌握利用数组存储结构实现电话簿管理的原理,为进一步开发出高质量的信息管理 系统打下坚实的基础。3功能描述程序功能要求某公司有四个销售员(编号: 1-4),负
3、责销售五种产品(编号: 1-5)。每个销售员都将 当天出售的每种产品各写一张便条交上来。每张便条包含内容:1)销售员的代号, 2)产品的代号, 3)这种产品的当天的销售额。每位销售员每天上缴 1 张便条。试设计一个便条管理系统,使之能提供以下功能:1 、系统以菜单方式工作2、便条信息录入功能 ( 便条信息用文件保存 ) 输入3、收集到了上个月的所有便条后,读取销售情况1)计算每个人每种产品的销售额。2)按销售额对销售员进行排序,输出排序结果(销售员代号)3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出 产品的代号和销售额) (可选项 )描述:本程序将用到 list.
4、txt 文件内容作为数据源, 其中单行内容代表一张纸条。 程序运行后首先将文件系统的原始数据读取并保存到程序的结构体数组当中, 所 以应提供文件输入的操作 ; 由于纸条数据零散,所以要对原始数据进行分类操作 并提供一个数组用于保存分类信息; 在程序中要进行统计工作, 所以要提供显示、 排序等操作 ; 另外应提供键盘式选择菜单实现功能选择。4 .总体设计功能模块设计可以将这个系统分为五大模块: 查看没人每种产品的销售额、按销售额对销售员排序、对每 种产品总销售额从高到低排序、 输出统计报表和退出。其中主要模块是前四个模块。程序预 想流程在下图。开始判断文件是 否能打开退出系统选择返回主菜单数据结
5、构设计:头文件和预定义#include #include#include#include#define M 155功能函数声明:void detail();/ 显示销售情况void foreach();/ 从文件读取数据兵分类整理void menu();/ 菜单void product();/ 对产品进行统计void readdata();/ 从文件读取数据void seller();/ 对销售员进行统计void total(); / 输出报表void choice();/ 选择输出信息数据结构 :原始数据有销售员代码、产品代号和销售额,所以定义一个全局结构体数组 scrip 用于保存 原始数
6、据。然后定义。然后定义全局变量n保存纸条数目,定义数组s用于保存分类后的信息。struct ssint sid; / 销售员代号int pid; / 产品代号int sn; / 销售额ssM;int n; / 纸条数目int s45=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; / 用于保存员工和产品信息主函数 : 显示程序设计者相关信息和调用文件读取函数、数据初始化函数和主菜单函数。void main() / 入口函数即主函数readdata(); / 读取文件数据foreach(); / 根据文件初始数据初始化便于操作的数组menu(); / 显示主菜单
7、函数功能描述:每人每种产品销售额统计函数 detail () /计算上个月每个人每种产品的销售额 void detail()/显示销售情况int i,j;for(i=0;i4;i+) /遍历销售员printf(ntt%d 号销售员销售情况 :n,i+1);for(j=0;j5;j+) /* 按销售员分类遍历所有产品 并显示信息 */printf(tt%d 号产品销售数量 :%dn,j+1,sij);choice();文件读取函数 readdata () 读出便条中的内容,并保存到文件结构体中。 void foreach()/ 从纸条读取数据并分类整理 int i;for(i=0;in;i+)/
8、 遍历所有纸条switch(ssi.pid)/ 按产品分大类,根据大类分销售员小类,累加个人各产品销售数量case 1:switch(ssi.sid)case 1:s00+=ssi.sn;break;case 2:s10+=ssi.sn;break;case 3:s20+=ssi.sn;break;case 4:s30+=ssi.sn;break;break;case 2:switch(ssi.sid)case 1:s01+=ssi.sn;break;case 2:s11+=ssi.sn;break;case 3:s21+=ssi.sn;break;case 4:s31+=ssi.sn;bre
9、ak;break;case 3:switch(ssi.sid)case 1:s02+=ssi.sn;break;case 2:s12+=ssi.sn;break;case 3:s22+=ssi.sn;break;case 4:s32+=ssi.sn;break;break;case 4:switch(ssi.sid)case 1:s03+=ssi.sn;break;case 2:s13+=ssi.sn;break;case 3:s23+=ssi.sn;break;case 4:s33+=ssi.sn;break;break;case 5:switch(ssi.sid)case 1:s04+=s
10、si.sn;break;case 2:s14+=ssi.sn;break;case 3:s24+=ssi.sn;break;case 4:s34+=ssi.sn;break;break;主菜单函数 menu () 显示系统功能菜单以供用户选择相关功能使用,根据用户选择分别可调用。 void menu()int w,c;doputs(tt*菜单*nn);puts(tt 1. 查看每人每种产品的销售额 n);puts(tt 2. 按销售额对销售员排序 (销售员代号 )n);puts(tt 3. 对每种产品总销售额从高到低排序 (产品代号和销售额 )n);puts(tt 4. 输出统计报表 n);p
11、uts(tt 5.退出 n); puts(nntt*n); printf( 请选择 (1-5): bb);scanf(%d,&c);if(c5) / 错误输入则重新获取输如w=1; getchar(); else w=0;while(w=1);switch(c)/ 根据输入实现相应函数调用case 1:detail();break;每个销售员每种产品的销售额统j计case 2:seller();break;case 3: product();break;case 4: total();break;case 5:exit(0);统计报表输出函数 total ()需输出产品代号和统计每种产品的总销
12、售额, 对这些产品按从高到低的顺序输出排序结果 销售额)void total()/ 输出报表int i,j;printf(nt销售员t产品t销量n);for(i=0;i4;i+) for(j=0;j5;j+)printf(t %dt %dt %dn,i+1,j+1,sij); choice();5程序实现1、源程序#include#include#include #include#define M 155void detail();/ 显示销售情况void foreach();/ 从文件读取数据兵分类整理void menu();/ 菜单void product();/ 对产品进行统计void
13、readdata();/ 从文件读取数据 void total(); / 输出报表 void choice();/ 选择输出信息 struct ssint sid; / 销售员代号int pid; / 产品代号int sn; / 销售额ssM;用于保存员工和产品信息int n; / 纸条数目int s45=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; / void main() / 入口函数即主函数readdata(); / 读取文件数据foreach(); / 根据文件初始数据初始化便于操作的数组 menu(); / 显示主菜单void readdata(
14、)/ 从文件读取数据FILE *fp;if(fp=fopen(list.txt,r)=NULL)printf(Cant open the file!n);exit(0);else for(n=0;!feof(fp);n+)fscanf(fp,%d %d %dn,&ssn.sid,&ssn.pid,&ssn.sn); / 保存文件数据到结构体 fclose(fp);void foreach()/ 从纸条读取数据并分类整理int i; for(i=0;in;i+)/ 遍历所有纸条switch(ssi.pid)/ 按产品分大类,根据大类分销售员小类,累加个人各产品销售数量 case 1:switch
15、(ssi.sid)case 1:s00+=ssi.sn;break;case 2:s10+=ssi.sn;break;case 3:s20+=ssi.sn;break;case 4:s30+=ssi.sn;break;break;case 2:switch(ssi.sid)case 1:s01+=ssi.sn;break;case 2:s11+=ssi.sn;break;case 3:s21+=ssi.sn;break;case 4:s31+=ssi.sn;break;break;case 3:switch(ssi.sid)case 1:s02+=ssi.sn;break;case 2:s12
16、+=ssi.sn;break;case 3:s22+=ssi.sn;break;case 4:s32+=ssi.sn;break; break;case 4:switch(ssi.sid)case 1:s03+=ssi.sn;break;case 2:s13+=ssi.sn;break;case 3:s23+=ssi.sn;break;case 4:s33+=ssi.sn;break;break;case 5:switch(ssi.sid)case 1:s04+=ssi.sn;break; case 2:s14+=ssi.sn;break; case 3:s24+=ssi.sn;break;c
17、ase 4:s34+=ssi.sn;break; ;break;void menu()int w,c;doputs(tt*菜单*nn);puts(tt 1. 查看每人每种产品的销售额 n);puts(tt 2. 按销售额对销售员排序 (销售员代号 )n);puts(tt 3. 对每种产品总销售额从高到低排序 (产品代号和销售额 )n);puts(tt 4. 输出统计报表 n);puts(tt 5. 退出 n);puts(nntt*n);printf( 请选择 (1-5): bb);scanf(%d,&c);if(c5) / 错误输入则重新获取输如 w=1;getchar();else w=0;
18、while(w=1);switch(c)/ 根据输入实现相应函数调用case 1:detail();break;/ 每个销售员每种产品的销售额统 j 计 case 2:seller();break;case 3:product();break;case 4:total();break;case 5:exit(0);void detail()/ 显示销售情况int i,j;for(i=0;i4;i+)/ 遍历销售员printf(ntt%d 号销售员销售情况 :n,i+1);for(j=0;j5;j+)/* 按销售员分类遍历所有产品并显 示信息 */printf(tt%d 号产品销售数量 :%dn
19、,j+1,sij);choice();void seller()int i,j,k;int sp4=0,0,0,0;for(i=0;i4;i+)for(j=0;j5;j+)spi+=sij;/ 计算每单个销售员所有产品销售情况for(i=0;i4;i+)/ 比较四次,每次选出最大数k=0;/ 用于标记单轮最大数 for(j=0;j4;j+)if(spkspj)k=j;/ 获取最大数标号printf(tt第%d名是%d号销售员!n,i+1,k+1);spk=-1;/* 输出最大数和排 名,将最大数标记为负 */choice();void product。/与seller()原理一样,用于对产品进
20、行统计int i,j,k;int p5=0,0,0,0,0;for(j=0;j5;j+)for(i=0;i4;i+)pj+=sij;for(j=0;j5;j+)k=0;for(i=0;i5;i+)if(pkpi)k=i;printf(tt 第 %d 名是 %d 号产品!t 销量为 d!n,j+1,k+1,pk);pk=-1;choice();void total()输出报表int i,j;printf(nt销售员t产品t销量n);for(i=0;i4;i+)for(j=0;j返回菜单t2退出系统bb); scan f(%d,&c);if(c=1)menu();elseexit(0);puts(
21、n);2、运行结果(1)主界面(2) 查看每人每种销售额运行结杲当用户输入“ 1”并按Enter键后,即可进入数据。如图所示,这里读取了文档list.txt的5个便条。当用户输入为“1”时,它会返回菜单主界面,否则退出系统。小退士系统】:29H:U sersfer g vapDes ktopcDebugC p p l.exe冗 0G00 0 - 8 - - f 兀 修曰喜喜首書一垢 氐書数数豁 tedlcm星L.吿九1 linlzIMyMWTInrl 蔓产产产立 口瓦!T.号号启1 4 12 3 4 5可+10量:0 M w H 2 悍#量量1 當盟数 雷星屋屋星口 售品品品品品 養产产产产 号号号号号号 2 12 5 4 5兄:0:e:6:4:e 匱量冒_#量 葛数数数数 書毘屋星E 售品品口田曲品 翟产产产产 号号号号号号 3 1 Z 3 4 5(3) 按销售额对销售员排序运行结果在主界面输入2并按Enter键,查看按销售额对销售员排序运行结果,如下图所示,此 时有4个销售员记录。 H:XU?ers fengya叽P已ktopXc Debug-.Cppl.ee1 一查看每人每种产詁的销售额2找销售额对销售员排序嘲書员代号3 -对每种产拾总龍售魏
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 毕业论文综述范本
- 法律本科生毕业论文
- 居住证办理便民服务高效率
- 大专数据库毕业论文
- 河南省重点中学2026届高二生物第一学期期末经典试题含解析
- 2026年临高县中等职业技术学校关于招聘同工同酬教师备考题库及参考答案详解
- 2026年吉林医药学院附属医院公开招聘工作人员备考题库及完整答案详解一套
- 2026年中国作家协会所属单位公开招聘工作人员13人备考题库及答案详解参考
- 2026年北京玻钢院复合材料有限公司招聘备考题库及一套完整答案详解
- 2026年北京城市学院国际文化与传播学部兼职教师招聘备考题库及答案详解参考
- 期末综合质量检测卷(试题)-2025-2026学年 六年级上册数学西师大版
- 乡村振兴课题申报书范例
- 汇能控股集团校招题库及答案
- 喷塑委外合同范本
- 物业管理法律法规与实务操作
- 高二化学上学期期末试题带答案解析
- 高标准农田建设培训课件
- 体检中心收费与财务一体化管理方案
- 解答题 概率与统计(专项训练12大题型+高分必刷)(原卷版)2026年高考数学一轮复习讲练测
- 2024-2025学年北京市海淀区第二十中学高二上学期期末物理试题(含答案)
- 金属加工工艺规划
评论
0/150
提交评论