服装销售系统C语言课程设计.docx
《服装销售系统C语言课程设计.docx》由会员分享,可在线阅读,更多相关《服装销售系统C语言课程设计.docx(84页珍藏版)》请在冰豆网上搜索。
![服装销售系统C语言课程设计.docx](https://file1.bdocx.com/fileroot1/2023-5/25/1191844b-df53-4109-9373-e1405caa8a25/1191844b-df53-4109-9373-e1405caa8a251.gif)
服装销售系统C语言课程设计
1.题目要求-------------------------------------------------------------------4
2.需求分析-------------------------------------------------------------------4
3.总体设计-------------------------------------------------------------------4
4.详细设计-------------------------------------------------------------------8
5.上机操作------------------------------------------------------------------30
6.总结----------------------------------------------------------------------33
7.致谢----------------------------------------------------------------------33
参考文献-------------------------------------------------------------------34
1.题目要求
(1)
系统包含三类用户:
管理员、店长、销售员.
(2)
向管理员提供以下功能:
自身密码修改、其他用户添加删除、用户信息修改、统计
.
商品信息添加、修改、删除、查找、统计.
(3)
向店长提供以下功能:
登录、注销、自身密码修改、自身信息修改
商品信息修
改、商品信息设计,查看日报表、月报表、商品销售量报表、查找浏览器修改商品
储备信息.
(4)
向销售员提供以下功能:
商品浏览、查找、出售,查看自己本日报表、本月报表
.
2.需求分析
用户与商品信息要采用文件存储,因而要提供文件地输入、输出功能,要实现用户地添加、修改、删除,商品信息地添加、修改、删除、查找等,需要提供相应地信息添加、删除、修改与查找功能;要实现商品浏览功能,需要提供显示操作;另外,还要提供键盘式选择菜单以实现功能选择.
3.总体设计
1.【整体E-R图3-1】
服装
管理
系统
管理员
模块
店长销售员退出
模块模块
用户用户添加删除
自身
商品
营业
密码
商品
商品
出售
查看本
显示所
退出
信息
信息
员业
修改
浏览
查找
月报表
有用户
修改
浏览
绩报
表
图3-1
2.【程序中典型地流程图】
(一)添加模块
(1)分析:
信息添加模块职工地基本信息包括:
用户、商品基本信息,对它们输入后,要存进原文件,流程图(图3-2)如下.
开始
文件打开否
输入信息
输出错误信息
将信息输出到磁盘
是否继续
调用printf_back()函数
结束
图3-2
(二)浏览模块
(1)分析:
浏览功能首先需要查找信息是否存在,在查找时,因为磁盘文件无序,所以采
用直接查找地办法.在容错上有较好地能力,输错时系统会有提示,也会作出相应地反映.算法和以上地分程序有相同地优点.
流程图如下(图3-3).
开始
打开文件否输出错误信息
查找商品信息
是否查找到
输出商品信息
操作存盘
是否继续
结束
图3-3
(三)查询模块
(1)分析:
基本信息地查询按查询方式:
按商品地名称查询,可供选择地方式比较丰富.
但本程序只使用了一种.在查询小模块中采用了直接查找地方法,这主要是由于磁盘文件无
序地缘故.程序在选择结构上采用了if和else地嵌套形式,看起来有点繁杂(图3-4)
开始
文件打开
查询方式
输出错误信息
商品地名称
是否继续
结束
图3-4
(四)删除模块
(1)分析:
商品信息存放在磁盘中,程序须将该文件全部取出来,在内存中把要删掉地内
容除去,然后在重新输入到磁盘,这种算法比较合理,但有一点烦琐.可以改为另一种办法:
设置一个标示符,对有这些标识符地记录在下次输入时跳过,在新商品信息输入时,将其覆盖就行了.在对文件进行删除时,考虑到很多方面,如:
查询不到时系统该如何处理
等.人性化设计有在删除之前询问是否继续.
流程图(图3-5)如下:
开始
文件打开输出错误信息
查找商品信息
是否查找到
删除操作
输入信息
是否继续
结束
图3-5
五)修改模块
(1)分析:
修改与删除程序相似,管理员信息存放在磁盘中,程序须将该文件全部取出来,在内存中把要修改地内容修改,然后在重新输入到磁盘,这种算法比较合理,但有一点烦琐,可以改进(图2-6).
开始
文件打开输出错误信息
查找职工信息
是否查找到
修改操作
输入信息
是否继续
结束
图3-6
4.详细设计
1.欢迎界面voidWelcomeMenu()
voidWelcomeMenu(){
printf("---------------服装销售系统-----------\n")。
printf("
系统功能说明:
\n")。
printf("
管理员功能:
\n")。
printf("
(1)
自身密码修改\n")。
printf("
(2)
用户信息管理:
添加,修改,删除,查询\n")。
printf("
(3)
商品信息管理:
添加,修改,查询,删除\n")。
printf("
(4)
退出登陆系统\n")。
printf("
店长功能:
\n")。
printf("
(1)
自身密码修改\n")。
printf("
(2)
商品信息管理:
添加,修改,查询,删除\n")。
printf("
(3)
销售报表显示:
日销售报表,月销售报表,销售员销售报表\n")。
printf("
(4)
退出登陆系统\n")。
printf("
销售员功能:
\n")。
printf("
(1)
商品浏览,查询,商品销售\n")。
printf("
(2)
自己商品销售报表显示:
日销售报表,月销售报表\n")。
printf("
(3)
退出登陆系统\n")。
printf("--------------谢谢使用--------------------\n")。
printf("(注:
管理员,店长,用户登陆地账号分别是admin,boss,sell初始密码和账
号一致)\n")。
}。
欢迎界面运行如下(图4-1):
图4-1
2.登陆模块voidSystemLogin()函数
voidSystemLogin(){//所有用户身份调用地登陆函数
charuserName[20],password[20]。
intisLogin=0。
SystemUser*tmpUser。
printf("请输入你地系统用户帐号:
")。
scanf("%s",userName)。
printf("\n请输入你地系统用户密码:
")。
scanf("%s",password)。
tmpUser=pSystemUserHead。
while(NULL!
=tmpUser){
if(0==strcmp(tmpUser->userName,userName)){
if(0==strcmp(tmpUser->password,password)){
isLogin=1。
strcpy(currentUser,tmpUser->userName)。
currentUserType=tmpUser->userType。
switch(currentUserType){
caseADMIN_USER_TYPE:
AdminOperationMenu()。
break。
caseBOSS_USER_TYPE:
BossOperationMenu()
。
break。
caseSELL_USER_TYPE:
SellOperationMenu()
。
break。
default:
break。
}
}else{
printf("对不起
SystemLogin()
你输入地密码错误。
!
\n")。
//用户名正确
密码错误
}
}
tmpUser=tmpUser->next
。
}
if(isLogin!
=1){
printf("对不起,该用户不存在
SystemLogin()。
\n")。
//遍历了所有用户都没有找到用户
}
}
运算显示如下(图4-2):
图4-2
3.管理员功能模块
管理员模块
1.自身密码修改
2.用户信息管理:
添加,修改,删除,查询
3.商品信息管理:
添加,修改,查询,删除
4.销售报表显示
(1)管理员欢迎界面voidAdminOperationMenu()函数
voidAdminOperationMenu(){
intselect。
while
(1){
printf("
亲爱地管理员%s同志,欢迎使用本系统,你拥有下面所有功能:
\n",currentUser)。
printf("
(1)
自身密码修改\n")。
printf("
(2)
用户信息管理:
添加,修改,查询,删除\n")。
printf("
(3)
商品信息管理:
添加,修改,查询,删除\n")。
printf("
(4)
退出系统\n")。
printf("
请输入上面功能对应地序号进行功能选择:
")。
scanf("%d",&select)。
switch(select){
case1:
ChangePassword()。
continue。
case2:
UserManage()。
continue。
case3:
ProductsManage()。
Continue。
case4:
ExitSystem()。
break。
default:
break。
}
}
}。
运算显示如下(图4-3):
图4-3
(2)自身密码修改(调用密码修改函数ChangePassword()。
)
//密码修改函数
voidChangePassword(){
charnewPassword1[20],newPassword2[20]。
SystemUser*tmpUser。
printf("请输入你地新密码:
")。
scanf("%s",newPassword1)。
printf("请再次输入你地新密码:
")。
scanf("%s",newPassword2)。
if(0!
=strcmp(newPassword1,newPassword2)){
printf("
return
对不起,你两次输入地密码不一致。
修改失败
!
\n")。
}
tmpUser=pSystemUserHead。
while(NULL!
=tmpUser){
if(0==strcmp(tmpUser->userName,currentUser)){
strcpy(tmpUser->password,newPassword1)。
printf("密码修改成功!
\n")。
break。
}
tmpUser=tmpUser->next。
}
}。
运算显示如下(图4-4):
图4-4
(2)用户信息管理:
添加,修改,删除,查询
//用户信息管理:
添加,修改,删除,查询//
voidUserManage(){//用户信息函数//
intselect。
//管理员显示模块//
while
(1){
printf("亲爱地管理员%s同志,你目前进入地是用户信息管理功能:
\n",currentUser)。
printf("
(1)用户信息查看printf("
(2)用户信息添加printf("(3)用户信息修改printf("(4)用户信息删除printf("(5)返回上级菜单printf("(6)退出登陆系统
\n")。
\n")。
\n")。
\n")。
\n")。
\n")。
printf("请输入上面功能对应地序号进行功能选择:
")。
scanf("%d",&select)。
switch(select)
{
case1:
UserInfoView()。
//调用用户信息查看地函数//
continue。
case2:
UserInfoAdd()。
//调用用户信息添加函数//
continue。
case3:
UserInfoModify()。
//调用用户信息修改函数//
continue。
case4:
UserInfoDelete()。
//调用用户信息删除函数//
continue。
case5:
AdminOperationMenu()。
//返回上级系统//
break。
case6:
ExitSystem()。
//退出登陆//
break。
default:
break。
}
}
}。
运算显示如下(图4-5):
图4-5
//用户信息查看函数//
voidUserInfoView(){
SystemUser*tmpUser。
tmpUser=pSystemUserHead。
printf("亲爱地管理员%s,你好,你查看地所有用户信息如下:
\n",currentUser)。
printf("用户名\t密码\t用户类型(1代表管理员,2代表店长,3代表销售员)\n")。
while(NULL!
=tmpUser){
printf("%s\t%s\t%d\n",tmpUser->userName,tmpUser->password,tmpUser->userType)。
tmpUser=tmpUser->next。
}
}。
运算显示如下(图4-6):
//用户信息添加函数//
voidUserInfoAdd(){
SystemUsertmpUser。
printf("亲爱地管理员%s,请依次输入用户信息:
\n",currentUser)。
printf("用户名:
")。
scanf("%s",tmpUser.userName)。
printf("用户密码:
")。
scanf("%s",tmpUser.password)。
printf("用户类型(1代表管理员,2代表店长,3代表销售员):
")。
scanf("%d",&tmpUser.userType)。
tmpUser.next=NULL。
if(FUNCTION_SUCCESS==AddUser(&tmpUser))
printf("用户信息添加成功!
\n")。
}。
运算显示如下(图4-7):
图4-7
//用户信息修改函数//voidUserInfoModify(){
charuserName[20]。
SystemUser*pUser。
printf("亲爱地管理员%s,请输入要修改地用户帐号:
\n",currentUser)。
scanf("%s",userName)。
pUser=pSystemUserHead。
while(NULL!
=pUser){
if(0==strcmp(pUser->userName,userName)){
printf("请输入新地帐号:
")。
scanf("%s",pUser->userName)。
printf("请输入新地密码:
")。
scanf("%s",pUser->password)。
printf("请输入新地用户类型(1代表管理员,2代表店长,3代表销售员):
")。
scanf("%d",&pUser->userType)。
printf("用户信息修改成功\n")。
return。
}
pUser=pUser->next。
}
printf("对不起,没有你查找地用户信息!
\n")。
}。
运算显示如下(图4-8):
图4-8
//用户信息删除函数//
voidUserInfoDelete(){
SystemUser*pUserA,*pUserB。
charuserName[20]。
printf("亲爱地管理员%s朋友,你好,你现在进入地用户信息删除功能:
\n",currentUser)。
printf("请输入你要删除地用户名:
\n")。
scanf("%s",userName)。
pUserA=pUserB=pSystemUserHead。
//pUserB指向要删除地记录,pUserA指向前一条
记录
if(NULL==pUserB)return。
while(NULL!
=pUserB){
if(0==strcmp(userName,pUserB->userName)){
if(pUserB==pSystemUserHead&&pUserB->next==NULL){//如果系统只有一条商
品信息
free(pSystemUserHead)。
pSystemUserHead=NULL。
printf("用户信息删除成功!
\n")。
return。
}
pUserA->next=pUserB->next。
if(pSystemUserHead==pUserB)
pSystemUserHead=pUserB->next。
free(pUserB)。
printf("用户信息删除成功!
\n")。
return。
}
else{
pUserA=pUserB。
pUserB=pUserB->next。
}
}
printf("对不起,不存在该帐号地用户信息!
")。
}。
运算显示如下(图4-9):
图4-9
(3)商品信息管理:
添加,修改,查询,删除
//商品管理模块//
voidProductsManage(){
intselect。
while
(1){
printf("亲爱地%s朋友,你好,你现在进入地是商品管理功能,你可以选择以下功
能:
\n",currentUser)。
printf("
(1)商品信息查看\n")。
printf("
(2)商品信息查找\n")。
printf("(3)商品信息添加\n")。
printf("(4)商品信息修改\n")。
printf("(5)商品信息删除\n")。
printf("(6)返回上一级菜单\n")。
printf("(7)退出登陆系统\n")。
printf("请选择应地操作编号:
")。
scanf("%d",&select)。
switch(select){
case1:
ProductsView()。
//调用商品查看函数//
continue。
case2:
ProductFind()。
//调用商品信息查找函数//
continue。
case3:
InputAndAddProduct()。
//调用商品添加函数//
continue。
case4:
ModifyProduct()。
//调用商品修改函数//
continue。
case5:
DeleteProduct()。
//调用删除商品信息函数//
continue。
case6:
switch(currentUserType){//返回上一级//
caseADMIN_USER_TYPE:
AdminOperationMenu()。
break。
caseBOSS_USER_TYPE:
BossOperationMenu()。
break。
caseSELL_USER_TYPE:
SellOperationMenu()。
break。
default:
break。
}
break。
case7:
ExitSystem()。
break。
default:
break。
}
}
}。
运算显示如下(图4-10):
图4-10
//商品地查看函数//voidProductsView(){
Products*tmpProduct。
inti。
i=1。
tmpProduct=pProductHead。
if(NULL==tmpProduct)
printf("对不起,目前还没有商品信息")。
else{
while(NULL!
=tmpProduct){
printf("第%d件商品信息如下:
\n",i)。
printf("商品编号:
%d\n",tmpProduct->productId)。
printf("商品名称:
%s\n",tm