清华的c语言大作业,拿来练练手。要求甚多,由于是第一次写项目没有经验,功能是按要求完成了,但是还存在种种缺陷,包括一个糟烂无比的数据库。这次当作教训,希望在接下来本校的大作业中表现的更好。
三、题目内容
1:编写一个简单的销售管理系统。该系统对五种商品的销售进行管理,商品至少有五个属性(可自定义)如商品名称、价格等,属性数据中应至少包含整型、字符型和双精度的数据类型,该销售管理系统有管理员(1名)、店长(每店一名,至少有2个连锁店)和销售员(每店至少3名销售人员)三个用户角色,其中:
(1) 总经理授权的管理员所具备的功能:
l 总经理账户及管理员账户的创建、密码修改;
l 管理员可添加、删除、修改、查询店长的信息;
l 库房的进货、退货(过期产品要退货)、货物错误信息的修订、库存查询(只有一个总库,每个店的销售,都从总库出货);
l 销售业绩查询与统计,销售业绩指每店每个商品的销售总金额,统计功能希望能生成销售商品的日报表以及各店的业绩报表;
l 退出登陆系统。
(2)店长功能:
l 店长登录密码修改,可添加、删除本店销售员的信息(具体信息自定)
l 商品销售信息管理:能实现销售及退货(客户不满意要求退货)的库存量查询;
l 对本店的商品销售数量用链表进行排序(可以使用任意的排序算法);
l 查询本店的当天的销售报表及每个销售员的销售业绩报表;
l 退出登陆系统。
(3)销售员功能:
l 销售员可登录、修改密码、昵称;
l 个人销售业绩查询;
l 商品库存查询,当发现商品的库存量不足3件的时候,系统能自动给销售员进行库存紧张的提示;
退出登陆系统。
暂时不粘代码,因为是替别人写的,怕清华老师查代码。
总结:
1.工程架构方面没有太大的问题,就是很普通的分级菜单的模式。
2.数据库问题很大。
使用了多个数据库,但多个数据库的联合没有做(不是没有做好),没有做的原因是没办法做,数据库杂而乱,而功能已经成型,无法做大幅度修改。写到后期再扩充数据库为时已晚。
以后再建库的时候应在动手前做好需求分析,搞清楚数据库的内容,不要遗漏任何细节,并使其可以在各功能间协同。
3.界面设计等友好性方面由于时间仓促而没有做好补充。
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct user_list{
int no;//序号
char username[20];//用户名
char userpassword[20];//用户密码
int clas;//用户等级
char truename[20];//用户真实姓名
char sex;//用户性别
int age;//用户年龄
}userlist[20];
struct time{
int year;
int month;
int day;
};
struct message_{
int store;//属于哪个店
int sellprice;//出售价格
int num;//出售数量
struct time selltime;//出售时间
};
struct goods_{
int no;//序号
char name[20];//货名
struct time in;//进货时间
struct time waste;//过期时间
int num;//数量
struct message_ mess[10];//相关信息
}goods[10];
struct goods_l{//为体现链表排序,单另创建的货物链表
char name[20];//货名
struct message_ mess;//相关信息
struct goods_l *next;//链
};
struct staff_me{//员工业绩表
char name[20];//货物名
int num;//数量
int price;//售价
struct time selltime;//出售时间
};
struct staff_{
int store;//从属商店
char name[20];//姓名
struct staff_me mess[20];//员工业绩
}staff[50];
void test(){
printf("初始化数据库中........\n");
printf("初始账号:\n");
printf("管理员账号用户名:root\n密码:root\n");
printf("店长账号用户名:manager\n密码:manager\n");
printf("销售员账号用户名:salesman\n密码:salesman\n");
memset(userlist,0,sizeof(userlist));
staff[0].store=1;
strcpy(staff[1].name,"233333");
staff[1].store=1;
staff[1].mess[0].num=2;
strcpy(staff[1].mess[1].name,"Apple");
staff[1].mess[1].num=90;
staff[1].mess[1].price=2;
staff[1].mess[1].selltime.day=4;
staff[1].mess[1].selltime.month=5;
staff[1].mess[1].selltime.year=2016;
strcpy(staff[1].mess[2].name,"Banana");
staff[1].mess[2].num=85;
staff[1].mess[2].price=2;
staff[1].mess[2].selltime.day=4;
staff[1].mess[2].selltime.month=6;
staff[1].mess[2].selltime.year=2016;
userlist[0].no=3;
userlist[1].no=1;
userlist[1].clas=1;
userlist[1].age=50;
userlist[1].sex='F';
strcpy(userlist[1].truename,"Zhang_XX");
strcpy(userlist[1].username,"root");
strcpy(userlist[1].userpassword,"root");
userlist[2].no=2;
userlist[2].clas=2;
userlist[2].age=40;
userlist[2].sex='M';
strcpy(userlist[2].truename,"Wang_XX");
strcpy(userlist[2].username,"manager");
strcpy(userlist[2].userpassword,"manager");
userlist[3].no=2;
userlist[3].clas=3;
userlist[3].age=20;
userlist[3].sex='M';
strcpy(userlist[3].truename,"Zhao_XX");
strcpy(userlist[3].username,"salesman");
strcpy(userlist[3].userpassword,"salesman");
goods[1].no=1;goods[2].no=2;goods[3].no=3;goods[4].no=4;goods[5].no=5;
strcpy(goods[1].name,"Apple");
strcpy(goods[2].name,"Banana");
strcpy(goods[3].name,"Pear");
strcpy(goods[4].name,"Watermelon");
strcpy(goods[5].name,"peach");
goods[0].no=5;
goods[1].in.year=2016;goods[1].in.month=2;goods[1].in.day=23;
goods[2].in.year=2016;goods[2].in.month=3;goods[2].in.day=14;
goods[3].in.year=2016;goods[3].in.month=4;goods[3].in.day=3;
goods[4].in.year=2016;goods[4].in.month=5;goods[4].in.day=11;
goods[5].in.year=2016;goods[5].in.month=5;goods[5].in.day=21;
goods[1].waste.year=2016;goods[1].waste.month=4;goods[1].waste.day=23;
goods[2].waste.year=2016;goods[2].waste.month=5;goods[2].waste.day=14;
goods[3].waste.year=2016;goods[3].waste.month=6;goods[3].waste.day=3;
goods[4].waste.year=2016;goods[4].waste.month=7;goods[4].waste.day=11;
goods[5].waste.year=2016;goods[5].waste.month=7;goods[5].waste.day=21;
goods[1].num=65;goods[2].num=59;goods[3].num=78;goods[4].num=2;goods[5].num=1;
goods[1].mess[0].num=1;
goods[1].mess[1].store=1;
goods[1].mess[1].sellprice=2;
goods[1].mess[1].num=56;
goods[1].mess[1].selltime.year=2016;
goods[1].mess[1].selltime.month=3;
goods[1].mess[1].selltime.day=2;
goods[2].mess[0].num=0;
goods[3].mess[0].num=2;
goods[3].mess[1].store=1;
goods[3].mess[1].sellprice=2;
goods[3].mess[1].num=290;
goods[3].mess[1].selltime.year=2016;
goods[3].mess[1].selltime.month=5;
goods[3].mess[1].selltime.day=1;
goods[3].mess[2].selltime.year=2016;
goods[3].mess[2].selltime.month=5;
goods[3].mess[2].selltime.day=7;
goods[3].mess[2].store=5;
goods[3].mess[2].sellprice=3;
goods[3].mess[2].num=23;
goods[4].mess[0].num=0;
goods[5].mess[0].num=0;
}
void sort_(){
int i,j;
for(i=1;i<=userlist[0].no;i++)
{
for(j=1;j<=userlist[0].no;j++)
{
if(userlist[i].clas>userlist[j].clas)
{
int temp1=userlist[i].no;
userlist[i].no=userlist[j].no;
userlist[j].no=temp1;
char temp2[20];
strcpy(temp2,userlist[i].username);
strcpy(userlist[i].username,userlist[j].username);
strcpy(userlist[j].username,temp2);
strcpy(temp2,userlist[i].userpassword);
strcpy(userlist[i].userpassword,userlist[j].userpassword);
strcpy(userlist[j].userpassword,temp2);
temp1=userlist[i].clas;
userlist[i].clas=userlist[j].clas;
userlist[j].clas=temp1;
strcpy(temp2,userlist[i].truename);
strcpy(userlist[i].truename,userlist[j].truename);
strcpy(userlist[j].truename,temp2);
char temp3=userlist[i].sex;
userlist[i].sex=userlist[j].sex;
userlist[j].sex=temp3;
temp1=userlist[i].age;
userlist[i].age=userlist[j].age;
userlist[j].age=temp1;
}
}
}
}
struct goods_l* sortl_(struct goods_l *head){
struct goods_l *p=head;
while(1)
{
if(p->mess.num<p->next->mess.num)
{
if(p==head)
head=p->next;
struct goods_l *a=p;
struct goods_l *b=p->next;
a->next=b->next;
b->next=a;
}
if(p->next==NULL) break;
p=p->next;
if(p->next==NULL)
break;
}
return head;
}
void salesman(int log_result){
while(1)
{
printf("1.账户管理\n");
printf("2.业绩管理\n");
printf("3.库存提醒\n");
printf("4.退出系统\n");
printf("请输入操作的相应序号以继续............\n");
int x;
scanf("%d",&x);getchar();
if(x==1)
{
printf("1.修改密码\n");
printf("2.修改姓名\n");
printf("3.返回菜单\n");
printf("请输入操作的相应序号以继续............\n");
int y;
scanf("%d",&y);
getchar();
if(y==1)
{
printf("请输入旧密码:(小于20个字符)\n");
char oldpassword[20];
if(strcmp(gets(oldpassword),userlist[log_result].userpassword)==0)
{
printf("请输入新密码:(小于20个字符)\n");
char newpassword[20];
gets(newpassword);
strcpy(userlist[log_result].userpassword,newpassword);
printf("修改成功!!!\n");
continue;
}
else
{
printf("密码错误!!!系统关闭!!!\n");
return;
}
}
else if(y==2)
{
printf("请输入新名字:(小于20个字符)\n");
char newname[20];
gets(newname);
strcpy(userlist[log_result].username,newname);
printf("修改成功!!!\n");
continue;
}
else if(y==3)
{
continue;
}
else
{
printf("非法操作,返回菜单!!!\n");
continue;
}
}
else if(x==2)
{
int i,j;
for(i=1;i<=staff[0].store;i++)
{
for(j=1;j<=staff[i].mess[0].num;i++)
{
printf("货名 数量 单价 日期\n");
for(j=1;j<=staff[i].mess[0].num;j++)
printf("\%s %d %d %d年%d月%d日\n",staff[i].mess[j].name,staff[i].mess[j].num,staff[i].mess[j].price,staff[i].mess[j].selltime.year,staff[i].mess[j].selltime.month,staff[i].mess[j].selltime.day);
}
}
}
else if(x==3)
{
int i,k=0;
printf("货物名称 剩余数量\n");
for(i=1;i<=goods[0].no;i++)
{
if(goods[i].num<=3)
{
k++;
printf("%s %d\n",goods[i].name,goods[i].num);
}
}
if(k==0)
printf("暂无缺货!!!\n");
}
else if(x==4)
{
printf("感谢您的使用!!!再见:)\n");
break;
}
else
{
printf("非法操作,返回菜单!!!\n");
continue;
}
}
}
void manager(int log_result){
while(1)
{
printf("1.账户管理\n");
printf("2.库房管理\n");
printf("3.销售管理\n");
printf("4.退出系统\n");
printf("请输入操作的相应序号以继续............\n");
int x;
scanf("%d",&x);
getchar();
if(x==1)
{
printf("1.修改密码\n");
printf("2.销售员账户\n");
printf("3.返回菜单\n");
printf("请输入操作的相应序号以继续............\n");
int y;
scanf("%d",&y);
getchar();
if(y==1)
{
printf("请输入旧密码:(小于20个字符)\n");
char oldpassword[20];
if(strcmp(gets(oldpassword),userlist[log_result].userpassword)==0)
{
printf("请输入新密码:(小于20个字符)\n");
char newpassword[20];
gets(newpassword);
strcpy(userlist[log_result].userpassword,newpassword);
printf("修改成功!!!\n");
continue;
}
else
{
printf("密码错误!!!系统关闭!!!\n");
return;
}
}
else if(y==2)
{
printf("1.创建新销售员账户\n");
printf("2.删除销售员账户\n");
printf("3.返回菜单\n");
printf("请输入操作的相应序号以继续............\n");
int z;
scanf("%d",&z);
getchar();
if(z==1)
{
printf("请输入新账户名:(小于20个字符)\n");
char newusername[20];
gets(newusername);
printf("请输入密码:(小于20个字符)\n");
char password[20];
gets(password);
printf("请重复输入一遍:\n");
char password_again[20];
gets(password_again);
if(strcmp(password,password_again)==0)
{
userlist[0].no++;
strcpy(userlist[userlist[0].no].username,newusername);
strcpy(userlist[userlist[0].no].userpassword,password);
userlist[userlist[0].no].clas=3;
sort_();
printf("创建成功!!!返回菜单\n");
}
else
{
printf("两次密码输入不同,创建失败,返回菜单\n");
continue;
}
}
else if(z==2)
{
printf("请输入要删除的销售员用户名(小于20个字符)\n");
char deleteusername[20];
gets(deleteusername);
int i,flag=0;
for(i=1;i<=userlist[0].no;i++)
{
if(strcmp(deleteusername,userlist[i].username)==0)
{
flag=1;
printf("请输入其用户密码(小于20个字符)\n");
char password[20];
gets(password);
if(strcmp(password,userlist[i].userpassword)==0)
{
printf("确定删除?(Y/N)\n");
char sure;
scanf("%c",&sure);
getchar();
if(sure=='Y')
{
userlist[i].clas=4;
sort_();
userlist[0].no--;
printf("删除成功,返回菜单!!!\n");
break;
}
else if(sure=='N')
{
printf("取消操作,返回菜单!!!\n");
break;
}
else
printf("非法操作,返回菜单!!!\n");
break;
}
else
{
printf("密码错误,返回菜单!!!\n");
break;
}
}
}
if(flag==0)
printf("未找到此销售员,请检查输入,返回菜单!!!\n");
}
else if(z==3)
{
continue;
}
else
{
printf("非法操作,返回菜单!!!\n");
continue;
}
}
else if(y==3)
{
continue;
}
else
{
printf("非法操作,返回菜单!!!\n");
continue;
}
}
else if(x==2)
{
printf("--------------------库存详单-------------------\n");
printf("序号 名称 进货日期 过期时间 库存量\n");
int i;
for(i=1;i<=5;i++)
printf("%d %s %d年 %d月 %d日 %d年 %d月 %d日 %d\n",goods[i].no,goods[i].name,goods[i].in.year,goods[i].in.month,goods[i].in.day,goods[i].waste.year,goods[i].waste.month,goods[i].waste.day,goods[i].num);
printf("输入任意数字以返回菜单............\n");
scanf("%d",&i);
getchar();
}
else if(x==3)
{
printf("1.查询销售记录\n");
printf("2.查询销售员业绩报表\n");
printf("3.返回菜单\n");
printf("请输入操作的相应序号以继续............\n");
int y;
scanf("%d",&y);
getchar();
if(y==1)
{
printf("请输入您的店号:\n");
int z;
scanf("%d",&z);
getchar();
printf("业绩报表如下\n");
printf("货名 销售数量 单价 销售时间\n");
int i,j,k=0;
struct goods_l *p=NULL;
struct goods_l *q=NULL;
struct goods_l *head=NULL;
for(i=1;i<=5;i++)
{
for(j=1;j<=goods[i].mess[0].num;j++)
if(goods[i].mess[j].store==z)
{
k++;
p=(struct goods_l *)malloc(sizeof(struct goods_l));
if(k==1) head=p;
strcpy(p->name,goods[i].name);
p->mess.num=goods[i].mess[j].num;
p->mess.sellprice=goods[i].mess[j].sellprice;
p->mess.selltime.year=goods[i].mess[j].selltime.year;
p->mess.selltime.month=goods[i].mess[j].selltime.month;
p->mess.selltime.day=goods[i].mess[j].selltime.day;
if(k!=1) q->next=p;
p->next=NULL;
q=p;
}
}
if(head!=NULL) p=sortl_(head);
while(p!=NULL)
{
printf("%s %d %d %d年%d月%d日\n",p->name,p->mess.num,p->mess.sellprice,p->mess.selltime.year,p->mess.selltime.month,p->mess.selltime.day);
p=p->next;
}
printf("输入任意数字以返回菜单............\n");
scanf("%d",&i);
getchar();
}
else if(y==2)
{
printf("请输入您的店号:\n");
int z;
scanf("%d",&z);
getchar();
printf("销售员业绩报表如下\n");
int i,j;
for(i=1;i<=staff[0].store;i++)
{
if(staff[i].store==z)
{
printf("%s\n",staff[i].name);
printf("货名 数量 单价 日期\n");
for(j=1;j<=staff[i].mess[0].num;j++)
printf("\%s %d %d %d年%d月%d日\n",staff[i].mess[j].name,staff[i].mess[j].num,staff[i].mess[j].price,staff[i].mess[j].selltime.year,staff[i].mess[j].selltime.month,staff[i].mess[j].selltime.day);
}
}
}
else if(y==3)
{
continue;
}
else
{
printf("非法操作,返回菜单!!!\n");
continue;
}
}
else if(x==4)
{
printf("感谢您的使用!!!再见:)\n");
break;
}
else
{
printf("非法操作,返回菜单!!!\n");
continue;
}
}
}
void administrators(int log_result){
while(1)
{
printf("1.账户管理\n");
printf("2.库房管理\n");
printf("3.销售管理\n");
printf("4.退出系统\n");
printf("请输入操作的相应序号以继续............\n");
int x;
scanf("%d",&x);
getchar();
if(x==1)
{
printf("1.管理员账户\n");
printf("2.店长账户\n");
printf("3.返回菜单\n");
printf("请输入操作的相应序号以继续............\n");
int y;
scanf("%d",&y);
getchar();
if(y==1)
{
printf("1.创建一个新管理员账户\n");
printf("2.修改密码\n");
printf("3.返回菜单\n");
printf("请输入操作的相应序号以继续............\n");
int z;
scanf("%d",&z);
getchar();
if(z==1)
{
printf("请输入新账户名:(小于20个字符)\n");
char newusername[20];
gets(newusername);
printf("请输入密码:(小于20个字符)\n");
char password[20];
gets(password);
printf("请重复输入一遍:\n");
char password_again[20];
gets(password_again);
if(strcmp(password,password_again)==0)
{
userlist[0].no++;
strcpy(userlist[userlist[0].no].username,newusername);
strcpy(userlist[userlist[0].no].userpassword,password);
userlist[userlist[0].no].clas=1;
sort_();
printf("创建成功!!!返回菜单\n");
}
else
{
printf("两次密码输入不同,创建失败,返回菜单\n");
continue;
}
}
else if(z==2)
{
printf("请输入旧密码:(小于20个字符)\n");
char oldpassword[20];
if(strcmp(gets(oldpassword),userlist[log_result].userpassword)==0)
{
printf("请输入新密码:(小于20个字符)\n");
char newpassword[20];
gets(newpassword);
strcpy(userlist[log_result].userpassword,newpassword);
printf("修改成功!!!\n");
continue;
}
else
{
printf("密码错误!!!系统关闭!!!");
return;
}
}
else if(z==3)
continue;
else
{
printf("非法输入,返回菜单!!!\n");
continue;
}
}
else if(y==2)
{
printf("店长信息如下:(F 代表女性 M 代表男性)\n");
printf("姓名 性别 年龄\n");
int i;
for(i=1;i<=userlist[0].no;i++)
if(userlist[i].clas==2)
printf("%s %c %d\n",userlist[i].truename,userlist[i].sex,userlist[i].age);
printf("1.添加店长信息");
printf("2.删除店长信息");
printf("3.修改店长信息");
printf("4.返回菜单\n");
printf("请输入操作的相应序号以继续...........\n");
int z;
scanf("%d",&z);
getchar();
if(z==1)
{
printf("请输入新账户名(小于20个字符)\n");
char newusername[20];
gets(newusername);
printf("请输入密码(小于20个字符)\n");
char password[20];
gets(password);
printf("请重复输入一遍\n");
char password_again[20];
gets(password_again);
if(strcmp(password,password_again)==0)
{
userlist[0].no++;
strcpy(userlist[userlist[0].no].username,newusername);
strcpy(userlist[userlist[0].no].userpassword,password);
userlist[userlist[0].no].clas=2;
sort_();
printf("创建成功!!!返回菜单\n");
}
else
{
printf("两次密码输入不同,创建失败,返回菜单\n");
continue;
}
}
else if(z==2)
{
printf("请输入要删除的店长姓名(小于20个字符)\n");
char deleteusername[20];
gets(deleteusername);
int i;
for(i=1;i<=userlist[0].no;i++)
{
if(strcmp(deleteusername,userlist[i].truename)==0)
{
printf("请输入其用户密码(小于20个字符)\n");
char password[20];
gets(password);
if(strcmp(password,userlist[i].userpassword)==0)
{
printf("确定删除?(Y/N)\n");
char sure;
scanf("%c",&sure);
getchar();
if(sure=='Y')
{
userlist[i].clas=4;
sort_();
userlist[0].no--;
printf("删除成功,返回菜单!!!\n");
}
else if(sure=='N')
{
printf("取消操作,返回菜单!!!\n");
}
else
printf("非法输入,返回菜单!!!\n");
break;
}
else
{
printf("密码错误,返回菜单!!!\n");
break;
}
}
if(i==userlist[0].no);
printf("未找到此店长,请检查输入,返回菜单!!!\n");
}
}
else if(z==3)
{
printf("请输入要修改的店长的用户名(小于20个字符)\n");
char updateusername[20];
gets(updateusername);
int i,flag=0;
for(i=1;i<=userlist[0].no;i++)
{
if(strcmp(updateusername,userlist[i].username)==0)
{
flag=1;
printf("请输入其用户密码(小于20个字符)\n");
char password[20];
gets(password);
if(strcmp(password,userlist[i].userpassword)==0)
{
printf("你要修改的是?\n");
printf("1.店长的姓名\n");
printf("2.店长的性别\n");
printf("3.店长的年龄\n");
printf("4.返回菜单\n");
printf("请输入操作的相应序号以继续............\n");
int sure;
scanf("%d",&sure);
getchar();
if(sure==1)
{
printf("姓名是?(小于20个字符)\n");
char newname[20];
gets(newname);
strcpy(userlist[i].truename,newname);
printf("修改成功,返回菜单!!!\n");
break;
}
else if(sure==2)
{
printf("性别是?(F 代表女性 M 代表男性)\n");
char newsex;
scanf("%c",&newsex);
getchar();
userlist[i].sex=newsex;
printf("修改成功,返回菜单!!!\n");
break;
}
else if(sure==3)
{
printf("年龄是?\n");
int newage;
scanf("%d",&newage);
getchar();
userlist[i].age=newage;
printf("修改成功,返回菜单!!!\n");
break;
}
else if(sure==4)
{
printf("取消操作,返回菜单!!!\n");
break;
}
else
{
printf("非法输入,返回菜单!!!\n");
break;
}
}
else
{
printf("密码错误,返回菜单!!!\n");
break;
}
}
}
}
else if(z==4)
{
continue;
}
else
{
printf("非法输入,返回菜单!!!\n");
continue;
}
}
else if(y==3)
{
continue;
}
else
{
printf("非法输入,返回菜单!!!\n");
continue;
}
}
else if(x==2)
{
printf("--------------------库存详单-------------------\n");
printf("序号 名称 进货日期 过期时间 库存量\n");
int i;
for(i=1;i<=5;i++)
printf("%d %s %d年 %d月 %d日 %d年 %d月 %d日 %d\n",goods[i].no,goods[i].name,goods[i].in.year,goods[i].in.month,goods[i].in.day,goods[i].waste.year,goods[i].waste.month,goods[i].waste.day,goods[i].num);
printf("1.修改货物信息\n");
printf("2.过期货物查验\n");
printf("3.返回菜单\n");
printf("请输入操作的相应序号以继续............\n");
int y;
scanf("%d",&y);
getchar();
if(y==1)
{
printf("请输入您要修改的货物序号:\n");
int goodsno;
scanf("%d",&goodsno);
getchar();
int i;
for(i=1;i<=5;i++)
{
if(goods[i].no==goodsno)
{
printf("请输入新数据:(名称/进货日期/过期日期/库存量各一行)\n");
printf("原数据:\n");
printf("名称 进货日期 过期时间 库存量\n");
printf("%s %d年%d月%d日 %d年%d月%d日 %d\n",goods[i].name,goods[i].in.year,goods[i].in.month,goods[i].in.day,goods[i].waste.year,goods[i].waste.month,goods[i].waste.day,goods[i].num);
char newname[20];
printf("名称:\n");
gets(newname);
strcpy(goods[i].name,newname);
printf("进货时间输入格式:year.month.day(例如1990.1.1)\n");
int newyear,newmonth,newday;
scanf("%d.%d.%d",&newyear,&newmonth,&newday);
getchar();
goods[i].in.year=newyear;goods[i].in.month=newmonth;goods[i].in.day=newday;
printf("保质期时间输入格式:year.month.day(例如1990.1.1)\n");
scanf("%d.%d.%d",&newyear,&newmonth,&newday);
getchar();
goods[i].waste.year=newyear;goods[i].waste.month=newmonth;goods[i].waste.day=newday;
printf("库存量:\n");
int newnum;
scanf("%d",&newnum);
getchar();
goods[i].num=newnum;
printf("修改成功!!!返回菜单!!!\n");
break;
}
if(i==5)
printf("未找到此货物!!!返回菜单!!!\n");
}
}
else if(y==2)
{
printf("请输入当前日期:(输入格式:year.month.day(例如1990.1.1))\n");
int limyear,limmonth,limday;
scanf("%d.%d.%d",&limyear,&limmonth,&limday);
getchar();
int i,flag=0;
for(i=1;i<=5;i++)
{
if(goods[i].waste.year<limyear)
{
flag=1;
printf("此货物已过期:名称: %s 进货日期:%d年%d月%d日 保质期至:%d年%d月%d日 库存量:%d\n",goods[i].name,goods[i].in.year,goods[i].in.month,goods[i].in.day,goods[i].waste.year,goods[i].waste.month,goods[i].waste.day,goods[i].num);
}
else if(goods[i].waste.year==limyear)
{
if(goods[i].waste.month<limmonth)
{
flag=1;
printf("此货物已过期:名称: %s 进货日期:%d年%d月%d日 保质期至:%d年%d月%d日 库存量:%d\n",goods[i].name,goods[i].in.year,goods[i].in.month,goods[i].in.day,goods[i].waste.year,goods[i].waste.month,goods[i].waste.day,goods[i].num);
}
else if(goods[i].waste.month==limmonth)
{
if(goods[i].waste.day<limday)
{
flag=1;
printf("此货物已过期:名称: %s 进货日期:%d年%d月%d日 保质期至:%d年%d月%d日 库存量:%d\n",goods[i].name,goods[i].in.year,goods[i].in.month,goods[i].in.day,goods[i].waste.year,goods[i].waste.month,goods[i].waste.day,goods[i].num);
}
}
}
}
if(!flag) printf("无过期货物!!!\n");
}
else if(y==3)
{
continue;
}
else
{
printf("非法输入,返回菜单!!!\n");
continue;
}
}
else if(x==3)
{
printf("1.销售业绩查询\n");
printf("2.商品的日报表\n");
printf("3.各店业绩报表\n");
printf("4.返回菜单\n");
printf("请输入操作的相应序号以继续............\n");
int y;
scanf("%d",&y);
getchar();
if(y==2)
{
int i;
for(i=1;i<=5;i++)
printf("%d %s\n",goods[i].no,goods[i].name);
printf("请输入您要查询的货物的序号:\n");
int z;
scanf("%d",&z);
getchar();
if(z<=goods[0].no)
{
if(goods[z].mess[0].num==0)
printf("此货物暂无记录!!!\n");
else
{
printf("店号 销售数量 单价 销售时间\n");
for(i=1;i<=goods[z].mess[0].num;i++)
printf("%d %d %d %d年%d月%d日\n",goods[z].mess[i].store,goods[z].mess[i].num,goods[z].mess[i].sellprice,goods[z].mess[i].selltime.year,goods[z].mess[i].selltime.month,goods[z].mess[i].selltime.day);
printf("输入任意数字以返回菜单............\n");
scanf("%d",&z);
getchar();
}
}
else
{
printf("非法操作,返回菜单!!!\n");
continue;
}
}
else if(y==1)
{
int i;
for(i=1;i<=5;i++)
printf("%d %s\n",goods[i].no,goods[i].name);
printf("请输入您要查询的货物的序号:\n");
int z;
scanf("%d",&z);
getchar();
if(z<=goods[0].no)
{
if(goods[z].mess[0].num==0)
printf("此货物无销售记录!!!\n");
else
{
int i;
int sum=0;
for(i=1;i<=goods[z].mess[0].num;i++)
sum+=goods[z].mess[i].num*goods[z].mess[i].sellprice;
printf("此物品的总销售额为%d\n",sum);
}
}
else
{
printf("非法操作,返回菜单!!!\n");
continue;
}
}
else if(y==3)
{
printf("各店的业绩报表如下\n");
printf("店号 货名 销售数量 单价 销售时间\n");
int i,j,k,maxn=0;
for(i=1;i<=5;i++)
{
for(j=1;j<=goods[i].mess[0].num;j++)
if(maxn<goods[i].mess[j].store) maxn=goods[i].mess[j].store;
}
for(i=1;i<=maxn;i++)
{
for(j=1;j<=5;j++)
{
for(k=1;k<=goods[j].mess[0].num;k++)
{
if(goods[j].mess[k].store==i)
printf("%d %s %d %d %d年%d月%d日\n",i,goods[j].name,goods[j].mess[k].num,goods[j].mess[k].sellprice,goods[j].mess[k].selltime.year,goods[j].mess[k].selltime.month,goods[j].mess[k].selltime.day);
}
}
}
printf("输入任意数字以返回菜单............\n");
scanf("%d",&maxn);
getchar();
}
else if(y==4)
{
continue;
}
else
{
printf("非法操作,返回菜单!!!\n");
continue;
}
}
else if(x==4)
{
printf("感谢您的使用!!!再见:)\n");
break;
}
else
{
printf("非法操作,返回菜单!!!\n");
continue;
}
}
}
int log_in(char name[],char password[]){
int i;
for(i=1;i<=userlist[0].no;i++)
{
if(strcmp(userlist[i].username,name)==0)
{
if(strcmp(userlist[i].userpassword,password)==0)
return i;
else
return 0;
}
}
return -1;
}
int main(){
test();
printf("------欢迎使用销售管理系统------:)\n");
printf("请输入您的用户名(小于20个字符):(以回车结束)\n");
char name[20];
gets(name);
printf("请输入您的密码(小于20个字符)\n");
char password[20];
gets(password);
int log_result=log_in(name,password);
if(log_result==0) printf("密码错误!!!");
else if(log_result==-1) printf("用户不存在");
else
{
printf("登陆成功!!!\n");
if(userlist[log_result].clas==1)
{
administrators(log_result);
}
else if(userlist[log_result].clas==2)
{
manager(log_result);
}
else
{
salesman(log_result);
}
}
return 0;
}