⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 超市库存货品信息管理系统设计.txt

📁 铁道出版社出版的C++的习题源代码
💻 TXT
字号:
//主程序
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
typedef struct com
{
	long int num;
	char name[10];
	int count;
	struct com *next;
}COM;
#define LEN sizeof(COM)
#define PRINT "%-15ld%-15s%-15ld\n",ptr1->num,ptr1->name,ptr1->count
#define CHECK_COUNT	ptr1->count<0
#define CHECK_COUNT2	ptr3->count<0
COM *input();
void print_perf();
COM  *openfile();
COM *insert_perf();
COM *del_perf();
void search();
COM *revise_perf();
COM *pass();
vid save(COM *head);

FILE *fp;
COM *head=NULL;
COM *ptr1=NULL,*ptr2=NULL;
char filename1[20];
char filename2[]={".dat"};

void main()
{
	char message[]={"超市货品库存管理系统使用说明				\n",
			"本系统是一个超市货品库存信息管理系统,您可以在本	\n",
			"系统中输入多类货品信息,系统将以您输入的货品类名作为	\n",
			"文件名保存.						\n",
			"本系统对已保存的货品信息可调出后进行插入,删除,修改	\n",
			"等操作,然后重新保存,同时系统还具有分别按货品号和货品名	\n",
			"进行排序和查找功能.					\n",
			"欢迎您使用货品库存管理系统!"
			};
	char menu[]=   {"*1.输入货品信息				\n",
			"*2.输出全部货品信息				\n",
			"*3.插入货品信息				\n",
			"*4.删除货品信息				\n",
			"*5.修改货品信息				\n",
			"*6.综合排序					\n",
			"*7.综合查找					\n",
			"*8.存盘					\n",		
			"*9.退出					\n"
			};
	int sel;
	textbackground(BLUE);
	textcolor(YELLOW);
	clrscr();
	gotoxy(4,9);
	printf("%s",message);
	gotoxy(10,22);
	printf("按任意键进入主菜单:");
	getch();
	do
	{
		clrscr();
		gotoxy(1,9);
		printf("%s",menu);
		gotoxy(10,20);
		printf("请在0-8中选择:");
		scanf("%d",&sel);	
		switch(sel)
		{
			case 1: head=input();break;
			case 2: print_perf();break;
			case 3: head=insert_perf();break;
			case 4: head=del_perf();break;
			case 5:	/*head=revise_perf();*/
				printf("省略编写,按任意键返回\n");getch();break;
			case 6:	/*head=pass();*/
				printf("省略编写,按任意键返回\n");getch();break;
			case 7: search(); break;
			case 8: save(head);break;
			case 0: break;
		}
	}while(sel!=0);	
}
//输入模块
COM *input()
{
	char string1[]={"货品号"};	
	char string2[]={"货品名"};
	char string3[]={"货品量"};
	int n=1,i=0;
	if((ptr1=(COM *)malloc(LEN))==NULL)
	{
		printf("内存不足,链表创建失败!");	
		getch();
	}
	clrscr();
	printf("请依次按提示输入(货品号为0结束输入):\n");
	do
	{
		printf("请输入第%d个货品的货品号%s:\n",n,string1);
		scanf("%ld",&ptr1->num);flushall();
		if(ptr1->num==0)
		{
			printf("按任意键回上层菜单:");	
			getch();
			free(ptr1);
			return(0);
		}
		printf("请输入第%d个货品的货品名%s:\n",n,string2);
		scanf("%s",ptr1->name);flushall();
		printf("请输入第%d个货品的货品量%s:\n",n,string3);
		scanf("%s",&ptr1->count);flushall();
		if(CHECK_COUNT) printf("请输入有效的货品量!\n");
	}while(CHECK_COUNT);
	while(ptr1!=NULL)
	{
		if(n==1)head=ptr1;
		else ptr2->next=ptr1;
		n++;
		ptr2=ptr1;
		if((ptr1=(COM *)malloc(LEN))==NULL)
		{
			printf("内存不足,链表创建失败!");	
			getch();
		}
		do
		{
			printf("请输入第%d个货品的货品号%s:\n",n,string1);
			scanf("%ld",&ptr1->num);flushall();
			if(ptr1->num==0)
			{
			ptr1=NULL;
			break;
			}
			printf("请输入第%d个货品的货品名%s:\n",n,string2);
			scanf("%s",ptr1->name);flushall();
			printf("请输入第%d个货品的货品量%s:\n",n,string3);
			scanf("%s",&ptr1->count);flushall();
			if(CHECK_COUNT) printf("请输入有效的货品量!\n");
		}while(CHECK_COUNT);
	}
	ptr2->next=NULL;
	gotoxy(10,24);
	printf("已完成货品信息输入,按任意键回上层菜单,请存盘:");	
 	getch();
	return head;
}

