程序设计课程设计报告.docx

上传人:b****6 文档编号:16215451 上传时间:2023-07-11 格式:DOCX 页数:30 大小:159.16KB
下载 相关 举报
程序设计课程设计报告.docx_第1页
第1页 / 共30页
程序设计课程设计报告.docx_第2页
第2页 / 共30页
程序设计课程设计报告.docx_第3页
第3页 / 共30页
程序设计课程设计报告.docx_第4页
第4页 / 共30页
程序设计课程设计报告.docx_第5页
第5页 / 共30页
程序设计课程设计报告.docx_第6页
第6页 / 共30页
程序设计课程设计报告.docx_第7页
第7页 / 共30页
程序设计课程设计报告.docx_第8页
第8页 / 共30页
程序设计课程设计报告.docx_第9页
第9页 / 共30页
程序设计课程设计报告.docx_第10页
第10页 / 共30页
程序设计课程设计报告.docx_第11页
第11页 / 共30页
程序设计课程设计报告.docx_第12页
第12页 / 共30页
程序设计课程设计报告.docx_第13页
第13页 / 共30页
程序设计课程设计报告.docx_第14页
第14页 / 共30页
程序设计课程设计报告.docx_第15页
第15页 / 共30页
程序设计课程设计报告.docx_第16页
第16页 / 共30页
程序设计课程设计报告.docx_第17页
第17页 / 共30页
程序设计课程设计报告.docx_第18页
第18页 / 共30页
程序设计课程设计报告.docx_第19页
第19页 / 共30页
程序设计课程设计报告.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

程序设计课程设计报告.docx

《程序设计课程设计报告.docx》由会员分享,可在线阅读,更多相关《程序设计课程设计报告.docx(30页珍藏版)》请在冰点文库上搜索。

程序设计课程设计报告.docx

程序设计课程设计报告

 

程序设计课程设计报告

(2012--2013年度第一学期)

销售管理系统

专业

计算机科学与技术

学生姓名

班级

\

学号

\

指导教师

\

完成日期

\

目录

1概述1

1.1课程设计目的1

1.2课程设计内容1

2系统总体设计2

2.1系统目标2

2.2主体功能2

2.3系统流程3

2.4开发环境3

3系统详细设计3

3.1系统主界面设计3

3.2统计功能模块设计4

3.3人员排序功能模块设计5

3.4产品排序功能模块设计5

3.5输出功能模块设计6

4测试6

4.1测试方案6

4.2测试结果6

5小结9

参考文献10

附录11

附录1源程序清单11

附录1.1统计功能模块源程序17

附录1.2人员排序功能模块源程序18

附录1.3产品排序功能模块源程序19

附录1.4输出功能模块源程序20

销售管理系统的设计与实现

1概述

1.1课程设计目的

1、巩固并加深对C语言程序设计知识的理解;

2、掌握和提高C语言编程和程序调试的基本技能;

3、进一步理解和运用结构化程序设计的思想和方法;

4、提高运用C语言解决实际问题的能力;

5、初步掌握开发小型实用软件的基本方法;

6、掌握书写程序设计开发文档的能力(书写课程设计实验报告)。

1.2课程设计内容

课程名称:

销售管理系统

说明:

某公司有四个销售员(编号:

1-4),负责销售五种产品(编号:

1-5)。

每个销售员都将每天出售的每种商品各写一张便条交上来。

每张便条包含内容:

销售员代号;产品的代号;这种产品的当天的销售额。

每位销售员每天的可能上交0-5张便条。

假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行处理。

要求:

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

2)按销售额对销售员进行排序,输出排序结果(销售员代号);

3)统计每种产品的总销售额,对这些产品按从高到低的顺序,输出排序结果(需输出产品的代号和销售额);

4)输出统计报表

销售统计报表

销售员代号产品代号销售之和

12345

1

2

3

4

每种产品之和

 

2系统总体设计

2.1系统目标

