服装销售管理系统

这个是我大一下刚开学在哥哥的帮助下完成的服装销售管理,系统,基本包括:登录界面,管理菜单,其中管理菜单又包括:数据的录入,查询,修改,插入,删除,统计,排序,报表,存储以及退出系统,而各个内容还有一些细化,此处暂不详说,后面会有解释。

话不多说,先上代码,我这个主要分为三部分:

主函数

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "./Cloth.cpp"
#include "./function.cpp"

int main() {
	Cloth *head;
	int f,num1,num2;
	printf("\t\t\t\t\t**************************************\n");
	printf("\t\t\t\t\t*       请选择:1.登录  2.注册       *\n");
	printf("\t\t\t\t\t**************************************\n");
	printf("\t\t\t\t\t您的选择是:");
	scanf("%d",&f);
	if(f==1) {
		printf("\t\t\t\t\t请输入账号:");
		scanf("%d",&num1);
		while(num1!=123) {
			printf("\t\t\t\t\t请输入密码:");
			scanf("%d",&num2);
			printf("\t\t\t\t\t     账号或密码错误,请重新输入!\n");
			printf("\t\t\t\t\t请输入账号:");
			scanf("%d",&num1);
		}
		printf("\t\t\t\t\t请输入密码:");
		scanf("%d",&num2);
		while(num2!=123) {
			printf("\t\t\t\t\t     账号或密码错误,请重新输入!\n");
			printf("\t\t\t\t\t请输入账号:") ;
			scanf("%d",&num1);
			printf("\t\t\t\t\t请输入密码:");
			scanf("%d",&num2);
		}
		printf("\n\t\t\t\t\t\t   ---登录成功!---\n");
		system("pause");
		int n,a=1;	
		while(a>0) {	system("cls");//清屏 
			printf("\n\t\t\t\t\t**************************************\n");
			printf("\t\t\t\t\t*      欢迎访问服装销售管理系统      *\n");
			printf("\t\t\t\t\t*             1.数据录入             *\n");
			printf("\t\t\t\t\t*             2.数据查询             *\n");
			printf("\t\t\t\t\t*             3.数据修改             *\n");
			printf("\t\t\t\t\t*             4.数据插入             *\n");
			printf("\t\t\t\t\t*             5.数据删除             *\n");
			printf("\t\t\t\t\t*             6.数据统计             *\n");
			printf("\t\t\t\t\t*             7.数据排序             *\n");
			printf("\t\t\t\t\t*             8.数据报表             *\n");
			printf("\t\t\t\t\t*             9.数据存储             *\n");
			printf("\t\t\t\t\t*            -1.退出系统             *\n");
			printf("\t\t\t\t\t**************************************\n\n");
			printf("请输入您想选择的功能:");
			scanf("%d",&n);
			//多项选择使用switch 
			switch(n) {
				case 1:
					head=creat();
					system("pause");//暂停 
					break;
				case 2:
					printf("1.按服装颜色查询\n");
					printf("2.按服装颜色和性别查询\n");
					printf("3.按服装编号查询\n");
					printf("请选择操作:\n");
					int choose1;
					scanf("%d",&choose1);
					switch(choose1) {
						case 1: {
							search1(head);
							break;
						}
						case 2: {
							search2(head);
							break;
						}
						case 3: {
							search3(head);
							break;
						}
					}
					system("pause");//暂停 
					break;
				case 3:
					mod(head);
					system("pause");//暂停 
					break;
				case 4:
					insert(head);
					system("pause");//暂停 
					break;
				case 5: 
				del(head);
					system("pause");//暂停 
					break;
				case 6:
					printf("1.按颜色统计\n");
					printf("2.按颜色和性别\n");
					printf("请选择操作:\n");
					int choose3;
					scanf("%d",&choose3);
					if(choose3==1) {
						stastistics(head);
					} else {
						stastistics_group(head);
					}
					system("pause");//暂停 
					break;
				case 7: {
					printf("1.按价格-正序\n");
					printf("2.按价格-倒序\n");
					printf("请选择操作:\n");
					int choose1;
					scanf("%d",&choose1);
					if(choose1==1) {
						printf("排序后服装信息为:\n");
						pop_sortp_ace(head);
					} else {
						printf("排序后服装信息为:\n");
						pop_sortp_desc(head);
					}
				}
				system("pause");//暂停 
				break;
				case 8:
					printf("服装报表如下\n");
					printf("----------------------------------------------------------------------------------------------------------\n");
					printf("服装编号\t服装颜色\t服装性别\t服装销量\t服装价格\t服装款式\t服装品牌\n");
					printf(head);
					printf("----------------------------------------------------------------------------------------------------------\n");					
					system("pause");//暂停 
					break;
				case 9:
					printf("1.数据写入文件\n");
					printf("2.数据读取\n");
					printf("3.数据覆写到文件\n");
					printf("请选择操作:  ");
					int choose4;
					scanf("%d",&choose4);
					if(choose4==1) 
					{
						write_file(head);
					} 
					if (choose4==2)
					{
						head = read_file();
					} 
					if (choose4==3)
					{
					    write_file1(head);
					}
					system("pause");//暂停 
					break;
				case -1:
					a=-1;
					printf("\n*************感谢您的使用*************\n") ;
					printf("*************    END     *************\n\n");
					break;
				default:
					printf("输入错误,请重新选择\n");
			}
		}
		system("pause");//暂停 
	}

	return 0;
};