//插入模块
COM * insert_perf()
{
	COM *ptr3=NULL;
	char string1[]={"货品号"};	
	char string2[]={"货品名"};
	char string3[]={"货品量"};
	char sell[10];	
	clrscr();
	gotoxy(25,10);
	printf("请输入要插入的货品类名称:");
	head=openfile();
	if(head==NULL) return NULL;
	else
	{
		do
		{
			clrscr();
			printf("请输入插入货品的信息:\n");
			if((ptr3=(COM *)malloc(LEN))==NULL)
			{
				printf("内存不足,链表创建失败!");	
				getch();
			}
			do
			{
				printf("请依次按提示输入:\n");
				printf("请输入货品的货品号%s(大于0):\n",string1);
				scanf("%ld",&ptr3->num);flushall();
				if(ptr3->num<=0)
				{
					printf("输入错误,请重新选择插入选项\n");
					getch();return ;
				}
				printf("请输入货品的货品名%s:\n",string2);
				scanf("%s",ptr3->name);flushall();
				printf("请输入货品的货品量%s:\n",string3);
				scanf("%s",&ptr3->count);flushall();
				if(CHECK_COUNT2) printf("请输入有效的货品量(大于0)!\n");
			}while("CHECK_COUNT2");
			ptr1=head;
			while(ptr1!=NULL)
			{
				ptr2=ptr1;
				ptr1=ptr1->next;
			}
			ptr2->next=ptr3;
			ptr3->next=NULL;
			printf("\n插入成功,是否继续请键入yes 或 no: ");
			scanf("%s",sell);
			clrscr();
		}while(!strcmp(sell,"yes"));
		gotoxy(10,10);
		printf("已插入成功,按任意键返回上层菜单后,请存盘:");
		getch();	
		return head;
}

//删除模块
COM *del_perf()
{
	char name[10];
	char sell[10];	
	int sel;
	int del_num;
	clrscr();
	gotoxy(25,10);
	printf("请输入要删除的货品类名称:");
	head=openfile();
	clrscr();
	if(head==NULL) return NULL;
	else
	   do
	   {
		do
		{
			clrscr();
			gotoxy(5,4);
			printf("请选择输入货品信息:");		
			gotoxy(1,9);
			printf("                     *1.按货品号删除\n");	
			gotoxy(1,10);
			printf("                     *2.按货品名删除\n");
			gotoxy(10,22);
			printf("请在1-2中选择:");	
			scanf("%d",&sel);
			switch(sel)
			{
				case 1:clrscr();
					gotoxy(6,6);
					printf("请输入货品号:");
					scanf("%d",&del_num);break;
				case 2:clrscr();
					gotoxy(6,6);
					printf("请输入货品名:");
					scanf("%d",&name);break;
			}
		}while(sel!=1&&sel!=2);
		ptr1=head;
		if(ptr1->num==del_num||(strcmp(ptr1->name,name)==0)
		{
			head=ptr1->next;
			printf("删除货品信息成功!\n");
		}
		else
		{
			while(ptr1!=NULL&&ptr1->num!=del_num&&strcmp(ptr1->name,name)!=0)
			{
				ptr2=ptr1;
				ptr1=ptr1->next;
			}
			if(ptr1->num==del_num||(strcmp(ptr1->name,name)==0)
			{
				ptr2->next=ptr1->next;
				free(ptr1);	
				printf("删除货品信息成功!\n");
			}
			else printf("\n未找到这个货品的信息!\n\n");
		}
		printf("是否继续进行删除,请键入yes 或no : ");
		scanf("%s",sell);
	  }while(!strcmp(sell,"yes"));
	clrscr();
	gotoxy(10,10);
	printf("已删除成功,按任意键回上层菜单后,请存盘:");	
	getch();
	return head;
}	

//查找模块

void search()
{
	char name[10];
	char sell[10];
	int sel;
	long int sel_num;
	clrscr();
	gotoxy(30,10);
	printf("请输入要查找的货品类名称:");	
	head=openfile();
	if(head==NULL)return;
	else
	    do
	    {
		do
		{
			clrscr();
			gotoxy(5,4);	
			printf("请选择查找方式:");		
			gotoxy(1,9);
			printf("                     *1.按货品号查找\n");	
			gotoxy(1,10);
			printf("                     *2.按货品名查找\n");
			gotoxy(10,22);
			printf("请在1-2中选择:");	
			scanf("%d",&sel);
			switch(sel)
			{
				case 1:clrscr();
					gotoxy(6,6);
					printf("请输入货品号:");
					scanf("%d",&del_num);break;
				case 2:clrscr();
					gotoxy(6,6);
					printf("请输入货品名:");
					scanf("%d",&name);break;
			}
		}while(sel!=1&&sel!=2);	
		ptr1=head;
		while(ptr1!=NULL && ptr1->num!=sel_num && strcmp(ptr1->name,name)!=0)
			ptr1=ptr1->next;
		if(ptr1->num==del_num||(strcmp(ptr1->name,name)==0)
		{
			printf("\n查找货品信息成功!\n\n");
			printf("货品号	货品名	货品量\n");
			printf(PRINT);	
		}
		else
			printf("\n未找到这个货品的信息!\n\n");
		printf("\n是否继续查找,请键入yes 或no :");
		scanf("%s",sell);
	  }while(!strcmp(sell,"yes"));
	gotoxy(10,24);
	printf("按任意键回上层菜单:");
	getch();
}

//输出模块
void print_perf()
{
	int i=1;
	clrscr();
	gotoxy(25,10);
	printf("请输入要输出的货品类名称:");	
	head=openfile();
	if(head==NULL) return ;
	else  clrscr();
	printf("输出结果如下:\n");
	printf("货品号	货品名	货品量\n\n");
	ptr1=head;
	do
	{
		printf(PRINT);
		ptr1=ptr1->next;
		if(i/10==1)
		{
			i=0;
			printf("按任意键换页:");	
			getch();
			clrscr();
			gotoxy(0,6);
			printf("货品号	货品名	货品量\n\n");
		}
		i++;
	}while(ptr1!=NULL);
	gotoxy(10,24);
	printf("按任意键回上层菜单:");	
	getch();
}
//保存模块
void save(COM *head)
{
	clrscr();
	gotoxy(13,13);
	printf("请输入将要存盘的货品类名称(仅限字母与数字):");
	scanf("%s",filename1);
	if((fp=fopen(strcat(filename1,filename2),"wb"))==NULL)
	{
		printf("创建文件失败!");
		getch();
		return;
	}
	ptr1=ptr2=head;
	while(ptr1!=NULL)
	{
		if(fwrite(ptr1,sizeof(COM),1,fp)!=1)	
		{
			printf("向文件输出数据失败!");
			getch();
			return ;
		}
		ptr1=ptr1->next;
	}
	fclose(fp);
	gotoxy(10,24);
	printf("已存盘,按任意键回上层菜单:");
	getch();
}
//截入模块
COM *openfile()
{
	int n=1;
	clrscr();
	scanf("%s",filename1);
	if((fp=fopen(strcat(filename1,filename2),"rb"))==NULL)
	{
		gotoxy(15,13);
		printf("无此名称的货品类,请检查其是否存在,按任意键返回主菜单");
		getch();
		return NULL;
	}	
	if((ptr1=ptr2=(COM *)malloc(LEN))==NULL)
	{
		printf("内存不足,链表创建失败! \n按任意键返回主菜单\n");
		getch();
		return NULL;
	}
	if(fread(ptr1,sizeof(COM),1,fp)!=1)
	{
		printf("从文件输入数据失败!\n按任意键返回主菜单\n");
		getch();
		return NULL;
	}
	if(ptr1->next==NULL)head=ptr1;
	else
	{
		do
		{
			if(n==1)head=ptr1;
			else ptr2->next=ptr1;
			n++;
			ptr2=ptr1;
			if( (ptr1=(COM *)malloc(LEN))==NULL)
			{
				printf("内存不足,链表创建失败! \n按任意键返回主菜单\n");
				etch();
				return NULL;
			}
			if(fread(ptr1,sizeof(COM),1,fp)!=1)
			{
				printf("从文件输入数据失败!\n按任意键返回主菜单\n");
				getch();
				return NULL;
			}
		}while(ptr1->next!=NULL);
		ptr2->next=ptr1;
	}
	fclose(fp);
	return head;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -