C语言课程设计:销售管理系统

2018-11-15 21:25

┊┊ 课 程 设 计

服务课程名称: 计算机语言(C) 学院: 自动化学院 专业: 电气自动化技术 班级: 电自专121 学号: 05 姓名: 指导教师: 课程设计周次: 16 起始日期:2013.6.17至2013.6.21

目 录

目 录

C语言课程设计成绩评定表……………………………... 01 C语言课程设计任务书…………………………………... 02 需求分析及程序基本框架……………………………….. 03 程序设计说明书 ………………………………………….05 源代码清单………………………………………………...13 课程设计总结…..………………………………………….21

C语言课程设计成绩评定表

C语言课程设计成绩评定表

班级 项目组 项目组组员 电自专121 03 学号 18 姓名 朱勇进 项目组长 本人工作简介: 首先根据题目要求,确定程序的主题结构。在根据组员的能力分配具体任务。我主要编写了头文件,显示销售清单,保存文件,每位销售额的多少和总销售累加。 最后工作就是,整理组员写的代码错误,修改运行程序出现的错误,使程序能够顺利运行。 组长评语: 自我认为已经差不多做到了组长应尽的能力。当遇到困难时,和组员共同商量。在商量之后还是不能解决问题时,积极的请教老师的帮忙,在老师热心的帮助下顺利的完成了此程序的设计。在这次的程序设计中,也知道了组员合作的重要性。 成绩评定标准 理论基础 报告完成情况 纪律表现 程序创意 所选模块完成情况 所选算法难易程度 程序可操作性 答辩表现 A 很好 很好 很好 很好 很好 复杂 很好 很好 B 好 好 好 好 好 比较复杂 好 好 C 比较好 比较好 比较好 比较好 一般 一般 一般 一般 D 一般 一般 一般 一般 较差 简单 较差 较差 E 不好 不好 不好 不好 不好 很简单 不好 不好 优秀 A>=5 良好 A>=3 B<=4 C<=1 中等 A>=1 B>=2 C>=4 D<=1 及格 A=0 B=0 C<=4 D>=4 不及格 A=0 B=0 C=0 D<=4 最后成绩 B<=3 C<=0 D=0 D=0 E=0 负责指导教师: E=0 (签名)指导教师: (签名) 1

C语言课程设计任务书

C语言课程设计任务书

一、设计目的

通过本次课程设计使学生进一步加深对C语言课程内容的理解,初步掌握一般应用程序的开发方法和步骤,进一步了解与掌握C语言的编程方法和技巧,提高学生用C语言解决实际问题的能力。

二、设计要求

1、认真查阅参考书、资料 2、遵守课程设计时间安排 3、按时上机,认真调试程序

4、认真完成课程设计报告

三、课设报告装订内容及顺序

1、课程设计封皮

2、目录

3、课程设计成绩评定表 4、课程设计任务书 5、程序基本框架图 6、程序设计说明书 7、源代码清单 8、课设总结与心得

四、设计题目 销售管理系统

五、时间安排(一周:从 6 月 17 日到 6 月 21 日 )

1、查阅资料及程序设计(1天) 2、程序编制及调试(3天)3、成绩评定(0.5天)

3、打印报告(0.5天)

六、参考文献

1、《C语言程序设计》李淑华/李贞编 大连理工大学出版社 2、《C语言程序设计》孙连科/姚大鹏编 辽海出版社 3、《C++时尚编程百例》网冠科技编.机械工业出版社 4、《TURBO C 实用大全》徐金梧等编. 机械工业出版社

2 需求分析及程序基本框架

需求分析及程序基本框架

需求分析:

题目:销售管理系统 某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容: 1销售员的代号 ○

2产品的代号 ○

3这种产品的当天的销售额 ○

每位销售员每天可能上缴0-5张便条。假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。

1)计算上个月每个人每种产品的销售额。

2)按销售额对销售员进行排序,输出排序结果(销售员代号) 3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)(可选项) 4)输出统计报表

程序基本框架:

数据结构图(如下)

销售管理 菜单 清单 保存 读取 显示 每位销售员的 销售产品每种产品的销按销售额对销 3

需求分析及程序基本框架

程序设计流程图(如下)

输入记录 保存到文件 读取文件 每每按 位种销显销产售示售品额便员的对条的销销清销售售单 售额 员额 排退出管理

4 程序设计说明书

程序设计说明书

一、程序运用的语句:

switch语句,for语句,if语句,break语句,循环的嵌套 二、程序构思:

头文件:每个程序一开始都需要一大堆的定义及声明。考虑到程序的简洁和美观,我考虑到利用头文件来实现这个功能。