函数部分:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>


Cloth *creat() {                                 //录入数据 (创建服装链表)

	Cloth *head,*q,*p;//定义指针
	head=(Cloth*)malloc(sizeof(Cloth));//为头结点开辟空间(强制类型转换)
	head->next=NULL;//置空头结点指针域
	q=head;//q指针记录头结点的地址
	int id;
	printf("\t请您输入:   服装编号 服装颜色 服装适用性别(m/f) 服装销量 服装价格 服装款式 服装品牌(输入0结束)\n");
	printf("\t\t\t");
	scanf("%d",&id);
	while(id!=0) { //当服装编号为0停止输入循环
		p=(Cloth *)malloc(sizeof(Cloth));
		p->id=id;
		scanf("%s %s %d %f %s %s",p->color,p->sex,&p->count,&p->price,p->style,p->brand);
		p->next=NULL;
		q->next=p;//连接p,q指针
		q=p;//q指针后移
		printf("\t请您输入:   服装编号 服装颜色 服装适用性别(m/f) 服装销量 服装价格 服装款式 服装品牌(输入0结束)\n");
		printf("\t\t\t");
		scanf("%d",&id);
	}
	return head;//返回链表head节点
}

void printf(Cloth *head) {                       //输出数据
	Cloth *p=head->next;
	while(p) { //当p到达链表最后停止输出
		printf("----------------------------------------------------------------------------------------------------------\n");
		printf("%d\t\t%s\t\t%s\t\t%d\t\t%.2f\t\t%s\t\t%s\n",p->id,p->color,p->sex,p->count,p->price,p->style,p->brand);
		p=p->next;
	}
}

void insert(Cloth *head) {                       //插入数据
	int id,no,flag=1,id1;
	//flag--判断指针是否到达指定节点
	printf("请您输入要插入服装的信息:\n");
	printf("服装编号(输入0退出):   ");
	scanf("%d",&id);
	Cloth *p,*q,*r;
	while(id!=0) {
		r=(Cloth*)malloc(sizeof(Cloth));
		r->next=NULL;
		r->id=id;
		printf("请您继续输入:服装颜色 服装适用性别(m/f) 服装销量 服装价格 服装款式 服装品牌\n");
		scanf("%s %s %d %f %s %s",r->color,r->sex,&r->count,&r->price,r->style,r->brand);
		q=head;
		p=q->next;
		printf("请选择您想插入的方式:\n");
		printf("1.插在头部\n2.插在尾部\n3.插在指定编号之后\n");
		printf("\n请输入您的选择:  ");
		scanf("%d",&no);
		if(no==1) { //头插
			q->next=r;
			r->next=p;
			//插入指针r
			printf("插入成功!\n") ;
		}
		if(no==2) { //尾插
			while(head->next!=NULL) {
				q=q->next;
				p=p->next;
				if(q->next==NULL) {
					p=NULL;
					q->next=r;
					r->next=NULL;
					flag=0;
					break;
				}
			}
			if(flag) {
				r->next==p;
				q->next=r;
			}
			printf("插入成功!\n") ;
		}
		if(no==3) { //任意位置
			printf("请输入您想插在哪个编号之后:  ");
			scanf("%d",&id1);
			while(q->id!=id1) {
				q=q->next;
				p=p->next;
				if(q->id==id1) {
					flag=1;
					break;
				}
			}
			if(flag==1) {
				q->next=r;
				r->next=p;
				printf("插入成功!\n");
			} else {
				printf("未找到该编号,无法插入\n");
			}
		}
		printf("请您输入继续要插入的服装编号:(输入0退出)");
		scanf("%d",&id);
	}
	
					printf("\n添加后所有服装信息为\n");
					printf("----------------------------------------------------------------------------------------------------------\n");
					printf("服装编号\t服装颜色\t服装适用性别\t服装销量\t服装价格\t服装款式\t服装品牌\n");
					printf(head);
}

void del(Cloth *head) {                          //删除数据
	Cloth *p,*q;
	int no2,flag=0,no3;
	//选项 1中,flag确定是否找到并删除目标节点
	//选项 2中,flag代表找到符合条件的服装的个数
	p=head;
	q=head->next;
	printf("请选择您想删除的服装相关属性:\n1.编号      2.颜色 \n");
	printf("您的选择是: ");
	scanf("%d",&no2);
	if(no2==1) {
		int b;
		printf("请输入您想删除的服装编号: ");
		scanf("%d",&b);
		while(q!=NULL) {
			if(q->id==b) {
				p->next=q->next;//断开q节点
				free(q);//释放q节点内存
				q=NULL;//置空q指针防止出现野指针
				printf("删除成功!\n");
				flag=1;//已经找到目标节点并删除
				break;
			} else {
				p=p->next;
				q=q->next;
				flag=0;//现在还未找到目标节点
			}
		}
		if(flag==0) { //指针到达尾节点也没找到并删除目标节点
			printf("未查询到该服装编号\n");
		}
	}
	if(no2==2) {
		Cloth *p,*q;
		char color1[20];
		int flag=0;//初始化找到符合条件的服装个数为 0
		printf("请输入您要删除的服装颜色:");
		scanf("%s",color1);
		q=head;
		p=head->next;
		while(p!=NULL) {
			if(strcmp(p->color,color1)==0) {
				printf("----------------------------------------------------------------------------------------------------------\n");
				printf("服装编号\t服装颜色\t服装适用性别\t服装销量\t服装价格\t服装款式\t服装品牌\n");
				printf("----------------------------------------------------------------------------------------------------------\n");
				printf("%d\t\t%s\t\t%s\t\t%d\t\t%.2f\t\t%s\t\t%s\n",p->id,p->color,p->sex,p->count,p->price,p->style,p->brand);
				flag++;//每找到一条+1
			}
			p=p->next;
			//此处符合条件的服装可能不止一条
			//所以不论找到与否,继续后移查找,要找出所有符合条件的节点
		}
		if(p==NULL&&flag==0) { //一条也没找到
			printf("未查询到该颜色的服装\n");
		}
		if(p==NULL&&flag==1) { //只找到一条,可以确定,直接删除
			p=head;
			q=head->next;
			while(q!=NULL) {
				if(strcmp(q->color,color1)==0) {
					p->next=q->next;//断开q节点
					free(q);//释放q节点内存
					q=NULL;//置空q指针防止出现野指针
					printf("删除成功!\n");
					break;
				} else {
					p=p->next;
					q=q->next;
				}
			}
		}
		if(p==NULL&&flag>1) { //找到不止一条,无法确定具体删除哪一条
			printf("颜色为 %s 的服装有 %d 件\n",color1,flag);
			p=head;
			q=head->next;
			int b;
			printf("请输入您想删除的服装编号: ");//进一步选择确定
			scanf("%d",&b);
			flag=0;
			while(q!=NULL) {
				if(strcmp(q->color,color1)==0&&q->id==b) {
					p->next=q->next;
					free(q);
					q=NULL;
					printf("删除成功!\n");
					flag=1;
					break;
				} else {
					p=p->next;
					q=q->next;
					flag=0;
				}
			}
			if(flag==0) {
				printf("未查询到该服装编号\n");
			}
		}
	}
	printf("\n删除后所有服装信息为\n");
	printf("----------------------------------------------------------------------------------------------------------\n");
	printf("服装编号\t服装颜色\t服装适用性别\t服装销量\t服装价格\t服装款式\t服装品牌\n");
	printf(head);
}

