C語言購物管理系統項目

Hello ! 你好呀 ! 既然都點進來了,不妨看一看,文末效果展示! 
C語言購物管理系統項目:
  操作說明:按照菜單上面給的提示選擇菜單,暫時沒有實現出了數字以外的輸入,輸入其他字符會出錯。
  操作步驟說明:根據菜單選擇先登錄系統,在登錄系統界面中註冊,註冊完登錄,登錄後會跳轉到管理的主菜單,然後可以通過輸入數字分別跳轉到相應的業務功能中,一些操作中需要填寫的 id,暫時只能從查看所有顧客信息中查看,商品
信息是通過系統剛開始初始化的,編號從 1-5,只有 5 種商品,如果想要退出
系統的話,要一級一級菜單返回,直到返回到開始主菜單中選擇菜單 3 進行退
出.另外,更改管理員密碼需要你登錄之後才能修改,沒登錄想修改的話會返回
主菜單。
更多資料請點擊:我的目錄

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

void start();		//開始主菜單界面
void systems();		//進入登錄系統界面
void registe();		//註冊界面
void logon();		//登錄界面
void main_list();	//登錄完成進入主界面
void inform_list();	//客戶信息管理菜單
void show_inform();	//顯示所有客戶信息
void add_inform();	//添加客戶信息
void revise_inform();	//修改客戶信息
void check_inform();	//查詢客戶信息
void settle_account();	//購物結算界面
void member();		//已是會員
void N_member();	//不是會員
void feedback();	//真情回饋
void lucky_release();	//幸運大放送
void lucky_draw();	//幸運抽獎
void birth_greet();	//生日問候
int logout();		//註銷用戶
int change_pw();	//密碼修改
void gettime(char *cur_time);//獲取當前系統時間

int i = 0 ,j = 0 , n = 0, k = 0, sum1 = 0, sum2;
char bool1, bool2, bool3, bool4, bool5;
int choose ,choose1, choose2, choose3, choose4, choose5;
int num[][120] = {0}, N[][120] = {0}, random_num[5][4];
char username[120], password[120], usr[120], pw[120], custom[120], card_num[120], passw1[120], passw2[120], ID[20];
char custom_nm[][120]= {0} ,custom_pw[][120] = {0},custom_bd[][120] = {0};
char custom_ID[][20] = {"2355" , "3453" , "8453" , "7561" , "2794"};
char custom_NM[][20] = {"JIAJIA" , "ZHUZHU" , "HAOYU" , "TONGSD" , "NIKEH"};
char custom_PW[][20] = {"235553" , "342553" , "482453" , "756631" , "226794"};
char custom_SC[][20] = {"23" , "33" , "43" , "51" , "27"};
char custom_BD[][20] = {"01-23" , "11-13" , "08-23" , "05-16" , "07-14"};

int main()
{
label1:	
	start();									//開始主菜單界面
	switch(choose)
	{
label10:		case 1:systems();							//進入登錄系統界面
			switch(choose1)							
			{
				case 1:
				{					
					registe();					//註冊界面
					if(choose2 == 2)
					{
label20:
						logon();				//登錄界面
label2:
						main_list();				//登錄後進入主界面
						if( strcmp(username, usr) != 0 || strcmp(password, pw) != 0)
						{
							printf("\t用戶名或密碼輸入錯誤,請重新輸入!\n");
							goto label20;	
						}
						switch(choose3)
						{
							case 1:
							{
label3:
								inform_list();			//客戶信息管理菜單
								switch(choose4)
								{
									case 1:show_inform();goto label3;	//顯示所有客戶信息
									case 2:add_inform();goto label3;	//添加客戶信息
									case 3:revise_inform();goto label3;	//修改客戶信息
									case 4:check_inform();goto label3;	//查詢客戶信息
									case 5:goto label2;			//返回上一級
									
								}
							}break;
							case 2:
							{
								settle_account();				//購物結算界面
								if(bool1 == 'Y')			//已是會員
								{
									member();
									if(j == 2){N_member();}
									goto label2;
								}
								if(bool1 == 'N')			//不是會員
								{
									N_member();
									goto label2;
								}						
							}break;
							case 3:
							{
label4:
								feedback();					//真情回饋
								switch(choose5)
								{
									case 1:lucky_release();goto label4;	//幸運大放送
									case 2:lucky_draw();goto label4;	//幸運抽獎
									case 3:birth_greet();goto label4;	//生日問候
									case 4:goto label2;break;		//返回上一級
								}							
							}break;	
							case 4:logout();goto label1;break;			//註銷用戶
							case 5:goto label1;break;				//返回上一級			
						}
					}
					if(choose2 == 3)goto label1;break;					//返回上一級
				}
				case 2:
				if(password[0] == '\0'){printf("\t請先註冊的呢,親!\n");goto label10;}
				else goto label2;break;
				case 3:goto label1;break;							//返回上一級
			}break;

		case 2:
			if(usr[0] == '\0'){printf("\t請您先登錄呢,親!\n");goto label10;}	
label5:
			change_pw();
			if(k == -1){goto label5;}
			if( username[0] != '\0'){ goto label20;}
			if( username[0] == '\0'){ goto label1;}
			break;
		case 3:
			return 0;
	}	
	return 0;	
}