销售管理系统是为了方便管理者了解产品销售情况、检索相关产品资料、制定出更好的销售方案,系统管理员可以进行用户管理。

为了提高系统的工作效率和工作质量,系统开发要做到以下几点:

a)纸条中数据的输入(该系统的程序将运用到文件系统,其中单行数据内容是一张纸条上的数据,通过运行文件系统,将原始数据读取并保存到源程序中的结构体数组中);

  b)程序需要达到的功能(因为纸条中的数据很零乱,不易输入,所以要先将其中的数据分类,并且要将其保存起来,要有保存的功能;数据输入后要将其统计出来,因此还要有显示、排序、选择的功能);

2.2主体功能

 

 

图2-1系统功能模块图

 

2.3系统流程

Y

N

图2-2系统总体流程图

2.4开发环境

这个程序的开发环境是TurboC.

3系统详细设计

3.1系统主界面设计

主界面的函数设计:

从main()函数中system(“cls”);menu();进入函数,执行完所有的函数后自动退出该函数,其中system(“cls”)是清屏命令,menu()是菜单函数,用来提示用户如何选择。

函数调用关系:

直接被主函数调用,并在文中无返回值的空值void函数。

功能描述:

显示出菜单让用户选择,并提示该如何操作,体现了模块化的思想。

 

图3-1主菜单界面截图

3.2统计功能模块设计

注:

统计模块就是计算每人每种产品的销售额模块

统计功能模块设计:

当主函数的switch()开关结构中的choice==1时开始,打开数据文件,提示用户通过键盘对该月的员工销售情况进行输入,然后通过提示语:

printf(“继续输入请按回车键,结束进程请按esc\n”),进行提示,如果选择了“esc”,就结束对数据的输入,跳出switch()开关函数,接着执行下面的循环结构。

函数调用关系:

被主函数调用,由开关结构进去,并在文中无返回值的空值void函数。

图3-2统计模块界面截图

 

图3-3统计功能模块流程图

3.3人员排序功能模块设计

注:

人员排序功能模块功能就是按销售额对销售员的排序

人员排序功能模块设计:

当主函数的switch()开关结构中的choice==2时开始,首先用fopen()打开文件,用fread()读取二进制数据,然后运用选择排序法对销售员进行排序,最后排序结果将会出现到屏幕上,通过break跳出switch()开关函数,继续执行for循环结构。

函数调用关系:

被主函数调用,由开关结构进去,并在文中无返回值的空值void函数。

3.4产品排序功能模块设计

注:

产品排序功能模块就是按销售额从高到低对产品排序

产品排序模块设计:

当主函数的switch()开关结构中的choice==3时开始,统计每种产品的总销售额,然后进行排序,最后将结果用标准输出函数输出,通过break跳出switch()开关函数,继续执行for循环结构。

函数调用关系:

被主函数调用,由开关结构进去,并在文中无返回值的空值void函数。

3.5输出功能模块设计

注:

输出功能模块就是输出统计报表

输出功能模块设计:

当主函数的switch()开关结构中的choice==4时开始,通过fopen()函数打开文件,进行数据处理,开始读取数据后,报表已显示出来,通过break跳出switch()开关函数,继续执行for循环结构。

函数调用关系:

被主函数调用,由开关结构进去,并在文中无返回值的空值void函数。

4测试

4.1测试方案

打开TurboC,先将各个功能函数的的内容清空,只保留main(),然后编译检验main()函数中是否有错,确认main()函数一切无误后,然后加入功能函数menu()函数与f1()函数,由于menu()函数比较简单,所以与f1()函数一起进行调试,f1()函数中主要注意读取文件、写入文件,都是二进制的形式。

若menu()函数与f1()函数编译、连接、运行没问题,继续加入f2()函数,就这样的方法依次检查调试f3()函数、f4()函数。

当所有的功能函数都加上且正确无误时,就可以进入下一个环节—程序的测试。

4.2测试结果

图4-1主菜单输出结果

