C语言销售管理系统设计(内含完整代码及附件).doc_第1页
C语言销售管理系统设计(内含完整代码及附件).doc_第2页
C语言销售管理系统设计(内含完整代码及附件).doc_第3页
C语言销售管理系统设计(内含完整代码及附件).doc_第4页
C语言销售管理系统设计(内含完整代码及附件).doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.用户下载须知程序语言:C、C+、C#(红色字体 表示本课设使用的程序设计语言)图形功能选项:Win32控制台程序(黑框、文本界面)、Win32程序、MFC、WinForm、DirectX10(红色字体 表示本课设的程序图形类别,默认为非图形界面Win32控制台程序)数据结构:基础类型、数组、链表、双向链表、搜索树(非平衡二叉树)、平衡二叉树、链表与平衡二叉树相结合、堆栈、队列、串、图(红色字体 表示本课设使用的数据结构)C+语言项:STL库(红色字体 表示使用C+的STL库)编译环境:Windows 7 64位旗舰版(Linux及其他环境请谨慎下载)集成开发环境:Visual C+ 6.0、DEVC+、CodeBlocks、Visual Studio 2015(需进行修改)均可通过编译。(若无法通过编译运行,则会用 浅蓝色字体 表示)分多头文件编译:否(所有代码基本都包含在一个文件内,如需试验头文件功能,请自行参考相关文献)内容说明:1、课设题目及预览内容 将在第二页开始展示。2、代码行数:304行3、目录 所示内容,本文基本涵盖,如无内容,会在本页进行说明。4、附录 绝对包含用户使用手册及程序完整源代码和详细注释。5、如需下载 其他 头文件(例如DirectX需另行配置),本文会在此进行说明。6、未经平台、本人及相关法律法规允许,请勿用于其它商业行为,否则后果自负。7、本文撰写内容仅供学习参考,另外,由于本人水平有限,编写之处难免存在错误和纰漏,恳请各位老师或同学批评指正。销售管理系统设计某公司有四个销售员(编号:1-4),负责销售五种产品(编号:A-E)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:1)销售员的代号,2)产品的代号,3)这种产品当天的销售额。每位销售员每天上缴1张便条。系统基本功能:1、系统以菜单方式工作2、便条信息录入功能(便条信息用文件保存)3、收集到了上个月的所有便条后,读取销售情况1)计算每个人每种产品的销售额。2)按销售额对销售员进行排序,输出排序结果(销售员代号)3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)4、销售员信息查询功能要求:使用二进制文件方式存储数据根据分析结果,销售管理系统可分为录入、读取、查询、退出、计算每个人每种产品的销售额、按销售额对销售员进行排序和统计每种产品的总销售额等模块。系统总体结构如图1 所示。图1系统总体结构框图本系统采用数组存储数据,根据分析,系统设计了三个结构体:note存储便条的基本信息,noAndSum存储销售员代号和销售总额的信息,productAndSum存储产品代号和销售额的信息。便条基本信息包括销售员代号、五种产品的销售额等信息。具体结构如下:typedef struct note/便条 int no;/销售员代号 float salesVolume5;/AE产品代号的销售额 Note;typedef struct noAndSum/记录销售员代号和总销售额,用以进行排序 int no;float salesVolume;NoAndSum;typedef struct productAndSum/产品代号和销售额char ch;float salesVolume;ProductAndSum;为了实现系统的各项功能,本设计中自定义相关的各个函数,各函数的原型如下:void ShowUI();/显示主菜单界面 void ShowSubmenu(); /显示次级菜单界面 int IsNumber(char s);/判断一个字符串是不是数字 void Input();/录入功能 void Read(Note note,int *n);/读取数据 void Calculation(Note note,int n);/计算功能void Find(Note note,int *n);/查询销售员信息 void Sort(Note note,int n);/排序功能 void Sort2(Note note,int n);/统计每种产品的类型金额3.3 主函数主函数main()函数通过多分支结构switch实现功能的选择,调用不同函数实现不同功能,包括录入、读取、查询、退出、计算每个人每种产品的销售额、按销售额对销售员进行排序和统计每种产品的总销售额等模块等功能。系统主界面如图2,主函数流程图如图3所示。图2系统主界面开始输入选项selectselect录入读取查询退出输入选项select1Select1计算每个人每种产品的销售额按销售额对销售员进行排序统计每种产品的总销售额返回调用Input()录入信息调用Find(Note note,int *n)查询信息调用Calculation(Note note,int n)计算调用Sort(Note note,int n)排序调用Sort2(Note note,int n)排序结束3.4 录入功能为了便于录入便条的信息,特别设计的Input()函数进行数据的录入。3.5 读取功能从二进制文本读取数据功能。3.6 查询功能3.7 计算每个人每种产品的销售额3.8 按销售额对销售员进行排序3.9 统计每种产品的总销售额4 软件调试分析在编程当中也遇到了一些问题:1)空文件读入乱码问题。空文件读入乱码但系统不报错,给数据的处理造成阻碍。为了保证数据的读入正确,在文件尾增加了一个字符#作为结束标志。2)实现循环操作功能问题。利用链表处理数据,容易忽视由于指针的移动造成的访问出错问题。在实现数据添加、删除等功能时,增加了指针复位处理。经验总结需多次调试,否则不易发现。3)无文件条件下的数据读取的问题以及查询排序的实现。该错误是空指针对数据读取造成的程序终止性错误。附 录用户使用手册1、根据界面提示操作即可。2、请勿输入非数字以外的字符。程序源代码#include #include #include #include #include #include /* run this program using the console pauser or add your own getch, system(pause) or input loop */typedef struct note/便条 int no;/销售员代号 float salesVolume5;/AE产品代号的销售额 Note;typedef struct noAndSum/记录销售员代号和总销售额,用以进行排序 int no;float salesVolume;NoAndSum;typedef struct productAndSum/产品代号和销售额char ch;float salesVolume;ProductAndSum;void ShowUI();/显示主菜单界面 void ShowSubmenu(); /显示次级菜单界面 int IsNumber(char s);/判断一个字符串是不是数字 void Input();/录入功能 void Read(Note note,int *n);/读取数据 void Calculation(Note note,int n);/计算功能void Find(Note note,int *n);/查询销售员信息 void Sort(Note note,int n);/排序功能 void Sort2(Note note,int n);/统计每种产品的类型金额 int main(void) char select=0;char select1=0;Note note31;int n=0;/记录读入的数据个数 doShowUI();select=getch();switch(select)case 1:Input();break;case 2:Read(note,&n);if(0=n)break;doShowSubmenu();select1=getch();switch(select1)case 1:Calculation(note,n);break;case 2:Sort(note,n);break;case 3:Sort2(note,n);break;while(0!=select1);break;case 3: Find(note,&n);break;while(0!=select);return 0;void ShowUI()system(cls);/清屏函数 printf(nntt*n);printf(nntt* 1-录 入 *n);printf(nntt* 2-读 取 *n);printf(nntt* 3-查 询 *n);printf(nntt* 0-退 出 *n);printf(nntt*n); void ShowSubmenu()system(cls);/清屏函数 printf(nntt*n);printf(nntt* 1-计算每个人每种产品的销售额*n);printf(nntt* 2-按销售额对销售员进行排序 *n);printf(nntt* 3-统计每种产品的总销售额 *n);printf(nntt* 0-返回 *n);printf(nntt*n);int IsNumber(char s)int sign=1;/标记是否为数字 int n=0;/记录有几个小数点 int i=0;for(i=0;0!=si;i+)if(!isdigit(si)&.!=si)sign=0;break;else if(.=si&(+n)=2)sign=0;break;return sign;void Input()FILE *fp=NULL;char ch=0;/是否继续录入 char s100;Note note;int i=0;printf(请输入要录入信息的文件名:);gets(s);/读入存储信息的文件名/ ab+ 打开或新建一个二进制文件,可以读,但只允许在文件末尾追写 if(fp=fopen(s,ab+)=NULL)printf(文件打开失败。n);getch();return;doprintf(请输入销售员的代号(14):);gets(s);note.no=atoi(s);if(note.no4)doprintf(销售员代号输入错误,请重新输入:);gets(s);note.no=atoi(s);while(note.no4);for(i=0;i5;i+)printf(请输入%c产品销售额:,A+i);gets(s);note.salesVolumei=atof(s);if(!IsNumber(s)doprintf(%c产品销售额输入错误,请重新输入:,A+i);gets(s);note.salesVolumei=atof(s);while(!IsNumber(s);fprintf(fp,%d %f %f %f %f %frn,note.no,note.salesVolume0,note.salesVolume1,note.salesVolume2,note.salesVolume3,note.salesVolume4);printf(按Y继续录入,其他按键退出。nn);ch=getch();while(Y=ch|y=ch); fclose(fp);/关闭文件 void Read(Note note,int *n)FILE *fp=NULL;char s100;*n=0;/重置 printf(请输入要读取信息的文件名:);gets(s);/读入存储信息的文件名/ ab+ 打开或新建一个二进制文件,可以读,但只允许在文件末尾追写 if(fp=fopen(s,rb)=NULL)printf(文件打开失败。n);getch();return;fseek(fp,0,SEEK_SET);/文件指针定位到开头 dofscanf(fp,%d %f %f %f %f %frn,&(note*n.no),&(note*n.salesVolume0),&(note*n.salesVolume1),&(note*n.salesVolume2),&(note*n.salesVolume3),&(note*n.salesVolume4);(*n)+;while(!feof(fp);fseek(fp,0,SEEK_END);if(ftell=0)*n=0;fclose(fp);void Calculation(Note note,int n)int i=0,j=0,k=0;float salesVolume5=0.0;/记录五种产品的销售额 for(i=1;i5;i+)/遍历所有 销售员的代号 for(j=0;j5;j+)/初始化 salesVolumej=0.0;for(j=0;jn;j+)if(i=notej.no)for(k=0;k5;k+)salesVolumek+=(notej.salesVolumek);printf(销售员%d:n,i);for(j=0;j5;j+)printf(t%c产品销售额:%fn,A+j,salesVolumej);getch();void Find(Note note,int *n)int no=0;/查询代号int i=0,j=0;char s100;Read(note,n);/先读入数据printf(请输入销售员的代号(14)进行查询:);gets(s);no=atoi(s);if(no4)doprintf(销售员代号输入错误,请重新输入:);gets(s);no=atoi(s);while(no4);for(i=0;i*n;i+)if(no=notei.no)printf(销售员%d:n,no);for(j=0;j5;j+)printf(t%c产品销售额:%fn,A+j,notei.salesVolumej);getch(); void Sort(Note note,int n)NoAndSum noandsum4;NoAndSum t;int i=0,j=0,k=0; for(i=0;i4;i+)/初始化 noandsumi.no=i+1;noandsumi.salesVolume=0.0;for(i=0;i4;i+)for(j=0;jn;j+)if(noandsumi.no=notej.no)for(k=0;k5;k+)(noandsumi.salesVolume)+=(notej.salesVolumek);for(i=0;i4;i+)/冒泡排序 for(j=i+1;j4;j+)if(noandsumi.salesVolumenoandsumj.salesVolume)t.no=noandsumi.no;t.salesVolume=noandsumi.salesVolume;noandsumi.no=noandsumj.no;noandsumi.salesVolume=noandsumj

温馨提示

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

评论

0/150

提交评论