void mod(Cloth *head) {                          //修改数据
	int ab,flag=0,id1,id2,count1;
	float price1;
	Cloth *p,*q;
	char color1[20],color2[20],sex1[20],style1[20],style2[20],brand1[20];
	//flag确定找到符合条件的服装个数,初始值为 0
	printf("请输入您想修改的服装的属性:    1.颜色 \t 2.款式\n");
	printf("您的选择是: ");
	scanf("%d",&ab);
	if(ab==1) {
		printf("\n请输入您要修改的服装的颜色:   ");
		scanf("%s",color1);//输入目标颜色
		q=head;
		p=head->next;
		while(p!=NULL) {
			if(strcmp(p->color,color1)==0) { //strcmp函数用于比较两个字符串,此处对比是不是所求颜色
				printf("----------------------------------------------------------------------------------------------------------\n");
				printf("服装编号\t服装颜色\t服装适用性别\t服装销量\t服装价格\t服装款式\t服装品牌\n");
				printf("----------------------------------------------------------------------------------------------------------\n");
				printf("%d\t\t%s\t\t%s\t\t%d\t\t%.2f\t\t%s\t\t%s\n",p->id,p->color,p->sex,p->count,p->price,p->style,p->brand);
				flag++;//每找到一条+1
			}
			p=p->next;//不论找到与否,继续后移查找,要找出所有符合条件的节点
		}
		if(p==NULL&&flag==0) {
			printf("\n未查询到该颜色的服装!\n");
		}
		if(p==NULL&&flag==1) { //只找到一条,直接进行修改
			q=head;
			p=head->next;
			while(p!=NULL) {
				if(strcmp(p->color,color1)==0) {
					printf("\n请您重新录入(修改)服装信息:\n");
					printf("服装编号 服装颜色 服装性别 服装销量 服装价格 服装款式 服装品牌\n");
					scanf("%d %s %s %d %f %s %s",&id2,color2,sex1,&count1,&price1,style1,brand1);
					p->id=id2;
					strcpy(p->color,color2);//strcpy比较字符串
					strcpy(p->sex,sex1);
					strcpy(p->style,style1);
					strcpy(p->brand,brand1);
					p->count=count1;
					p->price=price1;
					break;
				} else
					p=p->next;
			}
			if(p==NULL)
				printf("\n未查询到该服装编号!\n");
		}
		if(p==NULL&&flag>1) { //查找到符合条件的信息不止一条
			printf("颜色为 %s 的服装有 %d 件\n",color1,flag);
			printf("\n请输入您想修改的服装编号: ");
			scanf("%d",&id1);
			q=head;
			p=head->next;
			while(p!=NULL) {
				if(p->id==id1) {
					printf("\n请您重新录入(修改)服装信息:\n");
					printf("服装编号 服装颜色 服装性别 服装销量 服装价格 服装款式 服装品牌\n");
					scanf("%d %s %s %d %f %s %s",&id2,color2,sex1,&count1,&price1,style1,brand1);
					p->id=id2;
					strcpy(p->color,color2);//strcpy比较字符串
					strcpy(p->sex,sex1);
					strcpy(p->style,style1);
					strcpy(p->brand,brand1);
					p->count=count1;
					p->price=price1;
					break;
				} else
					p=p->next;
			}
			if(p==NULL)
				printf("\n未查询到该服装编号!\n");
		}
	}
	if(ab==2) {
		printf("\n请输入您要修改的服装的款式:   ");
		scanf("%s",style1);//输入目标款式
		q=head;
		p=head->next;
		while(p!=NULL) {
			if(strcmp(p->style,style1)==0) { //strcmp函数用于比较两个字符串,此处对比是不是所求颜色
				printf("----------------------------------------------------------------------------------------------------------\n");
				printf("服装编号\t服装颜色\t服装适用性别\t服装销量\t服装价格\t服装款式\t服装品牌\n");
				printf("----------------------------------------------------------------------------------------------------------\n");
				printf("%d\t\t%s\t\t%s\t\t%d\t\t%.2f\t\t%s\t\t%s\n",p->id,p->color,p->sex,p->count,p->price,p->style,p->brand);
				flag++;//每找到一条+1
			}
			p=p->next;//不论找到与否,继续后移查找,要找出所有符合条件的节点
		}
		if(p==NULL&&flag==0) {
			printf("\n未查询到该款式的服装!\n");
		}
		if(p==NULL&&flag==1) { //只找到一条,直接进行修改
			q=head;
			p=head->next;
			while(p!=NULL) {
				if(strcmp(p->style,style1)==0) {
					printf("\n请您重新录入(修改)服装信息:\n");
					printf("服装编号 服装颜色 服装性别 服装销量 服装价格 服装款式 服装品牌\n");
					scanf("%d %s %s %d %f %s %s",&id2,color1,sex1,&count1,&price1,style2,brand1);
					p->id=id2;
					strcpy(p->color,color1);//strcpy比较字符串
					strcpy(p->sex,sex1);
					strcpy(p->style,style2);
					strcpy(p->brand,brand1);
					p->count=count1;
					p->price=price1;
					break;
				} else
					p=p->next;
			}
			if(p==NULL)
				printf("\n未查询到该服装编号!\n");
		}
		if(p==NULL&&flag>1) { //查找到符合条件的信息不止一条
			printf("款式为 %s 的服装有 %d 件\n",style1,flag);
			printf("\n请输入您想修改的服装编号: ");
			scanf("%d",&id1);
			q=head;
			p=head->next;
			while(p!=NULL) {
				if(p->id==id1) {
					printf("\n请您重新录入(修改)服装信息:\n");
					printf("服装编号 服装颜色 服装性别 服装销量 服装价格 服装款式 服装品牌\n");
					scanf("%d %s %s %d %f %s %s",&id2,color1,sex1,&count1,&price1,style2,brand1);
					p->id=id2;
					strcpy(p->color,color1);//strcpy比较字符串
					strcpy(p->sex,sex1);
					strcpy(p->style,style2);
					strcpy(p->brand,brand1);
					p->count=count1;
					p->price=price1;
					break;
				} else
					p=p->next;
			}
			if(p==NULL)
				printf("\n未查询到该服装编号!\n");
		}
	}
	printf("\n修改后的服装信息为:\n");
	printf("----------------------------------------------------------------------------------------------------------\n");
	printf("服装编号\t服装颜色\t服装适用性别\t服装销量\t服装价格\t服装款式\t服装品牌\n");
	printf(head);
}

