c语言课程设计销售管理系统报告代码.docx
- 文档编号:5900272
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:32
- 大小:181.60KB
c语言课程设计销售管理系统报告代码.docx
《c语言课程设计销售管理系统报告代码.docx》由会员分享,可在线阅读,更多相关《c语言课程设计销售管理系统报告代码.docx(32页珍藏版)》请在冰豆网上搜索。
c语言课程设计销售管理系统报告代码
HUBEIUNIVERSITYOFAUTOMOTIVETECHNOLOGY
C语言程序设计
课程设计报告
课设题目:
销售系统
专业:
电气工程及其自动化
班级:
T1123-6
姓名:
成绩:
完成日期:
2012年6月18日-2012年6月22日
**************
1.课程设计目的
1)通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
2)通过课程设计,进一步掌握C语言中重要的数据结构。
掌握并熟练运用指针、链表、结构体、文件等数据结构。
3)通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。
4)通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。
5)通过课程设计,加强了自己的程序分析能力。
2.需求分析
要求
1)遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问题的能力。
2)运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。
3)学会利用数组、结构体、链表进行相关信息表示。
4)功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述
5)各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功能、出口等关系正确。
6)所设计的C程序较好的可读性和可靠性;程序书写风格规范,注释清晰。
7)界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析。
8)程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。
9)学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。
10)掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。
11)C语言课程设计报告的内容反应实际设计过程,且符合格式要求,无抄袭现象。
任务描述
问题
根据需求,该系统所应包含的信息有以下一些:
销售管理的基本信息:
销售员编号,产品编号,销售日期,销售数量
根据需求,该系统所应实现的功能有以下一些:
各种基本数据的录入。
如:
销售信息的录入
各种基本数据的修改。
即:
允许对已录入的基本信息进行编辑、修改。
例:
对销售员编号的修改
各种基本数据的删除。
如:
指定销售员、产品、销售日期的记录删除
基于各种数据的查询。
例:
根据销售员编号查询销售历史
系统以菜单方式工作,界面清晰,易于操作。
运行环境
1)WindowsXP/7系统
2)VC++编译环境
开发工具
C语言
3.总体设计
系统流程设计
图1系统功能流程图
系统模块设计
图2系统功能模块图
模块设计
1.主菜单界面:
构造函数intmenu_show(),实现完成系统菜单的显示。
2.创建销售员信息界面:
构造函数voidCreate_clerk(),实现销售员信息创建系统的显示。
3.从文件导入销售员信息界面:
构造函数函数voidscanf_clerk()实现从文件导入销售员信息。
4从键盘输入销售员信息界面:
构造函数voidclerk(),实现从键盘输入销售员信息。
5.创建产品信息界面:
构造函数voidCreate_product(),实现产品信息创建系统的显示。
6.从文件导入销售员信息界面:
构造函数voidscanf_product()实现从文件导入产品信息的界。
7从键盘输入销售员信息界面:
构造函数voidproduct(),实现从键盘输入产品信息。
8.创建销售信息界面以及从文件导入销售信息界面:
构造函数voidadd(structinformation*head),实现销售信息创建系统的显示和通过构造函数voidimport(char*filename,structinformation*p_root)从文件导入销售信息。
9.从键盘输入销售员信息界面:
构造函数voidinformation(structinformation*head),实现从键盘输入销售信息。
10.保存销售信息界面:
构造函数voidexport(char*filename,structinformation*p_root),实现销售信息的保存。
11查询销售信息界面:
构造函数voidsearch(structinformation*head),实现对销售信息的查询。
12.显示销售报表:
构造函数voidprint(structinformation*head)实现对查询界面的显示并通过创建调用函数voidpri_xin(structinformation*head)实现对销售报表的指定时间段的查询。
13.显示题目界面:
构造函数voidshowoo()实现对题目的显示。
14.删除销售信息界面:
构造函数voidDelete(structinformation*head)实现对删除销售信息的界面显示并通过调用构造的函数voiddclerk(structinformation*head),voiddpro(structinformation*head),voiddclerk(structinformation*head)分别实现对指定销售员编号,产品编号,销售时间的销售信息的删除。
15.退出系统:
用系统函数exit(0);实现退出系统。
4.详细设计
数据结构设计
根据系统要求,系统中需要保存的数据信息,其结构如下:
数据项名称
数据项系统表示
数据类型
数据长度
备注
销售员编号
num,znum
整数,整数
4,4
销售员姓名
name
字符串
30
销售员性别
sex
字符串
3
产品代号
mark,zmark
整数,整数
4
产品名称
cpxx
字符串
30
产品价格
price
长整形
8
销售时间
date
字符串
11
销售数量
amount
整数
4
根据系统要求,系统中需要保存的类别信息,其结构如下:
类别代号
类别名称
为了能实现不受限制的增加销售信息,采用链表的结构保存销售信息,在增加销售基本信息时,创建一个销售信息的节点,将其插入到链表中,示意图如下。
为此,先声明一个类型为structinformation的结构体,其成员为销售信息。
然后通过对指针、链表、文件等数据结构的操作,实现对销售信息的录入,插入,存盘,查询,浏览,删除等一系列操作。
其中,结构体定义如下:
structinformation
{
intznum;/*销售员编号*/
intzmark;/*产品代号*/
chardate[11];/*销售日期*/
intamount;/*销售数量*/
structinformation*next;
};模块接口设计
1)所有函数模块声明如下:
voidCreate_clerk();/*录入销售员资料函数*/
voidCreate_product();/*录入产品资料函数*/
voidadd(structinformation*head);/*定义输入销售信息函数*/
voidsearch(structinformation*head);/*定义查询信息函数*/
voidDelete(structinformation*head);/*定义删除函数*/
voiddclerk(structinformation*head);/*定义删除指定销售员的记录函数*/
voiddpro(structinformation*head);/*定义删除指定产品的记录函数*/
voiddinf(structinformation*head);/*定义删除指定日期的记录函数*/
voidprint(structinformation*head);/*定义显示报表函数*/
intmenu_show();/*主菜单函数*/
voidmenu_select(intsel,structinformation*head);/*功能函数*/
intjudge_date();/*判断日期函数*/
voidscanf_clerk();/*导入销售员资料函数*/
voidscanf_product();/*导入产品资料函数*/
voidimport(structinformation*head);/*导入销售信息函数*/
voidexport(char*filename,structinformation*p_root)/*保存函数*/
intchange_date();/*定义把时间格式转换成整形*/
2)主要模块的实现
系统以主函数voidmain()为入口,首先通过voidmenu_select(intsel,structinformation*head)以及intmenu_show()的嵌套使用进入主菜单界面。
voidmenu_select(intsel,structinformation*head)接收intmenu_show()的返回值让系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。
以下是几个主要模块的流程图:
1)主菜单函数:
图3主函数流程图
2)销售信息输入函数:
图4销售信息输入
流程图
3)销售信息删除函数:
打印信息输入子菜单
是否存在
删除界面
实现修改
图5销售信息删除流程图
5.运行结果
主菜单界面:
图6主菜单界面
输入功能选择,系统自动进入相应功能界面。
销售员信息录入界面:
图7信息录入界面1
图8信息录入界面2
图9信息录入界面3
产品信息录入界面
图10信息录入界面4
图11信息录入界面6
图12信息录入界面7
销售信息录入界面
图13信息录入界面8
图14信息录入界面9
图15信息录入界面10:
销售信息查询界面:
图16销售信息查寻界面11
销售信息保存界面
图17销售信息保存界面
课题显示界面
图18课题显示界面
销售信息删除界面
图18销售信息删除界面
销售报表浏览界面
图19销售报表浏览界面1
图19销售报表浏览界面2
6.程序调试与测试
程序调试
调试过程及结果见板块五各界面图,分别对本程序输入,保存,浏览,删除以及显示界面的美观进行了详细的调试展示。
程序测试
一.输入模块的测试
数字输入
正确输入为1~8的整数,测试用例abc;
测试结果
日期输入测试
正确输入格式为YYYY-MM—DD(日期界限为2001~2012年);测试用例1999-01-01,2013-01-01和20111-13-32;
测试结果
汉字输入测试
正确格式为汉字输入如:
鲁迅,男;测试用例“abc”和“hao”
测试结果
测试问题分析
1,测试中可能出现第一次输入错误后输入正确信息也显示错误
分析原因:
输入缓存未及时清除
处理办法:
调用系统函数rewind(stdin)或fflush(stdin)清除缓存;
2,对整数及特定格式的输入无法很好的控制
分析原因:
仅采用单一的char或者int型控制;
解决办法:
本程序大量采用字符型数组进行控制,必要时用系统函数atoi转换为int型。
7.问题与不足
(1)需求分析中存在的问题和分析
(2)程序中缺少对销售数量的排序以及对各个销售数量段的统计,对于销售管理系统而言,不便于对销售员进行奖罚管理。
(3)概要设计中存在的问题和分析
本程序再设计中模块过余冗杂,且分划时相互嵌套,不利于管理。
(4)详细设计中存在的问题和分析
本程序在设计时文件和指针采用的是分开单独编写,因此在衔接过程中可能存在衔接问题。
(5)代码编制中存在的问题和分析
因为考虑到各个模块的独立性以便后续的其他功能的添加,本程序未使用全局变量,因此在程序的全面控制方面有缺陷。
(6)调试和测试中存在的问题和分析
虽然程序指针走向在程序未运行时每一步都基本了解,但程序函数相互调用时指针的走向不是很明确,需要不断的调试才能确定程序的正确性。
8.建议
我本次的课设题目是销售管理系统,对这个题目,我建议加入销售信息中销售数量的排序功能,包括对每一天各销售员销售数量的排序和销售员自己销售数量的排序,这有利于销售管理中对于销售员的销售业绩的统计,方便管理
另外我的题目中要求手动输入销售日期并判断日期格式,我认为可以改为调用系统时间,对时间的要求可以更精确。
9.编程体会
先吐吐苦水,这次课程设计熬了大概二十多天的夜,中途还夹着各种考试,很累啊。
但是真的很不错,充实!
通过这次的课程设计对C语音的认识和了解都有加深,
在编写过程中遇到很多的问题,看书,查资料,问老师,请教学长,每一各问题的解决都伴随着轻松与沉重,因为问题只会越来越少但是也会越来越困难。
具体的我掌握了很多以前不知道或者不熟悉不会用的函数,对C语音文件和指针的实用和认识也更加熟悉,更重要的是了解到在程序编写之前建立程序的主体框架图是非常重要的,对于程序后续的编写也具有指导作用。
最后对在我的程序编写过程中给我提供帮助和指导的老师、学长、同学表示感谢,谢谢你们!
10.程序源代码:
/*销售管理系统
制作者:
曹春恒
*/
#include<>
#include<>
#include<>
/*销售员信息结构体*/
structclerk
{
intnum;/*编号*/
charname[30];/*姓名*/
charsex[3];/*性别*/
}cle[4];
/*产品信息结构体*/
structproduct
{
intmark;/*产品代号*/
charcpxx[30];/*产品名称*/
doubleprice;/*销售价格*/
}prod[5];
/*销售信息结构体*/
structinformation
{
intznum;/*销售员编号*/
intzmark;/*产品代号*/
chardate[11];/*销售日期*/
intamount;/*销售数量*/
structinformation*next;
};
....");
getchar();getchar();
}
/*从文件导入*/
void
import(char*filename,structinformation*p_root)
{
FILE*fp=fopen(filename,"r+");
structinformation*p_current=p_root,*p_new;
inti=0,rtn;
if(fp==NULL)
return;
do
{
p_new=(structinformation*)malloc(sizeof(structinformation));
if(p_new==NULL)
return;
rtn=fscanf(fp,"%d%d%s%d",&p_new->znum,&p_new->zmark,p_new->date,&p_new->amount);
if(rtn!
=EOF)
{
p_current->next=p_new;
p_current=p_new;
}
}
while(rtn!
=EOF);
p_current->next=NULL;
free(p_new);
fclose(fp);
printf("\n\n\n\n\n文件已导入请按任意键继续......");
getchar();getchar();
}
/**显示函数*/
intmenu_show();/*主菜单函数*/
voidmenu_select(intsel,structinformation*head);/*功能函数*/
intjudge_date();/*判断日期函数*/
voidscanf_clerk();/*导入销售员资料函数*/
voidscanf_product();/*导入产品资料函数*/
voidscanf_add(structinformation*head);/*导入销售信息函数*/
intchange_date();/*定义把时间格式转换成整形*/
/*根据参数选择相应的功能函数sel功能选择代码head链表头节点*/
voidmenu_select(intsel,structinformation*head)
{
voidshowoo();
\",head);break;
case4:
search(head);break;
case5:
print(head);break;
case6:
system("cls");
case7:
showoo();break;
case8:
Delete(head);break;
printf("\n\n*****************************谢谢使用***************************************\n\n\n");
exit(0);
}
}
voidshowoo()
{system("cls");
printf("\n\n\n***********************************题目****************************************\n\n");
printf("问题描述:
\n\n已知一公司某公司有4个销售员(编号、姓名、性别)\n");
printf("负责销售5种产品(产品代号、产品名称,销售价格)。
设计一程序,完成以下功能:
");
printf("\n从键盘输入销售信息:
销售员编号、产品编号、销售日期、销售数量");
printf("\n输入时需要判断销售员编号是否存在、产品编号是否存在、销售数量是否大于0,\n销售日期日期格式是否合法(格式为:
YYYY-MM-DD(年限2001-2012),如2009-01-02)))");
printf("\n能输出指定时间段内的销售统计报表");
printf("\n根据销售员编号查询销售历史情况");
printf("\n能删除指定销售员、产品、销售日期的记录");
printf("\n所有数据符合实际应用要求");
printf("\n\n请按任意键继续、、、、、、");
printf("\n********************************************************************************");
getchar();
}
/*菜单函数,函数返回值为整数,代表所选的菜单项*/
intmenu_show()
{
chars[80];
inti;
printf("\n\t********************销售管理系统***********************\n");
printf("\n\t\t0.创建销售员个人资料\n");
printf("\n\t\t1.创建产品资料\n");
printf("\n\t\t2.输入销售信息\n");
printf("\n\t\t3.保存销售信息\n");
printf("\n\t\t4.查询销售信息\n");
printf("\n\t\t5.显示销售信息报表\n");
printf("\n\t\t6.退出(任何情况下按Ctrl+C退出程序)\n");
printf("\n\t\t7.显示题目\n");
printf("\n\t\t8.删除销售信息\n");
printf("\n\t*******************************************************\n");
printf("\n请输入0-8之间的数选择需要的操作:
");/*提示输入选项*/
gets(s);
while
(1)
{
if(strlen(s)!
=1||s[0]<'0'||s[0]>'8')
{printf("\n输入错误请输入0-8之间的数:
");
fflush(stdin);
gets(s);}
elsebreak;
}
/*i=(int)s[0]-48;*/i=atoi(s);
returni;/*返回选择项,主程序根据该数调用相应的函数*/
}
/******主函数开始*******/
main()
{
structinformation*head;/*定义链表的头节点*/
intsize=sizeof(structinformation);
head=(structinformation*)malloc(size);
head->next=NULL;
for(;;)/*无限循环*/
{system("cls");/*清屏*/
menu_select(menu_show(),head);
}
}
/*定义键盘输入销售员函数*/
voidclerk(){
structclerk*pt1;
inti,j=0;
chars[100];
system("cls");/*清屏*/
printf("**********************************输入界面**************************************\n");
printf("\n销售员的编号姓名性别(男or女)\n");
printf("------------------------------------------------------------------------------\n");
for(i=0;i<4;i++)
{
pt1=cle+i;
printf("\n第%d个人资料(请输入回车键开始):
",i+1);
getchar();
printf("\n请输入销售员的编号%d:
",i+1);
gets(s);
while
(1)
{
if(strlen(s)!
=1||atoi(s)!
=i+1)
{p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 销售 管理 系统 报告 代码