C语言销售管理实训报告.docx
《C语言销售管理实训报告.docx》由会员分享,可在线阅读,更多相关《C语言销售管理实训报告.docx(31页珍藏版)》请在冰豆网上搜索。
C语言销售管理实训报告
湖北汽车工业学院电气与信息工程学院
《C语言程序设计》
实训报告
实训题目:
销售管理记录
专业:
软件工程
班级:
姓名:
成绩:
一、需求分析
1、问题
根据需求,该系统所包含的信息有以下一些:
销售记录的基本信息:
销售编号、产品编号、销售日期、销售数量。
根据需求,该系统所包含的信息有以下一些:
各种基本数据录入。
如:
销售管理基本信息录入。
各种基本数据修改。
如:
允许对已经录入的数据重新进行编辑、修改。
例如,修改销售管理张三的基本信息。
各种基本数据删除。
如将张三的信息从销售管理中删除。
各种数据的查询。
如输入张三的姓名,查询张三的电话和地址。
数据导出:
将销售管理的信息导入指定文件。
数据导入:
从指定文件中导入销售管理中。
2、系统
采用C语言实现,开发环境为VC,可以运行操作系统windows98以上皆可。
3、运行要求
能不受限制录入销售管理信息
界面友好,操作方便,如删除需要提示用户是否删除
错容性强,如数据导出时,如果文件不在需要提示用户
二、总体设计
1、系统流程设计
根据系统要求,设计如下系统流程
2、系统模块设计
根据系统的功能设计,如下模块:
主界面的显示:
完成系统菜单的显示
功能选择模块:
根据用户的选择,完成相应的功能
销售管理信息的录入:
完成用户从界面输入销售管理信息,保存入系统的功能
销售管理信息的修改:
完成用户从界面输入销售管理信息,在系统中查询定位,并将录入的数据保存入系统的功能
销售管理信息的查询:
完成用户从界面输入的条件,在系统中查询符合条件的销售信息,并在界面上显示的功能
销售管理信息的导入:
完成用户从界面输入需要导入的文件路径名称,读取该文件的内容,保存入系统,并在界面上显示导入内容的功能
销售管理信息的导出:
完成用户从界面输入需要导出的文件路径名称,将系统中销售管理信息保存入文件中
销售管理信息的删除:
完成用户从界面输入需要的销售管理信息的姓名,并将其从系统中删除
三、详细设计
1、数据结构设计
根据系统要求,系统中需要保存的数据有销售管理信息,其结构如下:
数据名称
姓名
性别
销售员编号
产品代号
产品名称
销售价格
销售日期
销售数量
产品编号
为了能实现不受限制的增加销售信息,采用链表的结构保存销售管理的信息,
在增加销售管理的基本信息时,创建一个销售管理节点,将其插入到链表中,
示意图如下:
2、界面设计
主界面:
根据系统要求,设计一个字符界面,显示系统菜单,为了一线友好性,将在
每个菜单前面显示该菜单相对应的数字
用户输入菜单项前的数字,主菜单消失,进入该模块的相应界面,进行相应的操作,完成后,回到主界面。
·输入界面:
输入员工信息只能输入4个员工的信息。
性别如果不对要重新输入:
查询销售员信息:
输入销售产品信息有五种产品的信息:
查询输入商品的信息:
输入销售信息可以输入自己想输入的个数,然后将数据将保存。
如果时间不对会再次输入直到对了为止:
保存销售记录:
根据销售员编号查询销售员信息:
根据销售员编号删除销售员信息:
3.模块实现
·主界面实现:
模块说明:
调用printf()函数,在屏幕上打印需要显示的字符信息,需要在显示之前调用system(“cls”)函数将前面的界面清空。
对应的实现函数menu_show();
·功能选择模块实现:
模块说明:
接受从键盘输入的菜单选择,判断并调用相应的功能函数,完成其对应的功能,实现功能选择。
对应的函数:
menu_select();
·管理系统信息录入模块实现:
模块说明:
从键盘接收输入的管理系统信息表,在动态存储区中创建管理系统信息表的节点,遍历链表,将其插入到管理系统信息表的最后位置。
模块流程:
对应函数:
voidcreate_sell_doc()
管理系统信息删除模块实现:
模块说明:
:
从键盘输入需要删除的销售信息,可以根据销售员编号;产品编号;或者日期。
遍历链表,判断节点的销售员编号或者产品编号或者日期是否输入的销售员编号或者产品编号或者日期相等,如果相等,就删除此节点然后将上一节点连接到下一节点,最后将删除后的链表的头结点返回。
对应函数:
intjudge()
intjudge_data(char*data1)
intjudge_data(char*sells)
·判断日期是否正确:
模块说明:
当输入日期的时候可以判断日期的对错与否,格式为YYYY-XX-ZZ;如果错误的话则会自动让使用者在次输入
相关函数:
intjudge_data(char*data1);
销售信息报表模块:
模块说明:
输入起始日期和中止日期。
实现了显示每个销售员销售某个产品的总和。
每个产品销售数量总和,和总共销售的和。
对应函数:
voidexcel()
四.测试结果:
如界面所示。
五、实训总结
在编写这个程序时,大量的指针运用,让我更进一步了解c语言尤其是链表的链接,指针的变化,动态内存的申请,都对我很大的启发。
当然,在开始的时候,一直有很多的错误,时常的编译乱码,还找不到错误的原因。
这让我非常郁闷,而且,有时很不想做,不过还是坚持下来了。
编写这个程序花费了很长时间,所以要有耐心,有信心,更要有恒心,我相信三心齐聚,一定会在这个专业上走得更远。
六、附录
程序源码:
#include"stdio.h"/*I/O函数*/
#include"stdlib.h"/*标准库函数*/
#include"string.h"/*字符串函数*/
#include"ctype.h"/*字符操作函数*/
#include"time.h"/*时钟函数*/
#include"cstdlib"
#include"conio.h"
#defineLENsizeof(structperson)
#defineLONsizeof(structsell)
intx,k;/*定义全局变量用于保存当前商品种类*/
/*定义销售员结构*/
structperson
{
intsp_num;/*销售员编码*/
charname[10];/*销售员姓名*/
charsex[10];/*销售员性别*/
structperson*next;
}_person[4],person1[4];
/*定义商品数据结构*/
structproduct
{
intnum;/*产品代号*/
charname[20];/*产品名称*/
floatprice;/*销售价格*/
structproduct*next;
}_product[5],_product1[5];//定义主结构体数组和备用结构体数组
/*定义日期结构体*/
structdata
{
intyear,month,day;
};
/*定义销售数据结构*/
structsell
{
intsp_num;/*销售员编号*/
intnum;/*商品编号*/
chardata1[12];/*日期*/
intsells;/*销售数量*/
structsell*next;
}sell1[5];
structperson*head_p1=NULL,*qq,*p,*tail_p1,*p;/*定义结构体指针head_p1为头指针,*qq为输入数据缓存空间指针,tail_p1为尾指针*/
structproduct*head_p2=NULL,*pp1,*tail_p2,*p1;
structsell*head_s=NULL,*pp,*tail_s,*p2;
voidmain();//主函数
voidload_person();//写入销售员信息
voiddisplay_person();//显示销售员信息
voidload_product();//写入商品信息
voiddisplay_product();//显示商品信息
intjudge_data(char*data1);//细节判断函数,用于判断日期是否合法
intjudge();//主体判断函数
voidcreate_sell_doc();//新建销售信息记录
voidload_sell();//写入销售信息
voidsearch_sell_sp_num();//根据销售员编号查询销售信息
voiddelete_sell_person();//根据销售员编号删除销售信息
voidexcel();//销售信息报表
/*主函数*/
voidmain()
{
intchoice;
intsize=sizeof(structsell);
head_p1=malloc(sizeof(structperson));//申请动态存储空间
head_p1->next=NULL;
head_p2=malloc(sizeof(structsell));//申请动态存储空间
head_p2->next=NULL;
do
{
printf("***********************欢迎使用商品销售管理系统*********************\n\n");
printf("1.输入销售员信息\n");
printf("2.显示销售员信息\n");
printf("3.输入商品信息\n");
printf("4.显示商品信息\n");
printf("5.新建销售信息记录\n");
printf("6.保存写入销售信息记录\n");
printf("7.根据销售员编号查询销售信息\n");
printf("8.根据销售员编号删除销售信息\n");
printf("9.销售信息报表\n");
printf("0.退出\n");
printf("***********************************************************************\n");
printf("请选择,输入0——9的数字\n");
scanf("%d",&choice);
system("cls");
switch(choice)
{
case1:
load_person();
system("cls");
break;
case2:
display_person();
system("cls");
break;
case3:
load_product();
system("cls");
break;
case4:
display_product();
system("cls");
break;
case5:
create_sell_doc();
system("cls");
break;
case6:
load_sell();
system("cls");
break;
case7:
search_sell_sp_num();
system("cls");
break;
case8:
delete_sell_person();
system("cls");
break;
case9:
excel();
system("cls");
break;
case0:
printf("\n\n\n\n");
printf("谢谢使用\n\n\n\n");
break;
}
}
while(choice>0&&choice<=11);
}
/*输入销售员信息*/
voidload_person()
{
intn=0,i;
FILE*fp;//指向文件的指针
if((fp=fopen("销售员信息.txt","w"))==NULL)//打开文件
{
printf("打开文件错误,请确认文件路径\n");//不能打开
exit(0);//退出*/
}
printf("请输入销售员信息\n");
printf("编号,姓名,性别\n");
for(i=1;i<=4;i++)
{
scanf("%d%s%s",&_person[4].sp_num,_person[4].name,&_person[4].sex);
fprintf(fp,"%24d%20s%20s\n",_person[4].sp_num,_person[4].name,_person[4].sex);
}
fclose(fp);//关闭文件
printf("\n销售员信息输入成功\n按任意键继续......\n");
getch();
system("cls");
}
/*展示销售员信息*/
voiddisplay_person()
{
FILE*fp;
chara;
printf("********************************>·<销售员信息>·<********************************\n\n\n");
printf("销售员编号销售员信息销售员性别\n");
if((fp=fopen("销售员信息.txt","r"))==NULL)
printf("打开文件错误,请确认文件路径\n\n");
while((a=fgetc(fp))!
=EOF)
printf("%c",a);
getchar();
printf("\n查询完毕,请按任意键继续......");
getch();
system("cls");
}
/*输入商品信息*/
voidload_product()
{
intn=0,i;
FILE*fp;//指向文件的指针
if((fp=fopen("商品信息.txt","w"))==NULL)//打开文件
{
printf("打开文件错误,请确认文件路径\n");//不能打开
exit(0);//退出*/
}
printf("请输入商品信息\n");
printf("编号名称价格\n");
for(i=1;i<=5;i++)
{
scanf("%d%s%f",&_product[5].num,_product[5].name,&_product[5].price);
fprintf(fp,"%24d%20s%20.2f\n",_product[5].num,_product[5].name,_product[5].price);
}
fclose(fp);//关闭文件
printf("\n商品信息输入成功\n按任意键继续......\n");
getch();
system("cls");
}
/*展示商品信息*/
voiddisplay_product()
{
FILE*fp;
chara;
printf("********************************>·<商品信息>·<********************************\n\n\n");
printf("商品编号商品名称商品价格\n");
if((fp=fopen("商品信息.txt","w"))==NULL)
printf("打开文件错误,请确认文件路径\n");
while((a=fgetc(fp))!
=EOF)//同上
printf("%c",a);
getchar();
printf("\n查询完毕,请按任意键继续......");
getch();
system("cls");
}
//判断日期是否合法
intjudge_data(char*data1)
{
intn=1,m,year,month,day;
year=(data1[0]-48)*1000+(data1[1]-48)*100+(data1[2]-48)*10+(data1[3]-48);
month=(data1[5]-48)*10+(data1[6]-48);
day=(data1[8]-48)*10+(data1[9]-48);
m=strlen(data1);
if(m!
=10)
n=0;
if(data1[4]!
='-'||data1[7]!
='-')
n=0;
if(year>10000||year<1000||month>12||month<1||day>31||day<1)
n=0;
if(((year%4==0&&year%100!
=0)||(year%400==0))&&month==2)
if(day>30)
n=0;
if(month==2&&day>=29)
n=0;
if(month==4||month==6||month==9||month==11)
if(day>30)n=0;
returnn;
}
/*主体判断函数*/
intjudge()
{
inti,flag=1;
for(i=0;i<5;i++)
if((int)pp->sells<0)
return2;
else
if(judge_data(pp->data1)==0)
return0;//判断日期
else
return1;//完全正确
}
voidcreate_sell_doc()//新建销售信息
{
intn,i=0,m,code,k;
pp=(structsell*)malloc(sizeof(structsell));//申请动态存储空间并将指针转变为结构类型
qq=(structperson*)malloc(sizeof(structperson));//申请动态存储空间并将指针转变为结构类型
srand(time(0));
code=rand();
pp->next=NULL;
qq->next=NULL;
system("cls");/*清屏*/
if(head_s!
=0)
{
p2=head_s;
while(p2->next!
=NULL)
p2=p2->next;
getchar();
printf("\n销售信息记录已建立,按任意键返回......:
\n");
getchar();
system("cls");/*清屏*/
p2->next=pp=(structsell*)malloc(LEN);
}
else
head_s=pp=(structsell*)malloc(LEN);
pp->next=NULL;
printf("\n\n请输入希望建立的销售基本信息条数n:
\n");
scanf("%d",&n);
/*开始建立n条销售基本信息记录*/
printf("\n销售员号产品代码销售时间产品数量:
\n");
head_s=pp;
pp=(structsell*)malloc(LON);/*开辟一个新单元*/
pp->next=NULL;
for(i=0;i{
scanf("%d%d%s%d",&pp->sp_num,&pp->num,pp->data1,&pp->sells);
k=(int)pp->sells;
while
(1)
{
m=judge();//判断商品编号数量日期是否正确
if(m==1)
{
printf("\t\t销售信息输入成功!
按任意键继续......\n");
getch();
system("cls");
break;
}
elseif(m==2)
{
system("cls");
printf("商品销售数量错误请重新输入");
printf("请输入销售数量\n\n\n");/*提示输入记录*/
printf("销售数量:
\n");
scanf("%d",&pp->sells);/*输入记录*/
continue;
}
elseif(m==0)
{
system("cls");
printf("销售日期不合法,请重新输入销售日期:
\n\n\n");/*提示输入记录*/
printf("销售日期\n");
scanf("%s",pp->data1);/*输入记录*/
continue;
}
i++;
}
printf("\n商品信息输入成功\n按任意键继续......\n");
getch();
system("cls");
tail_s=(structsell*)malloc(LON);/*开辟一个新单元*/
pp->next=p2;
p2=pp;
pp=tail_s;
pp->next=NULL;
}
free(tail_s);
p2->next=NULL;
printf("\n%d项信息输入完毕,按任意键返回......\n",n);
getchar();
getchar();
system("cls");/*清屏*/
}
voidload_sell()
{
FILE*fp;
structsell*p;
if((fp=fopen("销售信息.txt","r"))==NULL)
{
printf("打开文件错误,请确认文件路径\n\n");
exit(0);
}
else
p=head_s;
while(p!
=NULL)
{
fprintf(fp,"销售员编号产品编号销售日期销售数量\n");
fprintf(fp,"%4d%4d%4s%4d",&p->sp_