void search3(Cloth* head) {                      //查询服装--编号
	Cloth *p;
	p=head->next;
	int id1;
	printf("请输入你要查找的服装编号:");
	scanf("%d",&id1);
	while(p!=NULL) {
		if(p->id==id1) {
			printf("\n您所查找的服装信息如下:\n");
			printf("----------------------------------------------------------------------------------------------------------\n");
			printf("服装编号\t服装颜色\t服装适用性别\t服装销量\t服装价格\t服装款式\t服装品牌\n");
			printf("----------------------------------------------------------------------------------------------------------\n");
			printf("%d\t\t%s\t\t%s\t\t%d\t\t%.2f\t\t%s\t\t%s\n",p->id,p->color,p->sex,p->count,p->price,p->style,p->brand);
			break;
		} else
			p=p->next;
	}
	if(p==NULL)
		printf("未查询到该服装\n");
}

void search1(Cloth* head) {                      //服装查询--颜色
	Cloth *p;
	char color1[20];
	int flag=0;
	printf("请输入你要查询的服装颜色:");
	scanf("%s",color1);
	p=head->next;
	while(p!=NULL) {
		if(strcmp(p->color,color1)==0) {
			printf("----------------------------------------------------------------------------------------------------------\n");
			printf("服装编号\t服装颜色\t服装适用性别\t服装销量\t服装价格\t服装款式\t服装品牌\n");
			printf("----------------------------------------------------------------------------------------------------------\n");
			printf("%d\t\t%s\t\t%s\t\t%d\t\t%.2f\t\t%s\t\t%s\n",p->id,p->color,p->sex,p->count,p->price,p->style,p->brand);
			flag=1;
		}
		p=p->next;
	}
	if(p==NULL&&flag==0)
		printf("未查询到该服装\n");
}

