超市会员管理系统

这篇具有很好参考价值的文章主要介绍了超市会员管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、需求分析

二、问题描述

三、总体设计

四、详细设计

1)数据类型

2) 函数名

3)登陆界面

4)主界面

5)界面设计

(1)系统说明

(2) 输入会员信息

 (3) 显示会员信息

 (4)查询会员信息

(5) 插入会员信息

(6)删除会员信息

(7)修改会员信息

(8)会员消费或充值

 (9)退出系统

6)主函数

7)其他模块

(1)初始化

 (2)文件管理

(3)会员等级

(4)排序函数

 五、调试与测试

总结



一、需求分析

题目:超市会员管理系统

要求:从分析题目的需求入手,按设计抽象数据类型、 设计算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。

二、问题描述

【问题描述】
超市会员管理基本业务活动包括:对一个会员基本信息的输入、输出、查询、删除、插入等等。试设计一个超市会员管理系统,将上述业务活动借助于计算机系统完成。
【基本要求】:要输出相应界面:链式存储方法实现。
〈1〉每个会员的信息包括:姓名、身份证号、电话、会员等级、优惠政策
〈2〉系统应实现的操作及其功能定义如下:

1.输入:

2. 查找:
3. 插入:
4.删除:
5.显示:

三、总体设计

超市会员管理系统

四、详细设计

1)数据类型

typedef struct
{
	char no[10];//账号 
	char name[10];//姓名 
	char ID[30];//身份证号 
	char phone[16];//电话 
	int money;	//金额 
	char grade[10];//等级 
	char discounts[10]; //折扣 
}VIP;   //单个会员信息 
 
typedef struct node{
    VIP VIP;            //数据域 
    struct node *next;   //指针域 
}VIPNode;   //会员节点 

typedef struct{
    VIPNode *head;  //头指针 
    VIPNode *tail;  //尾指针 
    int count;
}VIPList;     // 会员链表 

2) 函数名

void counts(VIPNode *q);//会员等级 
int menu();   //菜单 
void Instruction();//系统说明 
void initialize(VIPList *L);//初始化链表 
void read(VIPList *L);//从文件中读取 
void input(VIPList *List,int m);  //输入 
void sort(VIPList *L); //排序
void print(VIPList *L); //输出 
void Search(VIPList *L); //查询 
void insert(VIPList *L); //插入 
void Delete(VIPList *L);//删除 
void Modify(VIPList *L);//修改 
void transaction(VIPList *L);//充值或消费 
void save(VIPList *L);//保存 

3)登陆界面

void login()		
{
   char userName[5];
   char password[5];
   int i;
   printf("\n\n   -------------------------------------------欢迎使用-------------------------------------------\n");
   for(i=1;i<4;i++)
   {
        printf("\n             请输入您的用户名:");
        gets(userName);
        printf("\n             请输入您的密码:");
        gets(password);
        if ((strcmp(userName,"000")==0) && (strcmp(password,"123")==0))/*验证用户名和密码*/
        {
        	
            printf("\n   -------------------------------------------登陆成功-------------------------------------------");
            Sleep(500);
            return;
        }
        else
        {
            if(i<3)
            {
                printf("\n           用户名或密码错误,请重新输入!\n");
            }
            else
            {
                printf("\n           您已连续3次将用户名或密码输错,系统将退出!");
                exit(0);
            }
        }
   }
}

4)主界面

int menu()
{      
        system("cls");
        printf("\n\n\t\t----------------------超市会员管理系统------------------------\n");
        printf("\t\t☆☆ 0. 系统说明                                            ☆☆\n\n");
        printf("\t\t☆☆ 1. 输入会员信息                                        ☆☆\n\n");
        printf("\t\t☆☆ 2. 显示会员信息                                        ☆☆\n\n");
        printf("\t\t☆☆ 3. 查询会员信息                                        ☆☆\n\n");
        printf("\t\t☆☆ 4. 插入会员信息                                        ☆☆\n\n");
        printf("\t\t☆☆ 5. 修改会员信息                                        ☆☆\n\n");
        printf("\t\t☆☆ 6. 删除会员信息                                        ☆☆\n\n");
        printf("\t\t☆☆ 7. 会员消费或充值                                      ☆☆\n\n");
		printf("\t\t☆☆ 8. 退出系统                                            ☆☆\n\n");
        printf("\t\t------------------------------------------------------------------\n");
		return 1;
}

5)界面设计

(1)系统说明

void Instruction() //系统说明 
 
{
	printf("\n\t\t          0.欢迎使用系统说明\n");
	printf("\n\t\t          1.请选择菜单上的数字\n");
	printf("\n\t\t          2.修改学生信息后请保存\n");
	printf("\n\t\t          3.谢谢使用\n");
	system("pause");
}

(2) 输入会员信息


void input(VIPList *L,int m)                  
{
	int i;
	for(i=1;i<=m;i++)
	{
		VIPNode *r = (VIPNode *)malloc(sizeof(VIPNode));
		printf("请输入会员的账号:\n");
	    scanf("%s",r->VIP.no);
	    printf("请输入会员的姓名:\n");               
	    scanf("%s",r->VIP.name);
	    printf("请输入会员的身份证号:");
		scanf("%s",r->VIP.ID);
		printf("请输入会员的联系电话:");
		scanf("%s",r->VIP.phone);
		printf("请输入会员的消费金额:");
		scanf("%d",&r->VIP.money);
    	counts(r);
		printf("会员的会员等级:");
		printf("%s\n", r->VIP.grade); 
		printf("会员的优惠政策:");
		printf("%s\n",r->VIP.discounts);
	    //将新节点插进链表尾部(尾插法)
		L->tail->next = r;
		r->next = NULL;
		L->tail = r;   
		L->count++;                                  //指针后移
	}
	printf("会员信息录入完毕!!!\n");
	system("pause");
	
}

 (3) 显示会员信息

void print(VIPList *L)  //输出 
{
	printf("共有%d组会员数据:\n", L->count);
	printf("     |=============================================================================================|\n");
	printf("     | 账 号 | 姓 名 |           身份证号          |   联系电话   | 消费金额 | 会员等级 | 优惠政策 |\n");
	printf("     |---------------------------------------------------------------------------------------------|\n");
	//创建一节点指针指向头节点
	VIPNode *p;
	p = L->head;
	//遍历链表输出
	while (p->next) {
		p = p->next;
		printf("     | %5s | %5s |  %25s  |%14s| %8d | %8s | %8s |\n",p->VIP.no,p->VIP.name,p->VIP.ID,p->VIP.phone,p->VIP.money,p->VIP.grade,p->VIP.discounts);
	}
	printf("     |=============================================================================================|\n");
	system("pause");
}

 (4)查询会员信息