void start()
{
//**************************開始主菜單界面**************************//
	printf("\n\t**********歡迎進入購物管理系統**********\n");
	printf("\t1、登錄系統\n");
	printf("\t2、更改管理員密碼\n");
	printf("\t3、退出\n");
	printf("\t***************************************\n");
	printf("\t請選擇菜單:");
	scanf("%d",&choose);
}

void systems()
{
//**************************登錄系統界面**************************//
	printf("\n\t【購物管理系統 > 登錄系統】\n");
	printf("\t1、註冊\n");
	printf("\t2、登錄\n");
	printf("\t3、返回上一級菜單\n");
	printf("\t請選擇菜單:");
	scanf("%d",&choose1);
}

void registe()
{
 //**************************系統註冊界面**************************//
	printf("\n\t【購物管理系統 > 登錄系統 > 註冊】\n");
	printf("\t請輸入用戶名:");
	scanf("%s",username);
	printf("\t請輸入密碼:");
	scanf("%s",password);
	
	printf("\n\t【購物管理系統 > 登錄系統】\n");
	printf("\t1、註冊\n");
	printf("\t2、登錄\n");
	printf("\t3、返回上一級菜單\n");
	printf("\t請選擇菜單:");
	scanf("%d",&choose2);
}

void logon()
{
 //**************************系統登錄界面**************************//				
	printf("\n\t【購物管理系統 > 登錄系統 > 登錄】\n");
	printf("\t請輸入用戶名:");
	scanf("%s",usr);
	printf("\t請輸入密碼:");
	scanf("%s",pw);
}

void main_list()
{
	if( strcmp(username, usr) == 0 && strcmp(password, pw) == 0 )
	{
		printf("\n\t【購物管理系統 > 主菜單】\n");
		printf("\t1、客戶信息管理\n");
		printf("\t2、購物結算\n");
		printf("\t3、真情回饋\n");
		printf("\t4、註銷\n");
		printf("\t5、返回上一級菜單\n");
		printf("\t請選擇菜單:");
		scanf("%d",&choose3);
	}
}

void inform_list()
{
//**************************客戶信息管理菜單**************************//
	printf("\n\t【購物管理系統 > 主菜單 > 客戶信息管理菜單】\n");
	printf("\t1、顯示所有客戶信息\n");
	printf("\t2、添加客戶信息\n");
	printf("\t3、修改客戶信息\n");
	printf("\t4、查詢客戶信息\n");
	printf("\t5、返回上一級菜單\n");
	printf("\t請選擇菜單:");	
	scanf("%d",&choose4);
}

void show_inform()
{
//**************************顯示所有客戶信息**************************//							
	printf("\n\t【購物管理系統 > 主菜單 > 客戶信息管理 > 所有客戶信息】\n");
	printf("\t ID \t 用戶名 \t 密碼 \t積分 \t 生日 \n");
	printf("\t%s \t%s \t\t%s \t%s \t%s\n",custom_ID[0], custom_NM[0], custom_PW[0], custom_SC[0], custom_BD[0]);
	printf("\t%s \t%s \t\t%s \t%s \t%s\n",custom_ID[1], custom_NM[1], custom_PW[1], custom_SC[1], custom_BD[1]);
	printf("\t%s \t%s \t\t%s \t%s \t%s\n",custom_ID[2], custom_NM[2], custom_PW[2], custom_SC[2], custom_BD[2]);
	printf("\t%s \t%s \t\t%s \t%s \t%s\n",custom_ID[3], custom_NM[3], custom_PW[3], custom_SC[3], custom_BD[3]);
	printf("\t%s \t%s \t\t%s \t%s \t%s\n",custom_ID[4], custom_NM[4], custom_PW[4], custom_SC[4], custom_BD[4]);
}


void add_inform()
{
//**************************添加客戶信息**************************//
	printf("\n\t【購物管理系統 > 主菜單 > 客戶信息管理 > 添加客戶信息】\n");
	printf("\t請輸入客戶的用戶名:");
	scanf("%s",&custom_nm[i][120]);
	printf("\t請輸入客戶的密碼:");
	scanf("%s",&custom_pw[i][120]);
	printf("\t請輸入生日(月.日):");
	scanf("%s",&custom_bd[i][120]);
	printf("\t添加會員成功!\n");							
	i++;
}

void revise_inform()
{
//**************************修改客戶信息**************************//
	printf("\n\t【購物管理系統 > 主菜單 > 客戶信息管理 > 修改客戶信息】\n");
	printf("\t請輸入需要修改的用戶ID號:");
	scanf("%s",ID);
	for(i = 0; i < 5; i++)
	{
		if(strcmp(ID ,custom_ID[i]) == 0)
		{
			printf("\t需要修改什麼信息呢?(用戶名Y/密碼M)");
			scanf("%s",&bool4);
			if(bool4 == 'Y')
			{
				printf("\t請輸入新的用戶名:");
				scanf("%s",custom_NM[i]);
				printf("\t用戶名修改成功!\n\n");		
			}
			if(bool4 == 'M')
			{
				printf("\t請輸入新的密碼:");				
				scanf("%s",custom_PW[i]);
				printf("\t密碼修改成功!\n\n");
			}
			i = 5;
		}
		else
		{
			printf("\t輸入錯誤!\n\n");
			i = 5;
		}
	}
	
}

void check_inform()
{
//**************************修改客戶信息**************************//
	printf("\n\t【購物管理系統 > 主菜單 > 客戶信息管理 > 查詢客戶信息】\n");
	printf("\t請輸入需要查詢的用戶ID號:");
	scanf("%s",ID);
	for(i = 0; i < 5; i++)
	{
		if(strcmp(ID ,custom_ID[i]) == 0)
		{
			printf("\t ID \t 用戶名 \t 密碼 \t積分 \t 生日 \n");
			printf("\t%s \t%s \t\t%s \t%s \t%s\n\n",custom_ID[i], custom_NM[i], custom_PW[i], custom_SC[i], custom_BD[i]);
			i = 5;
		}
		else
		{
			printf("\t沒有此用戶!\n\n");	
			i = 5;	
		}
	}		
}
void settle_account()
{
//**************************購物結算界面**************************//
	printf("\n\t【購物管理系統 > 主菜單 > 購物結算】\n");		
	printf("\t是否爲會員(Y/N)");
	scanf("%s",&bool1);
}

void member()
{
//**************************購物結算界面(已是會員)**************************//
	printf("\n\t請輸入這次購物的客戶號(輸入三次不對將按普通用戶結算)");
	scanf("%s",custom);
	for( j = 0; j < 2; j++ )					
	{
		if(strcmp(custom,custom_NM[0]) == 0)
		{
			do
			{
				printf("\t請輸入商品編號:");
				scanf("%d",&num[n][120]);
				printf("\t請輸入購買數量:");
				scanf("%d",&N[n][120]);
				n++;j = 2;
				printf("\t是否繼續輸入(Y/N)");
				scanf("%s",&bool2);
			}while(bool2 == 'Y');
			printf("\n\t********************購物清單********************\n");
			printf("\t商品編號\t商品名\t商品價格\t購入數量\t單行總價\n");
			for( k = 0; k < n; k++)
			{
				printf("\t%d\t\t%d\t%d\t\t%d\t\t%d\n",num[k][120],num[k][120],num[k][120],N[k][120],num[k][120]*N[k][120]);			
				sum1 = sum1 + num[k][120]*N[k][120];
			}
			printf("\t購物總金額:%d\n",sum1);
			printf("\t打折後所需金額:%.1f\n",sum1*0.8);
			printf("\t實際交款金額:");
			scanf("%d",&sum2);
			printf("\t應找:%.1f\n",sum2-sum1*0.8);
		}	
		else 
			scanf("%s",custom);;				
	}
	

}


void N_member()
{
//**************************購物結算界面(不是會員)**************************//
do
{
	printf("\t請輸入商品編號:");
	scanf("%d",&num[n][120]);
	printf("\t請輸入購買數量:");
	scanf("%d",&N[n][120]);
	n++;
	printf("\t是否繼續輸入(Y/N)");
	scanf("%s",&bool2);
}while(bool2 == 'Y');
	printf("\n\t********************購物清單********************\n");
	printf("\t商品編號\t商品名\t商品價格\t購入數量\t單行總價\n");
	for( k = 0; k < n; k++)
	{
		printf("\t%d\t\t%d\t%d\t\t%d\t\t%d\n",num[k][120],num[k][120],num[k][120],N[k][120],num[k][120]*N[k][120]);			
		sum1 = sum1 + num[k][120]*N[k][120];
	}
	printf("\t購物總金額:%d\n",sum1);
	printf("\t打折後所需金額:%d\n",sum1);
	printf("\t實際交款金額:");
	scanf("%d",&sum2);
	printf("\t應找:%d\n",sum2-sum1);
}

void feedback()
{
//**************************真情回饋**************************//
	printf("\n\t【購物管理系統 > 主菜單 > 真情回饋】\n");
	printf("\t1、幸運大放送\n");
	printf("\t2、幸運抽獎\n");
	printf("\t3、生日問候\n");
	printf("\t4、返回上一級菜單\n");
	printf("\t請選擇菜單:");
	scanf("%d", &choose5);
}

void lucky_release()
{
//**************************幸運大放送**************************//
	printf("\n\t【購物管理系統 > 主菜單 > 真情回饋 > 幸運大放送】\n");
	printf("\t請輸入您的卡號:");
	scanf("%s", card_num);
	
	srand(time(NULL));			//生成隨機數
	for(k = 0; k < 5; k++)			//遍歷5個數組
	{		
		for(i = 0; i < 4; i++)		//每個數組4個隨機數
		{
			random_num[k][i]=rand()%9+1;
			for(j = 0; j < i; j++)
			while(random_num[k][i] == random_num[k][j])	//兩個數相等時
			{
				random_num[k][i]=rand()%9+1;		//重新賦值
				j=-1;
			}
		}
	}
	k = 0;	//用於計算相等數字的個數
	for(i = 0 ; i < 5; i++)
	{
		for(j = 0; j < 4; j++)
		{
			if(card_num[j] == random_num[i][j])
			k ++;	//用於計算相等數字的個數
		}
	}
	
	if(k != 4)	
	{
		printf("\t/*****抱歉!請下次再試!*****/\n");
		printf("\t本次幸運客戶卡號爲:");
		for(i = 0; i < 5; i++)
		{
			printf("\t");	
			for(j = 0; j < 4; j++)
			{
				printf("%d",random_num[i][j]);
			}
		}
		printf("\n");
	}
	else if(k == 4)	//相等數字的個數爲4個
	{
		printf("\t恭喜您!獲得本次幸運大獎!請找工作人員領獎\n\n");
	}
}

void lucky_draw()
{
//**************************幸運抽獎**************************//
	printf("\n\t【購物管理系統 > 主菜單 > 真情回饋 > 幸運抽獎】\n");
	printf("\t請輸入您的卡號:");
	scanf("%s", card_num);
	
	srand(time(NULL));		//生成隨機數
	for(k = 0; k < 5; k++)	
	{		
		for(i = 0; i < 4; i++)
		{
			random_num[k][i]=rand()%9+1;
			for(j = 0; j < i; j++)
			while(random_num[k][i] == random_num[k][j])
			{
				random_num[k][i]=rand()%9+1;
				j=-1;
			}
		}
	}
	k = 0;
	for(i = 0 ; i < 5; i++)
	{
		for(j = 0; j < 4; j++)
		{
			if(card_num[j] == random_num[i][j])
			k ++;
		}
	}
	
	if(k != 4)	
	{
		printf("\t/*****抱歉!您不是本次的幸運會員!*****/\n");
		printf("\t本次幸運客戶卡號爲:");
		for(i = 0; i < 5; i++)
		{
			printf("\t");	
			for(j = 0; j < 4; j++)
			{
				printf("%d",random_num[i][j]);
			}
		}
		printf("\n");
	}
	else if(k == 4)
	{
		printf("\t恭喜您!您是本次的幸運會員!\n\n");
	}
}