void search2(Cloth* head) {                      //服装查询--颜色和性别
	Cloth *p;
	int flag=0;
	char color2[20],sex2[20];
	printf("输入你想要查询服装颜色和性别: ");
	scanf("%s %s",color2,sex2);
	p=head->next;
	while(p!=NULL) {
		if(strcmp(p->color,color2)==0&&strcmp(p->sex,sex2)==0) {
			printf("----------------------------------------------------------------------------------------------------------\n");
			printf("服装编号\t服装颜色\t服装适用性别\t服装销量\t服装价格\t服装款式\t服装品牌\n");
			printf("----------------------------------------------------------------------------------------------------------\n");
			printf("%d\t\t%s\t\t%s\t\t%d\t\t%.2f\t\t%s\t\t%s\n",p->id,p->color,p->sex,p->count,p->price,p->style,p->brand);
			flag=1;
		}
		p=p->next;
	}
	if(p==NULL&&flag==0)
		printf("未查询到该商品\n");
}

void stastistics_group(Cloth *head) {            //统计颜色和性别相同的服装个数
	char color2[20],sex2[20];
	printf("输入你想要查询服装颜色和性别:");
	scanf("%s %s",color2,sex2);

	int count=0;
	Cloth *p;
	p=head->next;
	while(p!=NULL) {
		if(strcmp(p->color,color2)==0&&strcmp(p->sex,sex2)==0) {
			count++;
		}
		p=p->next;
	}
	if(count !=0) {
		printf("颜色:%s 且 性别:%s 的数量为:%d \n",color2,sex2,count);
	} else {
		printf("未查询到该商品\n");
	}
}

void stastistics(Cloth *head) {                  //统计颜色相同的服装个数
	char color2[20];
	printf("输入你想要查询服装的颜色:");
	scanf("%s",color2);

	int count=0;
	Cloth *p;
	p=head->next;
	while(p!=NULL) {
		if(strcmp(p->color,color2)==0) {
			count++;
		}
		p=p->next;
	}
	if(count !=0) {
		printf("颜色:%s 的数量为:%d \n",color2,count);
	} else {
		printf("未查询到该商品\n");
	}
}

Cloth* read_file() {                             //读取文件
	Cloth *head, *q;
	head=(Cloth*)malloc(sizeof(Cloth));
	head->next=NULL;
	q=head;
	FILE *fp;//定义一个文件指针 
	char ch;
	fp = fopen("data.txt","r");//打开名字为tata.txt的文件
	if(fp==NULL) {
		printf("打开文件错误\n");
		return head;
	}
	while(!feof(fp)) //检查文件是否读取完毕,即文件指针到达末尾 
	{
		Cloth *node =(Cloth *)malloc(sizeof(Cloth));
		fscanf(fp,"%d %s %s %d %f %s %s",&node->id,node->color,node->sex,&node->count,&node->price,node->style,node->brand);
		//fscanf--格式化输入函数; gets--文本输入函数; fgets--字符输入函数 
		node->next = NULL;
		q->next=node;//node,q节点连接
		q=node;//q指针后移->next=node;
	}
	fclose(fp);//关闭文件
	//int fclose(FILE *fp); 
	printf("---读取文件完毕---\n");
	return head;
}

void write_file(Cloth *head) {                   //写入文件
	FILE *fp;
	if (!(fp = fopen("data.txt","a"))) {//打开文件
		printf("打开文件失败!");
	}
	Cloth *p;
	p=head->next;
	while(p!=NULL) {
		//将数据写入文件
		fprintf(fp,"\n");
		fprintf(fp,"%d %s %s %d %f %s %s",p->id,p->color,p->sex,p->count,p->price,p->style,p->brand);
		p=p->next;
	}
	fclose(fp);//写入完毕,关闭文件
	printf("---数据写入完毕---\n");
}

void write_file1(Cloth *head) {                   //覆写文件
	FILE *fp;
	if (!(fp = fopen("data.txt","w"))) {//打开文件并覆写
		printf("打开文件失败!");
	}
	Cloth *p;
	p=head->next;
	while(p!=NULL) {
		//将数据写入文件
		fprintf(fp,"\n");
		fprintf(fp,"%d %s %s %d %f %s %s",p->id,p->color,p->sex,p->count,p->price,p->style,p->brand);
		p=p->next;
	}
	fclose(fp);//写入完毕,关闭文件
	printf("---数据覆写完毕---\n");
}


 void pop_sortp_ace(Cloth *head) {                //冒泡排序--价格-正序
//排序中不改变头结点指针值,只修改指针内容head->next的值 
	Cloth *pre,*p,*tail,*t;
	tail=NULL;//置空尾节点 
	while((head->next)!=tail) //没有到达最后则一直循环 
	{
	    pre=head;//临时头结点 
		p=head->next;		
		t=p->next; 
		while(p->next!=tail)//头结点未赋值,所以从head->next开始 
		 {
			if((p->price)>(t->price)) {
				//交换节点 
				pre->next=t;
				p->next=t->next;
				t->next=p;
			}
			else{
			    p=p->next;
			}
			t=p->next;
			//p,t如果交换了节点,p已经后移了,否则p在else里后移,所以t赋值p->next就行了 
			pre=pre->next;
		}
		tail=p;
	}
	printf("服装编号\t服装颜色\t服装适用性别\t服装销量\t服装价格\t服装款式\t服装品牌\n");
	printf(head);
}

void pop_sortp_desc(Cloth *head) {               //冒泡排序--价格-倒序
	Cloth *pre,*p,*tail,*t;
	tail=NULL;//置空尾节点 
	while((head->next)!=tail) //没有到达最后则一直循环 
	{
	    pre=head;//临时头结点 
		p=head->next;		
		t=p->next; 
		while(p->next!=tail)//头结点未赋值,所以从head->next开始 
		 {
			if((p->price)<(t->price)) {
				//交换节点 
				pre->next=t;
				p->next=t->next;
				t->next=p;
			}
			else{
			    p=p->next;
			}
			t=p->next;
			//p,t如果交换了节点,p已经后移了,否则p在else里后移,所以t赋值p->next就行了 
			pre=pre->next;
		}
		tail=p;
	}
	printf("服装编号\t服装颜色\t服装适用性别\t服装销量\t服装价格\t服装款式\t服装品牌\n");
	printf(head);
}

结构体部分:

 //创建结构体及其成员
typedef struct Cloth {
	int id;
	char color[20];
	char sex[20];
	int count;
	float price;
	char style[20];
	char brand[20];
	struct Cloth *next;//指针域
} Cloth;//结构体定义为Cloth 

三部分之间彼此调用实现,我这个是在Dev C++上运行的。