void Search(VIPList *L) //查询 
 
{
	int  item, flag;
	char s1[21];
	printf("\t\t------------------------------------------------------------------\n");
	printf("\t\t☆☆---------------------1.按账号查询-----------------------☆☆\n\n");
	printf("\t\t☆☆---------------------2.按姓名查询-----------------------☆☆\n\n");
	printf("\t\t☆☆---------------------3.按身份证号查询--------------------☆☆\n\n");
	printf("\t\t☆☆---------------------4.按联系电话查询-------------------☆☆\n\n");
	printf("\t\t☆☆---------------------0.退出本菜单-----------------------☆☆\n\n");
	printf("\t\t------------------------------------------------------------------\n");
 
	while (1)
	{
		printf("请选择子菜单编号:");
		scanf("%d", &item);
		VIPNode *p =L->head->next;
		flag = 0;
		switch (item)
		{
			case 1:
				printf("请输入要查询的会员的账号:\n");
				scanf("%s",s1);
				while (p){ 
					if (strcmp(p->VIP.no, s1) == 0)
					{
						flag=1; 
					    printf("     |=============================================================================================|\n");
	                    printf("     | 账 号 | 姓 名 |           身份证号          |   联系电话   | 消费金额 | 会员等级 | 优惠政策 |\n");
	                    printf("     |---------------------------------------------------------------------------------------------|\n");
                        printf("     | %5s | %5s |  %25s  |%14s| %8d | %8s | %8s |\n",p->VIP.no,p->VIP.name,p->VIP.ID,p->VIP.phone,p->VIP.money,p->VIP.grade,p->VIP.discounts);
					}
                    p = p->next;
                }
                if (0 == flag)
					printf("该账号不存在!\n");
				break;
			case 2:
				printf("请输入要查询的会员的姓名:\n");
				scanf("%s", s1);
				//VIPNode *p = L->head->next;
				while (p){
					if (strcmp(p->VIP.name, s1) == 0)
					{
						flag = 1;
						printf("     |=============================================================================================|\n");
	                	printf("     | 账 号 | 姓 名 |           身份证号          |   联系电话   | 消费金额 | 会员等级 | 优惠政策 |\n");
	                	printf("     |---------------------------------------------------------------------------------------------|\n");
                        printf("     | %5s | %5s |  %25s  |%14s| %8d | %8s | %8s |\n",p->VIP.no,p->VIP.name,p->VIP.ID,p->VIP.phone,p->VIP.money,p->VIP.grade,p->VIP.discounts);
					}
					p = p->next;
                }
				if (0 == flag)
					printf("该姓名不存在!\n");
				break;
			case 3:
				printf("请输入要查询的会员的身份证号:\n");
				scanf("%s", s1);
				//VIPNode *p = L->head->next;
				while (p){
					if (strcmp(p->VIP.ID, s1) == 0)
					{
						flag = 1;
						printf("     |=============================================================================================|\n");
	                	printf("     | 账 号 | 姓 名 |           身份证号          |   联系电话   | 消费金额 | 会员等级 | 优惠政策 |\n");
	                	printf("     |---------------------------------------------------------------------------------------------|\n");
                        printf("     | %5s | %5s |  %25s  |%14s| %8d | %8s | %8s |\n",p->VIP.no,p->VIP.name,p->VIP.ID,p->VIP.phone,p->VIP.money,p->VIP.grade,p->VIP.discounts);
					}
					p = p->next;
                }
				if (0 == flag)
					printf("该身份证号不存在!\n");
				break;
			case 4:
				printf("请输入要查询的会员的电话号码:\n");
				scanf("%s", s1);
				//VIPNode *p = L->head->next;
				while (p){
					if (strcmp(p->VIP.phone, s1) == 0)
					{
						flag = 1;
						printf("     |=============================================================================================|\n");
	                	printf("     | 账 号 | 姓 名 |           身份证号          |   联系电话   | 消费金额 | 会员等级 | 优惠政策 |\n");
	                	printf("     |---------------------------------------------------------------------------------------------|\n");
                    	printf("     | %5s | %5s |  %25s  |%14s| %8d | %8s | %8s |\n",p->VIP.no,p->VIP.name,p->VIP.ID,p->VIP.phone,p->VIP.money,p->VIP.grade,p->VIP.discounts);
					}
					p = p->next;
                }
				if (0 == flag)
					printf("该电话号码不存在!\n");
				break;
			case 0:
				return;
			default:
				printf("请在0-4之间选择\n");
		}
 
	}
 
}

(5) 插入会员信息

void insert(VIPList *L)
{
	VIPNode *s = (VIPNode *)malloc(sizeof(VIPNode));
	//键入信息并存到新节点中
        printf("请输入会员的账号:\n");
	    scanf("%s",&s->VIP.no);
	    printf("请输入会员的姓名:\n");               
	    scanf("%s",&s->VIP.name);
	    printf("请输入会员的身份证号:");
		scanf("%s",&s->VIP.ID);
		printf("请输入会员的联系电话:");
		scanf("%s",&s->VIP.phone);
		printf("请输入会员的消费金额:");
		scanf("%d",&s->VIP.money);
    	counts(s);
		printf("会员的会员等级:");
		printf("%s\n", s->VIP.grade); 
		printf("会员的优惠政策:");
		printf("%s\n",s->VIP.discounts);
	    printf("\n");
	//若链表为空,将尾指针指向新节点
	if (L->head == L->tail) {
		L->tail = s;
	}
	//将新节点插进链表头部(头插法)
	s->next = L->head->next;
	L->head->next = s;
	L->count++;
	//输出互动信息
	printf("信息录入成功!\n\n");
	system("pause");
}

(6)删除会员信息