图4-2统计模块输出结果

图4-3销售员排序结果

图4-4产品排序结果

图4-5输出统计报表结果

在调试中遇到的问题:

问题1:

标点符号在输入的时候,使用的是中文输入法,这种错误一般都难以发现,让修改的时候找不到目标。

解决方法:

用“替换”。

如果程序中的error很多,不管error是什么,先将标点替换成英文的标点。

问题2:

调试时,有的时候编译后没什么问题,就是在点击连接link时出现了问题。

解决方法:

将源程序保存(save),然后关掉win-tc,重新启动win-tc。

问题3:

输入时,scantf()函数中出现非地址项,某变量未进行类型定义,以及语句末尾缺少分号等常见的低等错误。

解决方案:

根据TurboC的错误提示(error)与警告(warning)回到源程序中,逐一对错误或警告进行修改,每修改一条就编译一次。

5小结

经过两周时间的C语言课程设计实践学习,使我对c语言有了进一步的认识和了解。

刚开始拿到这个课题时,曾经觉得很茫然,因为C语言是大一上学期学的,感觉只了解到它的表层,而这次课题竟然要我们自己动手设计一个系统的源程序,不过经过几天的去图书馆还有上网查找资料,自己头脑中有了些想法,不过即使有想法,也只能通过借鉴图书馆里的书,或者是网上的资料来帮助我表达出来程序,最终勉强完成了设计!

通过实践,我发现我的好多不足之处,在敲打源程序时,很不熟练,经常按错字母;还有对c语言的一些标准库函数还有函数的调用不太了解,经过锻炼,粗略的复习了C语言的基本知识:

数据类型、运算类型、程序结构、画功能模块图,系统流程图等。

我认为要学好c语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。

只有这样我们学到的知识才能更好地运用到实践。

参考文献

[1]谭浩强等.C语言程序设计教程.北京:

高等教育出版社,1997

[2]谭浩强.C程序设计.第2版.北京:

清华大学出版社,1999

[3]郭浩志.C语言程序设计.北京.北京邮电大学出版社,2005

[4]《C陷阱与缺陷》.北京:

人民邮电出版社,2008

[5]谭浩强、张基温.C语言程序设计教程.北京:

高等教育出版社,2006

[6]《C程序设计经典教程》.北京:

清华大学出版社,2006

附录

附录1源程序清单

#include

#include

#include

#include

#defineZ5

#defineR4/*定义宏常量便于程序的一般化*//*R表示销售员个数*/

typedefstruct/*缩短结构体变量名*/

{intshangpin[Z];/*定义结构体便于信息的存储和读写,辨别*/

}data;/*R是表示商品的种类,最后一个为该销售员商品总和*/

 

voidmenu()

{system("cls");/*清屏命令*/

printf("\n\n");

printf("\t┏━━━━━━━━━━━━主菜单━━━━━━━━━━┓\n");

printf("\t┃1.计算上个月每个人每种产品的销售额┃\n");

printf("\t┃2.按销售额对销售员进行排序,输出排序结果┃\n");

printf("\t┃3.统计每种产品的总销售额,输出排序结果┃\n");

printf("\t┃4.输出统计报表┃\n");

printf("\t┃5.结束操作┃\n");

printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");

}

 

voidf1(data*x)/*计算上个月每个人每种产品的销售额*/

{FILE*fp;

charfname[10],hitkey;

intj,t;/*用于控制循环*/

inti,k,s;/*用于定义职工序号,产品序号,产品数量*/

system("cls");/*清屏命令*/

printf("您想计算哪个月?

\n");

printf("请输入月份:

");/*输入文件名,这样可以进行各个月份信息写入*/

scanf("%s",fname);

strcat(fname,".dat");

if((fp=fopen(fname,"wb"))==NULL)/*打开文件*/

{printf("不能打开文件!

\n");

exit(0);/*正常exit(0);结束程序*/

}

for(j=0;j

for(t=0;t

(x+j)->shangpin[t]=0;

printf("请输入:

\n职工编号产品编号销售数量\n");/*提示用户写入信息的格式*/

for(j=0;hitkey!

=27;j++)

{scanf("%d%d%d",&i,&k,&s);

if(i>R||i<0||k>Z||k<0)

{printf("信息错误!

\n");/*提示语,避免输入信息出错*/

continue;

}

else

(x+i-1)->shangpin[k-1]=(x+i-1)->shangpin[k-1]+s;/*统计各个人的各种产品的数量,-1为了和数组中的序号相匹配*/

printf("继续输入请按回车,结束输入请按esc\n");

printf("━━━━━━━━━━━━━━━━━━━━━━\n");

hitkey=getch();

for(;hitkey!

=13&&hitkey!

=27;)

hitkey=getch();

}

for(j=0;j

if(fwrite((x+j),sizeof(data),1,fp)!

=1)/*把信息写入文件中便有以后调用*/

printf("writeerror!

\n");

fclose(fp);/*关闭文件避免信息遗漏*/

printf("\n\n\n\n\n\n\t\t\t保存成功,按任意键返回主菜单!

");

getch();

}

 

voidf2(data*x)/*按销售额对销售员进行排序,输出排序结果*/

{FILE*fp;

charfname[10];

inti,k,j,t,bianhao[R]={0},z;

system("cls");/*清屏命令*/

printf("你要哪个月的?

\n");

printf("请输入月份:

");/*输入文件名,这样可以进行各个月份信息读入*/

scanf("%s",fname);

strcat(fname,".dat");

if((fp=fopen(fname,"rb"))==NULL)/*打开文件*/

{printf("不能打开文件!

\n");

exit(0);

}

for(i=0;i

if(fread(x+i,sizeof(data),1,fp)!

=1)

printf("读入信息出错!

");/*读入信息提示*/

for(i=0;i

bianhao[i]=i++;

printf("请输入按何种产品排序\n");

scanf("%d",&k);

k=k-1;/*便于与结构体中的数组值对应*/

for(i=0;i

{t=i;

for(j=i+1;j

if((x+bianhao[t])->shangpin[k]<(x+bianhao[j])->shangpin[k])/*调用职工各自对应的结构体内的产品数量*/t=j;

if(t!

=i)

{z=bianhao[i];

bianhao[i]=bianhao[t];

bianhao[t]=z;

}

}

printf("\t\t\t按%d产品对销售员排序为:

\n",k+1);

printf("━━━━━━━━━━━━━━━━━━━━━\n");

for(i=0;i

printf("\t\t\t第%d名是:

员工%d\n",i+1,bianhao[i]+1);

printf("\n\n\n\t\t\t按任意键返回上一主菜单!

");

getch();

fclose(fp);/*关闭读入的文件*/

}

 

voidf3(data*x)/*统计每种产品的总销售额,输出排序结果*/

{FILE*fp;

charfname[10];

inti,j,sum[Z]={0},bianhao[Z]={0},z,t,k;

system("cls");/*清屏命令*/

printf("您想计算哪个月的?

\n");

printf("请输入月份:

");/*输入文件名,这样可以进行各个月份信息读入*/

scanf("%s",fname);

strcat(fname,".dat");

if((fp=fopen(fname,"rb"))==NULL)/*打开文件*/

{printf("不能打开文件!

\n");

exit(0);

}

for(i=0;i

if(fread(x+i,sizeof(data),1,fp)!

=1)

printf("读入信息出错!

");

for(i=0;i

for(j=0;j

sum[i]=sum[i]+(x+j)->shangpin[i];

for(i=0;i

bianhao[i]=i++;

for(i=0;i

printf("%3d",bianhao[i]);

for(i=0;i

{t=i;

for(j=i+1;j

if(sum[t]

t=j;

if(t!

=i)

{k=sum[i];

sum[i]=sum[t];

sum[t]=k;

z=bianhao[i];

bianhao[i]=bianhao[t];

bianhao[t]=z;

}

}

printf("输出产品排序\n");

printf("产品编号数量\n");

printf("━━━━━━━━━━━━━\n");

for(i=0;i

printf("产品%-7d%-1d\n",bianhao[i]+1,sum[i]);

printf("\n\n\n\t\t\t按任意键返回主菜单!

");

getch();

fclose(fp);/*关闭读入的文件*/

}

 

voidf4(data*x)/*输出统计报表*/

{FILE*fp;

charfname[10];

inti,j,sum[Z+1]={0};

system("cls");/*清屏命令*/

printf("您想计算哪个月?

\n");

printf("请输入月份:

");/*实为输入一个文件名,这样可以进行各个月份的信息读入*/

scanf("%s",fname);

strcat(fname,".dat");

if((fp=fopen(fname,"rb"))==NULL)/*打开文件*/

{printf("不能打开文件!

\n");

exit(0);

}

for(i=0;i

if(fread(x+i,sizeof(data),1,fp)!

=1)

printf("读入信息出错!

");

for(i=0;i

for(j=0;j

sum[i]=sum[i]+(x+j)->shangpin[i];

for(i=0;i

sum[Z]=sum[Z]+sum[i];

printf("━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");

printf("输出统计报表如下:

\n");/*按要求输出统计表*/

printf("销售员代号产品代号销售之和\n");

for(i=0;i

for(j=0;j

printf("员工%-8d产品%-6d数量%-10d\n",i+1,j+1,(x+i)->shangpin[j]);

printf("━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");

for(i=0;i

{if(i==0)

printf("产品%d之和%-10d总和%-10d\n",i+1,sum[i],sum[Z]);

else

printf("产品%d之和%-10d\n",i+1,sum[i]);

}

printf("\n\n\n\t\t\t按任意键返回主菜单!

");

getch();

}

 

voidmain()

{inti,choice;

datasxy[R];/*R表示职工的个数,前面的宏常量*/

printf("\n\n\n\n\n\n\t━━━━━━━━━━━━━━━━━━━━━━━━━\n");

printf("\t---------------欢迎进入商品销售系统!

-------------\n");

printf("\t━━━━━━━━━━━━━━━━━━━━━━━━━\n");

printf("\n\n\n\n\n\n\t\t\t按任意键进入主菜单!

");

getch();

for(i=0;;i++)

{system("cls");/*清屏命令*/

menu();/*主菜单函数提示用户怎样选择*/

printf("你想做什么?

\n");

printf("请选择:

");/*输入要进行的操作*/

scanf("%d",&choice);

if(choice==5)

{system("cls");/*清屏命令*/

printf("\n\n\n\n\n\n\t━━━━━━━━━━━━━━━━━━━━━━━━━\n\n");

printf("\t---------------谢谢使用商品销售系统!

-------------\n\n");

printf("\t━━━━━━━━━━━━━━━━━━━━━━━━━\n\n");

printf("\n\n\n\n\n\n\t\t\t按任意键退出!

(^.^)");

getch();

break;/*退出整个程序*/

}

else

switch(choice)

{case1:

f1(sxy);break;/*计算上个月每个人每种产品的销售额*/

case2:

f2(sxy);break;/*按销售额对销售员的销售情况进行排序,并且输出排序的结果*/

case3:

f3(sxy);break;/*统计每种产品的总共得销售额,并且输出排序的结果*/

case4:

f4(sxy);break;/*输出统计报表*/

}

}

}

附录1.1统计功能模块源程序

voidf1(data*x)/*计算上个月每个人每种产品的销售额*/

{FILE*fp;

charfname[10],hitkey;

intj,t;/*用于控制循环*/

inti,k,s;/*用于定义职工序号,产品序号,产品数量*/

system("cls");/*清屏命令*/

printf("您想计算哪个月?

\n");

printf("请输入月份:

");/*输入文件名,这样可以进行各个月份信息写入*

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2