我们要求实现存储数据,我存了51组,放在另一个文件夹里,如下:

1 red f 2000 199.000000 dress LILY
2 white m 3879 115.000000 hoodie Anta
3 blue m 4890 278.000000 hoodile Goldlion
5 white f 4030 130.000000 jacket NIKE
6 black m 5601 99.000000 shirt HLA
7 pink m 986 148.000000 sweater Loro
8 gray m 4729 78.000000 vest Goldlion
9 brown m 1000 200.000000 coat HLA
10 brown m 4598 188.000000 sweater Pringle
11 pink m 4465 210.000000 coat ROMON
12 pink f 2093 225.000000 dress ONLAY
13 white f 8799 300.000000 uniform HODO
15 white m 9820 220.000000 blouse LINING
16 gray m 8231 299.000000 uniform HODO
17 green f 2341 188.000000 blouse UNIQLO
18 orange f 998 100.000000 pants SEPTWOLVES
19 orange m 4022 209.000000 jeans HLA
20 black m 4387 400.000000 suit Goldlion
21 black m 8793 155.000000 vest SEPTWOLVES
22 pink f 1298 155.500000 jeans Loro
23 pink m 8928 240.000000 suit SEPTWOLVES
25 black f 3490 157.000000 hoodie ADIDAS
26 black f 5894 190.000000 blouse LEDIN
27 red f 1893 145.000000 hoodie Tonlion
28 gray f 1932 95.000000 skirt LINING
29 blue f 2840 175.000000 blouse ONLY
30 blue f 4893 204.000000 coat PEACEBIRD
31 red m 2938 66.000000 skirt FIRS
32 purple f 1278 88.500000 shirt Levis
33 ivory m 2784 140.000000 hoodie ADIDS
38 ivory f 4789 155.500000 pants BALLANTYNE
40 gray f 6668 199.000000 jeans ROMOM
41 red m 8886 213.000000 jacket ADIDAS
42 gray m 7901 130.000000 pants HLA
43 brown m 4099 399.000000 suit HLA
45 brown f 8003 286.000000 uniform ROMON
46 brown m 5566 245.000000 sweater BALLANTYNE
47 red m 3994 130.000000 shirt FIRS
48 white m 9994 128.000000 shirt ONLY
49 pink f 4990 80.000000 skirt ONLY
50 yellow m 5656 135.000000 pants Levis
51 orange m 4930 291.000000 uniform ROMON
52 gray m 3444 300.000000 jacket HLA
53 blue f 4803 239.000000 dress PEACEBIRD
55 orange f 9481 133.500000 skirt Versace
56 blue m 2399 300.000000 suit SEVEN
57 blue m 4545 200.000000 coat Goldlion
58 white f 5897 330.000000 dress ONLY
59 red f 2389 120.000000 coat HLA
60 orange m 2379 89.000000 shirt ROMON
120 red f 1000 220.000000 shirt HLA
121 white m 1200 100.000000 coat Firs
122 pink f 1300 230.000000 sweater LiNin

下面是代码的具体功能与使用详解(其实也就是我的实验报告部分复制粘贴,如果有哪里操作不对的可以问我哦):

1.从文件中读取数据

 选择8 数据报表显示读取的数据,共51组,由于空间有限,只截取前面一部分

2.数据修改

  第一组测试数据和对应结果

第二组测试数据和对应结果

 

 第三组测试数据和对应结果

3.数据删除

  第一组测试数据和运行结果

 

  第二组测试数据和运行结果

 

 第三组测试数据和运行结果

 

 4. 数据插入

  第一组测试数据和运行结果

第二组测试数据和运行结果

 

 

第三组测试数据和运行结果

 

  1. 5.数据查询

  第一组测试数据和运行结果

 

第二组测试数据和运行结果


第三组测试数据和运行结果

 6.数据录入

  三组测试数据和运行结果

 

 

 

7.数据统计

  第一组测试数据和运行结果

 

第二组测试数据和运行结果

 

 第三组测试数据和运行结果

 

 

 

 

 

 

  • 22
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值