void Delete(VIPList *L) // 删除 
{
	int  flag = 0;
	char s1[LEN + 1];
	VIPNode *p1,*p2; 
	printf("请输入要删除会员的账号:\n");
	scanf("%s", s1);
	if(L->head->next==NULL)
	{
		printf("\n\t\t链表为空");
		return; 
	} 
	p1=L->head->next; 
	while (p1!=NULL&&(strcmp(p1->VIP.no, s1) != 0)) 
	{
		p2=p1;
		p1=p1->next; 
		L->count--; 
	}
	if(strcmp(p1->VIP.no, s1) == 0){
		if(p1==L->head->next)
		    L->head->next=L->head->next->next; 
		else
		   p2->next=p1->next; 
	    printf("删除成功\n"); 
	    L->count--; 
	       
	}else 
		printf("该账号不存在!!!\n");
	system("pause");
}

(7)修改会员信息

void Modify(VIPList *L) //修改 
{
	int i, item, num = -1;
	char s1[LEN + 1], s2[LEN + 1],s3[LEN + 1],s4[LEN + 1];
	printf("请输入要要修改会员的账号:\n");
	scanf("%s", s1);
	//遍历链表对比
	VIPNode *p = L->head->next;
	while (p) {
		if (strcmp(p->VIP.no, s1) == 0)
		{
			num = i;
			printf("\t\t------------------------------------------------------------------\n");
	        printf("\t\t☆☆---------------------1.修改姓名-----------------------☆☆\n\n");
	        printf("\t\t☆☆---------------------2.修改身份证号-----------------------☆☆\n\n");
	        printf("\t\t☆☆---------------------3.修改电话号码-------------------☆☆\n\n");
	        printf("\t\t☆☆---------------------0.退出本菜单-----------------------☆☆\n\n");
	        printf("\t\t------------------------------------------------------------------\n");
			while (1)
			{
				printf("请选择子菜单编号:");
				scanf("%d", &item);
				switch (item)
				{
					case 1:
						printf("请输入新的姓名:\n");
						scanf("%s", s2);
						strcpy(p->VIP.name, s2);
						break;
					case 2:
						printf("请输入新的身份证号:\n");
						scanf("%s", s3);
						strcpy(p->VIP.ID, s3);
						break;
					case 3:
						printf("请输入新的电话号码:\n");
						scanf("%s",s4);
						strcpy(p->VIP.phone, s4);
						break;
					case 0:
						return;
					default:
						printf("请在0-3之间选择\n");
				}
					printf("修改完毕!\n");
			} 
			return; 
		}
		p = p->next;
	}
	printf("没有该会员账号!!!");
	system("pause");
}

(8)会员消费或充值

void transaction(VIPList *L)     //消费或充值 
{
	int a,b;
	int found=1;
	char choice,no[LEN+1];
    while(1)
	{
        printf("请输入会员的账号:\n");
        scanf("%s",&no);
        getchar();
        VIPNode *p = L->head->next;
        while(p){ 
            if(strcmp(p->VIP.no,no) == 0)
			{
				found=0;
				printf("%s\t%s\t%s\t%s\t%d\n",p->VIP.no,p->VIP.name,p->VIP.ID,p->VIP.phone,p->VIP.money);
	            printf("请选择类型:1.消费  2.充值\n");
	            scanf("%d",&a);
	        	getchar();
	            printf("请输入金额:\n");
	            scanf("%d",&b); 
	            getchar();
	            if(a==1)
	            {
	            	p->VIP.money=p->VIP.money-b;
					printf("%s\t%s\t%s\t%s\t%d\n",p->VIP.no,p->VIP.name,p->VIP.ID,p->VIP.phone,p->VIP.money);
				}
				else
				{
					p->VIP.money=p->VIP.money+b;
				    printf("%s\t%s\t%s\t%s\t%d\n",p->VIP.no,p->VIP.name,p->VIP.ID,p->VIP.phone,p->VIP.money);
				}
			}	
			    p=p->next; 
		} 
        if(found==1)
		{
			printf("未找到!\n");
		}
		found=1;	
		printf("是否继续(Y/N)\n");
		choice=getchar();
		getchar(); 
		if(choice=='N'|| choice=='n')
			break;
}
} 

 (9)退出系统

void save(VIPList *L)     //保存 
{	//打开文件流
	FILE *fp = fopen("数据", "w");
	if (fp == NULL) {
		printf("文件打开失败\n");
		exit(EXIT_FAILURE);
	}
	//将学生节点总数输出在第一行
	fprintf(fp, "%d\n", L->count);
	//创建一节点指针指向头节点
	VIPNode *s;
	s = L->head->next;
	//遍历链表,一组数据作为一行输出
	while (s) {
		fprintf(fp, "%s ", s->VIP.no);
		fprintf(fp, "%s ", s->VIP.name);
		fprintf(fp, "%s ", s->VIP.ID);
		fprintf(fp, "%s ", s->VIP.phone);
		fprintf(fp, "%d ", &s->VIP.money);
		fprintf(fp, "%s ", s->VIP.grade);
		fprintf(fp, "%s ", s->VIP.discounts);
		fprintf(fp, "\n");
		//输出完成之后释放节点空间
		VIPNode *next = s->next;
		free(s);
		s = next;
	}
	//关闭文件流
	fclose(fp);
	//互动信息
	printf("数据已保存!谢谢使用,再见!\n");
}

6)主函数

void main()          
{
	int a; 
	login();
    VIPList *L=(VIPList *)malloc(sizeof(VIPList));//创建链表 
    initialize(L);//初始化链表
	read(L);//从文件里读取数据到链表 
	while(true) 
	{
		menu(); 
		printf("\t请选择您要运行的选项按(0-9):");
	    scanf("%d",&a);
        switch(a) 
        {
        	case 0: 
        		system("cls");
        	    Instruction();
        	    break;
            case 1:
				system("cls");
            	printf("\n\n\t\t------------------------------------------------------------------------\n\n");
				printf("\t\t\t输入会员的个数:");
				scanf("%d",&m);
				if(m<=0)
				{
					printf("\n\t\t\t请输入正确的人数!");
					break;
				}
				else
				{
					printf("\n\t\t\t输入会员信息\n\n");
					input(L,m); 
	            	break;
				}
            case 2:
            	system("cls");
	            printf("\t\t\t\t\t显示会员信息\n"); 
	            sort(L); 
	            print(L); 
	            break; 
            case 3:
            	system("cls");
				printf("\t\t\t\t\t查询会员信息\n");
				Search(L); 
                break;
            case 4:
            	system("cls");
                printf("\t\t\t\t\t插入会员信息\n");
                insert(L); 
				break;       
			case 5:
				system("cls"); 
				printf("\t\t\t\t\t修改会员信息\n");
                Modify(L);
                
                break;
            case 6:
				system("cls");
                printf("\t\t\t\t\t删除会员信息\n");
                Delete(L);
                break;  
			case 7:
				system("cls");
                printf("\t\t\t\t\t会员消费或充值\n");
                transaction(L);
                break;  	  
            case 8:
            	system("cls");
            	save(L); 
                printf("\n\t\t\t\t\t谢谢使用\n");
                exit(0);
                break; 
        }
	}
}

