湖北汽车工业学院C语言课程设计商品销售信息管理系统源代码.docx
《湖北汽车工业学院C语言课程设计商品销售信息管理系统源代码.docx》由会员分享,可在线阅读,更多相关《湖北汽车工业学院C语言课程设计商品销售信息管理系统源代码.docx(28页珍藏版)》请在冰豆网上搜索。
湖北汽车工业学院C语言课程设计商品销售信息管理系统源代码
C语言课程设计
商品销售信息管理系统
#include
#include
#include
#include
structproduct//定义商品数据结构
{
intnum;//商品编号
charproductname[20];//商品名称
floatprice;//商品售价
charplace[30];//商品产地
intstorage;//商品库存
structproduct*next;
}*head,*p1,*p2;//定义主结构体数组和备用结构体数组及指针
structtime//定义时间结构体
{
intyear;
intmonth;
intday;
};
structsell//定义销售数据结构
{
intID;//顾客代码
charcustomername[20];//顾客
intnum;//商品编号
intcount;//销售数量
chardate[10];//日期
structsell*next1;
}*head1;//定义头指针head,缓冲指针p1,以及尾指针p2
/*************************函数申明****************************/
voidEnter_productmessage();//导入商品信息
voidCreat();//输入销售记录
voidSearch_num();//按编号查询销售历史
voidSearch_customername();//按顾客查询购买历史
voidPrintf_customername();//显示顾客信息
voidSearch_date();//计算时间段销售总额
voidSave_product();//保存销售信息
voidSave_customername();//保存顾客信息
voidExit();//退出程序
/***************************主菜单******************************/
intselect()
{
intc;
printf("\t\t************欢迎使用商品销售管理程序**************\n");
printf("\t\tT1123-5班胡军一分耕耘一分收获\n");
printf("\n--------------------------------------------------------------------------------\n");
printf("\n");
printf("\t\t********************************************\n");
printf("\t\t**********欢迎使用商品销售管理系统**********\n");
printf("\t\t****\n");
printf("\t\t**1:
导入商品信息**\n");
printf("\t\t**2:
输入销售记录**\n");
printf("\t\t**3:
按编号查询销售历史**\n");
printf("\t\t**4:
按顾客查询购买历史**\n");
printf("\t\t**5:
计算时段各销售总额**\n");
printf("\t\t**6:
显示顾客信息**\n");
printf("\t\t**7:
保存销售信息**\n");
printf("\t\t**8:
保存顾客信息**\n");
printf("\t\t**0:
退出**\n");
printf("\t\t********************************************\n");
printf("\n--------------------------------------------------------------------------------\n");
printf("\t\t请输入您的选择(0~8的整数):
");
scanf("%d",&c);
returnc;
}
/********************************主函数***************************/
intmain()
{
for(;;)
{
switch(select())
{
case1:
system("cls");Enter_productmessage();break;
case2:
system("cls");Creat();break;
case3:
system("cls");Search_num();break;
case4:
system("cls");Search_customername();break;
case5:
system("cls");Search_date();break;
case6:
system("cls");Printf_customername();break;
case7:
system("cls");Save_product();break;
case8:
system("cls");Save_customername();break;
case0:
system("cls");Exit();break;
default:
{system("cls");
printf("\n\n\n\n\n\n");
printf("\t\t*******************************************************\n");
printf("\t\t**输入错误!
!
!
请重新输入您的选择(0~8的整数)**\n");
printf("\t\t**请按Enter键返回!
!
!
**\n");
printf("\t\t*******************************************************\n");
getchar();
getchar();
system("cls");
}
}
}
return0;
}
/****************************************************************/
intjudgech(char*a)//判断是否为汉字
{
inti,flag;
for(i=0;a[i]!
='\0';i++)
if(a[i]>=0)
{
flag=0;
break;
}
else
flag=1;
returnflag;
}
intjudgedate(chardate[10])//判断日期是否合法
{
inti,year,month,day,s1=0;//日期格式输入正确则s1=1,否则s1=0
for(i=0;i<10;i++)
if(date[i]=='\0')
{
s1=0;
break;
}
if(date[4]=='-'&&date[7]=='-')
{
if(strlen(date)==10)
{
year=1000*(date[0]-48)+100*(date[1]-48)+10*(date[2]-48)+(date[3]-48);//年月日
month=10*(date[5]-48)+(date[6]-48);
day=10*(date[8]-48)+(date[9]-48);
}
}
if(i==10)
{
if(year%4==0&&month==2&&day>0&&day<=29)s1=1;
elseif(year%4!
=0&&month==2&&day>0&&day<=28)s1=1;
elseif((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&day>0&&day<=31)s1=1;
elseif((month==4||month==6||month==9||month==11)&&day>0&&day<=30)s1=1;
}
returns1;
}
voidfile()//读入文件操作
{
inti=0,m=0,k=1,j=1,c=1,o=1,v=1;
FILE*fp;
charfilename[30];
printf("请输入读入文件路径:
");
rewind(stdin);
gets(filename);
rewind(stdin);
p1=p2=head=(structproduct*)malloc(sizeof(structproduct));
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\t\t********************************************\n");
printf("\t\t**导入信息文件错误!
请检查文件路径!
!
!
**\n");
printf("\t\t********************************************\n");
getchar();
system("cls");
Enter_productmessage();
}
printf("********************************商品信息***********************************\n");
printf("编号(1-10的整数)名称(汉字)价格(数字)产地(汉字)库存数量\n");
printf("***************************************************************************\n");
while(!
feof(fp))
{
p1=(structproduct*)malloc(sizeof(structproduct));
p2->next=p1;
p1->next=NULL;
p2=p1;
fscanf(fp,"%d%s%f%s%d",&p2->num,p2->productname,&p2->price,p2->place,&p2->storage);
while(k==1)
{
if(p2->num>10||p2->num<=0)
{
printf("\t*******************************************************\n");
printf("\t\t第%d个商品编码!
请重新输入(1-10):
",i+1);
rewind(stdin);
scanf("%d",&p2->num);
k=1;
}
elsek=0;
}
while(j==1){
if(judgech(p2->productname)==0)
{
printf("\t\t第%d个商品名称错误!
请重新输入(汉字):
",i+1);
rewind(stdin);
scanf("%s",p2->productname);
j=1;
}
elsej=0;
}
while(o==1){
if(p2->price<=0)
{
printf("\t\t第%d个商品价格错误!
请重新输入价格(>0):
",i+1);
rewind(stdin);
scanf("%f",&p2->price);
o=1;
}
elseo=0;
}
while(c==1){
if(judgech(p2->place)==0)
{
printf("\t\t第%d个商品产地格式错误!
请重新输入(汉字):
",i+1);
rewind(stdin);
scanf("%s",p2->place);
c=0;
}
elsec=0;
}
while(v==1){
if(p2->storage!
=1000)
{
printf("\t*******************************************************\n");
printf("\t\t第%d个商品数量错误!
请输入1000:
",i+1);
rewind(stdin);
scanf("%d",&p2->storage);
v=1;
}
elsev=0;
}
printf("\t%-12d%-15s%-15.2f%-15s%-12d\n",p2->num,p2->productname,p2->price,p2->place,p2->storage);
}
fclose(fp);
}
voidcomp()
{
FILE*fp;
inti=0,n,k=1,m=1,c=1,l=1,d=1;
charfilename[20],a;
printf("\t请输入商品信息保存路径:
");
rewind(stdin);
gets(filename);
p1=p2=head=(structproduct*)malloc(sizeof(structproduct));
if((fp=fopen(filename,"a+"))==NULL)
{
printf("\t\t********************************************\n");
printf("\t\t**不能打开文件!
请检查文件路径!
!
!
**\n");
printf("\t\t********************************************\n");
getchar();
system("cls");
Enter_productmessage();
}
printf("\n\n\n");
printf("\t\t********************************************\n");
printf("\t\t**若输入路径与从文件导入商品信息路径相同!
**\n");
printf("\t\t**并已导入十个商品信息,请不要再导入!
!
!
**\n");
printf("\t\t**注意商品编号不要和已导入的编码重复!
!
!
**\n");
printf("\t\t********************************************\n");
printf("\n\n\n");
getchar();
system("cls");
printf("\t已从文件导入的个数和要输入的个数和不超过十!
!
!
\n\n");
printf("\t请输入要导入的销售记录个数:
");
scanf("%d",&n);
if(n>0)
{
do{
p1=(structproduct*)malloc(sizeof(structproduct));
p2->next=p1;
p1->next=NULL;
p2=p1;
printf("***********************************商品信息*****************************\n");
printf("编号(整数)名称(汉字)价格(数字)产地(汉字)库存数量\n");
scanf("%d%s%f%s%d",&p2->num,p2->productname,&p2->price,p2->place,&p2->storage);
while(k==1)
{
if(p2->num>10||p2->num<=0)
{
printf("\t*******************************************************\n");
printf("\t\t商品编码!
请重新输入(1-10):
");
rewind(stdin);
scanf("%d",&p2->num);
k=1;
}
elsek=0;
}
while(m==1){
if(judgech(p2->productname)==0)
{
printf("\t\t商品名称错误!
请重新输入(汉字):
");
rewind(stdin);
scanf("%s",p2->productname);
m=1;
}
elsem=0;
}
while(l==1){
if(p2->price<=0)
{
printf("\t\t商品价格错误!
请重新输入价格(>0):
");
rewind(stdin);
scanf("%f",&p2->price);
l=1;
}
elsel=0;
}
while(c==1){
if(judgech(p2->place)==0)
{
printf("\t\t商品产地格式错误!
请重新输入(汉字):
");
rewind(stdin);
scanf("%s",p2->place);
c=1;
}
elsec=0;
}
while(d==1){
if(p2->storage!
=1000)
{
printf("\t*******************************************************\n");
printf("\t\t商品数量错误!
请输入1000:
");
rewind(stdin);
scanf("%d",&p2->storage);
d=1;
}
elsed=0;
}
p2=head->next;
fprintf(fp,"\n%-6d%-6s%-6.2f%-6s%-6d\n",p2->num,p2->productname,p2->price,p2->place,p2->storage);
printf("\n%-6d%-6s%-6.2f%-6s%-6d\n",p2->num,p2->productname,p2->price,p2->place,p2->storage);
printf("\t\t是否继续输入信息(Y/N)?
\n");
getchar();
a=getchar();
}while(a=='Y'||a=='y');
}
fclose(fp);//关闭文件夹
if(n==0)
{
printf("\t\t不从键盘输入入信息!
!
!
");
getchar();
getchar();
system("cls");
}
fclose(fp);//关闭文件夹
}
voidEnter_productmessage()//导入销售信息
{
inta;
printf("\t************************************************************\n");
printf("\t**请输入10种产品的信息--编号、名称、价格、产地、数量:
**\n");
printf("\t**1:
通过文件导入(推荐)!
**\n");
printf("\t**2:
通过键盘输入!
**\n");
printf("\t************************************************************\n");
printf("\t请输入您的选择(1或2):
");
scanf("%d",&a);
getchar();
system("cls");
if(a!
=1&&a!
=2)
{
printf("\t\t输入错误!
!
!
请重新输入您的选择(1或2):
");
scanf("%d",&a);
}
switch(a)
{
case1:
system("cls");file();break;
case2:
system("cls");comp();break;
}
printf("*************************************************************************\n");
printf("\t*******************************************************\n");
printf("\t**数据类信息操作成功!
请按Enter键继续!
!
!
**\n");
printf("\t*******************************************************\n");
getchar();
getchar();
system("cls");
}
voidCreat()//输入销售信息函数
{
inti=0,k=1,code;
chara;
structsell*p3,*p4;
srand(0);
code=1+rand()%90;
p3=p4=head1=(structsell*)malloc(sizeof(structsell));
p3=head1;
printf("\t\t请输入销售记录:
\n");//提示输入记录
printf("--------------------------------------------------------------------------------\n");
do{
p3=(structsell*)malloc(sizeof(structsell));