服装销售系统C语言课程设计.doc
《服装销售系统C语言课程设计.doc》由会员分享,可在线阅读,更多相关《服装销售系统C语言课程设计.doc(27页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告
服装销售系统
一.【要求】
(1)系统包含三类用户:
管理员、店长、销售员。
(2)向管理员提供以下功能:
自身密码修改、其他用户添加删除、用户信息修改、统计。
商品信息添加、修改、删除、查找、统计。
(3)向店长提供以下功能:
登录、注销、自身密码修改、自身信息修改,商品信息修改、商品信息设计,查看日报表、月报表、商品销售量报表、查找浏览器修改商品储备信息。
(4)向销售员提供以下功能:
商品浏览、查找、出售,查看自己本日报表、本月报表。
(5)
[提示]
(1)总体设计:
整个服装销售系统可设计为管理员模块、店长模块、销售员模块、商品模块等。
(2)数据结构采用结构体。
二、结构图
根据需求分析,该程序中销售员应实现如下功能:
商品浏览、商品查找、出售商品、销售记录、用户注销,具体结构图如下。
店长应实现如下功能:
登录、注销、自身密码修改、自身信息修改,商品信息修改、商品信息设计,查看日报表、月报表、商品销售量报表、查找浏览器修改商品储备信息,具体结构图如下。
销售员
商品浏览
商品查找
出售商品
销售记录
用户注销
店长
商品浏览
商品查找
销售员业绩
商品信息修改
密码修改
用户注销
管理员需要实现如下功能:
自身密码修改、其他用户添加删除、用户信息修改、统计。
商品信息添加、修改、删除、查找、统计。
具体结构图如下。
管理员
删除用户
退出系统
注销账户
修改密码
商品统计
查找商品
删除商品
添加商品
统计用户
添加用户
三、程序中典型的流程图分析
(一)添加模块
(1)分析:
信息添加模块职工的基本信息包括:
用户、商品基本信息,对它们输入后,要存进原文件,流程图如下。
文件打开否
输入信息
是否继续
将信息输出到磁盘
调用printf_back()函数
结束
开始
输出错误信息
(二)浏览模块
(1)分析:
浏览功能首先需要查找信息是否存在,在查找时,因为磁盘文件无序,所以采用直接查找的办法。
在容错上有较好的能力,输错时系统会有提示,也会作出相应的反映。
算法和以上的分程序有相同的优点。
[流程
开始
打开文件否
输出错误信息
查找商品信息
是否查找到
输出商品信息
操作存盘
是否继续
结束
(三)查询模块
(1)分析:
基本信息的查询按查询方式:
按商品的名称查询,可供选择的方式比较丰富。
但本程序只使用了一种。
在查询小模块中采用了直接查找的方法,这主要是由于磁盘文件无序的缘故。
程序在选择结构上采用了if和else的嵌套形式,看起来有点繁杂。
开始
文件打开
查询方式
是否继续
结束
输出错误信息
商品的名称
(四)删除模块
(1)分析:
商品信息存放在磁盘中,程序须将该文件全部取出来,在内存中把要删掉的内容除去,然后在重新输入到磁盘,这种算法比较合理,但有一点烦琐。
可以改为另一种办法:
设置一个标示符,对有这些标识符的记录在下次输入时跳过,在新商品信息输入时,将其覆盖就行了。
在对文件进行删除时,考虑到很多方面,如:
查询不到时系统该如何处理等。
人性化设计有在删除之前询问是否继续。
[流程图]
开始
文件打开
查找商品信息
是否查找到
输入信息
是否继续
结束
输出错误信息
删除操作
五)修改模块
(1)分析:
修改与删除程序相似,管理员信息存放在磁盘中,程序须将该文件全部取出来,在内存中把要修改的内容修改,然后在重新输入到磁盘,这种算法比较合理,但有一点烦琐,可以改进。
开始
文件打开
查找职工信息
是否查找到
输入信息
是否继续
结束
输出错误信息
修改操作
四、题目分析
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;
while
(1)
{system("cls");
printf("//=========功能菜单========//\n");
printf("////\n");
printf("////\n");
printf("//1,销售员登陆//\n");
printf("//2,店长登陆//\n");
printf("//3,管理员登陆//\n");
printf("////\n");
printf("//=========================//\n");
printf("\n/=============================请选择服务的种类========================/\n");
scanf("%d",&chose);
if(chose<1||chose>5)
{
printf("你的选择出现错误!
按任意键重新的进入选择菜单!
\n");
system("pause");
continue;
}
switch(chose)
{
case1:
{
system("cls");
if(userload(use)==1)
{usermenu(use,dress);
}
system("pause");
break;
}
case2:
{
system("cls");
if(monload(use)==1)
{
monmenu(use,dress);
}
break;
}
case3:
{
system("cls");
temp=adminload(adm);
if(temp==1)
{
system("pause");
temp2=adminmenu(adm,use,dress);
return3;
}
system("pause");
continue;
}
default:
exit(0);
}
}//while()
}
3、当选择管理员的时候就用如下程序,注明(管理员的初始账号是admin)
intregnew(user*use)
{charname[21];
charpass[7]={0};
intchose;
inti,j;
inttype;
while
(1)
{
system("cls");
printf("用户名:
");
scanf("%s",&name);
printf("密码:
");
for(i=0;i<6;i++)
{pass[i]=getch();
printf("*");
}
printf("\n\n请输入用户的类型:
0,销售员1,店长");
scanf("%d",&type);
while
(1)
{printf("\n\n用户注册信息入完毕,是否确认?
1,确认0,重新输入\n");
scanf("%d",&chose);
if(chose!
=1&&chose!
=0)
{printf("你的输入有误,请重新的输入!
\n");
continue;
}
if(chose==1)
{for(i=0;iif(use[i].flag==0)
{
printf("注册成功!
请继续使用!
\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];
printf("请输入你想要删除的用户的用户名:
");
scanf("%s",name);
for(i=0;i<200;i++)
{if(strcm