7)其他模块

(1)初始化

void initialize(VIPList *L) { //初始化 
	//创建头节点
	VIPNode *s = (VIPNode *)malloc(sizeof(VIPNode));
	s->next = NULL;
	//初始化链表:
	//头尾指针均指向头节点,初始长度为零
	L->head = s;
	L->tail = s;
	L->count = 0;
}

 (2)文件管理

void read(VIPList *L) {
	//打开文件流
	FILE *fp = fopen("数据", "w");
	if (fp == NULL) {
		printf("文件打开失败\n");
		exit(EXIT_FAILURE);
	}
	//读取第一行的会员节点总数
	fscanf(fp, "%d", &L->count);
	//循环读取数据,循环次数为count
	for (int i = 1; i <= L->count; i++) {
		//创建新节点
		VIPNode *s = (VIPNode *)malloc(sizeof(VIPNode));
		//读取数据
		fscanf(fp, "%s ", s->VIP.no);
		fscanf(fp, "%s ", s->VIP.name);
		fscanf(fp, "%s ", s->VIP.ID);
		fscanf(fp, "%s ", s->VIP.phone);
		fscanf(fp, "%d ", &s->VIP.money);
		fscanf(fp, "%s ", s->VIP.grade);
		fscanf(fp, "%s ", s->VIP.discounts);
		//将新节点插进链表尾部(尾插法)
		s->next = NULL;
		L->tail->next = s;
		L->tail = s;
	}
	//关闭文件流
	fclose(fp);
} 

(3)会员等级

void counts(VIPNode *q){
	char grade[6][50]={"普通","白银","黄金","铂金","钻石","黑金"};
	//>=0,普通;>=500,白银;>=1000,黄金;>=3000,铂金;>=6000,钻石;>=10000,黑金 	
	char discounts[6][50]={"原价","九折","八八折","八五折","八折","七折"};
	int num;
	num=q->VIP.money/100; 
	if(num<=5) { 
		strcpy(q->VIP.grade,grade[0]);
		strcpy(q->VIP.discounts,discounts[0]); 
	}else if(num<=10){ 
	    strcpy(q->VIP.grade,grade[1]);
		strcpy(q->VIP.discounts,discounts[1]);
	}else if(num<=30){ 
		strcpy(q->VIP.grade,grade[2]);
		strcpy(q->VIP.discounts,discounts[2]);
	}else if(num<=60){ 
		strcpy(q->VIP.grade,grade[3]);
		strcpy(q->VIP.discounts,discounts[3]);
	}else if(num<=100){ 
		strcpy(q->VIP.grade,grade[4]);
		strcpy(q->VIP.discounts,discounts[4]);
	}else{ 
		strcpy(q->VIP.grade,grade[5]);
		strcpy(q->VIP.discounts,discounts[5]);
	} 
}

(4)排序函数

void sort(VIPList *L) {
	printf("会员个数为%d:",L->count); 
	//插入排序
	VIPNode *p, *pre, *tmp;
	//p指向第二个会员节点
	p = L->head->next;
	//链表从头节点和第一个会员节点处断开
	L->head->next = NULL;
	//从第一个会员节点开始一直往后循环
	while (p) {
		//存好下一个节点的指针
		tmp = p->next;
		//找到插入位置
		pre = L->head;
		while (pre->next != NULL && strcmp(pre->next->VIP.no,p->VIP.no)<0){ 
			pre = pre->next;} 
		//更新尾指针
		if (pre->next == NULL) {
			L->tail = p;
		}
		//插入
		p->next = pre->next;
		pre->next = p;
		//跳到下一个
		p = tmp;
	}
	printf("链表排序完成!\n");
	system("pause");
}

 五、调试与测试

 1)运行登陆模块,如图所示。

输入正确的用户名和密码登陆

用户名:000

密码:123

超市会员管理系统

 2)登陆成功后进入主菜单

超市会员管理系统

 3)输入

按1进入会员信息建立模块,输入会员的个数,根据个数输入会员的账号1111,姓名zxc,身份证号123456789123456789,联系电话12345678912,消费金额5000;账号2222,姓名asd,身份证号789456123789456123,联系电话78945612378,消费金额8600,会员等级和优惠政策根据消费金额显示出来,如图所示。

超市会员管理系统

 4)显示

按2进入会员信息显示模块,信息通过排序后输出超市会员管理系统超市会员管理系统

 5)查询

按4进入查询会员信息界面

按子菜单1进行账号查询,输入账号2222查询会员信息

按子菜单2进行姓名查询,输入姓名zxc查询会员信息

超市会员管理系统

 6)插入

按4进入插入会员信息界面

输入会员账号5555,姓名qwe,身份证号456789123456789123,联系电话45678912345,消费金额6000,根据消费金额显示会员等级和优惠政策,会员信息插入到链表中

 

 7)修改

按5进入修改会员信息界面

输入要修改的会员的账号,按1修改姓名为vbn,按2修改身份证号为987654321987654321

超市会员管理系统

超市会员管理系统

 8)删除

按6进入删除会员信息,输入要删除的会员账号进行删除

超市会员管理系统

 9)充值或消费

 按8进行会员消费或充值

输入账号5555,选择消费类型,输入金额

超市会员管理系统

六、总体代码

# include<stdio.h>
# include<string.h>
# include<stdlib.h>
# include<windows.h>
#define LEN 25 
#define N 70
#define F "数据.txt" //文件路径

typedef struct
{
	char no[10];//账号 
	char name[10];//姓名 
	char ID[30];//身份证号 
	char phone[16];//电话 
	int money;	//金额 
	char grade[10];//等级 
	char discounts[10]; //折扣 
}VIP;   //单个会员信息 
 
typedef struct node{
    VIP VIP;            //数据域 
    struct node *next;   //指针域 
}VIPNode;   //会员节点 

