C语言课程设计销售管理系统.docx
《C语言课程设计销售管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计销售管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
C语言课程设计销售管理系统
目录
C语言课程设计成绩评定表……………………………...01
C语言课程设计任务书…………………………………...02
需求分析及程序基本框架………………………………..03
程序设计说明书………………………………………….05
源代码清单………………………………………………...13
课程设计总结…..………………………………………….21
┊┊
C语言课程设计成绩评定表
班级
电自专121
学号
18
姓名
项目组
03
项目组长
朱勇进
项目组组员
本人工作简介:
首先根据题目要求,确定程序的主题结构。
在根据组员的能力分配具体任务。
我主要编写了头文件,显示销售清单,保存文件,每位销售额的多少和总销售累加。
最后工作就是,整理组员写的代码错误,修改运行程序出现的错误,使程序能够顺利运行。
组长评语:
自我认为已经差不多做到了组长应尽的能力。
当遇到困难时,和组员共同商量。
在商量之后还是不能解决问题时,积极的请教老师的帮忙,在老师热心的帮助下顺利的完成了此程序的设计。
在这次的程序设计中,也知道了组员合作的重要性。
成绩评定标准
A
B
C
D
E
理论基础
很好
好
比较好
一般
不好
报告完成情况
很好
好
比较好
一般
不好
纪律表现
很好
好
比较好
一般
不好
程序创意
很好
好
比较好
一般
不好
所选模块完成情况
很好
好
一般
较差
不好
所选算法难易程度
复杂
比较复杂
一般
简单
很简单
程序可操作性
很好
好
一般
较差
不好
答辩表现
很好
好
一般
较差
不好
最后成绩
优秀
A>=5
B<=3
C<=0
D=0
E=0
良好
A>=3
B<=4
C<=1
D=0
E=0
中等
A>=1
B>=2
C>=4
D<=1
E=0
及格
A=0
B=0
C<=4
D>=4
不及格
A=0
B=0
C=0
D<=4
E>=4
负责指导教师:
(签名)
指导教师:
(签名)
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、《TURBOC实用大全》徐金梧等编.机械工业出版社
需求分析及程序基本框架
需求分析:
题目:
销售管理系统
某公司有四个销售员(编号:
1-4),负责销售五种产品(编号:
1-5)。
每个销售员都将当天出售的每种产品各写一张便条交上来。
每张便条包含内容:
销售员的代号
产品的代号
这种产品的当天的销售额
每位销售员每天可能上缴0-5张便条。
假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。
1)计算上个月每个人每种产品的销售额。
2)按销售额对销售员进行排序,输出排序结果(销售员代号)
3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)(可选项)
4)输出统计报表
程序基本框架:
数据结构图(如下)
程序设计流程图(如下)
程序设计说明书
一、程序运用的语句:
switch语句,for语句,if语句,break语句,循环的嵌套
二、程序构思:
头文件:
每个程序一开始都需要一大堆的定义及声明。
考虑到程序的简洁和美观,我考虑到利用头文件来实现这个功能。
一个销售管理系统应该包含销售信息的输入、输出、统计、个人销售额的筛选、总销售额的统计、信息保存以及退出系统这些功能。
所以我们想设计这样一个程序,可以通过此程序将销售员信息和销售产品的情况存储在程序中,然后我们根据屏幕提示信息选择功能:
输入所要选择的数字,在根据提示,进行数据输入和信息处理,就可以找到相应的信息。
另外,我们又设定了文件保存功能,方便信息的保存,以便日后的查询调用。
三、程序功能简介:
1.头文件设计:
(组长:
朱勇进完成)
我们首先编译了一个头文件,在头文件里,编译了主函数需要用到的一些函数,如#include"stdio.h"等,因为需要录入便条的所有信息,所有用一个数据结构来实现信息的储存方式,用数组方式,把每条信息都编译成一个数组,如销售员代号用name[4]记录。
头文件还包括了定义常数记录数typedefstruct,主函数原型:
intmenu_select();/*声明函数*/
intenter(RECODEt[]);/*声明函数*/
voidsalor(RECODEt[],intn);/*声明函数*/
intsum(RECODEt[],intn,intm);/*声明函数*/
voidlist1(RECODEt[],intn);/*声明函数*/
voidlist2(RECODEt[],intn);/*声明函数*/
voidlist3(RECODEt[],intn);/*声明函数*/
voidsave(RECODEt[],intn);/*声明函数*/
intload(RECODEt[]);/*声明函数*/
这些的都是主函数需要用到的数据,因此放入头文件当中,在主程序开始之前直接引用#include"pro.h"。
2.编辑系统菜单运行:
(组员:
刘志强完成)
题目要求我们系统以菜单方式工作,所以我们现要定义一个系统的结构体数组RECODErec[600],用for(;;)循环让菜单实现无限循环,让switch(menu_select())调用主菜单函数,返回值整数作开关语句的条件,之后分别定义菜单的信息,如:
case1:
length=enter(rec);
就是输入信息的定义编辑,当然最后需要用到break来实现返回。
菜单定义完成之后,开始编译菜单的输出,这部分,用了printf就把需要显示的菜单显示出来,然后由用户选择菜单的选项,因为菜单只有0~7的选项,为了防止用户输入选项超值,所以用dowhile语句来控制,(c<0||c>7)限定了用户输入的数据只有0~7才有效,超值则返回开始菜单,重新选择(return)。
3.输入信息:
(组员:
李飞完成)
输入信息一般都是使用scanf来实现,但在用户输入之前需要解决一个问题,程序必须限制用户的输入序数(记录条数),所以在输入数据之前,必须先限定序数,方法则是用一个for循环来实现,有用户输入一个数字,成为循环的上限,而用户输入的便条信息则在此限定下,不能超出,当超出时则返回到开始菜单。
用户输入的便条信息分别存入对应的数组当中,如便条条数则存入t[i].num当中。
4.保存信息,参数为结构体数组和记录数:
(组员张恩斌完成)
用户输入的信息需要保存时,用save选项进行保存。
保存的时候,实现应该建立一个指向文件的指针,从而固定保存文件时的位置,之后用if语句来判断打开文件是否正常,if((fp=fopen("record.txt","wb"))==NULL),如果没打开(打开不正常),则程序执行退出;当判断文件打开正常时,系统显示“保存文件”(用printf("\n保存文件\n")来完成),保存信息是用到的fprintf函数,将制定记录数输入文件fprintf(fp,"%d",n),因为源文件中采用了换行,保存文件是系统默认不会进行保存,所有必须加如换行符号保存,防止文件丢失,保证文件以用户输入的信息一致,保存换行符号依然采用fprintf函数来实现,具体源文件为fprintf(fp,"\r\n");当确立了保存的可以性之后,系统开始录入需要保存的信息,用for循环语句,不断把用户输入的信息保存,因为之前在编写输入,输出程序时,都用到了一定的格式,保证信息的一一对应,所以在保存文件时,也需要确定和输入是相同的格式,这里依然使用fprintf函数来进行保存,如fprintf(fp,"%-10d%-7d%-7d%-7d%-7d-7d",t[i].name,t[i].a1,t[i].a2,t[i].a3,t[i].a4,t[i].a5)就是把销售员代号,产品代号,销售额按照间隔7个字符格式进行保存,在保存格式确立后,需要把换行符号再次写入文件,程序结束后fclose结束保存,并用printf输出“文件保存成功”,让用户知道已经保存文件。
5.读入取函数,参数为结构体数组:
(组长:
朱勇进完成)
前面已经做了文件的保存,当保存文件成功后,系统会以record.txt文件保存在与程序同级的文件夹下,而读入函数,就是为了让用户再次打开运行程序时,可以直接读取之前已经输入并保存过的信息,和储存信息一样,读入函数也采用了参数为结构体数组,同样应该确定文件指向指针FILE*fp,读入函数之前,应该确定是否有已经保存的文件,用保存文件一样,用if语句来进行判断if((fp=fopen("record.txt","rb"))==NULL),如果判断失败,系统不能读入文件,则会显示“不能打开文件”,用printf("不能打开文件\n")来实现,同时系统要结束读入文件的执行,用exit
(1)实现;如果判断成功,则系统会自动读入用户已经保存的数据(fscanf(fp,"%d",&n)读入记录数),用for循环把已经保存的数据一一对应的读入到正在执行的程序中,这里需要注意的是,读取的数据格式应该同保存时的一至,组成的格式与读取格式保持一致的原则我们编写了该方式fprintf(fp,"%-10d%-7d%-7d%-7d%-7d-7d",t[i].name,t[i].a1,t[i].a2,t[i].a3,t[i].a4,t[i].a5),则读入的时的格式就为fscanf(fp,"%d%d%d%d%d%d",&(t[i].name),&(t[i].a1),&(t[i].a2),&(t[i].a3),&(t[i].a4),&(t[i].a5)),读取成功后关闭文件fclose(fp),并显示“成功地从文件读入数据!
!
!
”(用printf实现)。
6.清单输出:
(组长:
朱勇进完成)读取销售情况有3个,分别是每个人每种产品的销售额,按销售额对销售员进行排序和每种产品的总销售额三个函数:
1).每个人每种产品的销售额:
首先,要定义每个人,每种产品,销售额数组如inti,j,sum0=0,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0;intc[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