手机销售管理系统

本文介绍了一个手机销售管理系统的实现,系统分为手机基本信息和已售手机信息两部分,包含创建、增加、删除、修改、查询和统计等功能。使用结构体数组存储数据,支持按编号、品牌和日期查询,以及按品牌统计销售量和金额。代码中运用了stdio.h、stdlib.h、string.h和conio.h等头文件,并实现了文件操作来保存和加载数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

手机基本信息包括:手机编号(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()函数等等。

在本次编写中,我运用的主要是结构体数组,没有用指针,因此,代码的长度可能比较长。

#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();
}

本人是一名小白,如果有更好的建议或意见,欢迎提出。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值