本文实例为大家分享了C语言实现电器销售管理系统的具体代码,供大家参考,具体内容如下
系统功能设计管理信息系统具有多种功能,各种功能之间又有多种联系,构成了一个有机结合的整体。信息处理功能主要涉及数据的采集、输入、加工处理、传输、存储和输出等功能。根据对电器销售管理系统的分析,系统的主要功能包括:电器销售信息的添加、删除、修改、查询、排序以及信息的保存及读取。
用户登录
用户登录系统必须具有访问权限,本系统的登录模块主要通过调用函数“login()”实现,用户最多可以输入3次密码。其主要代码为:
for(count=1;count<=3;count++) //给用户三次机会
{
printf("\n");
printf("********请输入用户名:");
gets(username);
printf("********请输入密码:");
gets(userpwd);
//如果用户名和密码正确,则登录成功,返回1
if(strcmp(name,username)==0&&strcmp(pwd,userpwd)==0)
return 1;
else//如果输入错误则显示错误提示信息
if (count<3) //如果不是第3次,则输出此错误信息,
printf("******用户名或密码输入错误,请重新输入!!!*******\n");
}
增加分店信息
通过调用函数“adddianqixs()”实现电器销售信息的添加功能,部分代码如下:
void adddianqixs()
{
char temp[30];
printf("请输入分店:\n");
gets_s(dianqixs[NOWNUM].store,29);
printf("请输入产品名称:\n");
gets_s(dianqixs[NOWNUM].cpmc,29);
printf("请输入产品单价:\n");
scanf_s("%d",&dianqixs[NOWNUM].price);
printf("请输入1月销量:\n");
scanf("%d",&dianqixs[NOWNUM].yyxl);
printf("请输入2月销量:\n");
scanf("%d",&dianqixs[NOWNUM].eyxl);
printf("请输入3月销量:\n");
scanf("%d",&dianqixs[NOWNUM].syxl);
printf("请输入季度总销量:\n");
scanf("%d",&dianqixs[NOWNUM].jdzx);
printf("请输入季度平均销量:\n");
scanf("%d",&dianqixs[NOWNUM].jdpx);
printf("请输入季度总销售额:\n");
scanf("%d",&dianqixs[NOWNUM].jdze);
NOWNUM++; //店家数量加一
printf("销售信息添加完毕,请按任意键继续\n");
getchar();
}
修改分店信息
通过调用函数“resive()”实现电器销售信息的修改功能。部分代码如下:
void resive()
{
char shop[20];
int i;
printf(" 请输入你要修改的分店 \n\n");
scanf("%s",shop);
for(i = 0 ;i < NOWNUM; i++)
{
if(strcmp(shop,dianqixs[i].store) == 0)
break;
}
if(i<NOWNUM)
{
printf("成功找到这家店!\n\n");
printf("请输入要修改的信息:\n\n");
printf("1.店名\n\n");
printf("2.商品名称\n\n");
printf("3.商品单价\n\n");
printf("4.一月销量\n\n");
printf("5.二月销量\n\n");
printf("6.三月销量\n\n");
printf("7.季度总销量\n\n");
printf("8.季度平均销量\n\n");
printf("9.季度总销售额\n\n");
int order;
scanf("%d",&order);
switch(order)
{
case 1:
scanf("%s",dianqixs[i].store);
break;
case 2:
scanf("%s",dianqixs[i].cpmc);
break;
case 3:
scanf("%d",&dianqixs[i].price);
break;
case 4:
scanf("%d",&dianqixs[i].yyxl);
break;
case 5:
scanf("%d",&dianqixs[i].eyxl);
break;
case 6:
scanf("%d",&dianqixs[i].syxl);
break;
case 7:
scanf("%d",&dianqixs[i].jdzx);
break;
case 8:
scanf("%d",&dianqixs[i].jdpx);
break;
case 9:
scanf("%d",&dianqixs[i].jdze);
break;
}
printf("修改成功\n\n");
}
}
删除分店信息
通过调用函数“deldianqixs()”实现电器销售信息的删除功能。部分代码如下:
void deldianqixs() //删除指定记录
{
char delno[40]; //存放要删除分店销售电器
char ok[55]; //确定是否要真的删除
int i,j;
printf("请输入要删除分店销售电器:");
gets(delno);//根据店名查找记录位置
for(i=0;i < NOWNUM;i++)
if (strcmp(delno,dianqixs[i].store)==0)
break;
if (i < NOWNUM) //找到了该记录
{
//找到后先输出原信息,然后确认是否删除
printall(); //先显示原信息
printf("\n\n%-9s%-15s%-15d%-18d%-15d%-15d%-15d%-18d%-18d\n",dianqixs[i].store,dianqixs[i].cpmc,dianqixs[i].price,dianqixs[i].yyxl,
dianqixs[i].eyxl,dianqixs[i].syxl,dianqixs[i].jdzx,dianqixs[i].jdpx,dianqixs[i].jdze);
printf("确实要删除这条记录吗?(y/n)\n");
gets(ok);
if(ok[0]=='y'||ok[0]=='Y') //确定要删除
{
NOWNUM--; //学生数减1
for(j=i;j<NOWNUM;j++) //将后面的记录前移
dianqixs[j]=dianqixs[j+1];
printf("\n删除成功!\n");
}
}
else
printf("\n没有该店名\n");
printf("请按任意键继续\n");
getchar();
}
按照季度总销量进行排序
通过调用函数“sort()”实现按照季度总销量对电器销售情况进行排序。部分代码如下:
void sort()
{
printf("开始排序\n\n");
int i,j;
struct dqxs t;
for(i=0;i<NOWNUM-1;i++)
{
for(j=i+1;j<NOWNUM;j++)
{
if(dianqixs[i].jdzx<dianqixs[j].jdzx)
{
t=dianqixs[i];
dianqixs[i]=dianqixs[j];
dianqixs[j]=t;
}
}
}
printf("排序成功!\n\n");
}
刷新分店销售信息
通过调用函数“read_data()”实现刷新分店的销售信息。部分代码如下:
void read_data()
{
FILE *fp;
int i,sign;
fp = fopen("data.data","rb");
rewind(fp);
if(fp == NULL)
{
printf("\n\n\t\t打开文件失败!\n");
exit(0);
}
for(i=0;i<N;i++)
{
sign = fread(&dianqixs[i],sizeof(struct dqxs),1,fp);
if(sign <= 0)
break;
}
printf("\n\n\t\t读取到%d个分店信息!\n\n",i);
Sleep(1000);
system("cls");
NOWNUM = i;
fclose(fp);
printf("\n\n\t\t读取成功!\n\n");
Sleep(1000);
system("cls");
}
将分店销售信息保存到文件
通过调用函数“save_data()”实现将分店信息保存到文件。部分代码如下:
void save_data()
{
FILE *fp;
fp = fopen("data.data","wb");
if(fp == NULL)
{
printf("打开文件失败!\n");
exit(0);
}
fwrite(dianqixs,sizeof(struct dqxs),NOWNUM,fp);
fclose(fp);
printf("保存成功!\n");
}
总代码如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#pragma pack(1)
#define N 100
struct dqxs
{
char store[20]; //分店
char cpmc[30]; //产品名称
int price; //产品单价
int yyxl; //1月销量
int eyxl; //2月销量
int syxl; //3月销量
int jdzx; //季度总销量
int jdpx; //季度平均销量
int jdze; //季度总销量额
}dianqixs[N];
int NOWNUM = 0;
void printall()
{
int i;
printf("%-9s%-15s%-15s%-18s%-15s%-15s%-15s%-18s%-18s\n","店名","产品名","单价","一月销量","二月销量","三月销量","季度总销量","季度平均销量","季度总销售额");
for (i=0;i<NOWNUM;i++)
printf("%-9s%-15s%-15d%-18d%-15d%-15d%-15d%-18d%-18d\n",dianqixs[i].store,dianqixs[i].cpmc,dianqixs[i].price,dianqixs[i].yyxl,
dianqixs[i].eyxl,dianqixs[i].syxl,dianqixs[i].jdzx,dianqixs[i].jdpx,dianqixs[i].jdze);
}
//输出所有店家的信息
void adddianqixs()
{
char temp[30];
printf("请输入分店:\n");
gets_s(dianqixs[NOWNUM].store,29);
printf("请输入产品名称:\n");
gets_s(dianqixs[NOWNUM].cpmc,29);
printf("请输入产品单价:\n");
scanf_s("%d",&dianqixs[NOWNUM].price);
printf("请输入1月销量:\n");
scanf("%d",&dianqixs[NOWNUM].yyxl);
printf("请输入2月销量:\n");
scanf("%d",&dianqixs[NOWNUM].eyxl);
printf("请输入3月销量:\n");
scanf("%d",&dianqixs[NOWNUM].syxl);
printf("请输入季度总销量:\n");
scanf("%d",&dianqixs[NOWNUM].jdzx);
printf("请输入季度平均销量:\n");
scanf("%d",&dianqixs[NOWNUM].jdpx);
printf("请输入季度总销售额:\n");
scanf("%d",&dianqixs[NOWNUM].jdze);
NOWNUM++; //店家数量加一
printf("销售信息添加完毕,请按任意键继续\n");
getchar();
}
void deldianqixs() //删除指定记录
{
char delno[40]; //存放要删除分店销售电器
char ok[55]; //确定是否要真的删除
int i,j;
printf("请输入要删除分店销售电器:");
gets(delno);//根据店名查找记录位置
for(i=0;i < NOWNUM;i++)
if (strcmp(delno,dianqixs[i].store)==0)
break;
if (i < NOWNUM) //找到了该记录
{
//找到后先输出原信息,然后确认是否删除
printall(); //先显示原信息
printf("\n\n%-9s%-15s%-15d%-18d%-15d%-15d%-15d%-18d%-18d\n",dianqixs[i].store,dianqixs[i].cpmc,dianqixs[i].price,dianqixs[i].yyxl,
dianqixs[i].eyxl,dianqixs[i].syxl,dianqixs[i].jdzx,dianqixs[i].jdpx,dianqixs[i].jdze);
printf("确实要删除这条记录吗?(y/n)\n");
gets(ok);
if(ok[0]=='y'||ok[0]=='Y') //确定要删除
{
NOWNUM--; //减1··
for(j=i;j<NOWNUM;j++) //将后面的记录前移
dianqixs[j]=dianqixs[j+1];
printf("\n删除成功!\n");
}
}
else
printf("\n没有该店名\n");
printf("请按任意键继续\n");
getchar();
}
void resive()
{
char shop[20];
int i;
printf(" 请输入你要修改的分店 \n\n");
scanf("%s",shop);
for(i = 0 ;i < NOWNUM; i++)
{
if(strcmp(shop,dianqixs[i].store) == 0)
break;
}
if(i<NOWNUM)
{
printf("成功找到这家店!\n\n");
printf("请输入要修改的信息:\n\n");
printf("1.店名\n\n");
printf("2.商品名称\n\n");
printf("3.商品单价\n\n");
printf("4.一月销量\n\n");
printf("5.二月销量\n\n");
printf("6.三月销量\n\n");
printf("7.季度总销量\n\n");
printf("8.季度平均销量\n\n");
printf("9.季度总销售额\n\n");
int order;
scanf("%d",&order);
switch(order)
{
case 1:
scanf("%s",dianqixs[i].store);
break;
case 2:
scanf("%s",dianqixs[i].cpmc);
break;
case 3:
scanf("%d",&dianqixs[i].price);
break;
case 4:
scanf("%d",&dianqixs[i].yyxl);
break;
case 5:
scanf("%d",&dianqixs[i].eyxl);
break;
case 6:
scanf("%d",&dianqixs[i].syxl);
break;
case 7:
scanf("%d",&dianqixs[i].jdzx);
break;
case 8:
scanf("%d",&dianqixs[i].jdpx);
break;
case 9:
scanf("%d",&dianqixs[i].jdze);
break;
}
printf("修改成功\n\n");
}
}
int login()
{
char name[]="a",pwd[]="a";//正确的用户名和密码
char username[10],userpwd[10]; //输入的用户名和密码
int count; //输入用户名和密码的次数
for(count=1;count<=3;count++) //给予三次机会
{
printf("\n");
printf("********请输入用户名:");
gets(username);
printf("********请输入密码:");
gets(userpwd);
//如果用户名和密码正确,则登录成功,返回 1
if(strcmp(name,username)==0&&strcmp(pwd,userpwd)==0)
return 1;
else//如果输入错误则显示错误提示信息
if (count<3) //如果不是第 3 次,则输出此错误信息,
printf("******分店名或密码输入错误,请重新输入!!!*******\n");
}
printf("*******分店名和密码错误已经超过 3 次,系统自动退出!!!******\n");
return 0; //退出循环时则说明已经超过 3 次,登录失败
}
/***********************************
* 输出主控菜单选项 *
************************************/
void check_shop()
{
char shop[20];
int i;
printf(" 请输入你要查询的分店 \n\n");
scanf("%s",shop);
for(i = 0 ;i < NOWNUM; i++)
{
if(strcmp(shop,dianqixs[i].store) == 0)
break;
}
if(i < NOWNUM)
{ getchar();
printf("找到 %s\n\n",dianqixs[i].store);
printf("一月销售额:%d \n\n",dianqixs[i].yyxl);
printf("二月销售额:%d \n\n",dianqixs[i].eyxl);
printf("三月销售额:%d \n\n",dianqixs[i].syxl);
}
else
{
printf("找不到这家分店!\n\n");
}
}
void sort()
{
printf("开始排序\n\n");
int i,j;
struct dqxs t;
for(i=0;i<NOWNUM-1;i++)
{
for(j=i+1;j<NOWNUM;j++)
{
if(dianqixs[i].jdzx<dianqixs[j].jdzx)
{
t=dianqixs[i];
dianqixs[i]=dianqixs[j];
dianqixs[j]=t;
}
}
}
printf("排序成功!\n\n");
}
void save_data()
{
FILE *fp;
fp = fopen("data.data","wb");
if(fp == NULL)
{
printf("打开文件失败!\n");
exit(0);
}
fwrite(dianqixs,sizeof(struct dqxs),NOWNUM,fp);
fclose(fp);
printf("保存成功!\n");
}
void read_data()
{
FILE *fp;//声明,声明fp是指针,用来指向FILE类型的对象。
int i,sign;
fp = fopen("data.data","rb");
rewind(fp);
if(fp == NULL)
{
printf("\n\n\t\t打开文件失败!\n");
exit(0);
}
for(i=0;i<N;i++)
{
sign = fread(&dianqixs[i],sizeof(struct dqxs),1,fp);
if(sign <= 0)
break;
}
printf("\n\n\t\t读取到%d个分店信息!\n\n",i);
Sleep(1000);
system("cls");//执行命令”清屏“
NOWNUM = i;
fclose(fp);//关闭fp指向的文件句柄,防止句柄泄露
printf("\n\n\t\t读取成功!\n\n");
Sleep(1000);
system("cls");
}
void menushow()
{
int userselection;
char selectstr[10];
printf("\n");
printf("\t*****************************\n");
printf("\t* 欢迎使用 *\n");
printf("\t* 电器销售系统 *\n");
printf("\t*****************************\n");
printf("\n");
printf("\t* 1:增加分店销售信息 *\n");
printf("\t* 2:修改分店销售信息 *\n");
printf("\t* 3:显示分店销售信息 *\n");
printf("\t* 4:查询分店销售信息 *\n");
printf("\t* 5:删除分店销售信息 *\n");
printf("\t* 6:按季度总销量排序 *\n");
printf("\t* 7:刷新分店销售信息 *\n");
printf("\t* 8:将分店销售信息保存到文件*\n");
printf("\t* 9:退出系统 *\n");
printf("\t*****************************\n\n");
printf("请输入您的选择(1-9):");
/*scanf("%d",&userselection);*/
gets(selectstr);
userselection=(int)atoi(selectstr);
switch(userselection)
{
case 1:
adddianqixs();
printf("请输入任意键退出...\n");
getchar();
break;
case 2:
resive();
printf("请输入任意键退出...\n");
getchar();
break;
case 3:
printall();
printf("请输入任意键退出...\n");
getchar();
break;
case 4:
check_shop();
printf("请输入任意键退出...\n");
getchar();
break;
case 5:
deldianqixs();
printf("请输入任意键退出...\n");
getchar();
break;
case 6:
sort();
getchar();
printf("请输入任意键退出...\n");
break;
case 7:
read_data();
printf("请输入任意键退出...\n");
getchar();
break;
case 8:
save_data();
printf("请输入任意键退出...\n");
getchar();
break;
case 9:
exit(0);
break;
default:
printf("%c,请输入 1-9 之间的数字\n",userselection);
printf("请输入任意键退出...\n");
getchar();
}
}
/***********************************
* 主函数,应用程序的入口 *
************************************/
void main()
{
printf("\n\n\t\t正在读文件...\n\n");
Sleep(1000);
system("cls");
read_data();
int i;
if (login()==1) //如果登录成功
while(1)
{
system("cls");
menushow(); //死循环,使系统始终显示主控菜单选项
}
}