typedef struct{
    VIPNode *head;  //头指针 
    VIPNode *tail;  //尾指针 
    int count;
}VIPList;     // 会员链表 

int k = 1, n = 0, m = 0;


void counts(VIPNode *q);//会员等级 
int menu();   //菜单 
void Instruction();//系统说明 
void initialize(VIPList *L);//初始化链表 
void read(VIPList *L);//从文件中读取 
void input(VIPList *List,int m);  //输入 
void sort(VIPList *L); //排序
void print(VIPList *L); //输出 
void Search(VIPList *L); //查询 
void insert(VIPList *L); //插入 
void Delete(VIPList *L);//删除 
void Modify(VIPList *L);//修改 
void transaction(VIPList *L);//充值或消费 
void save(VIPList *L);//保存 

 


 
//登录界面 
void login()		
{
   char userName[5];
   char password[5];
   int i;
   printf("\n\n   -------------------------------------------欢迎使用-------------------------------------------\n");
   for(i=1;i<4;i++)
   {
        printf("\n             请输入您的用户名:");
        gets(userName);
        printf("\n             请输入您的密码:");
        gets(password);
        if ((strcmp(userName,"000")==0) && (strcmp(password,"123")==0))/*验证用户名和密码*/
        {
        	
            printf("\n   -------------------------------------------登陆成功-------------------------------------------");
            Sleep(500);
            return;
        }
        else
        {
            if(i<3)
            {
                printf("\n           用户名或密码错误,请重新输入!\n");
            }
            else
            {
                printf("\n           您已连续3次将用户名或密码输错,系统将退出!");
                exit(0);
            }
        }
   }
}


void main()          
{
	int a; 
	login();
    VIPList *L=(VIPList *)malloc(sizeof(VIPList));//创建链表 
    initialize(L);//初始化链表
	read(L);//从文件里读取数据到链表 
	while(true) 
	{
		menu(); 
		printf("\t请选择您要运行的选项按(0-9):");
	    scanf("%d",&a);
        switch(a) 
        {
        	case 0: 
        		system("cls");
        	    Instruction();
        	    break;
            case 1:
				system("cls");
            	printf("\n\n\t\t------------------------------------------------------------------------\n\n");
				printf("\t\t\t输入会员的个数:");
				scanf("%d",&m);
				if(m<=0)
				{
					printf("\n\t\t\t请输入正确的人数!");
					break;
				}
				else
				{
					printf("\n\t\t\t输入会员信息\n\n");
					input(L,m); 
	            	break;
				}
            case 2:
            	system("cls");
	            printf("\t\t\t\t\t显示会员信息\n"); 
	            sort(L); 
	            print(L); 
	            break; 
            case 3:
            	system("cls");
				printf("\t\t\t\t\t查询会员信息\n");
				Search(L); 
                break;
            case 4:
            	system("cls");
                printf("\t\t\t\t\t插入会员信息\n");
                insert(L); 
				break;       
			case 5:
				system("cls"); 
				printf("\t\t\t\t\t修改会员信息\n");
                Modify(L);
                
                break;
            case 6:
				system("cls");
                printf("\t\t\t\t\t删除会员信息\n");
                Delete(L);
                break;  
			case 7:
				system("cls");
                printf("\t\t\t\t\t会员消费或充值\n");
                transaction(L);
                break;  	  
            case 8:
            	system("cls");
            	save(L); 
                printf("\n\t\t\t\t\t谢谢使用\n");
                exit(0);
                break; 
        }
	}
}


int menu()
{      
        system("cls");
        printf("\n\n\t\t----------------------超市会员管理系统------------------------\n");
        printf("\t\t☆☆ 0. 系统说明                                            ☆☆\n\n");
        printf("\t\t☆☆ 1. 输入会员信息                                        ☆☆\n\n");
        printf("\t\t☆☆ 2. 显示会员信息                                        ☆☆\n\n");
        printf("\t\t☆☆ 3. 查询会员信息                                        ☆☆\n\n");
        printf("\t\t☆☆ 4. 插入会员信息                                        ☆☆\n\n");
        printf("\t\t☆☆ 5. 修改会员信息                                        ☆☆\n\n");
        printf("\t\t☆☆ 6. 删除会员信息                                        ☆☆\n\n");
        printf("\t\t☆☆ 7. 会员消费或充值                                      ☆☆\n\n");
		printf("\t\t☆☆ 8. 退出系统                                            ☆☆\n\n");
        printf("\t\t------------------------------------------------------------------\n");
		return 1;
}

void Instruction() //系统说明 
 
{
	printf("\n\t\t          0.欢迎使用系统说明\n");
	printf("\n\t\t          1.请选择菜单上的数字\n");
	printf("\n\t\t          2.修改学生信息后请保存\n");
	printf("\n\t\t          3.谢谢使用\n");
	system("pause");
}


void initialize(VIPList *L) { //初始化 
	//创建头节点
	VIPNode *s = (VIPNode *)malloc(sizeof(VIPNode));
	s->next = NULL;
	//初始化链表:
	//头尾指针均指向头节点,初始长度为零
	L->head = s;
	L->tail = s;
	L->count = 0;
}

void read(VIPList *L) {
	//打开文件流
	FILE *fp = fopen("数据", "w");
	if (fp == NULL) {
		printf("文件打开失败\n");
		exit(EXIT_FAILURE);
	}
	//读取第一行的会员节点总数
	fscanf(fp, "%d", &L->count);
	//循环读取数据,循环次数为count
	for (int i = 1; i <= L->count; i++) {
		//创建新节点
		VIPNode *s = (VIPNode *)malloc(sizeof(VIPNode));
		//读取数据
		fscanf(fp, "%s ", s->VIP.no);
		fscanf(fp, "%s ", s->VIP.name);
		fscanf(fp, "%s ", s->VIP.ID);
		fscanf(fp, "%s ", s->VIP.phone);
		fscanf(fp, "%d ", &s->VIP.money);
		fscanf(fp, "%s ", s->VIP.grade);
		fscanf(fp, "%s ", s->VIP.discounts);
		//将新节点插进链表尾部(尾插法)
		s->next = NULL;
		L->tail->next = s;
		L->tail = s;
	}
	//关闭文件流
	fclose(fp);
} 

