圖書管理系統
此係統包含兩大功能模塊:
- 用戶模塊
包含用戶註冊,用戶登錄,設置密碼等! - 圖書管理模塊
對圖書的增刪改查,以及模糊查詢,組合查詢,多種排序,多級菜單等!
此係統非常完善,可做課程設計!
系統代碼
#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();
}
這裏只列舉了部分代碼,如需完整代碼,請點擊這裏下載:
鏈接: 點我下載.