c语言销售管理系统

上传人:xin****18 文档编号:43158737 上传时间:2021-11-30 格式:DOC 页数:13 大小:101KB
收藏 版权申诉 举报 下载
c语言销售管理系统_第1页
第1页 / 共13页
c语言销售管理系统_第2页
第2页 / 共13页
c语言销售管理系统_第3页
第3页 / 共13页
资源描述:

《c语言销售管理系统》由会员分享,可在线阅读,更多相关《c语言销售管理系统(13页珍藏版)》请在装配图网上搜索。

1、课程设计说明书学院、系:专业:学 生姓名:学号:设 计题目:销售管理系统起 迄日期:指 导教师:日期:2017:2017年 5 5 月 1212 日1 设计目的1了解管理信息系统的开发流程,熟悉C 语言的文件和结构数组的各种基本操作。2. 握高级程序设计语言的知识。3. 践中逐步掌握程序设计的思想和方法,培养问题求解和语言的应用能力。4. 程序中涉及结构体、数组、文件等方面的知识。通过本程序的训练,能对C 语言的文件操作有一个更深刻的了解。5. 提高与程序设计和软件开发有关的各种综合能力。6. 通过本课程设计,培养上机动手能力,巩固C 语言程序设计课程学习的内容,掌握工程软件设计的基本方法,强

2、化上机动手能力,闯过编程关;7. 为后续各门计算机课程的学习打下坚实基础 ;8. 学会用 c 语言程序设计来设计销售管理系统设计。2 任务概述某公司有四个销售员(编号: 1-4 ),负责销售五种产品(编号: 1-5)。每个销售员都将当天出售的每种产品 各写一张便条交上来。每张便条包含内容: 1 )销售员的代号, 2)产品的代号, 3)这种产品的当天的销售额。 每位销售员每天上缴 1 张便条。试设计一个便条管理系统,使之能提供以下功能:1 、系统以菜单方式工作2、便条信息录入功能 (便条信息用文件保存 ) 输入3、收集到了上个月的所有便条后,读取销售情况1) 计算每个人每种产品的销售额。2) 按

3、销售额对销售员进行排序,输出排序结果(销售员代号)3) 统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果4) 输出统计报表3 模块划分主菜单及头文件设计编辑系统菜单运行输入信息保存信息,参数为结构体数组和记录数读入取函数,参数为结构体数组清单输出主要功能的实现4 主要函数说明及其 N-S 图主菜单及头文件设计我们按照老师所给的示例我们首先编译了一个头文件, 在头文件里, 编译了主函数需要用到的一些函数, 如 #include 等,因为需要录入便条的所有信息,所有用一个数据结构来实现信息的储存方式,用数组方式,把 每条信息都编译成一个数组 , 如销售员代号用 name4 记录。头

4、文件还包括了定义常数记录数 typedef struct , 主函数原型int menu_select();/* 声明函数 */int enter(RECODE t);/* 声明函数 */void salor(RECODE t,int n);/* 声明函数 */int sum(RECODE t,int n,int m);/* 声明函数 */void list1(RECODE t,int n);/* 声明函数 */void list2(RECODE t,int n);/* 声明函数 */void list3(RECODE t,int n);/* 声明函数 */void save(RECODE t

5、,int n);/* 声明函数 */int load(RECODE t);/* 声明函数 */ 这些的都是主函数需要用到的数据,因此放入头文件当中,在主程序开始之前直接引用 #include 。2.编辑系统菜单运行:题目要求我们系统以菜单方式工作, 所以我们现要定义一个系统的结构体数组 RECODErec600 ,用 for (;) 循环让菜单实现无限循环,让 switch(menu_select() 调用主菜单函数,返回值整数作开关语句的条件,之后分 别定义菜单的信息,如:case 1:length=enter(rec);就是输入信息的定义编辑, 当然最后需要用到 break 来实现返回。

6、菜单定义完成之后, 开始编译菜单的输出, 这部分,用了 printf 就把需要显示的菜单显示出来,然后由用户选择菜单的选项,因为菜单只有 07 的选项, 为了防止用户输入选项超值,所以用do while 语句来控制,(c7)限定了用户输入的数据只有07 才有效,超值则返回开始菜单,重新选择( return )。3. 输入信息:输入信息一般都是使用 scanf 来实现, 但在用户输入之前需要解决一个问题,程序必须限制用户的输入序数 (记录条数) ,所以在输入数据之前, 必须先限定序数, 方法则是用一个 for 循环来实现, 有用户输入一个数字, 成为循环的上限,而用户输入的便条信息则在此限定下,

7、不能超出,当超出时则返回到开始菜单。用户输入的便 条信息分别存入对应的数组当中,如便条条数则存入 ti.num 当中。4. 保存信息,参数为结构体数组和记录数:用户输入的信息需要保存时,用 save 选项进行保存。保存的时候,实现应该建立一个指向文件的指针,从而固定保存文件时的位置, 之后用 if 语句来判断打开文件是否正常, if(fp=fopen(,wb)=NULL) ,如果没 打开(打开不正常),则程序执行退出;当判断文件打开正常时,系统显示“保存文件”(用 printf(n 保存 文件 n) 来完成),保存信息是用到的 fprintf 函数,将制定记录数输入文件 fprintf(fp,

8、%d,n) ,因为源文 件中采用了换行,保存文件是系统默认不会进行保存,所有必须加如换行符号保存,防止文件丢失,保证文件以 用户输入的信息一致,保存换行符号依然采用 fprintf 函数来实现,具体源文件为 fprintf(fp,rn) ;当确 立了保存的可以性之后,系统开始录入需要保存的信息,用 for 循环语句,不断把用户输入的信息保存,因为之 前在编写输入,输出程序时,都用到了一定的格式,保证信息的一一对应,所以在保存文件时,也需要确定和输 入 是 相 同 的 格 式 , 这 里 依 然 使 用 fprintf 函 数 来 进 行 保 存 , 如fprintf(fp,%-10d%-7d%

9、-7d%-7d%-7d-7d,ti.name,ti.a1,ti.a2,ti.a3,ti.a4,ti.a5)就 是 把 销售员代号,产品代号,销售额按照间隔 7 个字符格式进行保存,在保存格式确立后,需要把换行符号再次写入文 件,程序结束后 fclose 结束保存,并用 printf 输出“文件保存成功”,让用户知道已经保存文件。5. 读入取函数,参数为结构体数组:前面已经做了文件的保存,当保存文件成功后,系统会以文件保存在与程序同级的文件夹下,而读入函数, 就是为了让用户再次打开运行程序时, 可以直接读取之前已经输入并保存过的信息, 和储存信息一样, 读入函数 也采用了参数为结构体数组,同样应

10、该确定文件指向指针 FILE *fp ,读入函数之前,应该确定是否有已经保存 的文件,用保存文件一样,用 if 语句来进行判断 if(fp=fopen(,rb)=NULL) ,如果判断失败,系统不能 读入文件,则会显示“不能打开文件”,用 printf( 不能打开文件 n) 来实现,同时系统要结束读入文件的执 行,用 exit(1) 实现; 如果判断成功, 则系统会自动读入用户已经保存的数据 ( fscanf(fp,%d,&n) 读入记录数) 用 for 循环把已经保存的数据一一对应的读入到正在执行的程序中, 这里需要注意的是, 读取的数据格式应该同fprintf(fp,%-10d%-7d%-

11、7d%-7d%-7d-7d,ti.name,ti.a1,ti.a2,ti.a3,ti.a4,ti.a5)fscanf(fp,%d%d%d%d%d%d,&(ti.name),&(ti.a1),&(ti.a2),&(ti.a3),&(ti.a4),&(ti.a5)取成功后关闭文件 fclose(fp) ,并显示“成功地从文件读入数据 ! ”(用 printf 实现)。6.清单输出:读取销售情况有 3 个,分别是每个人每种产品的销售额, 按销售额对销售员进行排序和每种产品的总销售额 三个函数:1). 每个人每种产品的销售额:首先,要定义每个人,每种产品,销售额数组如 int i,j,sum0=0,s

