毕业设计服装销售系统c语言课程设计.docx
《毕业设计服装销售系统c语言课程设计.docx》由会员分享,可在线阅读,更多相关《毕业设计服装销售系统c语言课程设计.docx(40页珍藏版)》请在冰点文库上搜索。
毕业设计服装销售系统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)如下。
图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("对不起,你输入的密码错误!
\n");
SystemLogin();//用户名正确,密码错误
}
}
tmpUser=tmpUser->next;
}
if(isLogin!
=1){
printf("对不起,该用户不存在\n");//遍历了所有用户都没有找到用户
SystemLogin();
}
}
运算显示如下(图4-2):
图4-2
3.管理员功能模块
(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("对不起,你两次输入的密码不一致,修改失败!
\n");
return;
}
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)用户信息查看\n");
printf("
(2)用户信息添加\n");
printf("(3)用户信息修改\n");
printf("(4)用户信息删除\n");
printf("(5)返回上级菜单\n");
printf("(6)退出登陆系统\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",tmpProduct->productName);
printf("商品型号:
%s\n",tmpProduct->productType);
printf("商品厂家:
%s\n",tmpProduct->productCompany);
printf("商品价格:
%f\n",tmpProduct->productPrice);
printf("商品数量:
%d\n",tmpProduct->productCount);
printf("商品附加信息:
%s\n",tmpProduct->memo);
tmpProduct=tmpProduct->next;
i++;
}
}
};
运算显示如下(图4-11):
图4-11
//商品查找函数//
voidProductFind(){
Products*tmpProduct;
intfindWay,productId;
charproductName[20];
printf("亲爱的%s朋友,你好,你现在进入的商品查询功能:
\n",currentUser);
printf("请选择查询方式:
1--按商品编号查询2--按商品名称查询\n");
scanf("%d",&findWay);
tmpProduct=pProductHead;
switch(findWay){
case1:
printf("请输入查询的商品编号:
");
scanf("%d",&productId);
while(NULL!
=tmpProduct){
if(productId==tmpProduct->productId){
printf("你查询的商品编号为%d的商品信息如下:
\n",productId);
printf("商品名称:
%s\n",tmpProduct->productName);
printf("商品型号:
%s\n",tmpProduct->productType);
printf("商品厂家:
%s\n",tmpProduct->productCompany);
printf("商品价格:
%f\n",tmpProduct->productPrice);
printf("商品数量:
%d\n",tmpProduct->productCount);
printf("商品附加信息:
%s\n",tmpProduct->memo);
return;
}
tmpProduct=tmpProduct->next;
}
printf("对不起,不存在该商品编号的商品!
\n");
break;
case2:
printf("请输入查询的商品名称:
");
scanf("%s",produ