void birth_greet()
{
//**************************生日問候**************************//
	printf("\n\t【購物管理系統 > 主菜單 > 真情回饋 > 生日問候】\n");
	printf("\t請輸入客戶ID號:");
	scanf("%s",ID);
	for(i = 0; i < 5; i++)
	{
		if(strcmp(ID ,custom_ID[i]) == 0)
		{
			printf("\t客戶生日時間:%s\n",custom_BD[i]);
			i = 5;
			char *cur_time = (char *)malloc(21*sizeof(char));
       			gettime(cur_time);
       			printf("\t當前時間爲: %s\n", cur_time);
        		free(cur_time);
        		cur_time = NULL;
			printf("\t(相同Y/不同N)");
			scanf("%s",&bool5);
			if(bool5 == 'Y')
			{
				printf("\n\t***** ***** ***** *****\n");
				printf("\t***** ***** ***** *****\n");
				printf("\t*** Happy  Birthday ***\n");				
				printf("\t***** ***** ***** *****\n");	
				printf("\t***** ***** ***** *****\n");
			}
			else
			{
				printf("\t抱歉!你的生日還沒到!\n");			
			}
		}
		else
		{
			printf("\t沒有此用戶!\n");
			i = 5;
		}
	}	
}

int logout()
{
//**************************註銷賬號**************************//
	printf("\n\t【購物管理系統 > 主菜單 > 註銷】\n");
	printf("\t請輸入密碼:");
	scanf("%s",passw1);
	if(strcmp(passw1,password) == 0)
	{
		printf("\t確認註銷用戶嗎?(Y/N)");
		scanf("%s",&bool3);
		if(bool3 == 'Y')
		{	
			for(i = 0; password[i] != '\0'; i++)	//重置存放賬號密碼的數組
			{
				username[i] = '\0';
				password[i] = '\0';
			}
			printf("\t註銷用戶成功!\n");
		}
		if(bool3 == 'N')
		{
			return 0;
		}
		
	}
	else
	{
		printf("\t密碼錯誤!\n");
		return 0;
	}
}

int change_pw()
{
//**************************更改管理員密碼**************************//
	if(username[0] != '\0')
	{
		printf("\t請輸入原密碼:");
		scanf("%s",passw1);
		if(strcmp(password,passw1) == 0)
		{
			printf("\t請輸入新密碼:");
			scanf("%s",passw1);
			printf("\t請再次輸入新密碼:");
			scanf("%s",passw2);
			if(strcmp(passw1,passw2) == 0)
			{
				for(i = 0; passw2[i] !='\0'; i++)
				{
					password[i] = passw2[i];
				}
				printf("\t密碼修改成功!請重新登錄!\n\n");
				k = 0;
			}
			else
			{
				printf("\t兩次密碼不相同!請重新輸入!\n\n");
				k = -1;
				return k;
			}		
		}
		else
		{
			printf("\t密碼輸入錯誤!\n\n");
			k = -1;
			return k;
		}
	}				
	if(username[0] == '\0')return 0;
}

void gettime(char *cur_time) 
{
//**************************獲取系統當前時間**************************//
        char Year[6] = {0};
        char Month[4] = {0};
        char Day[4] = {0};
        char Hour[4] = {0};
        char Min[4] = {0};
        char Sec[4] = {0};

        time_t current_time;
        struct tm* now_time;
        time(&current_time);
        now_time = localtime(&current_time);

        strftime(Year, sizeof(Year), "%Y-", now_time);
        strftime(Month, sizeof(Month), "%m-", now_time);
        strftime(Day, sizeof(Day), "%d ", now_time);
        strftime(Hour, sizeof(Hour), "%H:", now_time);
        strftime(Min, sizeof(Min), "%M:", now_time);
        strftime(Sec, sizeof(Sec), "%S", now_time);

        strncat(cur_time, Year, 5);
        strncat(cur_time, Month, 3);
        strncat(cur_time, Day, 3);
        strncat(cur_time, Hour, 3);
        strncat(cur_time, Min, 3);
        strncat(cur_time, Sec, 3);
}

效果展示:

#註冊、登錄、更改管理員密碼效果#
註冊、登錄、更改管理員密碼效果

#更改管理員密碼出錯效果#
更改管理員密碼出錯效果

#客戶信息管理菜單#
在這裏插入圖片描述

#購物結算(會員,客戶名三次輸入錯誤)#
在這裏插入圖片描述

#購物結算(非會員)#
在這裏插入圖片描述

#購物結算(會員)#
在這裏插入圖片描述

#真情回饋#
在這裏插入圖片描述

#註銷#
在這裏插入圖片描述

更多資料請點擊:我的目錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章