void input(VIPList *L,int m)                  
{
	int i;
	for(i=1;i<=m;i++)
	{
		VIPNode *r = (VIPNode *)malloc(sizeof(VIPNode));
		printf("请输入会员的账号:\n");
	    scanf("%s",r->VIP.no);
	    printf("请输入会员的姓名:\n");               
	    scanf("%s",r->VIP.name);
	    printf("请输入会员的身份证号:");
		scanf("%s",r->VIP.ID);
		printf("请输入会员的联系电话:");
		scanf("%s",r->VIP.phone);
		printf("请输入会员的消费金额:");
		scanf("%d",&r->VIP.money);
    	counts(r);
		printf("会员的会员等级:");
		printf("%s\n", r->VIP.grade); 
		printf("会员的优惠政策:");
		printf("%s\n",r->VIP.discounts);
	    //将新节点插进链表尾部(尾插法)
		L->tail->next = r;
		r->next = NULL;
		L->tail = r;   
		L->count++;                                  //指针后移
	}
	printf("会员信息录入完毕!!!\n");
	system("pause");
	
}

void counts(VIPNode *q){
	char grade[6][50]={"普通","白银","黄金","铂金","钻石","黑金"};
	//>=0,普通;>=500,白银;>=1000,黄金;>=3000,铂金;>=6000,钻石;>=10000,黑金 	
	char discounts[6][50]={"原价","九折","八八折","八五折","八折","七折"};
	int num;
	num=q->VIP.money/100; 
	if(num<=5) { 
		strcpy(q->VIP.grade,grade[0]);
		strcpy(q->VIP.discounts,discounts[0]); 
	}else if(num<=10){ 
	    strcpy(q->VIP.grade,grade[1]);
		strcpy(q->VIP.discounts,discounts[1]);
	}else if(num<=30){ 
		strcpy(q->VIP.grade,grade[2]);
		strcpy(q->VIP.discounts,discounts[2]);
	}else if(num<=60){ 
		strcpy(q->VIP.grade,grade[3]);
		strcpy(q->VIP.discounts,discounts[3]);
	}else if(num<=100){ 
		strcpy(q->VIP.grade,grade[4]);
		strcpy(q->VIP.discounts,discounts[4]);
	}else{ 
		strcpy(q->VIP.grade,grade[5]);
		strcpy(q->VIP.discounts,discounts[5]);
	} 
}

void sort(VIPList *L) {
	printf("会员个数为%d:",L->count); 
	//插入排序
	VIPNode *p, *pre, *tmp;
	//p指向第二个会员节点
	p = L->head->next;
	//链表从头节点和第一个会员节点处断开
	L->head->next = NULL;
	//从第一个会员节点开始一直往后循环
	while (p) {
		//存好下一个节点的指针
		tmp = p->next;
		//找到插入位置
		pre = L->head;
		while (pre->next != NULL && strcmp(pre->next->VIP.no,p->VIP.no)<0){ 
			pre = pre->next;} 
		//更新尾指针
		if (pre->next == NULL) {
			L->tail = p;
		}
		//插入
		p->next = pre->next;
		pre->next = p;
		//跳到下一个
		p = tmp;
	}
	printf("链表排序完成!\n");
	system("pause");
}


void print(VIPList *L)  //输出 
{
	printf("共有%d组会员数据:\n", L->count);
	printf("     |=============================================================================================|\n");
	printf("     | 账 号 | 姓 名 |           身份证号          |   联系电话   | 消费金额 | 会员等级 | 优惠政策 |\n");
	printf("     |---------------------------------------------------------------------------------------------|\n");
	//创建一节点指针指向头节点
	VIPNode *p;
	p = L->head;
	//遍历链表输出
	while (p->next) {
		p = p->next;
		printf("     | %5s | %5s |  %25s  |%14s| %8d | %8s | %8s |\n",p->VIP.no,p->VIP.name,p->VIP.ID,p->VIP.phone,p->VIP.money,p->VIP.grade,p->VIP.discounts);
	}
	printf("     |=============================================================================================|\n");
	system("pause");
}



void Search(VIPList *L) //查询 
 
{
	int  item, flag;
	char s1[21];
	printf("\t\t------------------------------------------------------------------\n");
	printf("\t\t☆☆---------------------1.按账号查询-----------------------☆☆\n\n");
	printf("\t\t☆☆---------------------2.按姓名查询-----------------------☆☆\n\n");
	printf("\t\t☆☆---------------------3.按身份证号查询--------------------☆☆\n\n");
	printf("\t\t☆☆---------------------4.按联系电话查询-------------------☆☆\n\n");
	printf("\t\t☆☆---------------------0.退出本菜单-----------------------☆☆\n\n");
	printf("\t\t------------------------------------------------------------------\n");
 
	while (1)
	{
		printf("请选择子菜单编号:");
		scanf("%d", &item);
		VIPNode *p =L->head->next;
		flag = 0;
		switch (item)
		{
			case 1:
				printf("请输入要查询的会员的账号:\n");
				scanf("%s",s1);
				while (p){ 
					if (strcmp(p->VIP.no, s1) == 0)
					{
						flag=1; 
					    printf("     |=============================================================================================|\n");
	                    printf("     | 账 号 | 姓 名 |           身份证号          |   联系电话   | 消费金额 | 会员等级 | 优惠政策 |\n");
	                    printf("     |---------------------------------------------------------------------------------------------|\n");
                        printf("     | %5s | %5s |  %25s  |%14s| %8d | %8s | %8s |\n",p->VIP.no,p->VIP.name,p->VIP.ID,p->VIP.phone,p->VIP.money,p->VIP.grade,p->VIP.discounts);
					}
                    p = p->next;
                }
                if (0 == flag)
					printf("该账号不存在!\n");
				break;
			case 2:
				printf("请输入要查询的会员的姓名:\n");
				scanf("%s", s1);
				//VIPNode *p = L->head->next;
				while (p){
					if (strcmp(p->VIP.name, s1) == 0)
					{
						flag = 1;
						printf("     |=============================================================================================|\n");
	                	printf("     | 账 号 | 姓 名 |           身份证号          |   联系电话   | 消费金额 | 会员等级 | 优惠政策 |\n");
	                	printf("     |---------------------------------------------------------------------------------------------|\n");
                        printf("     | %5s | %5s |  %25s  |%14s| %8d | %8s | %8s |\n",p->VIP.no,p->VIP.name,p->VIP.ID,p->VIP.phone,p->VIP.money,p->VIP.grade,p->VIP.discounts);
					}
					p = p->next;
                }
				if (0 == flag)
					printf("该姓名不存在!\n");
				break;
			case 3:
				printf("请输入要查询的会员的身份证号:\n");
				scanf("%s", s1);
				//VIPNode *p = L->head->next;
				while (p){
					if (strcmp(p->VIP.ID, s1) == 0)
					{
						flag = 1;
						printf("     |=============================================================================================|\n");
	                	printf("     | 账 号 | 姓 名 |           身份证号          |   联系电话   | 消费金额 | 会员等级 | 优惠政策 |\n");
	                	printf("     |---------------------------------------------------------------------------------------------|\n");
                        printf("     | %5s | %5s |  %25s  |%14s| %8d | %8s | %8s |\n",p->VIP.no,p->VIP.name,p->VIP.ID,p->VIP.phone,p->VIP.money,p->VIP.grade,p->VIP.discounts);
					}
					p = p->next;
                }
				if (0 == flag)
					printf("该身份证号不存在!\n");
				break;
			case 4:
				printf("请输入要查询的会员的电话号码:\n");
				scanf("%s", s1);
				//VIPNode *p = L->head->next;
				while (p){
					if (strcmp(p->VIP.phone, s1) == 0)
					{
						flag = 1;
						printf("     |=============================================================================================|\n");
	                	printf("     | 账 号 | 姓 名 |           身份证号          |   联系电话   | 消费金额 | 会员等级 | 优惠政策 |\n");
	                	printf("     |---------------------------------------------------------------------------------------------|\n");
                    	printf("     | %5s | %5s |  %25s  |%14s| %8d | %8s | %8s |\n",p->VIP.no,p->VIP.name,p->VIP.ID,p->VIP.phone,p->VIP.money,p->VIP.grade,p->VIP.discounts);
					}
					p = p->next;
                }
				if (0 == flag)
					printf("该电话号码不存在!\n");
				break;
			case 0:
				return;
			default:
				printf("请在0-4之间选择\n");
		}
 
	}
 
}