一个销售管理系统应该包含销售信息的输入、输出、统计、个人销售额的筛选、总销售额的统计、信息保存以及退出系统这些功能。所以我们想设计这样一个程序,可以通过此程序将销售员信息和销售产品的情况存储在程序中,然后我们根据屏幕提示信息选择功能:输入所要选择的数字,在根据提示,进行数据输入和信息处理,就可以找到相应的信息。另外,我们又设定了文件保存功能,方便信息的保存,以便日后的查询调用。 三、程序功能简介:

1.头文件设计:(组长:朱勇进 完成)

我们首先编译了一个头文件,在头文件里,编译了主函数需要用到的一些函数,如#include \等,因为需要录入便条的所有信息,所有用一个数据结构来实现信息的储存方式,用数组方式,把每条信息都编译成一个数组,如销售员代号用name[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[],int n);/*声明函数*/ int load(RECODE t[]);/*声明函数*/

这些的都是主函数需要用到的数据,因此放入头文件当中,在主程序开始之前直接引用#include \。 2.编辑系统菜单运行:(组员:刘志强 完成)

题目要求我们系统以菜单方式工作,所以我们现要定义一个系统的结构体数组RECODE rec[600],用for (;;)循环让菜单实现无限循环,让switch(menu_select())调用主菜单函数,返回值整数作开关语

5 程序设计说明书

句的条件,之后分别定义菜单的信息,如:

case 1:

length=enter(rec);

就是输入信息的定义编辑,当然最后需要用到break来实现返回。菜单定义完成之后,开始编译菜单的输出,这部分,用了printf就把需要显示的菜单显示出来,然后由用户选择菜单的选项,因为菜单只有0~7的选项,为了防止用户输入选项超值,所以用do while语句来控制,(c<0||c>7)限定了用户输入的数据只有0~7才有效,超值则返回开始菜单,重新选择(return)。 3.输入信息:(组员:李飞 完成)

输入信息一般都是使用scanf来实现,但在用户输入之前需要解决一个问题,程序必须限制用户的输入序数(记录条数),所以在输入数据之前,必须先限定序数,方法则是用一个for循环来实现,有用户输入一个数字,成为循环的上限,而用户输入的便条信息则在此限定下,不能超出,当超出时则返回到开始菜单。用户输入的便条信息分别存入对应的数组当中,如便条条数则存入t[i].num当中。 4.保存信息,参数为结构体数组和记录数:(组员 张恩斌完成)

用户输入的信息需要保存时,用save选项进行保存。保存的时候,实现应该建立一个指向文件的指针,从而固定保存文件时的位置,之后用if语句来判断打开文件是否正常,if((fp=fopen(\,如果没打开(打开不正常),则程序执行退出;当判断文件打开正常时,系统显示“保存文件”(用printf(\保存文件\\n\来完成),保存信息是用到的fprintf函数,将制定记录数输入文件fprintf(fp,\,因为源文件中采用了换行,保存文件是系统默认不会进行保存,所有必须加如换行符号保存,防止文件丢失,保证文件以用户输入的信息一致,保存换行符号依然采用fprintf函数来实现,具体源文件为fprintf(fp,\;当确立了保存的可以性之后,系统开始录入需要保存的信息,用for循环语句,不断把用户输入的信息保存,因为之前在编写输入,输出程序时,都用到了一定的格式,保证信息的一一对应,所以在保存文件时,也需要确定和输入是相同的格式,这里依然使用fprintf函数来进行保存,如fprintf(fp,\.a2,t[i].a3,t[i].a4,t[i].a5)就是把销售员代号,产品代号,销售额按照间隔7个字符格式进行保存,在保存格式确立后,需要把换行符号再次写入文件,程序结束后fclose结束保存,并用printf输出“文件保存成功”,让用户知道已经保存文件。

6 程序设计说明书

5. 读入取函数,参数为结构体数组:(组长:朱勇进 完成)

前面已经做了文件的保存,当保存文件成功后,系统会以record.txt文件保存在与程序同级的文件夹下,而读入函数,就是为了让用户再次打开运行程序时,可以直接读取之前已经输入并保存过的信息,和储存信息一样,读入函数也采用了参数为结构体数组,同样应该确定文件指向指针FILE *fp,读入函数之前,应该确定是否有已经保存的文件,用保存文件一样,用if语句来进行判断if((fp=fopen(\,如果判断失败,系统不能读入文件,则会显示“不能打开文件”,用printf(\不能打开文件\\n\来实现,同时系统要结束读入文件的执行,用exit(1)实现;如果判断成功,则系统会自动读入用户已经保存的数据(fscanf(fp,\读入记录数),用for循环把已经保存的数据一一对应的读入到正在执行的程序中,这里需要注意的是,读取的数据格式应该同保存时的一至,组成的格式与读取格式保持一致的原则我们编写了该方式fprintf(fp,\.a2,t[i].a3,t[i].a4,t[i].a5),则读入的时的格式就为fscanf(fp,\&(t[i].a3),&(t[i].a4),&(t[i].a5)),读取成功后关闭文件fclose(fp),并显示“成功地从文件读入数据!!!”(用printf实现)。 6.清单输出:(组长:朱勇进 完成)

读取销售情况有3个,分别是每个人每种产品的销售额,按销售额对销售员进行排序和每种产品的总销售额三个函数: 1).每个人每种产品的销售额:

首先,要定义每个人,每种产品,销售额数组如 int i,j,sum0=0,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0;

int c[4],b1[4]={0},b2[4]={0},b3[4]={0},b4[4]={0},b5[4]={0},用for循环来求每个人的总销售额:for(i=0;i<4;i++);用for循环来求每个人每种产品的总销售额:for(i=0;i

此部分要分两部分其一是,每位销售员销售额;其二是,按销售额对销售员排序。在求每个销售员销售额时也是要先定义销售员代号,产品代号,销售额。接着是则是用输入要查询的销售员的代号,用scanf(\来记录输入销售员代号的信息,然后输出头标(如销

6 7 程序设计说明书

售员代号,产品代号,销售额等,用printf实现),之后开始查询,查询信息首先需要一个for语句来,实现对已存入数据的所有查询for(i=0;i

也一样首先要定义数组,接着用c[i]=sum(t,n,i+1) 求每个人的总销售额,再用for循环,再用sum0+=c[i]对所有产品的销售额求总,用for循环对每个人每种产品的销售额求总销售额,再用for循环实现每种产品的总销售额,然后输出

头标(如销售员代号,产品代号,总销售额等,用printf实现)即可。 四、最后运行结果:

进入主菜单:

8

程序设计说明书

选择“1”,输入便条:

输入条数,如:输入2天的便条,8条

9 程序设计说明书

选择“2”,保存到文件

选择“3”,读取文件:

选择“4”,显示清单:

10 程序设计说明书

选择“5”,每位销售员的销售额:

输入查询员工代号,如:查询的员工号为3:

选择“6”, 每种产品的销售额:

11 程序设计说明书

选择“7”, 按销售额对销售员排序:

选择“0”,退出管理:

12 源代码清单

源代码清单

头文件:

#include \输入输出函数*/

#include \通用应用程序函数*/ #include \字符串函数*/ #include \字符操作函数*/ typedef struct /*定义结构体变量*/ {

char name[10]; /*销售员代号*/ int a1; /*产品一代号*/ int a2; /*产品二代号*/ int a3; /*产品三代号*/ 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[],int n);/*声明函数*/ void list2(RECODE t[],int n);/*声明函数*/ void list3(RECODE t[],int n);/*声明函数*/ void save(RECODE t[],int n);/*声明函数*/ int load(RECODE t[]);/*声明函数*/

主函数:

#include \/*主函数开始*/

void main()/*主函数*/ {

RECODE rec[600]={{'\\0'},0,0,0,0.0}; int length;

13

源代码清单

system(\清屏*/ for( ; ; ) /*无限循环*/

{switch(menu_select()) /*根据用户的选择判断该调用哪个功能函数*/ {

case 1:length=enter(rec); break;

case 2:save(rec,length); break;

case 3:length=load(rec); break;

case 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(\主菜单*****************\\n\\n\printf(\输入便条\\n\printf(\保存到文件\\n\printf(\读取文件\\n\

printf(\显示便条清单\\n\printf(\每位销售员的销售额\\n\printf(\每种产品的销售额\\n\printf(\按销售额对销售员排序\\n\printf(\退出管理\\n\

printf(\printf(\请选择你的操作(0-7): \\n\scanf(\

14 源代码清单

if(0

system(\清屏*/ return n; }

/*清单输入*/

int enter(RECODE t[]) {

int i,num;

system(\清屏*/

printf(\请输入要写的便条条数:\\n\

scanf(\输入所要写入的清单的条数*/

printf(\for(i=0;i

printf(\

scanf(\,&t[i].a5); }

printf(\return i; }

/*保存文件*/

void save(RECODE t[],int n) {

int i;

FILE *fp;/*调用fopen函数*/

if((fp=fopen(\如果函数带回一个空指针值*/ {

printf(\不能打开文件\\n\不能打开文件*/ exit(1); }

fprintf(fp,\fprintf(fp,\for(i=0;i

fprintf(fp,\

15 源代码清单

3,t[i].a4,t[i].a5);/*将便条的信息输出到fp指向的文件上*/ fprintf(fp,\

//fwrite(&t[i], sizeof(t[i]), 1, fp); }

fclose(fp);/*关闭文件*/

printf(\保存成功***\\n\\n\显示保存成功*/ printf(\getchar(); }

/*读取文件*/

int load(RECODE t[]) {

int i,n; FILE *fp;

if((fp=fopen(\如果函数带回一个空指针值*/ {

printf(\不能打开文件\\n\不能打开文件*/ exit(1); }

fscanf(fp,\for(i=0;i

fscanf(fp,\&t[i].a3,&t[i].a4,&t[i].a5);/*从fp指向的文件上读入便条信息*/ fclose(fp);

printf(\成功读取文件!!!\\n\成功读入信息*/ printf(\getchar(); return n; }

/*显示清单*/

void list1(RECODE t[],int n) {

int i; FILE *fp;

if((fp=fopen(\如果函数带回一个空指针值*/

16 源代码清单

{

printf(\不能打开文件\\n\不能打开文件*/ exit(1); }

fscanf(fp,\for(i=0;i

fscanf(fp,\.a3,&t[i].a4,&t[i].a5);/*从fp指向的文件上读入便条信息*/ printf(\lise of saling recode**************************\\n\\n\\n\

printf(\for(i=0;i

printf(\---------\\n\

printf(\].name,t[i].a1,t[i].a2,t[i].a3,t[i].a4,t[i].a5); }

fclose(fp);

printf(\-----\\n\

printf(\getchar(); }

/*每位销售员销售额*/

void salor(RECODE t[], int n) {

int i,s;

int b1=0,b2=0,b3=0,b4=0,b5=0;

printf(\请输入要查询的销售员的代号(1-4): \\n\

scanf(\输入所要查看的售货员的代号*/ for(i=0;i

17 源代码清单

b5+=t[i].a5;};

printf(\

printf(\-----------\\n\

printf(\ printf(\ getchar(); }

/*销售产品总和*/

int sum(RECODE t[],int n, int m) {

int i,sum=0;

for(i=0;i<=n;i++)/*求销售产品的总和*/ if(m==t[i].name[i]) {sum+=t[i].a1; sum+=t[i].a2; sum+=t[i].a3; sum+=t[i].a4; sum+=t[i].a5; }

return sum; }

/*每种产品的销售额*/

void list2(RECODE t[],int n) {

int i,j,sum0=0,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0;

int c[4],b1[4]={0},b2[4]={0},b3[4]={0},b4[4]={0},b5[4]={0}; system(\for(i=0;i<4;i++)

c[i]=sum(t,n,i+1);/*求每个人的总销售额*/ for(i=0;i<4;i++)

sum0+=c[i];/*所有产品的销售额*/

for(i=0;i

18

源代码清单

if(j+1==t[i].name[i]) {b1[j]+=t[i].a1; b2[j]+=t[i].a2; b3[j]+=t[i].a3; b4[j]+=t[i].a4; b5[j]+=t[i].a5; } }

for(i=0;i<4;i++)/*每种产品的总销售额*/ {sum1+=b1[i]; sum2+=b2[i]; sum3+=b3[i]; sum4+=b4[i]; sum5+=b5[i]; }

printf(\

printf(\for(i=0;i<4;i++)

printf(\%-10d%-7d%-7d%-7d%-7d%-7d%-7d\\n\5[i],c[i]); printf(\

psum %-7d%-7d%-7d%-7d%-7d%-7d\printf(\getchar(); }

/*按销售额对销售员排序*/

void list3(RECODE t[],int n) {

int i,j,s;

int c[4],m[4]; /*定义两个数组*/ system(\清屏*/ for(i=0;i<4;i++) m[i]=i+1;

for(i=0;i<4;i++) c[i]=sum(t,n,m[i]);

for(i=0;i<4;i++)/*按销售员的销售额进行排序*/ for(j=i+1;j<4;j++)

19 源代码清单

if(c[i]

s=m[i]; m[i]=m[j]; m[j]=s; s=c[i]; c[i]=c[j]; c[j]=s; }

printf(\for(i=0;i<4;i++)/*输出销售员代号*/ printf(\

printf(\getchar(); }

20 课程设计总结

课程设计总结

回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处对C,首先对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。还有,就是通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。

学好C语言的最重要的地方就是要对各个概念都要透彻了解,在这次课程设计里面我才发现自己对概念性问题有很多不了解的地方,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,调用函数,格式??通过这次课程设计之后,一定把以前所学过的知识重新温故。

其中印象最深的就是在设计中出现格式错误和调用的错误了。在格式错误出现之后,跟老师探讨之后知道“fscanf”函数和“fprintf”必须对应一样,不然得不到想要的结果,最后改了一个变量的类型解决这个问题。在调用错误出现之后,听了老师的建议之后,大概知道了在调用方面哪里出现了问题。在回寝室之后,和室友张诗浩讨论一个晚上之后总算解决了调用方面出现的问题。

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在周老师的辛勤指导下,终于游逆而解。同时,在周老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢

21


C语言课程设计:销售管理系统.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:管理学试题及答案3

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: