服装销售系统C语言Word格式.docx
《服装销售系统C语言Word格式.docx》由会员分享,可在线阅读,更多相关《服装销售系统C语言Word格式.docx(35页珍藏版)》请在冰豆网上搜索。
算法和以上的分程序有相同的优点。
[流程
(三)查询模块
基本信息的查询按查询方式:
按商品的名称查询,可供选择的方式比较丰富。
但本程序只使用了一种。
在查询小模块中采用了直接查找的方法,这主要是由于磁盘文件无序的缘故。
程序在选择结构上采用了if和else的嵌套形式,看起来有点繁杂,没有用switch语句直观明了,这个地方可以改成更好的。
(四)删除模块
商品信息存放在磁盘中,程序须将该文件全部取出来,在内存中把要删掉的内容除去,然后在重新输入到磁盘,这种算法比较合理,但有一点烦琐。
可以改为另一种办法:
设置一个标示符,对有这些标识符的记录在下次输入时跳过,在新商品信息输入时,将其覆盖就行了。
在对文件进行删除时,考虑到很多方面,如:
查询不到时系统该如何处理等。
人性化设计有在删除之前询问是否继续。
[流程图]
五)修改模块
修改与删除程序相似,管理员信息存放在磁盘中,程序须将该文件全部取出来,在内存中把要修改的内容修改,然后在重新输入到磁盘,这种算法比较合理,但有一点烦琐,可以改进。
四、题目分析
1、按照系统需要三类用户用它作为主函数:
intmain()
{
user*use;
DRESS*dress;
ADMIN*adm;
use=(user*)malloc(200*sizeof(user));
userIntiate(use);
adm=(ADMIN*)malloc(sizeof(ADMIN));
adminIntiate(adm);
dress=(DRESS*)malloc(500*sizeof(DRESS));
dressIntiate(dress);
while
(1)
{
if(first(use,adm,dress)==3)continue;
}
}
2、三类用户的选择登陆为
int*first(user*use,ADMIN*adm,DRESS*dress)
intchose;
inttemp,temp2;
{system("
cls"
);
printf("
//=========功能菜单========//\n"
////\n"
//1,销售员登陆//\n"
//2,店长登陆//\n"
//3,管理员登陆//\n"
//=========================//\n"
\n/=============================请选择服务的种类========================/\n"
scanf("
%d"
&
chose);
if(chose<
1||chose>
5)
你的选择出现错误!
按任意键重新的进入选择菜单!
\n"
system("
pause"
continue;
}
switch(chose)
case1:
if(userload(use)==1)
{usermenu(use,dress);
system("
break;
}
case2:
{
if(monload(use)==1)
monmenu(use,dress);
case3:
temp=adminload(adm);
if(temp==1)
{
temp2=adminmenu(adm,use,dress);
return3;
continue;
default:
exit(0);
}//while()
3、当选择管理员的时候就用如下程序,注明(管理员的初始账号是admin,密码是123456)
intregnew(user*use)
{charname[21];
charpass[7]={0};
inti,j;
inttype;
用户名:
"
%s"
name);
密码:
for(i=0;
i<
6;
i++)
{pass[i]=getch();
*"
\n\n请输入用户的类型:
0,销售员1,店长"
type);
{printf("
\n\n用户注册信息入完毕,是否确认?
1,确认0,重新输入\n"
if(chose!
=1&
&
chose!
=0)
你的输入有误,请重新的输入!
if(chose==1)
{for(i=0;
usernum+1;
if(use[i].flag==0)
注册成功!
请继续使用!
\n"
strcpy(use[i].username,name);
strcpy(use[i].pass,pass);
usernum++;
use[i].flag=1;
use[i].type=type;
return1;
elsebreak;
}
}
intdeluser(user*use)
{inti;
charname[20];
请输入你想要删除的用户的用户名:
name);
200;
{if(strcmp(use[i].username,name)==0)
\n\n\n用户%s删除成功!
\n\n\n\n"
strcpy(use[i].username,"
unknown"
use[i].flag=-1;
用户%s不存在!
请查正在次操作!
return0;
intuseall(user*use)
销售人员:
{if(use[i].type==0)
{if(use[i].flag==1)
用户姓名:
%s用户密码:
%s\n"
use[i].username,use[i].pass);
店长:
{if(use[i].type==1)
intadminload(ADMIN*adm)
intchose,chose2;
管理员账号:
{
pass[i]=getch();
\n\n用户登陆信息输入完毕,是否确认?
if(strcmp(adm->
name,name)==0)
pass,pass)==0)
登陆成功!
strcpy(usertemp.username,name);
输入的用户名或者密码有误!
1,重新登陆2,退出登陆!
chose2);
if(chose2==1)
break;
else
if(chose==0)break;
intadminpass(ADMIN*adm)
charpass[20]={0};
charpass2[20]={0};
请输入新的管理员密码:
\n\n\n请再次输入新的管理员密码:
pass2[i]=getch();
if(strcmp(pass,pass2)!
\n\n两次输入的新的密码不一样,请重新的输入!
\n\n\n"
else
\n密码修改成功!
下一次管理员登陆请使用新的密码!
strcpy(adm->
pass,pass);
intadminout()
{intchose;
你确定要注销吗?
1,注销0,取消\n\n"
=0&
=1)
你的选项出现了错误,请重新的输入!
pasue"
管理员账户注销完毕!
!
\n\n\n\n"
elsereturn0;
intout()
真的要退出系统吗?
退出后信息会全部的丢失!
1,退出0,取消"
if(chose==1)exit(0);
elsereturn1;
intadminmenu(ADMIN*adm,user*use,DRESS*dress)
intchose1;
\n在线用户:
%s\n\n"
usertemp.username);
//=======用户功能菜单=====//\n"
//1,添加用户//\n"
printf("
//2,删除用户//\n"
//3,统计用户//\n"
//4,添加商品//\n"
//5,删除商品//\n"
//6,查找商品//\n"
//7,商品统计//\n"
//8,修改密码//\n"
//9,注销账户//\n"
//0,退出系统//\n"
chose1);
if(chose1<
0||chose1>
9)
switch(chose1)
case1:
{system("
regnew(use);
deluser(use);
useall(use);
case4:
adddress(dress);
case5:
deldress(dress);
case6:
finddress(dress);
case7:
dressall(dress);
case8:
if(adminpass(adm)==1)continue;
case9:
if(adminout()==1)return3;
}
case0:
if(out()==1)continue;
intuserload(user*use)
for(i=0;
if(use[i].type==0)
if(strcmp(use[i].username,name)==0)
if(strcmp(use[i].pass,pass)==0)
这里面包含了管理员的十个功能选项。
4,选择销售员和店长,(注明第一次运行时本来没有销售员和店长,需要管理员添加。
)
intuserout()
销售员账户注销完毕!
strcpy(usertemp.username,"
//system("
intsold(user*use,DRESS*dress)
{charname[20];
intnum;
inti;
intj;
intk;
请输入要出售的商品的名称:
\n请输入出售的数量:
num);
for(k=0;
k<
k++)
if(strcmp(use[k].username,usertemp.username)==0)
500;
if(strcmp(dress[i].name,name)==0)
if(dress[i].now<
num)break;
dress[i].now=dress[i].now-num;
\n\n\n商品%s已经销售出了%d件\n"
name,num);
for(j=0;
j<
100;
j++)
if(use[k].mdb[j].flag==0)
strcpy(use[k].mdb[j].name,name);
use[k].mdb[j].flag=1;
use[k].mdb[j].total=num;
商品出售出现错误!
请重新操作!
voidmounth(user*use)
strcpy(name,usertemp.username);
{for(j=0;
if(use[i].mdb[j].flag==1)
商品名称:
%s,出售数量:
%d\n"
use[i].mdb[j].name,use[i].mdb[j].total);
intusermenu(use