C语言程序设计(课程设计)

《服装销售管理系统》

在大一学习完学校要求的C语言程序设计的课程设计之后,在学期末有着一个课程设计,就是在练习之前课上的理论知识之后,将上课学习到的这些付诸实践,完成一个数据信息管理系统。由于之前粗略使用C写过图书管理系统,所以这次选择了服装管理系统,用来接触一些较新的东西。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <windows.h>
#define KEY 0x86typedef struct Adm* List1;
typedef struct Clo* List2;
typedef struct Vip* List3;
struct Adm//管理员信息包括  名字  密码
{char nam[20],password[20];struct Adm* next;
};
struct Clo//服装信息包括   品牌 名字 编号 尺寸 颜色 价格 总数
{char brand[20],nam[20],size[20],color[20];float price;int amount,num;struct Clo* next;
};
struct Vip//会员信息包括    姓名 电话 积分
{char nam[20],phone[20];float score; int num;          //会员号自动分配 struct Vip* next;
};
void enter0();                      //登陆界面
void Vis_window();                  //游客界面
void Adm_enter();                   //管理员录入
void Adm_change();                  //管理员修改
void Adm_load();                    //管理员登录 1
void Adm_manage();                  //管理员管理界面 2
void Clo_manage();                  //服装管理界面 3
void Clo_add();                     //服装添加
void Clo_find();                    //服装信息查询
void Clo_finding();                 //当前条件下深度查询
void Clo_change();                  //服装信息改变
int Clo_stat();                     //服装种类数目统计
void Vip_manage();                  //会员管理界面 4
void Vip_enter();                   //会员信息录入
int Vip_stat();                     //会员数统计
void Vip_find();                    //会员信息查询
void Vip_finding();                 //当前条件下深查
void Sale_system();                 //销售系统管理界面 5
void Sale_list();                   //所有服装显示
void Sale_window();                 //销售窗口
int Sale_stat();                    //销售服装种类数
void Use_history();                 //使用记录
void Data_sort();                   //本次销售排序 void Pro_bar()///进度条程序
{system("cls");char arr[50] = {'\0'};const char *p = "|/-\\";memset(arr,0,sizeof(arr));int n = 50,i = 0;while(i<=n){arr[i]= '=';printf("\t\t\t\t[%-50s][%d%%][%c]\r",arr,i*2,p[i%4]);fflush(stdout);i++;usleep(20000);}printf("\n");
}
void Mas_int()///关于
{MessageBox(NULL, TEXT("名称:服装销售系统\n学校:****大学\n作者:****"), TEXT("关于"), MB_OK);}
void enter()///进入界面
{Pro_bar();system("cls");int x0;char name[20];printf("\t\t\t\t  ***************程序主界面*****************\n");printf("\n");printf("\t\t\t\t  ******************************************\n");printf("\n");printf("\t\t\t\t  ********     1.管理员界面@_@   ***********\n");printf("\n");printf("\t\t\t\t  ********      2.游客界面@_@    ***********\n");printf("\n");printf("\t\t\t\t  ********     3.退出该程序@_@   ***********\n");printf("\n");printf("\t\t\t\t  ******************************** 0.关于 **\n");printf("\n");printf("\t\t\t\t  ******************************************\n");printf("\t\t\t\t  ") ;scanf("%d",&x0);switch (x0){case 0:Mas_int(); enter();break;case 1:enter0();break;case 2:Vis_window();break;case 3:Pro_bar(); system("cls");exit(0);break;default :printf("\t\t\t\t  未被定义,按任意键返回当前\n") ;getch();system("cls"); enter();}
}
void Vis_window()///游客进入窗口
{system("cls");int x0;char name[20];printf("\t\t\t\t  ****************游客界面******************\n");printf("\n");printf("\t\t\t\t  ******************************************\n");printf("\n");printf("\t\t\t\t  *********     1.服装查找@_@    ***********\n");printf("\n");printf("\t\t\t\t  *********     2.服装购买@_@    ***********\n");printf("\n"); printf("\t\t\t\t  *********     3.返回上层@_@    ***********\n");printf("\n"); printf("\t\t\t\t  ******************************************\n");printf("\t\t\t\t  ") ;scanf("%d",&x0);switch (x0){case 1:Clo_find(x0);break;case 2:Sale_window();break;case 3:enter(); break;default :printf("\t\t\t\t  未被定义,按任意键返回上层\n") ;getch();system("cls"); enter();}
}
void enter0()///第一界面   登录界面
{system("cls");int x0;char name[20];printf("\t\t\t\t  **************管理员主界面****************\n");printf("\n");printf("\t\t\t\t  ******************************************\n");printf("\n");printf("\t\t\t\t  ********     1.添加管理员@_@   ***********\n");printf("\n");printf("\t\t\t\t  ********     2.管理员修改@_@   ***********\n");printf("\n");printf("\t\t\t\t  ********     3.管理员登录@_@   ***********\n");printf("\n");printf("\t\t\t\t  ********     4.返回上一层@_@   ***********\n");printf("\n");printf("\t\t\t\t  ******************************************\n");printf("\t\t\t\t  ") ;scanf("%d",&x0);switch (x0){case 1:Adm_enter();break;case 2:Adm_change();break;case 3:Adm_load();break;case 4:enter(); break;default :printf("\t\t\t\t  未被定义,按任意键返回上层\n") ;getch();system("cls"); enter0();}
}
void Adm_enter()///管理员录入
{system("cls");FILE *fp;int i,j=0,m;char nam[20],nam0[20],psword[20],psword0[20];fp = fopen("Adm_list.txt","r");if(fp == NULL){j=1;fp = fopen("Adm_list.txt","a");} fclose(fp);printf("\t\t\t\t  输入管理员名:");scanf("%s",nam);if(j==0);{fp = fopen("Adm_list.txt","r");while(!feof(fp)){fscanf(fp," %s %s\n",nam0,psword0);{if (!strcmp(nam0,nam)){printf("\t\t\t\t  已存在该管理员,无需重复录入!\n");printf("\t\t\t\t  任意键返回上层!");getch();fclose(fp);enter0(); }}}}fp = fopen("Adm_list.txt","a");printf("\t\t\t\t  输入密码:"); for(i=0; ;i++){m=0;psword0[i]=getch();if(psword0[i]=='\r'){psword0[i]='\0';break;}if(psword0[i]=='\b'){m=1;psword0[i]='\0';psword0[i-1]='\0';i = i-2;printf("\b \b");}if(m==0) printf("*");}printf("\n\t\t\t\t  请再次输入密码:");for(i=0; ;i++){m=0;psword[i]=getch();if(psword[i]=='\r'){psword[i]='\0';break;}if(psword[i]=='\b'){m=1;psword[i]='\0';psword[i-1]='\0';i = i-2;printf("\b \b");}if(m==0) printf("*");}if(!strcmp(psword0,psword)){for (i=0;i<strlen(psword);i++){psword0[i] = psword[i]^KEY;}fprintf(fp," %s %s\n",nam,psword0);printf("\n\t\t\t\t  录入成功,任意键返回上层!");}else{printf("\n\t\t\t\t  录入失败,密码不一致,任意键返回上层:");       }getch(); fclose(fp);enter0();
}
void Adm_load()///管理员登录
{system("cls");FILE *fp;char nam[20],nam0[20],psword[20],psword0[20];int flag = 0,i,j;fp = fopen("Adm_list.txt","r");if (fp == NULL){printf("\t\t\t\t  尚未创建管理员,任意键创建并录入.");Adm_enter();} printf("\t\t\t\t  输入登录管理员名称:");scanf("%s",nam0);while(!feof(fp)){fscanf(fp, " %s %s\n",nam,psword);if (!strcmp(nam,nam0)){flag = 1;printf("\t\t\t\t  输入密码:");for(i=0; ;i++){j=0;psword0[i]=getch();if(psword0[i]=='\r'){psword0[i]='\0';break;}if(psword0[i]=='\b'){j=1;psword0[i]='\0';psword0[i-1]='\0';i = i-2;printf("\b \b");}if(j==0) printf("*");}for(i=0;i<strlen(psword);i++){psword[i] = psword[i]^KEY;}if(!strcmp(psword,psword0)){Adm_manage();                           //进入管理员管理界面 }else{printf("\n\t\t\t\t  密码错误,任意键返回上层:");getch(); enter0();break;}}}if (flag==0){printf("\t\t\t\t  该管理员未录入,任意键返回上层!");getch();enter0(); }
}
void Adm_change()///管理员修改
{system("cls");printf("\t\t\t\t  *************管理员修改界面***************\n");printf("\n");printf("\t\t\t\t  ******************************************\n");printf("\n");printf("\t\t\t\t  ********     1.管理员删除@_@    **********\n");printf("\n");printf("\t\t\t\t  ********   2.管理员密码修改@_@  **********\n");printf("\n");printf("\t\t\t\t  ********      3.返回上层@_@     **********\n");printf("\n");printf("\t\t\t\t  ******************************************\n");printf("\t\t\t\t  ") ;int x;scanf("%d",&x); system("cls");FILE *fp;List1 head,p1,p2;char i,nam[20],psword[20];int j,l=0,m;fp = fopen("Adm_list.txt","r");if (fp == NULL){printf("\t\t\t\t  尚未录入管理员!\n\t\t\t\t  任意键返回上层");getch();enter0(); }p1 = head = (List1)malloc(sizeof(struct Adm));p1->next = NULL;while(!feof(fp)){p2 = (List1)malloc(sizeof(struct Adm));fscanf(fp," %s %s\n",p2->nam,p2->password);p1->next=p2;p2->next=NULL;p1=p2;       }fclose(fp);if (x==1) {fp = fopen("Adm_list.txt","w");p2 = head->next;printf("\t\t\t\t  要更改的管理员姓名为:");scanf("%s",nam);while(p2){m=0;if(!strcmp(p2->nam,nam)){l=1;printf("\t\t\t\t  是否删除该管理员?\n");printf("\t\t\t\t  回车删除,任意键返回!");i=getch();if (i==13){m=1;p1 = p2;p2 = p2->next;free(p1);}}fprintf(fp," %s %s\n",p2->nam,p2->password);p2 = p2->next;}fclose(fp);}else if(x==2){fp = fopen("Adm_list.txt","w");p2 = head->next;printf("\t\t\t\t  要更改的管理员姓名为:");scanf("%s",nam);while(p2){if(!strcmp(p2->nam,nam)){l=1;printf("\n\t\t\t\t  存在该管理员,继续输入将覆盖原密码");for(j=0; ;j++){psword[j]=getch();if(psword[j]=='\r'){psword[j]='\0';break;}printf("*");}strcpy(p2->password,psword);}fprintf(fp," %s %s\n",p2->nam,p2->password);p2 = p2->next;}fclose(fp);}else if(x==3){enter0();} else if(x!=1 && x!=2 && x!=3){printf("\n\t\t\t\t  按键未被定义,任意键返回!");getch();enter0(); }if(l==0){printf("\n\t\t\t\t  该管理员未被录入!\n\t\t\t\t  任意键返回上层"); getch();enter0();}printf("\n\t\t\t\t  操作完成,任意键返回上层!");getch();enter0();
}
void Adm_manage()///第二界面   管理员管理界面
{system("cls");int x1;printf("\t\t\t\t  **************管理员管理界面**************\n");printf("\n");printf("\t\t\t\t  ******************************************\n");printf("\n");printf("\t\t\t\t  **********     1.服装管理@_@   ***********\n");printf("\n");printf("\t\t\t\t  **********     2.会员管理@_@   ***********\n");printf("\n");printf("\t\t\t\t  **********     3.售卖系统@_@   ***********\n");printf("\n");printf("\t\t\t\t  **********     4.返回上层@_@   ***********\n");printf("\n");printf("\t\t\t\t  ******************************************\n");printf("\t\t\t\t  ") ;scanf("%d",&x1);switch (x1){case 1:Clo_manage();break;case 2:Vip_manage();break;case 3:Sale_system();break;case 4:enter0();break;default :printf("\t\t\t\t  未被定义,按任意键返回上层\n") ;getch();system("cls"); Adm_manage();}
}
void Clo_manage()///第三界面   服装管理界面
{system("cls");int x1;printf("\t\t\t\t  ****************服装管理界面**************\n");printf("\n");printf("\t\t\t\t  ******************************************\n");printf("\n");printf("\t\t\t\t  **********     1.服装添加@_@   ***********\n");printf("\n");printf("\t\t\t\t  **********     2.服装查询@_@   ***********\n");printf("\n");printf("\t\t\t\t  **********     3.服装修改@_@   ***********\n");printf("\n");printf("\t\t\t\t  **********     4.返回上层@_@   ***********\n");printf("\n");printf("\t\t\t\t  ******************************************\n");printf("\t\t\t\t  ") ;scanf("%d",&x1);switch (x1){case 1:Clo_add();break;case 2:Clo_find(x1);break;case 3:Clo_change();break;case 4:Adm_manage();break;default :printf("\t\t\t\t  未被定义,按任意键返回上层\n") ;getch();system("cls"); Clo_manage();}
}
void Clo_add()///服装添加函数
{system("cls");FILE *fp;char i=13;int n; List2 head,p1,p2;p1 = head = (List2)malloc(sizeof(struct Clo));head->next = NULL;fp = fopen("Clo_list.txt","a");n = Clo_stat();printf("\t\t\t\t  请按照以下格式录入服装信息:\n");while(i==13){p2 = (List2)malloc(sizeof(struct Clo));printf("\t\t\t\t  品牌    名称     尺寸     颜色     价格     总数\n\t\t\t\t  ");scanf("%s %s %s %s %f %d",p2->brand,p2->nam,p2->size,p2->color,&p2->price,&p2->amount);p2->num = n;p1->next = p2;p2->next = NULL;p1 = p2; printf("\t\t\t\t  是否继续输入?回车继续输入,任意键返回上层!\n");i=getch();n++;}p2 = head->next;while(p2){fprintf(fp," %d %s %s %s %s %f %d\n",p2->num,p2->brand,p2->nam,p2->size,p2->color,p2->price,p2->amount);p2 = p2->next;}fclose(fp);Clo_manage();}
void Clo_find(int u)///服装查找函数
{system("cls");Sale_list(); FILE *fp;List2 head,p1,p2;char key1[20];p1 = head = (List2)malloc(sizeof(struct Clo));head->next = NULL;fp = fopen("Clo_list.txt","r");if (fp == NULL ){printf("\t\t\t\t  尚未创建服装目录,任意键返回!");getch(); Clo_manage();}while(!feof(fp)){p2 = (List2)malloc(sizeof(struct Clo));fscanf(fp," %d %s %s %s %s %f %d\n",&p2->num,p2->brand,p2->nam,p2->size,p2->color,&p2->price,&p2->amount);p1->next=p2;p2->next=NULL;p1=p2;}fclose(fp);printf("\t\t\t\t  输入查询条件,可选择 名字 品牌 尺寸 颜色或者关键字\n\t\t\t\t  ");scanf("%s",key1);Clo_finding(key1,head,u);
}
void Clo_finding(char* key,List2 headold,int u)///多条件查找
{system("cls");char i,keyy[20];int j=0;List2 p,head,p1,p2;p = headold->next;p1 = head = (List2)malloc(sizeof(struct Clo));head->next = NULL;while (p){if(!strcmp(p->size,key) ||!strcmp(p->color,key) ||!strcmp(p->brand,key) ||!strcmp(p->nam,key) ||strstr(p->nam,key) ||strstr(p->brand,key)){j=1;printf("\n\t\t\t\t  *********************************************************************\n");printf("\n\t\t\t\t  编号      品牌           名称      尺寸      颜色      价格      总数\n");printf("\t\t\t\t  %-10d%-15s%-10s%-10s%-10s%-10.2f%-10d\n",p->num,p->brand,p->nam,p->size,p->color,p->price,p->amount);p2 = (List2)malloc(sizeof(struct Clo));strcpy(p2->brand,p->brand);strcpy(p2->nam,p->nam);strcpy(p2->size,p->size);strcpy(p2->color,p->color);p2->num = p->num;p2->price = p->price;p2->amount = p->amount;p2->next = NULL;p1->next = p2;p1 = p2;p2=p2->next;}p=p->next;}if(j==0){printf("\t\t\t\t  无对应服装,任意键返回上层!");getch();if(u==2)Clo_manage(); elseVis_window();}printf("\n\t\t\t\t  是否继续查询,回车在当前条件下继续查询,任意键返回上层\n\t\t\t\t  ");i = getch();if (i==13){printf("输入查询条件,可选择 名字 编号 尺寸 颜色\n\t\t\t\t  ");scanf("%s",keyy);Clo_finding(keyy,head,u);} if(u==2)Clo_manage(); elseVis_window();}
void Clo_change()///服装修改函数
{system("cls");printf("\t\t\t\t  **************服装修改界面****************\n");printf("\n");printf("\t\t\t\t  ******************************************\n");printf("\n");printf("\t\t\t\t  **********     1.服装删除@_@    **********\n");printf("\n");printf("\t\t\t\t  **********   2.服装数据修改@_@  **********\n");printf("\n");printf("\t\t\t\t  **********     3.返回上层@_@    **********\n");printf("\n");printf("\t\t\t\t  ******************************************\n");printf("\t\t\t\t  ") ;int x,y,m,l;scanf("%d",&x); system("cls");FILE *fp;fp = fopen("Clo_list.txt","r");List2 head,p1,p2;char i,key[20];p1 = head = (List2)malloc(sizeof(struct Clo));head->next = NULL;   while(!feof(fp)){p2 = (List2)malloc(sizeof(struct Clo));fscanf(fp," %d %s %s %s %s %f %d\n",&p2->num,p2->brand,p2->nam,p2->size,p2->color,&p2->price,&p2->amount);p1->next=p2;p2->next=NULL;p1=p2;}    if (x==1) {fp = fopen("Clo_list.txt","w");p2 = head->next;printf("\t\t\t\t  要更改的服装姓名为:");printf("\t\t\t\t  如果遗忘相关信息可先返回上层查找!\n回车返回上层,任意键继续!");i = getch();if (i==13) Clo_manage();scanf("%s",key);while(p2){m=0;if(!strcmp(p2->nam,key)){l=1;printf("\t\t\t\t  是否删除该服装相关信息?\n");printf("\t\t\t\t  回车删除,任意键返回!");i=getch();if (i==13){m=1;p1 = p2;p2 = p2->next;free(p1);}}fprintf(fp," %d %s %s %s %s %f %d\n",p2->num,p2->brand,p2->nam,p2->size,p2->color,p2->price,p2->amount);p2 = p2->next;}fclose(fp);}else if(x==2){fp = fopen("Clo_list.txt","w");p2 = head->next;printf("\t\t\t\t  要更改的服装姓名为:");printf("\t\t\t\t  如果遗忘相关信息可先返回上层查找!\n回车返回上层,任意键继续!");i = getch();if (i==13) Clo_manage();scanf("%s",key);while(p2){if(!strcmp(p2->nam,key)){l=1;printf("\t\t\t\t  目前该服装信息为:\n");printf("\t\t\t\t    编号    品牌    名称     尺寸     颜色     价格     总数\n");printf("\t\t\t\t   %-10d%-10s%-10s %-10s %-10s %-10f %-10d\n",p2->num,p2->brand,p2->nam,p2->size,p2->color,p2->price,p2->amount);printf("\n\t\t\t\t  存在该服装,输入欲更改的条目编号\n");printf("\t\t\t\t  ps:其中 价格只能输入数字,总数只能输入整形数字\n");printf("\t\t\t\t  可改条目有1.名字 2.品牌 3.尺寸 4.颜色 5.价格 6.总数\n");scanf("%d",&y);printf("\t\t\t\t  输入改后数据:");scanf("%s",key);switch(y){case 1:printf("\t\t\t\t  数据变化为%s -> %s",p2->nam,key);strcpy(p2->nam,key);break;case 2:printf("\t\t\t\t  数据变化为%s -> %s",p2->brand,key);strcpy(p2->brand,key);break;case 3:printf("\t\t\t\t  数据变化为%s -> %s",p2->size,key);strcpy(p2->size,key);break;case 4:printf("\t\t\t\t  数据变化为%s -> %s",p2->color,key);strcpy(p2->color,key);break;case 5:y = atoi(key);printf("\t\t\t\t  数据变化为%f -> %f",p2->price,y);p2->price = y;break;case 6:y = atoi(key);printf("\t\t\t\t  数据变化为%d -> %d",p2->amount,y);p2->amount = y;break;default :printf("\t\t\t\t  未被定义,按任意键返回上层\n") ;getch();system("cls"); Clo_manage();                         }}fprintf(fp," %d %s %s %s %s %f %d\n",p2->num,p2->brand,p2->nam,p2->size,p2->color,p2->price,p2->amount);p2 = p2->next;}fclose(fp);}else if(x==3){Clo_manage();      }else if(x!=1 && x!=2 && x!=3){printf("\t\t\t\t  操作未被定义,任意键返回!");getch();Clo_manage(); }if(l==0){printf("\t\t\t\t  该服装未被录入!\n\t\t\t\t  任意键返回上层"); getch();Clo_manage();}printf("\t\t\t\t  操作完成,任意键返回上层!");getch();Clo_manage();
}
int Clo_stat()///服装种类数统计
{FILE *fp;fp = fopen("Clo_list.txt","r");char nam[20],size[20],color[20],brand[20];int amount,sum=0,num;float price;while(!feof(fp)){fscanf(fp," %d %s %s %s %s %f %d",&num,brand,nam,size,color,&price,&amount);sum++;} fclose(fp);return sum;
}
void Vip_manage()///第四界面   会员管理界面
{system("cls");int x1;printf("\t\t\t\t  ****************会员管理界面**************\n");printf("\n");printf("\t\t\t\t  ******************************************\n");printf("\n");printf("\t\t\t\t  **********     1.会员录入@_@   ***********\n");printf("\n");printf("\t\t\t\t  **********     2.信息查询@_@   ***********\n");printf("\n");printf("\t\t\t\t  **********     3.返回上层@_@   ***********\n");printf("\n");printf("\t\t\t\t  ******************************************\n");printf("\t\t\t\t  ") ;scanf("%d",&x1);switch (x1){case 1:Vip_enter();break;case 2:Vip_find();break;case 3:Adm_manage();break;default :printf("\t\t\t\t  未被定义,按任意键返回上层\n") ;getch();system("cls"); Adm_manage();}
}
void Vip_enter()///会员录入
{system("cls");FILE *fp;int i=0,j=0,k=0,num=0;char nam[20]={"********"},nam0[20],phone[20]={"***********"},phone0[20],num0[20];float price=0,l=0;fp = fopen("Vip_list.txt","r");if(fp == NULL){j=1;fp = fopen("Vip_list.txt","a");fprintf(fp," %d %s %s %f\n",num,nam,phone,price);} fclose(fp);printf("\t\t\t\t  输入会员名:");scanf("%s",nam);if(j==0);{fp = fopen("Vip_list.txt","r");while(!feof(fp)){fscanf(fp," %d %s %s %f\n",&num,nam0,phone0,&price);{if (!strcmp(nam0,nam)){i=1;printf("\t\t\t\t  已存在该会员名,请继续输入手机号确认是否为同一人\n");printf("\t\t\t\t  输入手机号:\n\t\t\t\t  ");scanf("%s",phone);if(!strcmp(phone0,phone)){printf("\t\t\t\t  该会员已存在!任意键返回上层!");getch();Vip_manage(); } break;}}}}if (i==0){printf("\t\t\t\t  输入手机号:");scanf("%s",phone);printf("\t\t\t\t  请再次输入手机号:");scanf("%s",phone0); if (strcmp(phone,phone0)){printf("\t\t\t\t  两次手机号码输入不一致,任意键返回上层!");getch();Vip_manage();}}num = Vip_stat();fp = fopen("Vip_list.txt","a");fprintf(fp," %d %s %s %f\n",num,nam,phone,l);fclose(fp);printf("\n\t\t\t\t  录入成功,任意键返回上层!");getch();Vip_manage(); }
int Vip_stat()///会员数统计
{FILE *fp;fp = fopen("Vip_list.txt","r");int sum=0,n;float price;if (fp == NULL){sum = 0;return sum;}char nam[20],phone[20];while(!feof(fp)){fscanf(fp," %d %s %s %f\n",&n,nam,phone,&price);sum++;}fclose(fp);return sum;}
void Vip_find()///会员信息查询
{system("cls");FILE *fp;List3 head,p1,p2;char key1[20];p1 = head = (List3)malloc(sizeof(struct Vip));head->next = NULL;fp = fopen("Vip_list.txt","r");if (fp == NULL ){printf("\t\t\t\t  尚未创建会员目录,任意键返回!");getch(); Vip_manage();}while(!feof(fp)){p2 = (List3)malloc(sizeof(struct Vip));fscanf(fp," %d %s %s %f\n",&p2->num,p2->nam,p2->phone,&p2->score);p1->next=p2;p2->next=NULL;p1=p2;}fclose(fp);printf("\t\t\t\t  输入查询条件,可输入姓名或手机号\n\t\t\t\t  ");scanf("%s",key1);Vip_finding(key1,head);
}
void Vip_use(char *key,float money)///购买时使用
{FILE *fp;int i,j=0,flag = 0;List3 head,p1,p2;fp = fopen("Vip_list.txt","r");p1 = head = (List3)malloc(sizeof(struct Vip));head->next=NULL;while(!feof(fp)){p2 = (List3)malloc(sizeof(struct Vip));fscanf(fp," %d %s %s %f\n",&p2->num,p2->nam,p2->phone,&p2->score);p1->next=p2;p2->next=NULL;p1 = p2;}fclose(fp);fp = fopen("Vip_list.txt","w");p2 = head->next;while (p2){i = 0; if(!strcmp(p2->phone,key)){i=1;flag = 1;fprintf(fp," %d %s %s %f\n",p2->num,p2->nam,p2->phone,money); }if(i==0){fprintf(fp," %d %s %s %f\n",p2->num,p2->nam,p2->phone,p2->score); }p2 = p2->next;}fclose(fp);if(flag == 0){printf("\t\t\t\t  会员未被录入,请录入后下次使用!\n"); }printf("\t\t\t\t  积分成功!");
}
void Vip_finding(char *key,List3 headold)///当前条件深度查询
{system("cls");char i,keyy[20];int j=0;List3 p,head,p1,p2;p = headold->next;p1 = head = (List3)malloc(sizeof(struct Vip));head->next = NULL;while (p){if(!strcmp(p->nam,key) ||!strcmp(p->phone,key)){j=1;printf("\t\t\t\t  编号      姓名       手机号码    积分\n");printf("\t\t\t\t  ----------------------------------------\n");printf("\t\t\t\t  %-10d%-10s %-10s %-10.2f\n",p->num,p->nam,p->phone,p->score);p2 = (List3)malloc(sizeof(struct Vip));p2->num = p->num;strcpy(p2->nam,p->nam);strcpy(p2->phone,p->phone);p2->score = p->score;p2->next = NULL;p1->next = p2;p1 = p2;p2=p2->next;}p=p->next;}if(j==0){printf("\t\t\t\t  无对应会员,任意键返回上层!");getch();Vip_find(); }printf("\n\t\t\t\t  是否继续查询,回车在当前条件下继续查询,任意键返回上层\n");i = getch();if (i==13){printf("\t\t\t\t  输入查询条件,可选择 名字 编号 尺寸 颜色\n");scanf("%s",keyy);Vip_finding(keyy,head);} Vip_manage(); }
void Sale_system()///第五界面   销售管理界面
{system("cls");int x4;printf("\t\t\t\t  ****************销售管理界面**************\n");printf("\n");printf("\t\t\t\t  ******************************************\n");printf("\n");printf("\t\t\t\t  ***********    1.使用记录@_@   ***********\n");printf("\n");printf("\t\t\t\t  ***********  2.销售产品排序@_@ ***********\n");printf("\n");printf("\t\t\t\t  ***********    3.返回上层@_@   ***********\n");printf("\n");printf("\t\t\t\t  ******************************************\n");printf("\t\t\t\t  ") ;scanf("%d",&x4);switch (x4){case 1:Use_history();break;case 2:Data_sort();break;case 3:Adm_manage();break;default :printf("\n\t\t\t\t  未被定义,按任意键返回上层\n") ;getch();system("cls"); Adm_manage();}
}
void Sale_list()///所有服装的罗列
{FILE *fp;printf("\t\t\t\t  当前店铺所有服装信息有:\n") ;printf("\t\t\t\t ***********************************************************************\n");printf("\t\t\t\t *编号      品牌           名称      尺寸      颜色      价格      总数*\n");fp = fopen("Clo_list.txt","r");List2 head,p1,p2;p1 = head = (List2)malloc(sizeof(struct Clo));head ->next = NULL;while(!feof(fp)){p2 = (List2)malloc(sizeof(struct Clo));fscanf(fp," %d %s %s %s %s %f %d\n",&p2->num,p2->brand,p2->nam,p2->size,p2->color,&p2->price,&p2->amount);p1->next=p2;p2->next=NULL;p1=p2;} p2 = head->next;while(p2){printf("\t\t\t\t *---------------------------------------------------------------------*\n");printf("\t\t\t\t *%-10d%-15s%-10s%-10s%-10s%-10.2f%-4d*\n",p2->num,p2->brand,p2->nam,p2->size,p2->color,p2->price,p2->amount);p2 = p2->next;}fclose(fp);printf("\t\t\t\t ***********************************************************************\n");
}
void Sale_window()///销售窗口
{system("cls");Sale_list();FILE *fp1,*fp2;char key[20],j,brand[20],nam[20];int many,i,num,flag=0;float money;List2 head,p1,p2;fp1 = fopen("Clo_list.txt","r");if(fp1 == NULL){printf("\n\t\t\t\t  暂无服装可销售,任意键返回!");getch();Sale_system(); }fp2 = fopen("Sale_history.txt","a");p1 = head = (List2)malloc(sizeof(struct Clo));head->next = NULL;while (!feof(fp1)){p2 = (List2)malloc(sizeof(struct Clo));fscanf(fp1," %d %s %s %s %s %f %d\n",&p2->num,p2->brand,p2->nam,p2->size,p2->color,&p2->price,&p2->amount);p2->next = NULL;p1->next = p2;p1 = p2;}fclose(fp1);printf("\t\t\t\t  输入欲购买服装编号、名称、颜色或品牌:(也可输入名字或品牌关键字)");scanf("%s",key);p2 = head->next;while(p2){flag = 0;if(!strcmp(p2->nam,key) || !strcmp(p2->color,key) || !strcmp(p2->brand,key) ||strstr(p2->brand,key)||strstr(p2->color,key)||strstr(p2->nam,key)||atoi(key) == p2->num){fp1 = fopen("Clo_list.txt","w"); break;}else{flag = 1;}p2 = p2->next;   }if(flag == 1){printf("\t\t\t\t  查无此服装类型,请重新输入查找条件:");getch();Sale_window(); }p2 = head->next;while(p2){i=0;if(!strcmp(p2->nam,key) || !strcmp(p2->color,key) || !strcmp(p2->brand,key) || strstr(p2->nam,key) ||strstr(p2->brand,key) ||atoi(key) == p2->num){printf("\t\t\t\t  该服装信息为:\n\t\t\t\t  编号      品牌           名称      尺寸      颜色      价格      总数\n");printf("\t\t\t\t  %-10d%-15s%-10s%-10s%-10s%-10.2f%-10d\n",p2->num,p2->brand,p2->nam,p2->size,p2->color,p2->price,p2->amount);printf("\t\t\t\t  是否购买?\n\t\t\t\t  回车购买,任意键继续检索该编号、名、称颜色或品牌的服装!\n");j = getch();if(j==13)       {i=1;printf("\t\t\t\t  输入购买数量:");scanf("%d",&many);p2->amount = p2->amount-many;while(p2->amount<0){printf("\t\t\t\t  库存不足,请减少购买数量");p2->amount = p2->amount+many;scanf("%d",&many);if(p2->amount-many<0){printf("\t\t\t\t  不好意思,该服装暂时缺货。\n\t\t\t\t  将返回上层!");getch();Sale_window(); break;}p2->amount = p2->amount-many;}money = many*p2->price; fprintf(fp2," %d %s %s %s %s %.2f %d\n",p2->num,p2->brand,p2->nam,p2->size,p2->color,money,many);   printf("\t\t\t\t  是否使用会员进行积分?\n\t\t\t\t  回车使用,任意键跳过.");j = getch();{if(j==13){printf("\n\t\t\t\t  输入电话号码:"); scanf("%s",key);Vip_use(key,money);}}        }        }fprintf(fp1," %d %s %s %s %s %.2f %d\n",p2->num,p2->brand,p2->nam,p2->size,p2->color,p2->price,p2->amount);if(p2->next==NULL){printf("\n\t\t\t\t  检索完毕,无更多相关信息,\n\n\t\t\t\t  回车重新进行购买,任意键返回!\n\t\t\t\t  "); }p2 = p2->next; }fclose(fp1);fclose(fp2);j = getch();if(j==13){Sale_window();} Vis_window();
}
void Use_history()///使用历史
{FILE *fp1;int i=0,j=1,sum=0,n=Clo_stat();float in_all=0;struct Clo sale_data[n];List2 head, p1 , p2;p1 = head =(List2)malloc(sizeof(struct Clo));head->next = NULL;fp1 = fopen("Sale_history.txt","r");printf("\t\t\t\t  当前销售出的服装及其信息为:\n");printf("\t\t\t\t ************************************************************************\n");printf("\t\t\t\t *编号      品牌       名称      尺寸      颜色      价格      总数     *\n"); while(!feof(fp1)){p2 = (List2)malloc(sizeof(struct Clo));fscanf(fp1," %d %s %s %s %s %f %d\n",&p2->num,p2->brand,p2->nam,p2->size,p2->color,&p2->price,&p2->amount);printf("\t\t\t\t *%-10d%-10s%-10s%-10s%-10s%-10.2f%-10d*\n",p2->num,p2->brand,p2->nam,p2->size,p2->color,p2->price,p2->amount);printf("\t\t\t\t *----------------------------------------------------------------------*\n");sum+=p2->amount;in_all+=p2->price;p2->next = NULL;p1->next = p2;p1 = p2;}printf("\t\t\t\t ************************************************************************\n");printf("\t\t\t\t  总销售量为%d,总销售额为%.2f ",sum,in_all);fclose(fp1);for (i=0;i<n;i++){sale_data[i].num = 0;sale_data[i].price = 0;sale_data[i].amount = 0;strcpy(sale_data[i].nam,"******");strcpy(sale_data[i].size,"******");}p2 = head->next;while(p2){for(i=0;i<n;i++){if(!strcmp(sale_data[i].nam,"******")){strcpy(sale_data[i].nam,p2->nam);strcpy(sale_data[i].brand,p2->brand);strcpy(sale_data[i].color,p2->color);strcpy(sale_data[i].size,p2->size);sale_data[i].num = p2->num;break;}  if(!strcmp(sale_data[i].nam,p2->nam))    {if(p2->num==sale_data[i].num){strcpy(sale_data[i].nam,p2->nam);strcpy(sale_data[i].brand,p2->brand);strcpy(sale_data[i].color,p2->color);strcpy(sale_data[i].size,p2->size);sale_data[i].num = p2->num;break;}else{strcpy(sale_data[i+j].nam,p2->nam);strcpy(sale_data[i+j].brand,p2->brand);strcpy(sale_data[i+j].color,p2->color);strcpy(sale_data[i+j].size,p2->size);sale_data[i+j].num = p2->num;j++;break;}}         }p2 = p2->next;}p2 = head->next;while(p2){for(i=0;i<n;i++){if((p2->num==sale_data[i].num)){sale_data[i].price+=p2->price;sale_data[i].amount+=p2->amount;}}p2 = p2->next;}system("cls"); fp1 = fopen("Sale_clear.txt","w");printf("\n\t\t\t\t  每种服装销售状况为:\n");printf("\t\t\t\t ************************************************************************\n");printf("\t\t\t\t *编号      品牌       名称      尺寸      颜色      价格      总数     *\n");for (i=0;i<n;i++){if(!strcmp(sale_data[i].nam,"******")){break;}fprintf(fp1," %d %s %s %s %s %.2f %d\n",sale_data[i].num,sale_data[i].brand,sale_data[i].nam,sale_data[i].size,sale_data[i].color,sale_data[i].price,sale_data[i].amount);printf("\t\t\t\t *----------------------------------------------------------------------*\n");printf("\t\t\t\t *%-10d%-10s%-10s%-10s%-10s%-10.2f%-10d*\n",sale_data[i].num,sale_data[i].brand,sale_data[i].nam,sale_data[i].size,sale_data[i].color,sale_data[i].price,sale_data[i].amount);}fclose(fp1);printf("\t\t\t\t ************************************************************************\n");printf("\t\t\t\t  任意键返回上层!");getch();Sale_system();
}
int Sale_stat()///记录销售服装种类数
{FILE *fp;fp = fopen("Sale_clear.txt","r");char nam[20],brand[20],size[20],color[20];int amount,sum=0,num;float price;while(!feof(fp)){fscanf(fp," %d %s %s %s %s %f %d\n",&num,brand,nam,size,color,&price,&amount);sum++;} fclose(fp);return sum;
}
void Data_sort()///数据排序
{system("cls"); FILE *fp;fp = fopen("Sale_clear.txt","r");int i=0,j,k,n = Sale_stat();List2 head,p1,p2,l,group[n];p1 = head = (List2)malloc(sizeof(struct Clo));head->next = NULL;while(!feof(fp)){p2 = (List2)malloc(sizeof(struct Clo));group[i] = (List2)malloc(sizeof(struct Clo));fscanf(fp," %d %s %s %s %s %f %d\n",&p2->num,p2->brand,p2->nam,p2->size,p2->color,&p2->price,&p2->amount);group[i] = p2;p2->next = NULL;p1->next = p2;p1 = p2;i++;}fclose(fp);printf("\t\t\t\t  按价格收入排序有:\n");printf("\t\t\t\t ************************************************************************\n");printf("\t\t\t\t *编号      品牌       名称      尺寸      颜色      价格     总数      *\n"); for (j=0;j<n;j++){for (k=0;k<n-1-j;k++){if( group[k]->price < group[k+1]->price ){l = (List2)malloc(sizeof(struct Clo));l=group[k+1];group[k+1]=group[k];group[k]=l;}}     } for(i=0;i<n;i++){printf("\t\t\t\t *%-10d%-10s%-10s%-10s%-10s%-10.2f%-10d*\n",group[i]->num,group[i]->brand,group[i]->nam,group[i]->size,group[i]->color,group[i]->price,group[i]->amount);} printf("\t\t\t\t ************************************************************************\n\n");printf("\t\t\t\t  按销量排序为:\n");printf("\t\t\t\t ************************************************************************\n");printf("\t\t\t\t *编号      品牌       名称      尺寸      颜色      价格     总数      *\n"); l = (List2)malloc(sizeof(struct Clo));for (j=0;j<n;j++){for (k=0;k<n-1-j;k++){if( (group[k]->amount) < (group[k+1]->amount) ){l=group[k+1];group[k+1]=group[k];group[k]=l;}}     }  for(i=0;i<n;i++){printf("\t\t\t\t *%-10d%-10s%-10s%-10s%-10s%-10.2f%-10d*\n",group[i]->num,group[i]->brand,group[i]->nam,group[i]->size,group[i]->color,group[i]->price,group[i]->amount);} printf("\t\t\t\t ************************************************************************\n\n");printf("\t\t\t\t  销量最高的服装信息为:\n");printf("\t\t\t\t ************************************************************************\n");printf("\t\t\t\t *编号      品牌       名称      尺寸      颜色      价格     总数      *\n"); for (i=0;i<3;i++){printf("\t\t\t\t *%-10d%-10s%-10s%-10s%-10s%-10.2f%-10d*\n",group[i]->num,group[i]->brand,group[i]->nam,group[i]->size,group[i]->color,group[i]->price,group[i]->amount);    }printf("\t\t\t\t ************************************************************************\n\n");printf("\t\t\t\t  任意键返回上层!");getch();Sale_system();
}
main()
{ system("color 3F");enter();
}

这是全部代码,有需要流程图之类的可以私聊我这个小萌新的哈。

C语言程序设计课程设计(服装销售管理系统)相关推荐

  1. c语言程序设计课程设计学生信息管理系统,C语言程序设计课程设计报告----学生信息管理系统.doc...

    河南理工大学计算机学院 <C语言程序设计>课程设计报告 题目: 学生信息管理系统 专业: 计算机科学与技术 班级: 计算机XX班 学号: 311009033232 姓名: ***** 日期 ...

  2. c语言程序设计超市会员卡管理系统,C语言程序设计课程设计报告超市水果信息管理系统...

    <C语言程序设计课程设计报告超市水果信息管理系统>由会员分享,可在线阅读,更多相关<C语言程序设计课程设计报告超市水果信息管理系统(28页珍藏版)>请在人人文库网上搜索. 1. ...

  3. C语言链表学生成绩制作成链表,C语言程序设计课程设计基于链表的学生成绩管理系统.doc...

    C语言程序设计课程设计基于链表的学生成绩管理系统 华北科技学院计算机系综合性实验报告 PAGE 第 PAGE 10 页 华北科技学院计算机系综合性实验 实 验 报 告 课程名称 C语言程序设计 实验学 ...

  4. 水果超市c语言程序设计,C语言程序设计课程设计报告-超市水果信息管理系统_精品.doc...

    C语言程序设计课程设计报告-超市水果信息管理系统_精品 西 安 邮 电 大 学 (计算机学院) 高级语言课程设计报告 题 目: 超市水果信息管理系统 专业名称: XXXX 班 级: XXXX 学生姓名 ...

  5. c语言程序设计课程设计水果,C语言程序设计课程设计报告超市水果信息管理系统...

    C语言程序设计课程设计报告超市水果信息管理系统 西 安 邮 电 大 学(计算机学院)高级语言课程设计报告题 目: 超市水果信息管理系统专业名称: XXXX班 级: XXXX学生姓名: XXXX学号(8 ...

  6. C语言程序设计课程设计题目[2023-02-11]

    C语言程序设计课程设计题目[2023-02-11] C语言程序设计课程设计题目 选题说明: 1.以下题目有部分可能功能相近,请同学们可从不同的角度来分析实现. 2.题目描述和要求仅供参考,同学们可以查 ...

  7. java学生选课系统课程设计报告_Java语言程序设计课程设计-学生选课系统

    <Java语言程序设计课程设计-学生选课系统>由会员分享,可在线阅读,更多相关<Java语言程序设计课程设计-学生选课系统(23页珍藏版)>请在人人文库网上搜索. 1.10届 ...

  8. c语言综合程序设计省市邮政编码,《C语言程序设计课程设计报告》_课程教学大纲...

    <<C语言程序设计课程设计报告>_课程教学大纲>由会员分享,可在线阅读,更多相关<<C语言程序设计课程设计报告>_课程教学大纲(6页珍藏版)>请在人人文 ...

  9. 学籍管理c语言程序设计报告,C语言程序设计课程设报告—学籍管理系统.doc

    C语言程序设计课程设报告-学籍管理系统 电子科技大学 C语言课程设计报告 题 目 : 学籍管理系统 院系: 电 子 工 程 学 院 姓名: 石 胡 森 学号: 2013020904005 指导教师:胡 ...

  10. C语言程序设计有pjcj吗,C语言程序设计课程设计实习报告

    <C语言程序设计课程设计实习报告>由会员分享,可在线阅读,更多相关<C语言程序设计课程设计实习报告(22页珍藏版)>请在人人文库网上搜索. 1.长江大学C语言程序设计课程设计实 ...

最新文章

  1. Go 开发关键技术指南 | 敢问路在何方?(内含超全知识大图)
  2. Tabcontrol动态添加TabPage(获取或设置当前选项卡及其属性)
  3. art-template入门(三)之语法
  4. FTP服务器配置固定IP才能访问
  5. 计算机科技想象作文600字,科技想象作文600字四篇
  6. 进度播报|广州地铁七号线全线29台盾构机全部完成始发
  7. unity学习之NGUI做NPC对话
  8. 判断一个正整数是否为2的整数次幂的宏定义
  9. 赛博朋克2077 夜曲余烬电梯无法进入+保镖堵门bug解决方法
  10. 前端html制作中国地图,echarts实现中国地图
  11. 第六十一期:中国农民花3000块,发明史上最牛输入法!曾火遍中国20年
  12. Vue 项目使用 又拍云 云存储服务
  13. xfce-因为面板在 kiosk 模式下运行,所以不允许作为普通用户的您更改面板配置
  14. 实现移动端H5页面调用摄像头
  15. python报错ValueError: Found input variables with inconsistent numbers of samples: [x,y]
  16. 全局变量的优缺点及为什么要少用全局变量
  17. Latex报错 ! Misplaced alignment tab character
  18. win32汇编 MASM03
  19. udp协议提供的是什么服务器,udp协议是什么_有什么用
  20. python中 pip不慎卸载了,重新安装方法

热门文章

  1. js 页面跳转方法 当前页与新增页面
  2. SQLyog通过excel导入数据
  3. 如何清理C盘(小白版)
  4. Python Matplotlib绘制多子图准备训练数据和GIF动画实践
  5. wampserver 安装完后一直橙色的处理
  6. Kubernetes集群中部署Node节点
  7. html,css维护优化,网站CSS代码优化的7个原则
  8. 安装Python 后安装Python-dev
  9. Python实现烟花效果,祝大家2021年,牛年大吉。
  10. Sms开源短信及消息转发器,不仅只转发短信,备用机必备神器