服装销售系统.docx
中 国 地 质 大 学课程设计评语对课程论文的评语:平时成绩:课程论文成绩:总 成 绩:评阅人签名:注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。目 录课程设计评语2目 录31课程论文题目42程序设计思路43功能模块图44数据结构设计55算法设计66程序代码117程序运行结果228编程中遇到的困难及解决方法299总结心得及良好建议2910致谢301 课程论文题目 服装销售系统 (1)包含三类用户:管理员,店长,销售员。(2)向管理员提供以下功能:自身密码修改,其他用户添加删除,用户信息修改,统计。商品信息添加,修改,删除,查找,统计。(3)向店长提供以下功能:登陆,注销,自身密码修改,自身信息修改。商品信息修改商品信息统计。查看日报表,月报表,商品销量报表,营业员业绩报表,查找浏览修改商品储备信息。(4)向销售员提供以下功能:商品浏览,查找,出售商品,查看自己的本日报表,本月报表。提示(1)总体设计整个服装销售系统可以设计为管理员模块,店长模块,销售员模块,商品模块等。(2)数据结构采用结构体(老师给我的题目要求是设计好店长模块,实现店长模块的功能,则下面的设计只涉及到店长模块。)2程序设计思路根据题目要求,店长模块的功能是登陆、注销、密码、信息修改、商品储备信息修改、商品储备信息浏览、商品信息修改、商品信息统计。店长的名字及密码以文本文件的方式存于shop文件中。浏览商品储备信息查看营业员业绩查看商品销售量表查看月报表查看日报表商品信息统计商品信息修改自身信息密码修改注销返回上一菜单登陆修改商品储备信息 店长3功能模块图4数据结构设计继续合法合法结束继续运行浏览商品储备信息查看营业员业绩查看商品销售量表查看月报表查看日报表商品信息统计商品信息修改自身信息密码修改注销返回上一菜单登陆修改商品储备信息输入数据退出 店长输入数据结构体: N Y N Y Y N Y 5算法设计(1)主函数的流程图开始输出菜单供用户选择输入菜单编号判断编号是否为1.2根据编号调用各功能模块函数结束NY(2)店长模块中登录功能的流程图检查是否已登录输入用户名和密码是否找到提示已登录并返回上一菜单提示登录成功并返回上一菜单提示用户名不存在并返回上一菜单NYNY(3)店长模块的查看日(月)报表功能流程图是否已登录返回上一菜单输入要查询的日(月)期是否找到提示没有找到并返回上一菜单输出报表内容YYNN(4)店长模块的商品(储备)信息修改功能是否已登录返回上一菜单输入需要修改的商品名是否找到提示货物不存在并返回上一菜单输入新的货品信息信息是否合法提示修改成功并返回上一菜单返回上一菜单YNNNYY(5)店长模块的注销功能流程图是否已登录提示没有登录并返回上一菜单提示注销成功并返回上一菜单YN(5)店长模块的商品(储备)信息统计功能流程图是否已登录返回上一菜单输出所有商品信息NY(7)店长模块的销售量报表查看功能流程图是否已登录返回上一菜单输出销售量报表NY(8)店长模块的营业员业绩查看功能流程图是否已登录返回上一菜单输入营业员名字是否找到返回上一菜单输出销售量报表NNYY(9)店长模块的主函数流程图开始输出菜单供用户选择输入菜单编号判断编号是否为1-11根据编号调用各功能模块函数结束NY6程序代码#include <stdio.h>#include <string.h>#include <malloc.h>#include <stdlib.h>int k=0;/*主函数 */void shop();void shop2();void menu() int n,w; do puts("tt *n"); puts("tt + 1.店长 +n"); puts("tt + 2.退出 +n"); puts("tt *n"); printf("nntt Choice your number(1-2): bb"); scanf("%d",&n); if(n<1|n>2) w=1; else w=0; while(w=1); switch(n) case 1:shop();break; case 2:exit(0); main() menu(); /*店长模块*/*登陆*/void shop_login(char name,int *in) char pass100,name2100,pass2100; if(*in=1)printf("你已经登陆!n"); else printf("请输入用户名,密码:"); scanf("%s%s",name,pass); FILE *p; int x=0; p=fopen("shop.txt","r"); while(!feof(p) fscanf(p,"%s%s",name2,pass2); if(strcmp(name,name2)=0) x=1; if(strcmp(pass,pass2)=0)x=2; fclose(p); if(x=0)printf("该用户名不存在!n"); else if(x=1)printf("密码错误!n"); else if(x=2) printf("登陆成功!n"); *in=1; shop2(); printf("press any key to back.n");getchar();getchar();/*注销*/void shop_logout(int *in) if(*in=0)printf("你没有登陆。不需要注销!n"); else if(*in=1) *in=0; printf("注销成功!n"); printf("press any key to back.n"); getchar();getchar();shop2();/*密码、信息修改*/void shop_change(char name1,int *in) if(*in=0)printf("你没有登陆,请首先登陆n"); else typedef struct sh char name10; char password100; struct sh *next; SHOP; FILE *p; SHOP *head,*a,*b; head=(SHOP *)malloc(sizeof(SHOP); a=head; p=fopen("shop.txt","r"); while(!feof(p) b=(SHOP *)malloc(sizeof(SHOP); fscanf(p,"%s%s",b->name,b->password); a->next=b; a=a->next; a->next=NULL; fclose(p); a=head->next; while(a!=NULL) if(strcmp(a->name,name1)=0) printf("请输入修改后的店长姓名和密码:"); scanf("%s%s",a->name,a->password); break; a=a->next; a=head->next; p=fopen("shop.txt","w"); while(a->next!=NULL) fprintf(p,"%s %sn",a->name,a->password); a=a->next; fclose(p); printf("修改成功!n"); free(head); printf("press any key to back.n"); getchar();getchar();shop2(); /*商品信息修改*/void shop_goodschange() typedef struct g char name10; double price; long num; struct g *next; GOODS; FILE *p; GOODS *head,*a,*b; char na10; int k=0; head=(GOODS *)malloc(sizeof(GOODS); a=head; p=fopen("goods.txt","r"); while(!feof(p) b=(GOODS *)malloc(sizeof(GOODS); fscanf(p,"%s%lf%d",b->name,&b->price,&b->num); a->next=b; a=a->next; a->next=NULL; fclose(p); printf("请输入要修改的货物的名称:"); scanf("%s",na); a=head->next; while(a!=NULL) if(strcmp(a->name,na)=0) printf("请输入新的货物名称,价格,数量:"); scanf("%s%lf%d",a->name,&a->price,&a->num); k=1; break; a=a->next; a=head->next; if(k=1) p=fopen("goods.txt","w"); while(a->next!=NULL) fprintf(p,"%s %.2lf %dn",a->name,a->price,a->num); a=a->next; fclose(p); printf("修改成功!n"); else printf("该货物不存在!n"); free(head); printf("press any key to back.n"); getchar();getchar();shop2();/*商品信息统计*/void shop_goodscount() FILE *p; int n=0; char name10; float k; int num; printf(" 物品 价格 数量n"); p=fopen("goods.txt","r"); while(!feof(p) fscanf(p,"%s%f%d",name,&k,&num); if(!feof(p)printf("%s %.2f %dn",name,k,num);n+; printf("There are %d kinds of goods.n",n); fclose(p); printf("press any key to back.n"); getchar();getchar();shop2();/*察看日报表*/void daysells() char date210; int k=0,n; char name10,price10,seller10,date10; printf("请输入要查询的年月日YYYYMMDD:"); scanf("%s",date2); FILE *p; p=fopen("sells.txt","r"); printf("货物名 价格 售货员 日期 数量n"); while(!feof(p) fscanf(p,"%s%s%s%s%d",name,price,seller,date,&n); if(strcmp(date,date2)=0&&!feof(p) printf("%s %s %s %s %dn",name,price,seller,date,n);k+=n; printf("There are %d sold on %s.n",k,date2); fclose(p); printf("press any key to back.n"); getchar();getchar();shop2();/*察看月报表*/void monthsells() char date210; int n=0,m; char name10,price10,seller10,date10; int k,i; printf("请输入要查询的年月YYYYMM:"); scanf("%s",date2); FILE *p; p=fopen("sells.txt","r"); printf("货物名 价格 售货员 日期 数量n"); while(!feof(p) k=1; fscanf(p,"%s%s%s%s%d",name,price,seller,date,&m); for(i=0;i<6;i+) if(datei!=date2i) k=0; break; if(k=1&&!feof(p) printf("%s %s %s %s %dn",name,price,seller,date,m);n+=m; printf("There are %d sold in %s.n",n,date2); fclose(p); printf("press any key to back.n"); getchar();getchar();shop2();/*察看销售量报表*/void goodssells() FILE *p;int n; char name100,price100,seller100,date10; p=fopen("sells.txt","r"); printf("货物名 价格 售货员 日期 数量n"); while(!feof(p) fscanf(p,"%s%s%s%s%d",name,price,seller,date,&n); if(!feof(p)printf("%s %s %s %s %dn",name,price,seller,date,n); fclose(p); printf("press any key to back.n"); getchar();getchar();shop2();/*察看营业员业绩表*/void pepsells() char seller210; int k=0,n; char name10,price10,seller10,date10; printf("请输入要查询的售货员姓名:"); scanf("%s",seller2); FILE *p; p=fopen("sells.txt","r"); printf("货物名 价格 售货员 日期 数量n"); while(!feof(p) fscanf(p,"%s%s%s%s%d",name,price,seller,date,&n); if(strcmp(seller,seller2)=0&&!feof(p) printf("%s %s %s %s %dn",name,price,seller,date,n);k+=n; printf("There are %d sold by the %s.n",k,seller2); fclose(p); printf("press any key to back.n"); getchar();getchar();shop2();/*商品储备信息浏览*/void shop_goodsbrowse() FILE *p; int n=0; char name10; float k; int num; printf(" 物品 价格 数量n"); p=fopen("goods.txt","r"); while(!feof(p) fscanf(p,"%s%f%d",name,&k,&num); if(!feof(p)printf("%s %.2f %dn",name,k,num);n+; fclose(p); printf("press any key to back.n"); getchar();getchar();shop2();/*商品储备信息修改*/void shop_goods_change() typedef struct g char name10; double price; long num; struct g *next; GOODS; FILE *p; GOODS *head,*a,*b; char na10; int k=0; head=(GOODS *)malloc(sizeof(GOODS); a=head; p=fopen("goods.txt","r"); while(!feof(p) b=(GOODS *)malloc(sizeof(GOODS); fscanf(p,"%s%lf%d",b->name,&b->price,&b->num); a->next=b; a=a->next; a->next=NULL; fclose(p); printf("请输入要修改的货物的名称:"); scanf("%s",na); a=head->next; while(a!=NULL) if(strcmp(a->name,na)=0) printf("请输入新的货物名称,价格,数量:"); scanf("%s%lf%d",a->name,&a->price,&a->num); k=1; break; a=a->next; a=head->next; if(k=1) p=fopen("goods.txt","w"); while(a->next!=NULL) fprintf(p,"%s %.2lf %dn",a->name,a->price,a->num); a=a->next; fclose(p); printf("修改成功!n"); else printf("该货物不存在!n"); free(head); printf("press any key to back.n"); getchar();getchar();shop2();/* 店长模块主函数*/void shop() char name100; int n,in=0,w; do printf(" *n"); printf(" 1,登陆n"); printf(" 2,注销n"); printf(" 3,自身信息,密码修改n"); printf(" 4,商品信息修改n"); printf(" 5,商品信息统计n"); printf(" 6,察看日报表n"); printf(" 7,察看月报表n"); printf(" 8,察看商品销售量报表n"); printf(" 9,察看营业员业绩报表n"); printf(" 10,浏览商品储备信息n"); printf(" 11,修改商品储备信息n"); printf(" 12,返回上一菜单n"); printf(" *n");printf(" Choice your number(1-12) bbb"); scanf("%d",&n); if(n>12|n<1) printf("n输入错误!请重新输入:"); w=1; else w=0; while(w); if(n=12) menu(); switch(n) case 1:shop_login(name,&in);break; case 2:shop_logout(&in);break; case 3:shop_change(name,&in);break; case 4: if(in=1)shop_goodschange(); else printf("请先登陆n"); break; case 5:shop_goodscount();break; case 6:daysells();break; case 7:monthsells();break; case 8:goodssells();break; case 9:pepsells();break; case 10:shop_goodsbrowse();break; case 11:shop_goods_change();break; case 12:menu();break; /* 店长模块第二主函数*/void shop2() char name100; int n,in=1,w; do printf(" *n"); printf(" 1,登陆n"); printf(" 2,注销n"); printf(" 3,自身信息,密码修改n"); printf(" 4,商品信息修改n"); printf(" 5,商品信息统计n"); printf(" 6,察看日报表n"); printf(" 7,察看月报表n"); printf(" 8,察看商品销售量报表n"); printf(" 9,察看营业员业绩报表n"); printf(" 10,浏览商品储备信息n"); printf(" 11,修改商品储备信息n"); printf(" 12,返回上一菜单n"); printf(" *n");printf(" Choice your number(1-12) bbb"); scanf("%d",&n); if(n>12|n<1) printf("n输入错误!请重新输入:"); w=1; else w=0; while(w); if(n=12) menu(); switch(n) case 1:shop_login(name,&in);break; case 2:shop_logout(&in);break; case 3:shop_change(name,&in);break; case 4: if(in=1)shop_goodschange(); else printf("请先登陆n"); break; ca