void insert(VIPList *L)
{
	VIPNode *s = (VIPNode *)malloc(sizeof(VIPNode));
	//键入信息并存到新节点中
        printf("请输入会员的账号:\n");
	    scanf("%s",&s->VIP.no);
	    printf("请输入会员的姓名:\n");               
	    scanf("%s",&s->VIP.name);
	    printf("请输入会员的身份证号:");
		scanf("%s",&s->VIP.ID);
		printf("请输入会员的联系电话:");
		scanf("%s",&s->VIP.phone);
		printf("请输入会员的消费金额:");
		scanf("%d",&s->VIP.money);
    	counts(s);
		printf("会员的会员等级:");
		printf("%s\n", s->VIP.grade); 
		printf("会员的优惠政策:");
		printf("%s\n",s->VIP.discounts);
	    printf("\n");
	//若链表为空,将尾指针指向新节点
	if (L->head == L->tail) {
		L->tail = s;
	}
	//将新节点插进链表头部(头插法)
	s->next = L->head->next;
	L->head->next = s;
	L->count++;
	//输出互动信息
	printf("信息录入成功!\n\n");
	system("pause");
}
 
void Delete(VIPList *L) // 删除 
{
	int  flag = 0;
	char s1[LEN + 1];
	VIPNode *p1,*p2; 
	printf("请输入要删除会员的账号:\n");
	scanf("%s", s1);
	if(L->head->next==NULL)
	{
		printf("\n\t\t链表为空");
		return; 
	} 
	p1=L->head->next; 
	while (p1!=NULL&&(strcmp(p1->VIP.no, s1) != 0)) 
	{
		p2=p1;
		p1=p1->next; 
		L->count--; 
	}
	if(strcmp(p1->VIP.no, s1) == 0){
		if(p1==L->head->next)
		    L->head->next=L->head->next->next; 
		else
		   p2->next=p1->next; 
	    printf("删除成功\n"); 
	    L->count--; 
	       
	}else 
		printf("该账号不存在!!!\n");
	system("pause");
}

void Modify(VIPList *L) //修改 
{
	int i, item, num = -1;
	char s1[LEN + 1], s2[LEN + 1],s3[LEN + 1],s4[LEN + 1];
	printf("请输入要要修改会员的账号:\n");
	scanf("%s", s1);
	//遍历链表对比
	VIPNode *p = L->head->next;
	while (p) {
		if (strcmp(p->VIP.no, s1) == 0)
		{
			num = i;
			printf("\t\t------------------------------------------------------------------\n");
	        printf("\t\t☆☆---------------------1.修改姓名-----------------------☆☆\n\n");
	        printf("\t\t☆☆---------------------2.修改身份证号-----------------------☆☆\n\n");
	        printf("\t\t☆☆---------------------3.修改电话号码-------------------☆☆\n\n");
	        printf("\t\t☆☆---------------------0.退出本菜单-----------------------☆☆\n\n");
	        printf("\t\t------------------------------------------------------------------\n");
			while (1)
			{
				printf("请选择子菜单编号:");
				scanf("%d", &item);
				switch (item)
				{
					case 1:
						printf("请输入新的姓名:\n");
						scanf("%s", s2);
						strcpy(p->VIP.name, s2);
						break;
					case 2:
						printf("请输入新的身份证号:\n");
						scanf("%s", s3);
						strcpy(p->VIP.ID, s3);
						break;
					case 3:
						printf("请输入新的电话号码:\n");
						scanf("%s",s4);
						strcpy(p->VIP.phone, s4);
						break;
					case 0:
						return;
					default:
						printf("请在0-3之间选择\n");
				}
					printf("修改完毕!\n");
			} 
			return; 
		}
		p = p->next;
	}
	printf("没有该会员账号!!!");
	system("pause");
}

