手机基本信息包括:手机编号(ID)、型号、品牌、进价、数量。
手机销售信息包括:手机编号(ID)、型号、品牌、售价、数量、销售日期(年.月.日)。
系统的主要功能包括:
1. 创建手机基本信息文件,根据提示输入若干手机的信息,并将这些信息保存至一个文件中。
2. 增加手机信息,在原有手机基本信息文件的基础上增加新的手机信息,并保存至原手机基本信息文件中。
3. 删除手机信息,提示用户输入要进行删除操作的手机编号,如果在手机基本信息文件中有该信息存在,则将对应的手机信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。
4. 修改手机信息,提示用户输入要进行修改操作的手机编号,如果在手机基本信息文件中有该信息存在,则将提示用户输入要修改的选项,并将结果保存至原手机基本信息文件,并提示用户选择是否继续进行修改操作。
5. 手机销售管理,创建一个手机销售记录文件,每完成一次销售,就按销售信息的要求输入各项数据,并将该次的销售信息添加到文件中。
6. 按不同条件进行查询操作,输出满足条件的手机信息。
(1) 输入手机编号,在手机产品信息文件中查找相应的手机信息并输出。
(2) 输入品牌,在手机销售记录文件中进行查找,输出该品牌手机的所有销售信息。
(3) 输入一个日期,输出该天所有的手机销售信息。
7. 按不同条件进行统计工作。
(1) 输入一个品牌,计算该品牌手机的总销售量和总销售金额。
(2) 输入一个日期(年.月),在销售记录文件中统计该月手机的总销售量,总销售金额,并由此制作本月销售排行榜(销量前10名)。
(3) 根据手机的进价,从小到大对手机信息进行排序,并输出排序后的信息。
拿到这个课程设计,我首先将它分成了两个部分,一个是基本的手机信息,另一个是已售的手机信息。从而分成两个系统,将功能分开。基本的手机信息中的功能主要有创建文件、增加、删除、修改、查询手机信息,已售手机信息的操作功能主要有创建文件、统计手机信息。
写代码时,我主要运用了四个头文件stdio.h、stdlib.h、string.h、conio.h,其中conio.h我们可能不太熟悉。
conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。
在本次编写中,我运用的主要是结构体数组,没有用指针,因此,代码的长度可能比较长。文章来源:https://www.toymoban.com/news/detail-608514.html
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
typedef struct jbphone //手机基本信息
{
char ID[2000]; //编号
char size[4000]; //型号
char brand[2000]; //品牌
int in; //进价
int num;//数量
}SJBPHONE;
typedef struct date //日期类型定义
{
short year; //年
short month; //月
short day; //日
}SDATE;
typedef struct xsphone //手机销售信息
{
char ID[2000]; //编号
char size[4000]; //型号
char brand[2000]; //品牌
short in; //进价
short out;//售价
short num;//数量
SDATE out_time; //销售日期
}SXSPHONE;
#define SJBPHONE_LEN sizeof(SJBPHONE)
#define SDATE_LEN sizeof(SDATE)
#define SXSPHONE_LEN sizeof(SXSPHONE)
#define JBPHONENUM 1000
#define XSPHONENUM 1000
SJBPHONE jbphone[JBPHONENUM]={0};
SXSPHONE xsphone[XSPHONENUM]={0};
//输入手机信息函数声明
int LoadJBPhone(void); //从文件载入全部手机信息的函数
void InputOneJBPhone(int i); //输入一个手机信息的函数
void SaveOneJBPhone(int i); //保存一个手机信息的函数
void SaveAllJBPhones(int pn); //保存全部手机信息的函数
int OriginalJBPhone(void); //手机基本信息初始化的函数
//输出手机基本信息函数声明
void OutputOneJBPhone(int i); //输出一个手机信息的函数
void OutputAllJBPhones(int pn); //输出全部手机信息的函数
//手机基本信息操作声明
int AddPhone(int pn); //增加手机信息的函数
int DelPhone(int pn); //删除手机信息的函数
void ModifyPhone(int pn); //修改手机信息的函数
void RankInPrice(int pn);//按手机进价排序
//输入已售手机信息函数声明
int LoadXSPhone(void); //从文件载入全部已售手机信息的函数
void InputOneXSPhone(int i); //输入一个已售手机信息的函数
void SaveOneXSPhone(int i); //保存一个已售手机信息的函数
void SaveAllXSPhones(int sn); //保存全部已售手机信息
int OriginalXSPhone(void);//已售手机信息初始化
//输出已售手机信息函数声明
void OutputOneXSPhone(int i); //输出一个已售手机信息的函数
void OutputAllXSPhones(int sn); //输出全部已售手机信息的函数
//已售手机信息操作声明
int AddXSPhone(int sn); //增加手机信息的函数
int DelXSPhone(int sn); //删除已售手机信息的函数
//手机查询模块函数声明
void SearchMenu(int sn); //手机查询函数
void SearchID (int sn); //按编号查询函数
void SearchBrand(int sn); //按品牌查询函数
void SearchOutTime(int sn); //按销售日期查询函数
//统计已售手机信息
void statistics(int sn);//统计手机信息
void sta_brand(int sn);//按品牌统计
void sta_date(int sn);//按销售日期统计
int main()
{
int select, pn=0, sn=0;
pn=LoadJBPhone();
if(pn==0)
printf(" 基本手机信息为空!\n\n");
sn=LoadXSPhone();
if(sn==0)
printf(" 已售手机信息为空!\n\n");
while(1)
{
printf("\t\t--------------------------------------\n");
printf("\t\t * *\n");
printf("\t\t * 手机销售管理系统 *\n");
printf("\t\t * *\n");
printf("\t\t---------------------------------------\n\n");
printf("\t\t手机基本信息操作 已售手机信息操作\n");
printf("\t\t1.手机基本信息初始化 7.已售手机信息初始化\n");
printf("\t\t2.增加手机信息 8.增加已售手机信息\n");
printf("\t\t3.修改手机信息 9.查询已售手机信息\n");
printf("\t\t4.删除手机信息 10.删除已售手机信息\n");
printf("\t\t5.手机进价排序 11.统计\n");
printf("\t\t6.显示全部手机基本信息 12.显示全部已售手机信息\n");
printf("\n\t\t 0. 退出系统\n");
printf("-----------------------------------------------------------------------\n");
printf("\n 请选择您需要的服务(0-8):");
scanf("%d", &select); getchar();
switch(select)
{
case 1: pn=OriginalJBPhone(); break;
case 2: pn=AddPhone(pn); break;
case 3: ModifyPhone(pn); break;
case 4: pn=DelPhone(pn); break;
case 5: RankInPrice(pn); break;
case 6: OutputAllJBPhones(pn); break;
case 7: sn=OriginalXSPhone();break;
case 8: sn=AddXSPhone(sn); break;
case 9: SearchMenu(sn); break;
case 10: sn=DelXSPhone(sn); break;
case 11: statistics(sn); break;
case 12: OutputAllXSPhones(sn); break;
case 0: printf("\n 谢谢使用!再见\n"); exit(1);
default: printf("\n 按键错误,请重新选择!\n");
} //end switch
}
return 0;
}
int LoadJBPhone(void) //从文件加载全部手机信息
{
FILE *fp;
int pn=0;
fp=fopen("jbphone.txt","r");
if(fp==NULL)
{
printf("Can't open file jbphone.txt\n");
return pn;
}
while(!feof(fp))
{
fscanf(fp,"%s%s%s%d%d\n",jbphone[pn].ID,jbphone[pn].size,jbphone[pn].brand,&jbphone[pn].in,&jbphone[pn].num);
pn++;
}
fclose(fp);
return(pn);
}
void InputOneJBPhone(int i) //输入一个手机的基本信息
{
printf(" 编号:"); gets(jbphone[i].ID);
printf(" 型号:"); gets(jbphone[i].size);
printf(" 品牌:"); gets(jbphone[i].brand);
printf(" 进价:"); scanf("%d",&jbphone[i].in); getchar();
printf(" 数量:"); scanf("%d",&jbphone[i].num); getchar();
}
void SaveOneJBPhone(int i) //保存一个手机的信息
{
FILE *fp;
if((fp=fopen("jbphone.txt","r+"))==NULL)
{
printf("Can't open file jbphone.txt\n");
exit(1);
}
fseek(fp, SJBPHONE_LEN*i, 0);
fprintf(fp,"%s\n%s\n%s\n%d\n%d\n",jbphone[i].ID,jbphone[i].size,jbphone[i].brand,jbphone[i].in,jbphone[i].num);
fclose(fp);
}
void SaveAllJBPhones(int pn) //保存全部手机信息
{
FILE *fp;
if((fp=fopen("jbphone.txt","w"))==NULL)
{
printf("Can't open file jbphone.txt\n");
exit(1);
}
for(int i=0;i<pn;i++)
fprintf(fp,"%s\n%s\n%s\n%d\n%d\n",jbphone[i].ID,jbphone[i].size,jbphone[i].brand,jbphone[i].in,jbphone[i].num);
fclose(fp);
}
int OriginalJBPhone(void)//手机基本信息初始化
{
int pn;
char c = 'y';
printf("正在初始化手机基本信息\n");
FILE *fp;
fp=fopen("jbphone.txt","w");
for (pn = 0; c == 'y' || c == 'Y';pn++)
{
printf("\n输入手机%d的信息:\n", pn + 1);
InputOneJBPhone(pn);
SaveOneJBPhone(pn);
printf("\n继续输入请按'y',停止输入请按'n':");
c = getchar(); getchar();
}
SaveAllJBPhones(pn);
printf("pn=%d\n",pn);
printf("\n 按任意键继续!\n"); getch();
fclose(fp);
return (pn);
}
void OutputOneJBPhone(int i) //输出一个手机的全部信息
{
printf("\n");
printf(" 编号:"); puts(jbphone[i].ID);
printf(" 型号:"); puts(jbphone[i].size);
printf(" 品牌:"); puts(jbphone[i].brand);
printf(" 进价:"); printf("%d\n",jbphone[i].in);
printf(" 数量:"); printf("%d\n",jbphone[i].num);
}
void OutputAllJBPhones(int pn) //输出全部手机信息的函数
{
int i;
if(pn==0)
{
printf("\n 手机基本信息为空,无法执行操作!\n");
return ; //返回到主菜单
}
printf("\n 全部手机的详细信息:\n");
for(i=0; i<pn; i++)
{
OutputOneJBPhone(i);
}
printf("\n 全部手机信息输出完毕。\n");
printf("\n 按任意键返回!\n"); getch();
return ;
}
int AddPhone(int pn)//增加手机信息
{
char c = 'y';
int i;
printf("现有的手机总量为:%d\n",pn);
FILE *fp;
if((fp=fopen("jbphone.txt","a"))==NULL)
{
printf("can't open file jbphone.txt\n");
exit(1);
}
printf("增加手机信息:");
for (i = 0; c == 'y' || c == 'Y'; i++)
{
printf("\n输入手机%d的信息:\n", pn + 1);
InputOneJBPhone(pn);
SaveOneJBPhone(pn);
pn++;
printf("\n继续输入请按'y',停止输入请按'n':");
c = getchar(); getchar();
}
SaveAllJBPhones(pn);
printf("\n 按任意键继续!\n"); getch();
fclose(fp);
return(pn);
}
int DelPhone(int pn)//删除手机基本信息
{
int i, k=-1; char id[2000], c1='y', c2;
if(pn==0)
{
printf("\n 手机信息为空,无法执行操作!\n");
return pn;
}
while(c1=='y'||c1=='Y')
{
c2='n';
printf("\n 请输入要删除的手机的编号:");
gets(id);
for(i=0; i<pn; i++)
if(strcmp(jbphone[i].ID, id)==0)
{
k=i;
break;
}
if(k<0)
printf("\n 输入的编号有误,请重新输入!\n");
else
{
printf("\n 显示该手机的信息:\n"); OutputOneJBPhone(k);
printf("\n 确定要删除该手机的全部信息吗?(y/n):");
c2=getchar(); getchar();
if(c2=='y')
{
for(i=k; i<pn; i++)
jbphone[i]=jbphone[i+1];
pn--;
printf("\n 成功删除!\n");
}
else
printf("\n 取消删除!\n");
}//end else
printf("\n 还需要删除其它手机的信息吗?(y/n):");
c1=getchar(); getchar();
} //end while
SaveAllJBPhones(pn);
printf("\n 按任意键继续!\n"); getch();
return(pn);
}
void ModifyPhone(int pn)//修改手机信息的函数
{
int select, k=-1;
char id[2000], c1='y', c2;
if(pn==0)
{
printf("\n 手机基本信息为空,无法执行操作!\n");
return ; //返回到主菜单
}
while(c1=='y'||c1=='Y')
{
c2='y';
printf("\n 请输入要修改的手机的编号:");
gets(id);
for(int i=0; i<pn; i++)
{
if(strcmp(jbphone[i].ID, id )==0)
{
k=i;
break;
}
}
if(k<0)
printf("\n 输入的编号有误,请重新输入!\n");
else
{
printf("\n 显示此手机信息:\n");
OutputOneJBPhone(k);
while(c2=='y'||c2=='Y')
{
printf("\n 手机信息包括以下数据项\n");
printf("-------------------------------------------------\n");
printf(" 1. 编号 \n");
printf(" 2. 型号 \n");
printf(" 3. 品牌 \n");
printf(" 4. 进价 \n");
printf(" 5. 数量 \n");
printf(" 0. 取消删除 \n");
printf("-------------------------------------------------\n");
printf("\n 请选择要修改的数据项(0-5):");
scanf("%d", &select);
getchar();
switch(select)
{
case 1: printf(" 编号:"); gets(jbphone[k].ID);break;
case 2: printf(" 型号:"); gets(jbphone[k].size);break;
case 3: printf(" 品牌:"); gets(jbphone[k].brand);break;
case 4: printf(" 进价:"); scanf("%d",&jbphone[k].in); getchar();break;
case 5: printf(" 数量:"); scanf("%d",&jbphone[k].num); getchar();break;
case 0: return ;
default: printf("\n 按键错误,请重新输入!\n");
} //end switch
printf("\n 还要修改此手机的其他信息吗?(y/n):");
c2=getchar(); getchar();
} //end while(c2)
}
SaveOneJBPhone(k);
printf("\n 还需要修改其它手机的信息吗?(y/n):");
c1=getchar(); getchar();
} //end while(c1);
printf("\n 按任意键继续!\n"); getch();
}
void RankInPrice(int pn)//按手机进价排序
{
SJBPHONE temp1={0};
int k,j,i;
if(pn==0)
{
printf("\n 手机信息为空,无法执行操作!\n");
return ;
}
for (k = 0; k < pn - 1; k++)
{
for(j = 0; j < pn - 1 - k; j++)
if (jbphone[j].in < jbphone[j + 1].in)
{
temp1 = jbphone[j];
jbphone[j] = jbphone[j + 1];
jbphone[j + 1] = temp1;
}
}
printf("手机进价排序(由大到小):\n");
for (j = 0; j < pn; j++)
{
OutputOneJBPhone(j);
}
printf("\n 按任意键继续!\n"); getch();
}
//已售
int LoadXSPhone(void) //从文件加载全部已售手机信息
{
FILE *fs;
int sn=0;
fs=fopen("xsphone.txt","r");
if(fs==NULL)
{
printf("Can't open file xsphone.txt\n");
return sn;
}
while(!feof(fs))
{
fscanf(fs,"%s%s%s%d%d",xsphone[sn].ID,xsphone[sn].size,xsphone[sn].brand,&xsphone[sn].out,&xsphone[sn].num);
fscanf(fs,"%d.%d.%d\n",&xsphone[sn].out_time.year,&xsphone[sn].out_time.month,&xsphone[sn].out_time.day);
sn++;
}
fclose(fs);
return(sn);
}
void InputOneXSPhone(int sn) //输入一个已售手机信息的函数
{
printf(" 编号:"); gets(xsphone[sn].ID);
printf(" 型号:"); gets(xsphone[sn].size);
printf(" 品牌:"); gets(xsphone[sn].brand);
printf(" 售价:"); scanf("%d",&xsphone[sn].out); getchar();
printf(" 数量:"); scanf("%d",&xsphone[sn].num); getchar();
printf(" 销售日期(年月日):"); scanf("%d.%d.%d",&xsphone[sn].out_time.year,&xsphone[sn].out_time.month,&xsphone[sn].out_time.day) ;getchar();
}
void SaveOneXSPhone(int i) //保存一个已售手机信息的函数
{
FILE *fs;
if((fs=fopen("xsphone.txt","w+"))==NULL)
{
printf("Can't open file xsphone.txt\n");
exit(1);
}
fseek(fs, SXSPHONE_LEN*i, 0); //文件指针定位到第 i 个手机
fprintf(fs,"%s\n%s\n%s\n%d\n%d\n",xsphone[i].ID,xsphone[i].size,xsphone[i].brand,xsphone[i].out,xsphone[i].num);
fprintf(fs,"%d.%d.%d\n",xsphone[i].out_time.year,xsphone[i].out_time.month,xsphone[i].out_time.day);
fclose(fs);
}
void SaveAllXSPhones(int sn) //保存全部已售手机信息
{
FILE *fs;
if((fs=fopen("xsphone.txt","w"))==NULL)
{
printf("Can't open file xsphone.txt\n");
exit(1);
}
for(int i=0;i<sn;i++)
{
fprintf(fs,"%s\n%s\n%s\n%d\n%d\n",xsphone[i].ID,xsphone[i].size,xsphone[i].brand,xsphone[i].out,xsphone[i].num);
fprintf(fs,"%d.%d.%d\n",xsphone[i].out_time.year,xsphone[i].out_time.month,xsphone[i].out_time.day);
}
fclose(fs);
}
int OriginalXSPhone(void)//已售手机信息初始化
{
int sn;
char c = 'y';
printf("正在初始化已售手机信息\n");
FILE *fs;
fs=fopen("xsphone.txt","w");
for (sn = 0; c == 'y' || c == 'Y';sn++)
{
printf("\n输入已售手机%d的信息:\n", sn + 1);
InputOneXSPhone(sn);
SaveOneXSPhone(sn);
printf("\n继续输入请按'y',停止输入请按'n':");
c = getchar(); getchar();
}
SaveAllXSPhones(sn);
printf("sn=%d\n",sn);
printf("\n 按任意键继续!\n"); getch();
fclose(fs);
return (sn);
}
void OutputOneXSPhone(int i) //输出一个已售手机信息的函数
{
printf("\n");
printf(" 编号:"); puts(xsphone[i].ID);
printf(" 型号:"); puts(xsphone[i].size);
printf(" 品牌:"); puts(xsphone[i].brand);
printf(" 售价:"); printf("%d\n",xsphone[i].out);
printf(" 数量:"); printf("%d\n",xsphone[i].num);
printf(" 销售日期:"); printf("%d.%d.%d\n",xsphone[i].out_time.year,xsphone[i].out_time.month,xsphone[i].out_time.day);
}
void OutputAllXSPhones(int sn) //输出全部已售手机信息的函数
{
int i;
if(sn==0)
{
printf("\n 已售手机信息为空,无法执行操作!\n");
return ;
}
printf("\n 全部已售手机的详细信息:\n");
for(i=0; i<sn; i++)
{
OutputOneXSPhone(i);
}
printf("\n 全部手机信息输出完毕。\n");
printf("\n 按任意键返回!\n"); getch();
return ;
}
int AddXSPhone(int sn)//增加手机信息
{
char c = 'y';
int i;
FILE *fs;
printf("已售手机总量为:%d\n",sn);
if((fs=fopen("xsphone.txt","a"))==NULL)
{
printf("can't open file xsphone.txt\n");
exit(1);
}
printf("增加手机信息:");
for (i = 0; c == 'y' || c == 'Y'; i++)
{
printf("\n输入已售手机%d的信息:\n", sn + 1);
InputOneXSPhone(sn);
SaveOneXSPhone(sn);
sn++;
printf("\n继续输入请按'y',停止输入请按'n':");
c = getchar(); getchar();
}
SaveAllXSPhones(sn);
printf("\n 按任意键继续!\n"); getch();
fclose(fs);
return(sn);
}
int DelXSPhone(int sn)
{
int i, k=-1;
char id[2000], c1='y', c2;
if(sn==0)
{
printf("\n 已售手机信息为空,无法执行操作!\n");
return sn;
}
while(c1=='y'||c1=='Y')
{
c2='n';
printf("\n 请输入要删除的已售手机的编号:");
gets(id);
for(i=0; i<sn; i++)
if(strcmp(xsphone[i].ID, id)==0)
{
k=i;
break;
}
if(k<0)
printf("\n 输入的编号有误,请重新输入!\n");
else
{
printf("\n 显示该已售手机的信息:\n"); OutputOneXSPhone(k);
printf("\n 确定要删除该手机的全部信息吗?(y/n):");
c2=getchar(); getchar();
if(c2=='y')
{
for(i=k; i<sn; i++)
xsphone[i]=xsphone[i+1];
sn--;
printf("\n 成功删除!\n");
}
else
printf("\n 取消删除!\n");
}//end else
printf("\n 还需要删除其它已售手机的信息吗?(y/n):");
c1=getchar(); getchar();
} //end while
SaveAllXSPhones(sn);
printf("\n 按任意键继续!\n"); getch();
return(sn);
}
void SearchMenu(int sn) //手机查询函数
{
int select;
while(1)
{
printf("\n 欢迎使用已售手机信息查询服务\n");
printf("-----------------------------------------------------------\n");
printf(" 1. 按编号查询\n");
printf(" 2. 按品牌查询\n");
printf(" 3. 按销售日期查询\n") ;
printf(" 0. 退出查询服务\n") ;
printf("-----------------------------------------------------------\n");
printf("\n 请选择查询方式(0-3):");
scanf("%d", &select); getchar();
switch(select)
{
case 1: SearchID (sn); break;
case 2: SearchBrand(sn); break;
case 3: SearchOutTime(sn); break;
case 0: return ;
default: printf("\n 按键错误,请重新选择!\n");
}
}
}
void SearchID (int sn) //按编号查询函数
{
int i, k; char id[2000], c1='y', c2;
if(sn==0)
{
printf("\n 已售手机信息为空,无法执行操作!\n");
return ;
}
while(c1=='y'||c1=='Y')
{
k=-1;
c2='n';
printf("\n 请输入要查询的手机的编号:");
gets(id);
for(i=0; i<sn; i++)
if(strcmp(xsphone[i].ID, id)==0)
{
k=i;
break;
}
if(k<0)
printf("\n 输入的编号有误,请重新输入!\n");
else
{
printf("\n 显示该手机的信息:\n"); OutputOneXSPhone(k);
}//end else
printf("\n 继续查询其它编号的手机信息吗?(y/n):");
c1=getchar(); getchar();
} //end while
printf("\n 按任意键继续!\n"); getch();
}
void SearchBrand(int sn) //按品牌查询函数
{
int i,j, k=-1,a[XSPHONENUM]; char b[2000], c1='y', c2;
if(sn==0)
{
printf("\n 已售手机信息为空,无法执行操作!\n");
return ;
}
while(c1=='y'||c1=='Y')
{
j=0;
c2='n';
printf("\n 请输入要查询的手机的品牌:");
gets(b);
for(i=0; i<sn; i++)
if(strcmp(xsphone[i].brand,b)==0)
{
k=1;
a[j]=i;
j++;
}
if(k<0)
printf("\n 输入的品牌有误,请重新输入!\n");
else
{
k=j;
printf("\n 显示该品牌的手机信息:\n");
for(j=0;j<k;j++)
OutputOneXSPhone(a[j]);
printf("\n 继续查询其它品牌的手机信息吗?(y/n):");
c1=getchar(); getchar();
}//end else
} //end while
printf("\n 按任意键继续!\n"); getch();
}
void SearchOutTime(int sn) //按销售日期查询函数
{
int i, k, year, month; char c='y';
while(c=='y'||c=='Y')
{
k=-1;
month=0;
printf("\n 请输入销售日期(年.月):");
scanf("%d.%d", &year, &month); getchar();
for(i=0; i<sn; i++)
{
if(xsphone[i].out_time.year==year)
{
k=i;
if(month!=0)
if(xsphone[i].out_time.month!=month)
continue;
OutputOneXSPhone(k);
}
}
if(k== -1)
printf("\n 抱歉!没有相应的手机信息!\n");
printf("\n 继续查询其他手机的信息吗?(y/n):");
c=getchar(); getchar();
}
printf("\n 按任意键继续!\n"); getch();
}
void statistics(int sn)//统计手机信息
{
int select;
while(1)
{
printf("\n 欢迎使用手机信息统计服务\n");
printf("-----------------------------------------------------------\n");
printf(" 1. 按品牌统计\n");
printf(" 2. 按销售日期统计\n") ;
printf(" 0. 退出统计服务\n") ;
printf("-----------------------------------------------------------\n");
printf("\n 请选择统计方式(0-2):");
scanf("%d", &select); getchar();
switch(select)
{
case 1: sta_brand(sn); break;
case 2: sta_date(sn); break;
case 0: return ;
default: printf("\n 按键错误,请重新选择!\n");
}
}
}
void sta_brand(int sn)//按品牌统计
{
int i, k,xsnum,xsprice;
char b[2000], a[2000],c1='y', c2;
if(sn==0)
{
printf("\n 已售手机信息为空,无法执行操作!\n");
return ;
}
while(c1=='y'||c1=='Y')
{
k=-1;
xsprice=0;
xsnum=0;
c2='n';
printf("\n 请输入要统计的手机品牌:");
gets(b);
for(i=0; i<sn; i++)
if(strcmp(xsphone[i].brand,b)==0)
{
k=1;
xsprice+=xsphone[i].out;
xsnum+=xsphone[i].num;
}
if(k<0)
printf("\n 输入的品牌有误,请重新输入!\n");
else
{
printf("该品牌的总销售量为:%d\n",xsnum);
printf("该品牌的总销售金额为:%d\n",xsprice);
}//end else
printf("\n 继续统计其它品牌的手机信息吗?(y/n):");
c1=getchar(); getchar();
} //end while
printf("\n 按任意键继续!\n"); getch();
}
void sta_date(int sn)//按销售日期统计
{
int i, j, k,l=0, year, month,totalnum,totalprice,a[1000];
char c='y';
SXSPHONE temp2={0};
while(c=='y'||c=='Y')
{
k=-1;
totalnum=0;
totalprice=0;
month=0;
printf("\n 请输入时间(年.月):");
scanf("%d.%d", &year, &month); getchar();
for(i=0,j=1; i<sn; i++)
{
if(xsphone[i].out_time.year==year)
{
k=i;
if(month!=0)
if(xsphone[i].out_time.month!=month)
continue;
else
{
totalnum+=xsphone[i].num;
totalprice+=xsphone[i].out;
a[l]=i;
l++;
}
j++;
}
}
if(k== -1|| j==1)
printf("\n 抱歉!没有相应的手机信息!\n");
else
{
int y=l;
printf("\n 该月总销售量为:%d\n",totalnum);
printf(" 该月总销售金额为:%d\n",totalprice);
printf("\n 本月销售量排行榜(前10):");
for (k = 0; k<=y; k++)
{
for(l=0; l<=y-k ;l++)
if (xsphone[a[l]].num < xsphone[a[l+1]].num)
{
temp2 = xsphone[a[l]];
xsphone[a[l]] = xsphone[a[l+1]];
xsphone[a[l+1]] = temp2;
}
}
for(l=0;l<10;l++)
OutputOneXSPhone(a[l]);
}
printf("\n 继续查询其他月份的手机信息吗?(y/n):");
c=getchar(); getchar();
}
printf("\n 按任意键继续!\n"); getch();
}
本人是一名小白,如果有更好的建议或意见,欢迎提出。文章来源地址https://www.toymoban.com/news/detail-608514.html
到了这里,关于手机销售管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!