C語言課程設計——圖書管理系統(附超詳細註釋代碼)

圖書管理系統

此係統包含兩大功能模塊:

  1. 用戶模塊
    包含用戶註冊,用戶登錄,設置密碼等!
  2. 圖書管理模塊
    對圖書的增刪改查,以及模糊查詢,組合查詢,多種排序,多級菜單等!

此係統非常完善,可做課程設計!

系統代碼

#include<stdio.h>
#include<string.h>
#include<stdlib.h>//調用清屏,暫停函數
#include<algorithm>
using namespace std;

struct asccount{  
    char ID[8];  
    char password[8]; 
}user[1000];
 
struct message{
	char book_number[20];
	char book_name[20];
	char book_writer[20];
	char book_price[20];
}book[1000];
 
void save_user(void);//將賬號寫入磁盤
void load_user(void);//將賬號讀入內存
void save_book(void);//將圖書寫入磁盤
void load_book(void);//將圖書讀入內存
 
void user_menu(void);//賬號菜單 
void add_user(void);//註冊賬號 
void login_user(void);//登錄賬號
void reset_password(void);//修改密碼
 
 
void choose_menu(void);//選擇菜單
void function_menue(void);//功能菜單
void library_function(void);//功能介紹 
 
 
void entering_function(void);   //錄入
void find_function(void);      //查找 
void add_function(void);     //添加
void delete_function(void); //刪除
void reset_function(void); //修改 

void find_book_number(void);//按照書號查詢 
void find_book_name(void);//按照書名查詢 
void find_book_price(void);//按照價格查詢


void sort(void);//書號排序

void find_cbquery(void);//組合查詢:可以根據可以根據書號,書名查詢

 
int user_count=0;
int book_count=0;
 
int main()
{
	system("color 06");//背景與字體顏色 
	load_user();//將賬號讀入內存
	load_book();//將圖書讀入內存 
	user_menu();
	return 0;
}
 

void sort(void)//書號排序 採用升序方式即(1,2,3,4,5)
{
	int i,j;
	struct message temp;//定義一個零時存儲變量,便於排序的順序交換
	//冒泡排序法由小到大
	for(i=0;i<book_count-1;i++)                                       
	{
		for(j=i+1;j<book_count;j++)
		{	//atoi(char *p)裝有整數的char數組轉化爲整數便於比大小
			if(atoi(book[i].book_number)>atoi(book[j].book_number))
			{
				temp = book[i];
				book[i] = book[j];
				book[j] = temp;
			}
		}
	}
	printf("排序成功!");
}

void find_cbquery(void)//組合查詢:可以根據書號,書名查詢
{
	//定義t作爲查詢是否成功的標記,並且記錄查詢成功的位置
	int i,t=-1;
	char no[20];
	char name[20];
	while(1)
	{
		system("cls");
		printf("\n\t\t\t請輸入要查找的書號\n\t\t\t\t");
		scanf("%s",&no);
		printf("\n\t\t\t請輸入要查找的書名\n\t\t\t\t");
		scanf("%s",&name);
		//for循環查找符合條件的書籍
		for(i=0;i<book_count;i++)
			//strcmp比較兩個字符數組是否相等,相等則返回0
			if(strcmp(book[i].book_number,no)==0&&strcmp(book[i].book_name,name)==0)
			{
				t=i;
				break;
			}
		if(t==-1)
		{
			printf("\n\t\t\t該書號或書名不存在,請重新輸入\n\n\t\t\t    ");
			system("PAUSE");
			continue;
		}
		printf("\n\t\t\t查找成功");
		printf("\n\t\t\t書號:%s",book[t].book_number);
		printf("\n\t\t\t書名:%s",book[t].book_name);
		printf("\n\t\t\t作者:%s",book[t].book_writer);
		printf("\n\t\t\t單價:%s",book[t].book_price);
		printf("\n\t\t\t"); 
		system("PAUSE");
		break;	
	}	
}


void user_menu(void) //菜單欄 
{
	int choose;
	system("cls");//清屏 
	printf("\n\t\t|\t\t\t\t\t|");
	printf("\n\t\t|\t\t\t\t\t|");
	printf("\n\t\t|\t   歡迎來到圖書管理系統\t\t|");
	printf("\n\t\t|\t\t\t\t\t");
	printf("\n\t\t|\t      登錄賬號請按1\t\t|");
	printf("\n\t\t|\t      註冊賬號請按2\t\t|");
	printf("\n\t\t|\t      修改密碼請按3\t\t|");
	printf("\n\t\t|\t      退出系統請按0\t\t|");
	printf("\n\t\t|\t\t\t\t\t|");
	printf("\n\t\t|\t\t");
	printf("\n\t\t\t       請輸入選項:\n\t\t\t\t   ");
	scanf("%d",&choose);
	switch(choose)
	{
		case 1:
			login_user(); break;
		case 2:
			add_user(); break;
		case 3:
			reset_password(); break;
		case 0:
			return; 
		default :
			printf("\n\t\t\t   輸入錯誤,請重新輸入\n\n\t\t\t    "); 
			system("PAUSE");  //暫停等待用戶信號 
        	system("cls"); 
		 	user_menu(); 
	}
}
 
void add_user(void)//註冊賬號
{  
    FILE *fp;  
    int i;  
    char str[101];  
    system("cls");  
    printf("\n");
    printf("\t\t\t請輸入賬號:\n\n\t\t\t   ");  
    scanf("%s",&str);
	if(strlen(str)>16)
	{
		printf("\t\t賬號長度大於16位,請重新輸入\n");
		system("PAUSE");  
        system("cls");  
        printf("\n");  
        add_user();
		return;
	}	
    for(i=0;i<user_count;i++)
        if(strcmp(user[i].ID,str)==0)
		{  
            printf("\t\t該賬號已被註冊,請重新註冊\n\n\t\t\t   ");  
            system("PAUSE");//按任意鍵繼續  
            add_user();  
        }
    strcpy(user[i].ID,str);  
    printf("\t\t\t請輸入密碼:\n\n\t\t\t   ");
	scanf("%s",&str);
	while(strlen(str)>16)
	{
		system("cls");
		printf("\n");
		printf("\t\t密碼長度大於16位,請重新輸入\n\n");
		printf("\t\t\t請輸入密碼:\n\n\t\t\t   ");
		scanf("%s",&str);	
	} 
    strcpy(user[i].password,str);  
    printf("\t\t\t請再次輸入密碼:\n\n\t\t\t   ");  
    scanf("%s",&str);  
    if(strcmp(user[i].password,str)!=0)
	{  
        printf("\t\t兩次密碼不一致,請重新申請\n\n\t\t\t");  
        system("PAUSE");  
        system("cls");  
        printf("\n");  
        add_user();
        return;
    }
    save_user();//將賬號寫入磁盤 
    printf("\t\t\t賬號申請成功\n\n\t\t\t");  
    user_count++;
    system("PAUSE");
	user_menu();   
} 
 
void load_user(void)//將賬號讀入內存
{  
	FILE *fp;
    fp=fopen("賬號.txt","r"); 
    while(fscanf(fp,"%s",&user[user_count].ID)!=EOF)
	{  
        fscanf(fp,"%s",&user[user_count].password); 
        user_count++;
    }
    fclose(fp);
}
 
void save_user(void)//將賬號寫入磁盤
{
    int i;
    FILE *fp;  
    fp=fopen("賬號.txt","w");
	
    for(i=0;i<=user_count;i++)
	{
        fprintf(fp,"%s\n",user[i].ID);  
        fprintf(fp,"%s\n",user[i].password); 
    }  
    fclose(fp);  
} 
 
void login_user(void)//登錄賬號
{
	int i,flag=0;
	char str[20];
	system("cls");  
	printf("\n");
	printf("\t\t\t請輸入賬號:\n\n\t\t\t   ");
	scanf("%s",&str);
	for(i=0;i<user_count;i++)
		if(strcmp(user[i].ID,str)==0)
		{
			flag=1;
			break;
		}
	if(flag==0)
	{
		printf("\t\t該賬號不存在,請重新登錄\n\n\t\t\t");
		system("PAUSE");  
        system("cls");  
        printf("\n");
        login_user(); 
        return;
	}
	printf("\t\t\t請輸入密碼:\n\n\t\t\t   ");
	scanf("%s",&str);
	while(strcmp(user[i].password,str)!=0)
	{
		system("cls");  
        printf("\n");
		printf("\t\t\t密碼錯誤,請重新輸入\n\n\t\t\t\t");
		scanf("%s",&str);	
	}
	printf("\t\t\t登錄成功\n\n\t\t\t");
	choose_menu();
}
 
void reset_password(void)//修改密碼
{
	int i,flag=0;
	char str[20];
	system("cls");  
	printf("\n");
	printf("\t\t\t請輸入賬號:\n\n\t\t\t   ");
	scanf("%s",&str);
	for(i=0;i<user_count;i++)
		if(strcmp(user[i].ID,str)==0)
		{
			flag=1;
			break;
		}
	if(flag==0)
	{
		printf("\t\t該賬號不存在,請重新登錄\n\n\t\t\t");
		system("PAUSE");  
        system("cls");  
        printf("\n");
        reset_password(); 
        return;
	}
	printf("\t\t\t請輸入密碼:\n\n\t\t\t   ");
	scanf("%s",&str);
	while(strcmp(user[i].password,str)!=0)
	{
		system("cls");  
        printf("\n");
		printf("\t\t\t密碼錯誤,請重新輸入\n\n\t\t\t\t");
		scanf("%s",&str);	
	}
	printf("\t\t\t請輸入新密碼\n\n\t\t\t   "); 
	scanf("%s",&str);
	while(strlen(str)>16)
	{
		printf("\t\t密碼長度大於16位,請重新輸入\n");
		system("PAUSE");  
        system("cls");  
        printf("\n");  
        scanf("%s",&str);
	} 
    strcpy(user[i].password,str);  
    printf("\t\t\t請再次輸入密碼:\n\n\t\t\t   ");  
    scanf("%s",&str);  
    while(strcmp(user[i].password,str)!=0)
	{  
        printf("\t\t兩次密碼不一致,請重新申請\n\n\t\t\t");  
        system("PAUSE");  
        system("cls");  
        printf("\n");  
        scanf("%s",&str);
    } 
    save_user();
	printf("\t\t\t修改成功\n\n\t\t\t"); 
	system("PAUSE");
	user_menu();
} 
 
void choose_menu(void)//選擇菜單
{
	int choose;
	while(1)
	{
		system("cls");
		printf("\n\t\t*\t\t\t\t\t|");
		printf("\n\t\t|\t     歡迎來到選擇菜單管理\t|");
		printf("\n\t\t|\t\t\t\t\t|");
		printf("\n\t\t|\t      圖書功能管理請按1\t\t|");
		printf("\n\t\t|\t\t\t\t\t|");
		printf("\n\t\t|\t      圖書功能介紹請按2\t\t|");
		printf("\n\t\t|\t\t\t\t\t|");
		printf("\n\t\t|\t      返回到上一層請按0\t\t|");
		printf("\n\t\t|\t\t\t\t\t|");
		printf("\n\t\t\t\t");
		printf("\n\t\t\t       請輸入選項:\n\t\t\t\t   ");
		scanf("%d",&choose);
		switch(choose)
		{
			case 0:
				 user_menu(); return;
			case 1:
				 function_menue(); return;
			case 2:
				 library_function(); return;
			default:
				printf("\n\t\t\t   輸入錯誤,請重新輸入\n\n\t\t\t    "); 
			system("PAUSE");  
	        system("cls");
		}		
	}		
} 
 
void function_menue(void)//功能菜單 
{
	int choose;
	while(1)
	{
		system("cls");
		printf("\n\n\t\t|||||||||||||||||||||||||||||||||||||||||");
		printf("\n\t\t|\t\t\t\t\t|");
		printf("\n\t\t|\t      錄入功能請按1\t\t|");
		printf("\n\t\t|\t\t\t\t\t|");
		printf("\n\t\t|\t      查找功能請按2\t\t|");
		printf("\n\t\t|\t\t\t\t\t|");
		printf("\n\t\t|\t      排序功能請按3\t\t|");
		printf("\n\t\t|\t\t\t\t\t|");
		printf("\n\t\t|\t      添加功能請按4\t\t|");
		printf("\n\t\t|\t\t\t\t\t|");
		printf("\n\t\t|\t      刪除功能請按5\t\t|");
		printf("\n\t\t|\t\t\t\t\t|");
		printf("\n\t\t|\t      修改功能請按6\t\t|");
		printf("\n\t\t|\t\t\t\t\t|");
		printf("\n\t\t|\t      瀏覽功能請按7\t\t|");
		printf("\n\t\t|\t\t\t\t\t|");
		printf("\n\t\t|\t     返回上一層請按0\t\t|");
		printf("\n\t\t|\t\t\t\t\t|");
		printf("\n\t\t|||||||||||||||||||||||||||||||||||||||||");
		printf("\n\t\t\t\t");
		printf("\n\t\t\t       請輸入選項:\n\t\t\t\t   ");
		scanf("%d",&choose);
		switch(choose)
		{
			case 0:
				choose_menu(); 
			case 1:
				entering_function(); break;//錄入功能
			case 2:
				 find_function(); break;//查找功能
			case 3:
				 sort();break;//排序功能
			case 4:
				add_function(); break;//添加功能 
			case 5:
				delete_function(); break;//刪除功能	
			case 6: 
				reset_function(); break;//修改功能 
	 
			default :
				printf("\n\t\t\t   輸入錯誤,請重新輸入\n\n\t\t\t    "); 
			system("PAUSE");  
		}	
	}  
}
 

 
void library_function(void)//圖書功能 (註冊,登錄,增刪改查等等) 
{
	system("cls");
	printf("\n\t\t|\t\t\t\t\t|");
	printf("\n\t\t|\t   該系統包括以下功能\t\t|");
	printf("\n\t\t|\t\t\t\t\t|");
	printf("\n\t\t|\t      1、 註冊賬號\t\t|");
	printf("\n\t\t|\t\t\t\t\t|");
	printf("\n\t\t|\t      2、 登錄賬號\t\t|");
	printf("\n\t\t|\t\t\t\t\t|");
	printf("\n\t\t|\t      3、 修改密碼\t\t|");
	printf("\n\t\t|\t\t\t\t\t|");
	printf("\n\t\t|\t      4、 錄入功能\t\t|");
	printf("\n\t\t|\t\t\t\t\t|");
	printf("\n\t\t|\t      5、 添加功能\t\t|");
	printf("\n\t\t|\t\t\t\t\t|");
	printf("\n\t\t|\t      6、 刪除功能\t\t|");
	printf("\n\t\t|\t\t\t\t\t|");
	printf("\n\t\t|\t      7、 修改功能\t\t|");
	printf("\n\t\t|\t\t\t\t\t|");
	printf("\n\t\t|\t      8、 瀏覽功能\t\t|");
	printf("\n\t\t|\t\t\t\t\t|");
	printf("\n\t\t|\t      9、 查詢密碼\t\t|");
	printf("\n\t\t|\t\t\t\t\t|");
	printf("\n\t\t*\t      10、排序功能\t\t*");
	printf("\n\t\t|\t\t\t\t\t|");
	printf("\n\t\t");
    system("PAUSE");
    choose_menu();
} 

這裏只列舉了部分代碼,如需完整代碼,請點擊這裏下載:
鏈接: 點我下載.

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