void transaction(VIPList *L)     //消费或充值 
{
	int a,b;
	int found=1;
	char choice,no[LEN+1];
    while(1)
	{
        printf("请输入会员的账号:\n");
        scanf("%s",&no);
        getchar();
        VIPNode *p = L->head->next;
        while(p){ 
            if(strcmp(p->VIP.no,no) == 0)
			{
				found=0;
				printf("%s\t%s\t%s\t%s\t%d\n",p->VIP.no,p->VIP.name,p->VIP.ID,p->VIP.phone,p->VIP.money);
	            printf("请选择类型:1.消费  2.充值\n");
	            scanf("%d",&a);
	        	getchar();
	            printf("请输入金额:\n");
	            scanf("%d",&b); 
	            getchar();
	            if(a==1)
	            {
	            	p->VIP.money=p->VIP.money-b;
					printf("%s\t%s\t%s\t%s\t%d\n",p->VIP.no,p->VIP.name,p->VIP.ID,p->VIP.phone,p->VIP.money);
				}
				else
				{
					p->VIP.money=p->VIP.money+b;
				    printf("%s\t%s\t%s\t%s\t%d\n",p->VIP.no,p->VIP.name,p->VIP.ID,p->VIP.phone,p->VIP.money);
				}
			}	
			    p=p->next; 
		} 
        if(found==1)
		{
			printf("未找到!\n");
		}
		found=1;	
		printf("是否继续(Y/N)\n");
		choice=getchar();
		getchar(); 
		if(choice=='N'|| choice=='n')
			break;
}
} 

void save(VIPList *L)     //保存 
{	//打开文件流
	FILE *fp = fopen("数据", "w");
	if (fp == NULL) {
		printf("文件打开失败\n");
		exit(EXIT_FAILURE);
	}
	//将学生节点总数输出在第一行
	fprintf(fp, "%d\n", L->count);
	//创建一节点指针指向头节点
	VIPNode *s;
	s = L->head->next;
	//遍历链表,一组数据作为一行输出
	while (s) {
		fprintf(fp, "%s ", s->VIP.no);
		fprintf(fp, "%s ", s->VIP.name);
		fprintf(fp, "%s ", s->VIP.ID);
		fprintf(fp, "%s ", s->VIP.phone);
		fprintf(fp, "%d ", &s->VIP.money);
		fprintf(fp, "%s ", s->VIP.grade);
		fprintf(fp, "%s ", s->VIP.discounts);
		fprintf(fp, "\n");
		//输出完成之后释放节点空间
		VIPNode *next = s->next;
		free(s);
		s = next;
	}
	//关闭文件流
	fclose(fp);
	//互动信息
	printf("数据已保存!谢谢使用,再见!\n");
}


总结


从分析题目的需求入手,按设计抽象数据类型、 设计算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,通过链表进行会员信息的增删改查。文章来源地址https://www.toymoban.com/news/detail-486329.html

到了这里,关于超市会员管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 超市商品信息管理系统/超市管理系统的设计与实现

    摘  要 随着现在网络的快速发展,网上管理系统也逐渐快速发展起来,网上管理模式很快融入到了许多国家的之中,随之就产生了“超市商品信息管理系统”,这样就让超市商品信息管理系统更加方便简单。 对于本超市商品信息管理系统的设计来说,系统开发主要是采用j

    2024年02月02日
    浏览(45)
  • 门店会员管理系统有哪些功能?2023门店会员管理系统该如何选?

    不管是自己单独开店,还是同时开多家门店的老板来说,都普遍面临房租高,人难招,生意不好等难题。 很多老板都想通过 借助会员管理系统来留住新老客户,通过提升会员等级、赠送会员积分等玩法,持续刺激客户到店消费。 那么,门店会员管理系统具体有哪些实用功能

    2024年02月08日
    浏览(85)
  • 会员管理系统实战开发教程05-会员开卡

    上一篇我们讲解了如何点击按钮弹出层,已经罗列了会员管理的一些常见功能。本篇我们介绍一下会员开卡的业务。 我们会员开卡的业务的话,也是要在本页面弹出,弹出其实只是让组件是否显示和隐藏,我们先定义一个布尔值类型的变量来控制我们开卡页面的显示。 打开

    2024年02月11日
    浏览(45)
  • 会员管理系统实战开发教程06-会员充值

    我们上篇讲解了会员开卡的操作,有了会员卡之后日常就是给会员进行充值,充值的逻辑是对余额进行累加,而且要记录充值的情况。 打开控制台,点击+号创建数据源 输入数据源名称充值记录 点击编辑添加字段 先添加充值金额字段,类型选择数字 再添加充值日期字段,类

    2024年02月10日
    浏览(53)
  • 超市管理系统Java

    编程小白一枚,简单的Java小项目;自己的理解实现增删改查。 一、定义商品类 二、定义商品的操作类 三、主菜单页面 运行结果如下: 主界面:  添加货物:      查看货物清单: 修改货物:      查看库存及总价:  删除货物:      代码还需完善,欢迎评论,一起努力

    2024年02月11日
    浏览(46)
  • 小型超市管理系统

      摘要 : 近些年,互联网行业的发展带给了很多人在生活上的便利,互联网能够改变人们的生活和工作的模式。很多企业都在将普通的工作模式结合了互联网,利用互联网的优势提高管理员的工作效率。目前不少超市管理系统存在着许多问题,因此根据电商行业的特点,可

    2024年02月02日
    浏览(34)
  • [MySQL]超市购物管理系统

    目录 数据库结构 一.逻辑结构设计 1.会员信息表hyxxb 2.货品名称表hpmcb 3.供应商信息表gysxxb 4.收银记录表 5.收银明细表symxb 6.货品库存表 7.扎帐记录表 8.汉字拼音表  二.索引 1.汉字拼音表索引  三.视图 1.货品库存数量视图 2.收银明细视图 四.创建函数  五.创建触发器  六.创建

    2024年02月08日
    浏览(40)
  • C语言超市管理系统

    2024年02月15日
    浏览(32)
  • 超市管理系统(java+Mysql)

    目 录 摘 要 I Abstract II 1 正文 1 1.1研究背景分析 1 1.2 超市管理系统的概述 2 1.3所需软、硬件技术准备 2 1.4可行性分析 3 1.4.1 技术可行性 3 1.4.2 经济可行性 3 1.4.3 社会可行性 3 2 需求分析 4 2.1 需求分析的任务及主要内容 4 2.2.1 具体业务的需求 4 2.2 层次图 4 2.3数据流图 5 3 概要设

    2024年02月05日
    浏览(52)
  • 超市管理系统 C++(课程设计)

    古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。——苏轼 ---------------🍎------------🍉-------------- 🐼学编程的bird的博客,邀您一起学习🦌 ----------------🥕------------🥭------------- 😊很高兴你打开了这篇博客。 ★如有疑问不解或者说有想问的地方,都可以在下方评论留

    2024年01月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包