12、um1=0,sum2=0,sum3=0,sum4=0,sum5=0;int c4,b14=0,b24=0,b34=0,b44=0,b54=0 ,用 for 循 环来求 每个人 的总销售 额: for(i=0;i4;i+) ;用 for 循环来求每个人每种产品的总销售额: for(i=0;in;i+), for(j=0;j4;j+);在用for 循环每种产品的总销售额:for(i=0;i4;i+) ,之后则在系统界面输入销售员代号,产品代号,产品代号用printf 即可实现,用 sum 对每个销售员的销售额求和,用 system(cls) 来录入信息,然后输出头标(如销售员 代号,产品代号,销售

13、额等,用 printf 实现),之后开始查询,用 for 语句来。2). 按销售额对销售员进行排序:保存时的一致如储存时的格式是时的格式,则读入的,读此部分要分两部分其一是,每位销售员销售额;其二是,按销售额对销售员排序。在求每个销售员销售额时也是要先定义销售员代号,产品代号,销售额。接着是则是用输入要查询的销售员的代号,用来记录输入销售员代号的信息,然后输出头标(如销售员代号,产品代号,销售额等,用printf 实现),之后开始查询,查询信息首先需要一个for 语句来,实现对已存入数据的所有查询for(i=0;in;i+),关键内容是查询销售员代号时用 if(strcmp( name,ti.

14、 name)=0),找出与输入的销售员相同的储存信息,查找完成后则把该销售员的所有信息全部输出。上面是求每个销售员销售额,接着是要在上面的基础上排序。首先要定义两个数组对所有产品的销售额求总,用 for 循环对每个人每种产品的销售额求总销售额,销售额,然后输出头标(如销售员代号,产品代号,总销售额等,用printf 实现)即可。5 程序运行数据及其结果1.进入主菜单:2.选择“ 1 ”,输入便条:3. 输入条数,如:输入 2 天的便条,8 条:4. 选择“ 2”,保存到文件:5. 选择“ 3”,读取文件:6. 选择“ 4”,显示清单:7. 选择“ 5”,每位销售员的销售额:8. 输入查询员工代

15、号,如:查询的员工号为3:8.选择“ 6”,每种产品的销售额:9.选择“ 7”,按销售额对销售员排序:10. 选择“ 0”,退出管理:11. 保存的文件:保存的文件为 TXT 格式,其保存的文件为:6 课程设计心得经过上机实践学习,使我对c 语言有了更进一步的认识和了解,C 语言是计算机程序设计的重要理论基础,在我们以后的学习和工作中都有着十分重要的地位。要学好这种语言,仅仅学习课本上的知识是不够的,还要经常自 己动手,有较强的实践能力。只有多动手,经常编写程序,才能发现我们学习上的漏洞和自己的不足,并在实践中 解决这些问题,不断提高自己转化知识的能力。通过实践,我也发现我的好多不足之处,首先

16、是自己在指法上还不 行,经常按错字母,通过学习也有所改进;再有对c 语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对 c 语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。通过实践的 学习,我认到学好计算机要重视实践操作,不仅仅是学习c 语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。附录:scan f(%d,&s)如:int c4,m4,接着用 for 循环(for(i=0;i4;i+) 再用 if语句来求,最后是输出用printf(%dn,mi)3).每种产品的总销售

17、额:也一样首先要定义数组,接着用 ci=sum(t,n,i+1);for(j=i+1;j4;j+)对销售员的销售额进行排序,实现。求每个人的总销售额,再用 for 循环,再用 sumO+=ci再用 for 循环实现每种产品的总#include /*输入输出函数*/#include /*通用应用程序函数*/#include /* 字符串函数 */ #include /* 字符操作函数 */ typedef struct /*定义结构体变量 */int name; /* 销售员代号 */int a1; /* 产品一代号 */int a2; /* 产品二代号 */int a3; /* 产品三代号 *

18、/int a4; /* 产品四代号 */int a5; /* 产品五代号 */ RECODE;int menu_select();/*声明函数 */int enter(RECODE t);/* 声明函数 */ void salor(RECODE t,int n);/* 声明函数 */ int sum(RECODE t,int n,int m);/* 声明函数*/ void list1(RECODE t,intn);/* 声明函数*/ void list2(RECODE t,int n);/* 声明函数*/ void list3(RECODEt,int n);/* 声明函数*/ void sav

19、e(RECODE t,int n);/* 声明函数 */ intload(RECODE t);/* 声明函数 */*主函数开始 */ int main()/* 主函数*/RECODE rec600;int length;system(cls); /*清屏*/for( ; ; ) /* 无限循环 */switch(menu_select() /*根据用户的选择判断该调用哪个功能函数 */case 1:length=enter(rec);break;case 2:save(rec,length);以下是函数原型 */break;case 3:length=load(rec); break;case

20、 4:list1(rec,length); break;case 5:salor(rec,length); break;case 6:list2(rec,length); break;case 7:list3(rec,length); break;case 0:exit(0);int menu_select() /*菜单函数 */int n;printf(*MENU*nn);printf( 1 输入便条 n);printf( 2 保存到文件 n);printf( 3 读取文件 n);printf( 4 显示便条清单 n);printf( 5 每位销售员的销售额 n);printf( 6 每种产

21、品的销售额 n);printf( 7 按销售额对销售员排序 n);printf( 0 退出管理 n);printf(*END*nn);printf( 请选择你的操作 (0-7): n);scanf(%d,&n); if(0n & n7) system(cls); /* 清屏*/return n;/*清单输入 */int enter(RECODE t)int i,num;system(cls); /* 清屏*/printf( 请输入要写的便条条数: n);scanf(%d,&num);/* 输入所要写入的清单的条数 */ printf(name product1 product2 product

22、3 product4product5); for(i=0;inum;i+)/* 将所输入的条数存入结构体数组中 */printf(nn- n);scanf(%d%d%d%d%d%d,&ti.name,&ti.a1,&ti.a2,&ti.a3,&ti.a4,&ti.a5);printf(n- nnn);return i;/*保存文件 */void save(RECODE t,int n)int i;FILE *fp;/* 调用 fopen 函数 */if(fp=fopen(,wb)=NULL)/* 如果函数带回一个空指针值 */printf( 不能打开文件 n);/* 不能打开文件 */exit

23、(1);fprintf(fp,%d,n); fprintf(fp,rn); for(i=0;in;i+)fprintf(fp,%-10d%-7d%-7d%-7d%-7d%-7d,ti.name,ti.a1,ti.a2,ti.a3,ti.a4,ti.a5);/* 息输出到 fp 指向的文件上*/fprintf(fp,rn);fclose(fp);/* 关闭文件 */ printf(* 保存成功 *nn);/* 显示保存成功 */printf(press any key to continue.n);getchar();/*读取文件 */int load(RECODE t)int i,n;FILE

24、 *fp;if(fp=fopen(,r)=NULL)/* 如果函数带回一个空指针值 */将便 条的 信printf( 不能打开文件 n);/* 不能打开文件 */exit(1);fscanf(fp,%d,&n);for(i=0;in;i+)fscanf(fp,%d%d%d%d%d%d,&(ti.name),&(ti.a1),&(ti.a2), &(ti.a3),&(ti.a4),&(ti.a5);/* 指向的文件上读入便条信息 */fclose(fp);printf(n 成功读取文件 !n);/* 成功读入信息 */printf(press any key to continue.nn);ge

25、tchar();return n;/*显示清单 */void list1(RECODE t,int n)int i;FILE *fp;if(fp=fopen(,r)=NULL)/* 如果函数带回一个空指针值 */printf( 不能打开文件 n);/* 不能打开文件 */exit(1);fscanf(fp,%d,&n); for(i=0;in;i+)从 fpfscanf(fp,%d%d%d%d%d%d,&(ti.name),&(ti.a1),&(ti.a2),&(ti.a3),&(ti.a4),&(ti.a5);/* 从 fp 指向的文件上读入便条信息 */ fclose(fp);printf

26、( * *the lise of saling recode*nnn);printf(name product1 product2 product3 product4 product5); for(i=0;in;i+)/* 将所输入的条数存入结构体数组中 */printf(nn- n);printf( %d %d %d %d %d a2,ti.a3,ti.a4,ti.a5);printf(nn- n);printf(n press any key to continue. n);getchar();/* 每位销售员销售额 */ void salor(RECODE t,int n)int i,s

27、;int b1=0,b2=0,b3=0,b4=0,b5=0;printf(请输入要查询的销售员的代号(1-4): n); scanf(%d,&s); /* 输入所要查看的售货员的代号 */for(i=0;in;i+) /* 对每种产品的销售额求和 */ if(ti.name=s)b1+=ti.a1;b2+=ti.a2;b3+=ti.a3;b4+=ti.a4;b5+=ti.a5;printf(name product1 product2 product3 product4 product5n); printf(n);printf(%-15d%-10d%-10d%-7d%-7d%-7d,s,b1,

28、b2,b3,b4,b5); printf(npress enter to continue.n);getchar();%d,ti.name,ti.a1,ti./* 销售产品总和 */int sum(RECODE t,int n, int e)int i,sum=0;for(i=0;i=n;i+)/* 求销售产品的总和 */if(e=ti.name)sum+=ti.a1;sum+=ti.a2;sum+=ti.a3;sum+=ti.a4;sum+=ti.a5;return sum;/* 每种产品的销售额 */void list2(RECODE t,int n)int i,j,sum0=0,sum1

29、=0,sum2=0,sum3=0,sum4=0,sum5=0;int c4,b14=0,b24=0,b34=0,b44=0,b54=0; system(cls); ;for(i=0;i4;i+)ci=sum(t,n,i+1);/* 求每个人的总销售额 */for(i=0;i4;i+)sum0+=ci;/* 所有产品的销售额 */for(i=0;in;i+)/* 求每个人每种产品的总销售额 */ for(j=0;j4;j+)if(j+1=ti.name)b1j+=ti.a1;b2j+=ti.a2;b3j+=ti.a3;b4j+=ti.a4;b5j+=ti.a5;for(i=0;i4;i+)/*

30、每种产品的总销售额 */sum1+=b1i;sum2+=b2i;sum3+=b3i;sum4+=b4i;sum5+=b5i;printf( products numn);printf( code 1 2 3 4 5 sumnn); for(i=0;i4;i+)printf( %-10d%-7d%-7d%-7d%-7d%-7d%-7dn,i+1,b1i,b2i,b3i,b4i,b5i,ci);printf( psum %-7d%-7d%-7d%-7d%-7d%-7d,sum1,sum2,sum3,sum4,sum5,sum0);printf(n press any key to continue

31、. n);getchar();/* 按销售额对销售员排序 */void list3(RECODE t,int n)int i,j,s;int c4,m4; /* 定义两个数组 */system(cls); /*清屏 */for(i=0;i4;i+)mi=i+1;for(i=0;i4;i+)ci=sum(t,n,mi);for(i=0;i4;i+)/* 按销售员的销售额进行排序 */for(j=i+1;j4;j+)if(cicj)s=mi;mi=mj;mj=s;s=ci;ci=cj;cj=s;printf(the sequce of salorsaling number from many to fewn);for(i=0;i4;i+)/* 输出销售员代号 */ printf(%dn,mi);printf(ninput any key to continue.n);getchar();

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!