『壹』 c語言 有關於圖書信息管理系統代碼

#include<stdio.h>
#include <string.h>
#include <stdlib.h>
#include<conio.h>
#define Max 2
typedef struct book //書的信息
{
char book_num[10];//書號
char book_name[20];//書名
char book_writer[10];//作者
int book_xy;//書的剩餘數量
int book_kc;//書的總數量
struct book *next;
}BK;
typedef struct borrow //被借書的信息
{
char borrow_book_num[10];//借書書號
char limit_date[8];//借書歸還日期
}BO;
typedef struct reader //讀者信息
{
char reader_num[10];//讀者號
char reader_name[10];//讀者姓名
int right;//已借數量
BO borrow[Max];//已借書信息
struct reader *next;
}RD;

BK *h_book;
RD *h_reader;
void Login();
int Menu();
void Init();
void Init_book();
void Menu_select();
void Insert_New_Book();
void Find_Book();
void add_reader();
void Print_reader();
void Print_book();
void Borrow_Book();
void Return_Book();
void Save();
void Save_Book();
void Save_Reader();
void Load();
void Load_Reader();
void Load_Book();

void Login()
{
system("cls");
printf("\n\n\n\t\t\t歡迎使用圖書管理系統\n");
printf("\n\n\t\t本程序分析者 秦義 學號:200907014122\n\n\n\n\n\n\n");//以前是設計者 xxxx
printf("\n\n\n\t\t 按 任 意 鍵 進 入 系 統 ...");
getch(); system("cls");
}

int Menu() /*主菜單*/
{ int dm;
printf("\n\t\t圖書管理系統主菜單\n");
printf("=================================================\n");
printf("☆\t0----退出系統 ☆\n");
printf("☆\t1----采編入庫 ☆\n");
printf("☆\t2----登記讀者 ☆\n");
printf("☆\t3----借閱登記 ☆\n");
printf("☆\t4---還書管理 ☆\n");
printf("☆\t5---查詢圖書信息 ☆\n");
printf("☆\t6----查詢讀者信息 ☆\n");
printf("=================================================\n");
printf("請選擇相應的代碼:");
for(;;)
{ scanf("%d",&dm);
if(dm<0||dm>6)
printf("\n錯誤!請重新輸入:");
else break;
}
return dm;
}

void Menu_select()/*主菜單選擇函數*/
{
for(;;)
{
switch(Menu()) /*功能選擇*/
{ case 0:
system("cls");
Save();
printf("\n\n\t文件保存成功!\n");
printf("\n\n\t歡迎下次使用本系統!\n");
getch();
exit(0);
case 1:Insert_New_Book();break;
case 2:add_reader();break;
case 3:Borrow_Book();break;
case 4:Return_Book();break;
case 5:Print_book();break;
case 6:Print_reader();break;
default:printf("\n錯誤!");
exit(0);}
}
}

void Init() /*初始化*/
{

Init_book();
}

void Init_book() /*初始化圖書信息*/
{
BK *p0;
printf("\n圖書初始化開始,請輸入圖書信息..\n包括編號.書名.數量..\n");
p0=(BK*)malloc(sizeof(BK));
h_book=p0;
printf("\n請輸入圖書信息:\n");
printf("圖書編號:"); /*輸入圖書編號(唯一)*/
scanf("%s",p0->book_num);
printf("圖書名稱:"); /*輸入圖書名稱*/
scanf("%s",p0->book_name);
printf("圖書作者:"); /*輸入圖書作者*/
scanf("%s",p0->book_writer);
printf("圖書數量:"); /*輸入圖書數量*/
scanf("%d",&p0->book_kc);
p0->book_xy=p0->book_kc; /*開始時圖書現有量和庫存量相等*/
p0->next=NULL;
printf("\n圖書信息初始化完畢!按任意鍵繼續下一步操作..\n");
getch();
system("cls");
}

void Insert_New_Book()/*新書入庫*/
{
BK *p,*p0,*p1;
p=p1=h_book;
printf("\n新書入庫模塊...\n");
printf("\n請輸入新書信息..\n包括書號.書名.數量..\n");
p0=(BK *)malloc(sizeof(BK));
printf("圖書編號:");
scanf("%s",p0->book_num);
while(strcmp(p0->book_num,p1->book_num)!=0&&p1->next!=NULL)
p1=p1->next;
if(strcmp(p0->book_num,p1->book_num)==0) /*此處分兩種情況,若圖書編號存在,則直接進庫,只須輸入書的數量*/
{
printf("\n此編號圖書已存在!!直接入庫!\n");
printf("圖書數量:");
scanf("%d",&p0->book_kc);
p1->book_kc+=p0->book_kc;
p1->book_xy+=p0->book_kc;
}
else/*若不存在,則需要輸入其他的信息 ,然後在進行插入操作*/
{
printf("圖書名稱:");
scanf("%s",p0->book_name);
printf("圖書作者:");
scanf("%s",p0->book_writer);
printf("圖書數量:");
scanf("%d",&p0->book_kc);
while(p->next)
{ p=p->next; }
if(h_book==NULL) h_book=p0; /*此處分兩種情況,鏈表中沒有數據,head直接指向p0處*/
else p->next=p0; /*此處分兩種情況,鏈表中有數據,鏈表中最後元素的next指向p0處*/
p0->next=NULL;
p0->book_xy=p0->book_kc;
}
printf("\n新書入庫完畢!按任意鍵繼續下一步操作..\n");
getch();
system("cls");
}

void add_reader()/*添加讀者*/
{ RD *p0;
int i;
printf("\n讀者初始化開始,請輸入讀者信息..\n包括書證號.姓名..\n");
p0=(RD*)malloc(sizeof(RD)); /*申請新結點存儲空間*/
h_reader=p0;
printf("\n請輸入讀者的信息:\n");
printf("讀者書證號:");
scanf("%s",p0->reader_num);
printf("讀者姓名:");
scanf("%s",p0->reader_name);
p0->right=0;
for(i=0;i<Max;i++)
{
strcpy(p0->borrow[i].borrow_book_num,"0"); /*所借圖書直接置為0(即沒有借書)*/
strcpy(p0->borrow[i].limit_date,"0");
}
p0->next=NULL;
printf("\n讀者信息初始化完畢!按任意鍵繼續下一步操作..\n");
getch();
system("cls");
}

void Borrow_Book() /*借書模塊*/
{
BK *p0; RD *p1;
char bo_num[10],rea_num[10],lim_date[8];
int i;
p0=h_book; p1=h_reader;
printf("\n借書模塊...\n");
printf("\n請輸入借書的讀者書證號:");
scanf("%s",rea_num);
while(p1->next!=NULL&&strcmp(rea_num,p1->reader_num)!=0) //查找讀者號
{p1=p1->next;}
if(p1->next==NULL&&strcmp(rea_num,p1->reader_num)!=0)
{
printf("\n此讀者編號不存在!按任意鍵返回..\n");
goto END;
}
printf("\n請輸入你要借的書的編號:");
scanf("%s",bo_num);
while(strcmp(bo_num,p0->book_num)!=0&&p0->next!=NULL) //查找書號
{p0=p0->next;}
if(p0->next==NULL&&strcmp(bo_num,p0->book_num)!=0)
{
printf("\n此圖書編號不存在!按任意鍵返回..\n");
}
else if(p0->book_xy<=0)
{
printf("\n抱歉,此書已借完!請等待新書的到來!!\n按任意鍵返回....");
}
else if(p1->right>=Max)
{
printf("\n不好意思,借書數目已滿!不能借書!\n按任意鍵返回....");
}
else if(strcmp(p1->borrow[0].borrow_book_num,"0")!=0)
{
for(i=0;i<Max;i++)
{
if(strcmp(p1->borrow[i].borrow_book_num,bo_num)==0)
{
printf("\n抱歉!同一個讀者不能同借兩本相同的書!\n");
}
else if(strcmp(p1->borrow[i].borrow_book_num,"0")==0)
{
printf("\n請輸入你要歸還圖書的日期:");
scanf("%s",lim_date);
strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num);
strcpy(p1->borrow[p1->right-1].limit_date,lim_date);
p0->book_xy--;
printf("\n讀者編號%s借書完畢!按任意鍵繼續下步操作..",p1->reader_num);
}
}
}
else
{
printf("\n請輸入你要歸還圖書的日期:");
scanf("%s",lim_date);
strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num);
strcpy(p1->borrow[p1->right-1].limit_date ,lim_date );
p0->book_xy--;
printf("\n讀者編號%s借書完畢!按任意鍵繼續下步操作..",p1->reader_num);
}
END:getch(); system("cls");
}

void Return_Book() /*還書模塊*/
{
BK *p; RD *q;
int i,j,find=0;
char return_book_num[10],return_reader_num[10];
p=h_book; q=h_reader;
printf("\n還書模塊...\n");
printf("\n請輸入要還書的讀者編號:");
scanf("%s",return_reader_num);
while(q->next!=NULL&&strcmp(return_reader_num,q->reader_num)!=0)
q=q->next;
if(q->next==NULL&&strcmp(return_reader_num,q->reader_num)!=0)
{
find=2;
printf("\n此讀者編號不存在!按任意鍵返回..\n");
goto end;
}
printf("\n請輸入讀者還書的編號:");
scanf("%s",return_book_num);
while(p->next!=NULL&&strcmp(return_book_num,p->book_num)!=0)
p=p->next;
if(p->next==NULL&&strcmp(return_book_num,p->book_num)!=0)
{
find=2;
printf("\n錯誤!此圖書編號不存在!按任意鍵返回..\n");
goto end;
}
for(i=0;i<Max;i++)
if(strcmp(return_book_num,q->borrow[i].borrow_book_num)==0) /*如果此讀者借了此書*/
{
find=1;
for(j=i;j<Max-1;j++)
{
strcpy(q->borrow[j].borrow_book_num,q->borrow[j+1].borrow_book_num);
strcpy(q->borrow[j].limit_date,q->borrow[j+1].limit_date);
}
strcpy(q->borrow[Max-1].borrow_book_num,"0");
strcpy(q->borrow[Max-1].limit_date,"0");
p->book_xy++;
q->right--;
printf("\n編號%s的讀者還書完畢!按任意鍵繼續下步操作..",return_reader_num);
}
if(find==0)
printf("\n錯誤!此讀者未藉此書!按任意鍵返回..\n");
end: getch(); system("cls");
}

void Print_book() /*查詢圖書信息*/
{
BK *p;
p=h_book;
printf("\n圖書信息如下:\n\n");
printf("圖書編號\t圖書名稱\t圖書作者\t現有\t\t庫存\n");
while(p!=NULL)
{
printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\n",p->book_num,p->book_name,p->book_writer,p->book_xy,p->book_kc);
p=p->next;
}
printf("\n圖書信息列印完畢!按任意鍵繼續下一步操作..");
getch();
system("cls");
}

void Print_reader() /*查詢讀者信息*/
{
RD *p;
int i;
p=h_reader;
printf("\n讀者信息如下:\n\n");
printf("讀者書證號\t\t讀者姓名\n");
printf("\n");
while(p!=NULL)
{
printf("\t%s\t\t%s",p->reader_num,p->reader_name);
for(i=0;i<Max;i++)
{
printf("\n");
printf("圖書編號",i+1);
printf("\t還書日期",i+1);
printf("\n");
printf("\t%s",p->borrow[i].borrow_book_num);
printf("\t\t%s",p->borrow[i].limit_date);
}
printf("\n");
p=p->next;
}
printf("\n讀者信息列印完畢!按任意鍵繼續下一步操作..");
getch();
system("cls");
}

//文件模塊
void Save() /*保存信息*/
{
Save_Reader();
Save_Book();
}
void Save_Reader() /*保存讀者信息*/
{
FILE *fp_reader;
RD *p,*p0;
p=h_reader;
if((fp_reader=fopen("Reader.txt","wb"))==NULL) /*創建文件,進行保存*/
{
printf("\n文件保存失敗!\n請重新啟動本系統...\n");
exit(0);
}
while(p!=NULL)
{
if(fwrite(p,sizeof(RD),1,fp_reader)!=1) /*將鏈表中的信息寫入文件中*/
printf("\n寫入文件失敗!\n請重新啟動本系統!\n");
p0=p;
p=p->next;
free(p0); /*釋放所有結點*/
}
h_reader=NULL;
fclose(fp_reader); /*關閉文件*/
}

void Save_Book() /*保存圖書信息*/
{
FILE *fp_book; /*創建文件型指針*/
BK *p,*p0;
p=h_book;
if((fp_book=fopen("Book.txt","wb"))==NULL) /*創建文件,進行保存*/
{
printf("\n文件保存失敗!\n請重新啟動本系統...\n");
exit(0);
}
while(p!=NULL)
{
if(fwrite(p,sizeof(BK),1,fp_book)!=1) /*將鏈表中的信息寫入文件中*/
printf("\n寫入文件失敗!\n請重新啟動本系統!\n");
p0=p;
p=p->next;
free(p0);
}
h_book=NULL;
fclose(fp_book); /*關閉文件*/
}

void Load() /*載入信息*/
{
Load_Reader();
Load_Book();
}
void Load_Reader() /*載入讀者信息*/
{
RD *p1,*p2,*p3;
FILE *fp; /*創建文件型指針*/
fp=fopen("book.txt","rb"); /*打開文件*/
p1=(RD *)malloc(sizeof(RD));
fread(p1,sizeof(RD),1,fp);
h_reader=p3=p2=p1;
while(! feof(fp)) /*讀出信息,重新鏈入鏈表*/
{ p1=(RD *)malloc(sizeof(RD));
fread(p1,sizeof(RD),1,fp);
p2->next=p1;
p3=p2;
p2=p1;
}
p3->next=NULL;
free(p1);
fclose(fp); /*關閉文件*/
}

void Load_Book() /*載入圖書信息*/
{
BK *p1,*p2,*p3;
FILE *fp; /*創建文件型指針*/
fp=fopen("Book.txt","rb"); /*打開文件*/
p1=(BK *)malloc(sizeof(BK));
fread(p1,sizeof(BK),1,fp);
h_book=p3=p2=p1;
while(! feof(fp)) /*讀出信息,重新鏈入鏈表*/
{ p1=(BK *)malloc(sizeof(BK));
fread(p1,sizeof(BK),1,fp);
p2->next=p1;
p3=p2;
p2=p1;
}
p3->next=NULL;
free(p1);
fclose(fp); /*關閉文件*/
}

void main()
{
FILE *fp_book,*fp_reader; /*創建文件型指針*/
Login();
if((fp_book=fopen("Book.txt","rb"))==NULL||(fp_reader=fopen("Reader.txt","rb"))==NULL)
{ Init(); }
else Load();
Menu_select(); /*調用主菜單*/
}

『貳』 C語言程序設計的圖書管理系統

#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>//輸入/輸出文件流類
using namespace std;
const int Maxr=100;//最多的讀者
const int Maxb=100;//最多的圖書
const int Maxbor=5;//每位讀者最多借五本書
//讀者類,實現對讀者的信息的描述

class Reader
{
private:
int tag; //刪除標記 1:已刪 0:未刪
int no; //讀者編號
char name[10]; //讀者姓名
int borbook[Maxbor];//所借圖書
public:
Reader() {}
char *getname() //獲取姓名
int gettag() //獲取刪除標記
int getno() //獲取讀者編號
void setname(char na[]) //設置姓名
{
strcpy(name,na);

}
void delbook()//設置刪除標記 1:已刪 0:未刪
void addreader(int n,char *na)//增加讀者
{
tag=0;
no=n;
strcpy(name,na);
for(int i=0;i<Maxbor;i++)
borbook[i]=0;
}
void borrowbook(int bookid)//借書操作
{
for(int i=0;i<Maxbor;i++)
{
if (borbook[i]==0)
{
borbook[i]=bookid;
return;

}
}

}
int retbook(int bookid)//還書操作
{
for(int i=0;i<Maxbor;i++)
{
if(borbook[i]==bookid)
{
borbook[i]=0;
return 1;

}
}
return 0;
}
void disp()//讀出讀者信息
{
cout << setw(5) << no <<setw(10) << name<<"借書編號:[";
for(int i=0;i<Maxbor;i++)
if(borbook[i]!=0)
cout << borbook[i] << "|";
cout << "]"<<endl;

}
};

//讀者類庫,實現建立讀者的個人資料
class RDatabase
{
private:
int top; //讀者記錄指針
Reader read[Maxr];//讀者記錄
public:
RDatabase() //構造函數,將reader.txt讀到read[]中
{
Reader s;
top=-1;
fstream file("reader.txt",ios::in);//打開一個輸入文件
while (1)
{
file.read((char *)&s,sizeof(s));
if (!file)break;
top++;
read[top]=s;
}
file.close(); //關閉 reader.txt
}
void clear()//刪除所有讀者信息
{
top=-1;
}
int addreader(int n,char *na)//添加讀者時先查找是否存在
{
Reader *p=query(n);
if (p==NULL)
{
top++;
read[top].addreader(n,na);
return 1;
}
return 0;

}
Reader *query(int readerid)//按編號查找
{
for (int i=0;i<=top;i++)
if (read[i].getno()==readerid &&
read[i].gettag()==0)
{
return &read[i];
}
return NULL;
}
void disp() //輸出所有讀者信息
{
for (int i=0;i<=top;i++)
read[i].disp();
}
void readerdata();//讀者庫維護
~RDatabase() //析構函數,將read[]寫到reader.txt文件中
{
fstream file("reader.txt",ios::out);
for (int i=0;i<=top;i++)
if (read[i].gettag()==0)
file.write((char *)&read[i],sizeof(read[i]));
file.close();

}
};
void RDatabase::readerdata()
{

char choice;
char rname[20];
int readerid;
Reader *r;
while (choice!='0')
{
cout <<"\n\n\t\t\t讀 者 維 護\n\n\n\t\t 1 新 增\n\n\t\t 2 更 改\n\n\t\t 3 刪 除\n\n\t\t 4 查 找\n\n\t\t 5 顯 示\n\n\t\t 6 全 刪\n\n\t\t 0 退 出"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout << "輸入讀者編號:";
cin >> readerid;
cout << "輸入讀者姓名:";
cin >> rname;
addreader (readerid,rname);
break;
case '2':
cout << "輸入讀者編號:";
cin >> readerid;
r=query(readerid);
if (r==NULL)
{
cout << " 該讀者不存在 "<<endl;
break;
}
cout << "輸入新的姓名:";
cin >> rname;
r->setname(rname);
break;
case '3':
cout << " 輸入讀者編號:";
cin >> readerid;
r=query(readerid);
if (r==NULL)
{
cout <<" 該讀者不存在" << endl;
break;
}
r->delbook();
break;
case '4':
cout << "讀入讀者編號:";
cin >> readerid;
r=query(readerid);
if (r==NULL)
{
cout <<"該讀者不存在"<< endl;
break;
}
r->disp();
break;
case '5':
disp();
break;
case '6':
clear();
break;
default:cout<<"輸入錯誤,請從新輸入:";break;
}
}
}

//圖書類,實現對圖書的描述,圖書的編號,書名,借出,還入等
class Book
{
private:
int tag;//刪除標記 1:已刪 0:未刪
int no;//圖書編號
char name[20];//書名
int onshelf;//是否再架 1:再架 2:已借
public:
Book(){}
char *getname() //獲取姓名
int getno()//獲取圖書編號
int gettag()//獲取刪除標記
void setname(char na[])//設置書名
{
strcpy(name,na);
}
void delbook()//刪除圖書
void addbook(int n,char *na)//增加圖書
{
tag=0;
no=n;
strcpy(name,na);
onshelf=1;
}
int borrowbook()//借書操作
{
if (onshelf==1)
{
onshelf=0;
return 1;
}
return 0;
}
void retbook()//還書操作
{
onshelf=1;
}
void disp()//輸出圖書
{
cout << setw(6) << no << setw(18) << name << setw(10)
<<(onshelf==1? "在架":"已借") <<endl;
}
};

//圖書庫類,實現對圖書的維護,查找,刪除等
class BDatabase
{
private:
int top; //圖書記錄指針
Book book[Maxb]; //圖書記錄
public:
BDatabase()//構造函數,將book.txt讀到book[]中
{
Book b;
top=-1;
fstream file("book.txt",ios::in);
while (1)
{
file.read((char *)&b,sizeof(b));
if (!file) break;
top++;
book[top]=b;
}
file.close();
}
void clear()//全刪
{
top=-1;
}
int addbook(int n,char *na)//增加圖書
{
Book *p=query(n);
if (NULL==p)
{
top++;
book[top].addbook(n,na);
return 1;
}
return 0;
}
Book *query(int bookid)//查找圖書
{
for (int i=0;i<=top;i++)
if (book[i].getno()==bookid &&book[i].gettag()==0)
{
return &book[i];
}
return NULL;
}
void bookdata();//圖書庫維護
void disp()
{
for (int i=0;i<=top;i++)
if (book[i].gettag()==0)
book[i].disp();
}
~BDatabase()//析構函數,將book[]寫到book.txt文件中
{
fstream file("book.txt",ios::out);
for (int i=0;i<=top;i++)
if (book[i].gettag()==0)
file.write((char *)&book[i],sizeof(book[i]));
file.close();
}
};
void BDatabase::bookdata()
{
char choice;
char bname[40];
int bookid;
Book *b;
while (choice!='0')
{
cout <<"\n\n\n\t\t\t圖 書 維 護 "<<endl<<endl;
cout<<"\t\t1 新 增\n \t\t2 更 改\n\t\t3 刪 除\n\t\t4 查 找\n\t\t5 顯 示\n\t\t6 全 刪\n\t\t0 退 出"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout << "輸入圖書編號:"<<endl;
cin >> bookid;
cout << "輸入圖書書名:"<<endl;
cin >> bname;
addbook(bookid,bname);
break;
case '2':
cout << "輸入圖書編號:"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout << " 該圖書不存在 "<<endl;
break;
}
cout << "輸入新的書名:"<<endl;
cin >> bname;
b->setname(bname);
break;
case '3':
cout <<" 讀入圖書編號:"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout <<" 該圖書不存在" << endl;
break;
}
b->delbook();
break;
case '4':
cout << " 讀入圖書編號:"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout <<" 該圖書不存在"<< endl;
break;
}
b->disp();
break;
case '5':
disp();
break;
case '6':
clear();
break;
default:cout<<"輸入錯誤,請從新輸入:";
}
}
}

//main() 函數的實現,程序的主界面的引導

void main()
{
char choice;
int bookid,readerid;
RDatabase ReaderDB;
Reader *r;
BDatabase BookDB;
Book *b;
while(choice!='0')
{
cout <<endl<<endl<<"\t\t\t 圖 書 管 理 系 統\n\n\n";

cout <<"\t\t\t1 借 書\n\n\t\t\t2 還 書 \n\n\t\t\t3 圖 書 維 護\n\n\t\t\t4 讀 者 維 護\n\n\t\t\t0 離 開"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout <<" 借書 讀者編號:";
cin >>readerid;
cout <<" 圖書編號: ";
cin >>bookid;
r=ReaderDB.query(readerid);//按編號查找
if (NULL==r)
{
cout <<" 不存在該讀者,不能借書"<< endl;
break;
}
b=BookDB.query(bookid);
if (b==NULL)
{
cout <<" 不存在該圖書,不能借書"<< endl;
break;
}
if (b->borrowbook()==0)
{
cout << " 該圖書已借出,不能借書"<< endl;
break;
}
r->borrowbook(b->getno());
break;
case '2':
cout<<"還書\n 讀者編號:";
cin >>readerid;
cout << " 圖書編號:";
cin >>bookid;
r=ReaderDB.query(readerid);
if (r==NULL)
{
cout <<" 不存在該讀者,不能還書" << endl;
break;
}
b=BookDB.query(bookid);
if (b==NULL)
{
cout <<" 不存在該圖書,不能還書" <<endl;
break;
}
b->retbook();
r->retbook(b->getno());
break;
case '3':
BookDB.bookdata();
break;
case '4':
ReaderDB.readerdata();
break;
default:cout<<"輸入錯誤,請從新輸入:";

}
}
}

『叄』 c語言圖書管理系統

我簡單給你說一下吧。
1、首先定義數據結構

圖書結構:圖書編號、圖書名稱、單價、作者、存在狀態
人員結構:人員編號(學生為學號,教師為工作編號)、姓名、性別等
借書結構:人員編號、圖書編號、借書時間、還書時間

2、由於是C系統,通常情況下,數據要存儲在文件中,因此,還需要定義文件結構:圖書、人員、借書信息。
為了數據處理速度,可將借書信息中已經還書的信息單獨放在還書信息中,借書信息中的數據只是已經借出還沒有歸還的數據。

3、系統功能定義,以及編碼。
由於系統太過龐大,你還是自己試著做一下吧,應該可以做好的。
學習本身就是做程序,如果有困難,可以上我們團隊提問題,隨時恭候!

祝學習進步!

『肆』 圖書信息管理系統設計c語言(急求!!!)

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

typedefstructrecord{
chartitle[64];
charauthor[24];
charisbn[24];
doubleprice;
intcopies;
structrecord*next;
}Node,*LinkList,*pNode;

LinkListInitList(){
LinkListhead=(pNode)malloc(sizeof(Node));
head->title[0]='';
head->author[0]='';
head->isbn[0]='';
head->copies=0;
head->price=0.0;
head->next=NULL;
returnhead;
}

pNodeReadData(){
pNodep=(pNode)malloc(sizeof(Node));
fflush(stdin);
printf("書名:");
gets(p->title);
printf("作者:");
gets(p->author);
printf("圖書編號:");
gets(p->isbn);
printf("單價:");
scanf("%lf",&p->price);
printf("數量:");
scanf("%d",&p->copies);
returnp;
}

voidAdd(LinkListhead){//頭插法
pNodep=ReadData();
p->next=head->next;
head->next=p;
}

voidReadFile(LinkListhead){
charfilename[60];
FILE*inf;
intn=0;
pNodep;
printf("請輸入文件名:");
fflush(stdin);
fgets(filename,60,stdin);
if((inf=fopen(filename,"rb"))==NULL){
printf("無法打開數據文件:%s ",filename);
system("pause");
return;
}
p=(pNode)malloc(sizeof(Node));
while(fread((void*)p,sizeof(Node),1,inf)==1){
p->next=head->next;
head->next=p;
p=(pNode)malloc(sizeof(Node));
++n;
}
free(p);
fclose(inf);
printf("共讀入%d條圖書信息! ",n);
system("pause");
}

voidShowData(pNodepnode){
printf("書名:%s ",pnode->title);
printf("作者:%s ",pnode->author);
printf("編號:%s ",pnode->isbn);
printf("單價:%.2lf元 ",pnode->price);
printf("數量:%d本 ",pnode->copies);
}

voidPrintBookList(LinkListhead){
pNodep=head->next;
while(p){
ShowData(p);
p=p->next;
}
system("pause");
}

voidWriteFile(LinkListhead){
charfilename[60];
FILE*outf;
intn=0;
pNodep=head->next;
printf("請輸入文件名:");
fflush(stdin);
fgets(filename,60,stdin);
if((outf=fopen(filename,"wb"))==NULL){
printf("無法打開數據文件:%s ",filename);
system("pause");
return;
}
while(p){
fwrite((void*)p,sizeof(Node),1,outf);
p=p->next;
}
fclose(outf);
printf("共寫出%d條圖書信息! ",n);
system("pause");
}

voidSort(LinkListhead){//選擇排序(按ISBN)
pNodept,qt,q,p;
for(p=head;p->next;p=p->next){
qt=p;
for(q=p->next;q->next;q=q->next)
if(strcmp(qt->next->isbn,q->next->isbn)>0)
qt=q;
if(p!=qt){//調整節點位置
pt=p->next;
p->next=qt->next;
qt->next=qt->next->next;
p->next->next=pt;
}
}
}

intDelete(LinkListhead){
pNodep,q;
charisbn[50],an[5];
printf("請輸入欲刪除圖書ISBN:");
gets(isbn);
for(p=head;p->next;p=p->next){
if(strcmp(p->next->isbn,isbn)==0){
printf("將要刪除圖書《%s》! ",p->next->title);
ShowData(p->next);
printf("1、刪除,0、放棄! ");
printf("請選擇:");
fflush(stdin);
fgets(an,5,stdin);
if(an[0]=='1'){
q=p->next;
p->next=q->next;
free(q);
}
return1;
}
}
printf("對不起,沒有找到編號為%s的圖書! ",isbn);
return0;
}

voidModify(LinkListhead){
pNodep=head->next;
charisbn[50],an[5];
intflag;
do{
printf("欲修改圖書編號:");
fflush(stdin);
gets(isbn);
flag=1;
while(p){
if(strcmp(isbn,p->isbn)==0){
p=ReadData();
flag=0;
break;
}
p=p->next;
}
if(flag)printf("沒有找到編號為%s的圖書。 ",isbn);
elseprintf("修改成功。 ");
printf("1、繼續修改0、返回主菜單 ");
fflush(stdin);
gets(an);
}while(an[0]=='1');
}

voidFreeList(LinkListhead){
pNodeq,p=head;
while(p){
q=p->next;
free(p);
p=q;
}
}

voidMenu(void){
system("cls");
printf("************************************************** ");
printf("*1、添加2、顯示* ");
printf("*3、排序4、刪除* ");
printf("*5、修改6、讀文件* ");
printf("*7、寫文件0、退出* ");
printf("************************************************** ");
}

intmain(){
intchoice;
LinkListhead=InitList();
do{
Menu();
printf("請選擇:");
scanf("%d",&choice);
switch(choice){
case1:Add(head);break;
case2:PrintBookList(head);break;
case3:Sort(head);break;
case4:Delete(head);break;
case5:Modify(head);break;
case6:ReadFile(head);break;
case7:WriteFile(head);break;
default:break;
}
}while(choice);
FreeList(head);
printf("End! ");
return0;
}

『伍』 圖書館圖書管理系統(c語言)

||完整的C語言圖書管理系統

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include "graphics.h"
#include "math.h"
#define m 1
struct data
{ int year;
int month;
int day;
};

struct ReaderNode
{
char num[20];
struct data bro;
struct data back;
};

struct BookNode
{
char title[15];
char writer[15];
int currentnum;
int totalnum;
char brief[30];
struct ReaderNode reader[20];
};

struct TreeNode
{
int n;
struct TreeNode *prt;
int key[2*m];
struct BookNode *rec[2*m];
struct TreeNode *link[2*m+1];

};

struct BookNode *InputNode();
struct TreeNode *mbsearch(struct TreeNode *bth,int x,int *k,int *flag);
struct TreeNode *mbinsert(struct TreeNode *bth);
struct TreeNode *mbdel(struct TreeNode *bth);
void OutputNode(struct TreeNode *bth);
void borrow(struct TreeNode *bth);
void payback(struct TreeNode *bth);
char menu(void);
struct TreeNode *mbsearch(struct TreeNode *bth,int x,int *k,int *flag)
{
struct TreeNode *p,*q;
p=bth; *flag=0; q=p;
while( (p!=NULL) && (*flag==0) )
{
*k=1;q=p;
while( (*k < q->n) && ( q->key[*k-1] < x) ) *k=*k+1;
if( q->key[*k-1]==x) *flag=1;
else if( ( *k==q->n ) && ( q->key[*k-1] < x) ) {p=q->link[*k];p->prt=q;}
else { p=q->link[*k-1]; p->prt=q;*k=*k-1;}
}
return(q);
}

struct TreeNode *mbinsert(struct TreeNode *bth)
{
int flag,j,k,t;
int y,x,z;
struct TreeNode *p,*q,*u,*s;
struct BookNode *r,*l;
clrscr();
printf("\n\tPlease input the book you want to insert: ");
scanf("%d",&x);
q=mbsearch(bth,x,&k,&flag);
if(flag==1)
{

printf("\n\tHas %d this kind of book,do you want to add another?(y/n)\n",(q->rec[k-1])->totalnum);
z=getch();
if(z=='y'||z=='Y')
{
(q->rec[k-1])->totalnum++; (q->rec[k-1])->currentnum++;
printf("\n\tNow total has %d this kind of book,",(q->rec[k-1])->totalnum);
printf("\n\tand current has %d in the library.",(q->rec[k-1])->currentnum);
}
return(bth);
}
r=InputNode(bth);
if(bth==NULL)
{
bth=p=(struct TreeNode *)malloc(sizeof(struct TreeNode));
p->n=1; p->key[0]=x; p->rec[0]=r;p->prt=NULL;
for(j=1;j<=2*m+1;j++) p->link[j-1]=NULL;
return(p);
}

p=NULL; t=0;
while(t==0)
{
if(k==q->n) {y=x;l=r;u=p;}
else
{
y=q->key[q->n-1]; l=q->rec[q->n-1];u=q->link[q->n];
for(j=(q->n)-1; j>=k+1; j--)
{
q->key[j]=q->key[j-1];q->rec[j]=q->rec[j-1];q->link[j+1]=q->link[j];
}
q->key[k]=x;q->rec[k]=r;q->link[k+1]=p;
if(p!=NULL) p->prt=q;
}

if(q->n<2*m)
{
q->n=(q->n)+1;
t=1;
q->key[(q->n)-1]=y; q->rec[(q->n)-1]=l; q->link[q->n]=u;
if(u!=NULL) u->prt=q;
}
else
{
p=(struct TreeNode *)malloc(sizeof(struct TreeNode));
p->n=m; q->n=m; p->prt=q->prt;
x=q->key[m];r=q->rec[m];
for(j=1;j<=m-1;j++)
{
p->key[j-1]=q->key[m+j];p->rec[j-1]=q->rec[m+j];p->link[j-1]=q->link[m+j];
if(q->link[m+j]!=NULL) (q->link[m+j])->prt=p;

}

p->link[m-1]=q->link[2*m];
p->link[m]=u;
p->key[m-1]=y;
p->rec[m-1]=l;

if(u!=NULL) u->prt=p;
for(j=m+2;j<=2*m+1;j++)
{
q->link[j-1]=NULL;p->link[j-1]=NULL;
}

if(q->prt==NULL)
{
s=(struct TreeNode *)malloc(sizeof(struct TreeNode));
s->key[0]=x; s->rec[0]=r;
s->link[0]=q; s->link[1]=p;
s->n=1; s->prt=NULL; q->prt=s; p->prt=s;
for(j=3;j<=2*m+1;j++) s->link[j-1]=NULL;
bth=s; t=1;
}
else
{
q=q->prt; k=1;
while((k<=q->n)&&(q->key[k-1]<x)) k=k+1;
k=k-1;
}
}
}
return(bth);
}
struct TreeNode *mbdel(struct TreeNode *bth)
{
int flag,j,k,t;
int x,y;
struct TreeNode *u,*s,*p,*q;
struct BookNode *r,*l;
clrscr();
printf("\n\tPlease input the book you want to delete: ");
scanf("%d",&x);
q=mbsearch(bth,x,&k,&flag);
if(flag==0) { printf("\n\tThe book is not exist!\n"); return(bth);}
p=q->link[k];
if(p!=NULL)
{
while(p->link[0]!=NULL) p=p->link[0];
q->key[k-1]=p->key[0];
q->rec[k-1]=p->rec[0];
k=1;q=p;
}

for(j=k;j<=q->n-1;j++)
{
q->key[j-1]=q->key[j];
q->rec[j-1]=q->rec[j];
}
q->n=q->n-1;

while ((q!=bth)&&(q->n<m))
{
p=q->prt;j=1;
while(p->link[j-1]!=q) j=j+1;
if((j<=p->n)&&((p->link[j])->n>m))
{
s=p->link[j];
y=s->key[0];
l=s->rec[0];
u=s->link[0];
for(k=1;k<=s->n-1;k++)
{
s->key[k-1]=s->key[k];
s->rec[k-1]=s->rec[k];
s->link[k-1]=s->link[k];
}
s->link[s->n-1]=s->link[s->n];
s->link[s->n]=NULL;
s->n=s->n-1; q->n=q->n+1;
q->key[q->n-1]=p->key[j-1];
q->rec[q->n-1]=p->rec[j-1];
q->link[q->n]=u;
p->key[j-1]=y;
p->rec[j-1]=l;
if(u!=NULL) u->prt=q;
}
else if((j>1)&&((p->link[j-2])->n>m))
{
s=p->link[j-2];
q->n=q->n+1;
q->link[q->n]=q->link[q->n-1];

for(k=q->n-1;k>=1;k--)
{
q->key[k]=q->key[k-1];
q->rec[k]=q->rec[k-1];
q->link[k]=q->link[k-1];
}
q->key[0]=p->key[j-2];
q->rec[0]=p->rec[j-2];
u=s->link[s->n];
q->link[0]=u;
if(u!=NULL) u->prt=q;
p->key[j-2]=s->key[s->n-1];
p->rec[j-2]=s->rec[s->n-1];
s->link[s->n]=NULL;
s->n=s->n-1;
}

else
{
if(j==p->n+1)
{ q=p->link[j-2]; s=p->link[j-1]; j=j-1;}
else s=p->link[j];
q->key[q->n]=p->key[j-1];
q->rec[q->n]=p->rec[j-1];
t=q->n+1;
for(k=1;k<=s->n;k++)
{ q->key[t+k-1]=s->key[k-1];
q->rec[t+k-1]=s->rec[k-1];
u=s->link[k-1];
q->link[t+k-1]=u;
if(u!=NULL) u->prt=q;
}
u=s->link[s->n]; q->link[t+s->n]=u;
if(u!=NULL) u->prt=q;
q->n=2*m;
free(s);
for(k=j;k<=p->n-1;k++)
{
p->key[k-1]=p->key[k];
p->rec[k-1]=p->rec[k];
p->link[k]=p->link[k+1];
}
p->n=p->n-1; s=q; q=p;
}
}
if((q==bth)&&(q->n==0))
{ free(bth); bth=s; bth->prt=NULL;
if(s->n==0) {bth=NULL; free(s); }
}
printf("\n\tThe book has been delete !");
return(bth);
}
struct BookNode *InputNode()
{
struct BookNode *p;
int i;
p=(struct BookNode *)malloc(sizeof(struct BookNode));
clrscr();
fflush(stdin);
printf("\n\tInput the title: ");
gets(p->title);
printf("\n\tInput the writer: ");
gets(p->writer);
printf("\n\tInput the book current amount: ");
scanf("%d",&p->currentnum);
printf("\n\tInput the book total amount: ");
scanf("%d",&p->totalnum);
fflush(stdin);
printf("\n\tInput the book brief instruction: ");
gets(p->brief);
for(i=0;i<20;i++)
(p->reader[i]).num[0]='\0';
return(p);
}
void OutputNode(struct TreeNode *bth)
{
struct TreeNode *q;
struct BookNode *p;
int k;
int x;
int flag;
clrscr();
printf("\n\tPlease input the book you want to search: ");
scanf("%d",&x);
q=mbsearch(bth,x,&k,&flag);
if(flag==1)
{
p=q->rec[k-1];
printf("\n\tTitle: %s",p->title);
printf("\n\tWriter: %s",p->writer);
printf("\n\tCurrentAmount: %d",p->currentnum);
printf("\n\tTotalAmount: %d",p->totalnum);
printf("\n\tBriefIntroction: %s\n",p->brief);
}
else printf("\n\tThis book is not exist!");
}
void borrow(struct TreeNode *bth)
{
struct TreeNode *q;
struct BookNode *p;
struct ReaderNode *r;
int i,k, x, flag,t;
clrscr();
printf("\n\tPlease input the book you want to borrow: ");
scanf("%d",&x);
q=mbsearch(bth,x,&k,&flag);
if(flag==1)
{
p=q->rec[k-1];
printf("\n\tDo you want this book ?(y/n)");
printf("\n\tTitle: %s",p->title);
printf("\n\tWriter: %s",p->writer);
printf("\n\tCurrentAmount: %d",p->currentnum);
printf("\n\tTotalAmount: %d",p->totalnum);
printf("\n\tBriefIntroction: %s",p->brief);
t=getch();
if(t=='y'||t=='Y')
{
if( (p->currentnum)==0) printf("\n\tSorry,this book has all borrow out...");
else
{
clrscr();
for(i=0;i<20;i++) if( (p->reader[i]).num[0]=='\0') break;
printf("\n\tPlease input your certificate number: ");
scanf("%s",(p->reader[i]).num);
printf("\n\tPlease input the borrow data: ");
printf("\n\tYear: ");
scanf("%d",&((p->reader[i]).bro.year));
printf("\tMonth: ");
scanf("%d",&((p->reader[i]).bro.month));
printf("\tDay: ");
scanf("%d",&((p->reader[i]).bro.day));

printf("\n\tPlease input the payback data: ");
printf("\n\tYear: ");
scanf("%d",&((p->reader[i]).back.year));
printf("\tMonth: ");
scanf("%d",&((p->reader[i]).back.month));
printf("\tDay: ");
scanf("%d",&((p->reader[i]).back.day));

p->currentnum--;
printf("\n\tYou have borrow the book.");}
}

}
else printf("\n\tThis book is not exist!");
}
void payback(struct TreeNode *bth)
{
struct TreeNode *q;
struct BookNode *p;
int i,k, x, flag,t,j;
int year,month,day,d;
float pay;
char temp[20];
clrscr();
printf("\n\tPlease input the book you want to payback: ");
scanf("%d",&x);
q=mbsearch(bth,x,&k,&flag);
if(flag==1)
{
p=q->rec[k-1];
printf("\n\tDo you want to payback this book ?(y/n)");
printf("\n\tTitle: %s",p->title);
printf("\n\tWriter: %s",p->writer);
printf("\n\tCurrentAmount: %d",p->currentnum);
printf("\n\tTotalAmount: %d",p->totalnum);
printf("\n\tBriefIntroction: %s",p->brief);
t=getch();
if(t=='y'||t=='Y')
{
if( (p->currentnum) >=(p->totalnum) )
printf("\n\tYou want to offer a more book ??\n");
else
{
clrscr();
printf("\n\tPlease input your certificate number: ");
scanf("%s",temp);
j=0;
for(i=0;i<20;i++)
{
if(! (strcmp(temp,(p->reader[i]).num))) {j=1;break;}
}
if(j==0) {printf("\n\tYou haven't borrow this book.");return;}
printf("\n\tToday is:");
printf("\n\tYear: ");
scanf("%d",&year);
printf("\tMonth: ");
scanf("%d",&month);
printf("\tDay: ");
scanf("%d",&day);

d=0;
if(year<(p->reader[i]).back.year) d=1;
if(year<=(p->reader[i]).back.year && month<(p->reader[i]).back.month) d=1;
if(year<=(p->reader[i]).back.year && month<=(p->reader[i]).back.month && day<(p->reader[i]).back.day) d=1;
if(d==0)
{
clrscr();
pay=(year-(p->reader[i]).back.year)*365+(month-(p->reader[i]).back.month)*30+(day-(p->reader[i]).back.day);
printf("\n\tYou borrow this book is in %d-%d-%d",(p->reader[i]).bro.year,(p->reader[i]).bro.month,(p->reader[i]).bro.day);
printf("\n\tYou should pay it back in %d-%d-%d",(p->reader[i]).back.year,(p->reader[i]).back.month,(p->reader[i]).back.day);
printf("\n\tToday is %d-%d-%d",year,month,day);
printf("\n\n\tSo you have go out the payback day");
printf("\n\tYou have to pay %2.1f Yuan.",0.1*pay);
}
(p->reader[i]).num[0]='\0';
p->currentnum++;
printf("\n\tYou have payback the book.");
}
}

}
else printf("\n\tYou want to payback an inexistence book ???");

}
donghua()
{int graphdriver=VGA;
int graphmode=VGAHI;
int i,j;
registerbgidriver(EGAVGA_driver);
initgraph(&graphdriver,&graphmode,"");
clrscr();

for(i=0;i<=150;i+=5)
{setcolor(i);
textbackground(RED);
settextstyle(0,0,2);
outtextxy(100,i+140,"Liberary management System");
delay(10000000);
clrscr();
}
setcolor(RED);
outtextxy(50,200,"Loading");
delay(100000000000);
outtextxy(50,200,"Loading.");
delay(100000000000);
outtextxy(50,200,"Loading..");
delay(100000000000);
outtextxy(50,200,"Loading...");
delay(100000000000);
outtextxy(50,200,"Loading....");
delay(100000000000);
outtextxy(50,200,"Loading.....");
delay(100000000000);
outtextxy(50,200,"Loading......");
delay(100000000000);
outtextxy(50,200,"Loading.......");
delay(100000000000);
outtextxy(50,200,"Loading........");
delay(100000000000);
outtextxy(50,200,"Loading.........");
delay(100000000000);
outtextxy(50,200,"Loading..........");
delay(100000000000);
outtextxy(50,200,"Loading...........");
outtextxy(50,200,"Loading............");
delay(100000000000);
for(i=0;i<=10;i++)
delay(100000000000);
clrscr();

}
char menu(void)
{
clrscr();
window(1,1,80,25);
textmode(MONO);
textbackground(BLACK);
textcolor(5);
printf("\n\t ****************************************************");
printf("\n\t ***** Welcome to Liberary management System *****");
printf("\n\t ****************************************************");
printf("\n\t ****************************************************");
printf("\n\t *1.Add a book *");
printf("\n\t ****************************************************");
printf("\n\t *2.Delete a book *");
printf("\n\t ****************************************************");
printf("\n\t *3.Search a book *");
printf("\n\t ****************************************************");
printf("\n\t *4.Borrow a book *");
printf("\n\t ****************************************************");
printf("\n\t *5.Payback a book *");
printf("\n\t ****************************************************");
printf("\n\t *0.exit *");
printf("\n\t ****************************************************");
printf("\n\t please select: ");
return getch();
}
bofangdonghua()
{int graphdriver=VGA;
int graphmode=VGAHI;
int i,j;
char c;
registerbgidriver(EGAVGA_driver);
initgraph(&graphdriver,&graphmode,"");
/*************shi fou bo fang dong hua?**************/
printf:{setcolor(RED);
settextstyle(3,0,5);
outtextxy(100,30,"bo fang dong hua?");
outtextxy(150,80,"Yes");
outtextxy(300,80,"No");
c=getch();
if(c=='Y'||c=='y')
{donghua();
menu();
}
else
if(c=='N'||c=='n')
menu();
else
{setcolor(GREEN);
settextstyle(3,0,8);
outtextxy(200,240,"Error!");
delay(10000000000);
clrscr();
goto printf;
}
}
/**************************************/

}

void main()
{
char c,t;
int x;
int k,flag,p=1;
struct TreeNode *bth=NULL;

bofangdonghua();

while(1)
{
c=menu();
putch(c);
getch();
switch(c)
{
case '1': bth=mbinsert(bth);

break;

case '2': bth=mbdel(bth);

break;

case '3': OutputNode(bth);
break;

case '4': borrow(bth);
break;

case '5': payback(bth);
break;

case '0': clrscr();
printf("\n\tDo you want to return ?(y/n)");
t=getch();
if(t=='y'||t=='Y') exit(0);
break;
defult :break;
}
printf("\n\tPress any key to the main menu....");
getch();
}
}

『陸』 C語言,圖書信息管理系統

//懶得寫注釋了。。哪兒想要注釋就私信我吧。。全篇都寫好麻煩
//希望能幫到你^_^
#include<stdio.h>
#include<string.h>
#defineTotal20

typedefstructTime{
intyear;
intmonth;
intday;
}Time;

structBook{
intbookID;
charbookName[20];
charauthorName[20];
intgroupID;
charpublishHouse[20];
TimepublishTime;
doubleprice;
intisVisible;//1-正常情況,0-被刪除
}book[Total];

intcount=0;

voidinputInfo()
{
printf("Pleaseinputthenumberofbooks: ");
scanf("%d",&count);
for(inti=0;i<count;i++){
printf("Book%d: ",i+1);
printf("bookID:");
scanf("%d",&book[i].bookID);
getchar();
printf("bookname:");
scanf("%s",book[i].bookName);
getchar();
printf("authorname:");
scanf("%s",book[i].authorName);
printf("groupID:");
scanf("%d",&book[i].groupID);
getchar();
printf("publishinghouse:");
scanf("%s",book[i].publishHouse);
printf("publishingtime:");
scanf("%d.%d.%d",&book[i].publishTime.year,&book[i].publishTime.month,&book[i].publishTime.day);
printf("bookprice:");
scanf("%lf",&book[i].price);
book[i].isVisible=1;
}
printf("InputComplete! ");
}

voidoutputInfo()
{
printf("BookID BookName Author GroupID PublishHouse Time price ");
for(inti=0;i<count;i++){
if(book[i].isVisible==1){
printf("%d ",book[i].bookID);
printf("%s ",book[i].bookName);
printf("%s ",book[i].authorName);
printf("%d ",book[i].groupID);
printf("%s ",book[i].publishHouse);
printf("%d.%d.%d ",book[i].publishTime.year,book[i].publishTime.month,book[i].publishTime.day);
printf("%.2lf ",book[i].price);
printf(" ");
}
}
}

voidsearchByBookName()
{
charname[20];
printf("Pleaseinputthenameofthebook:");
scanf("%s",name);
inti;
for(i=0;i<count;i++){
if(strcmp(book[i].bookName,name)==0&&book[i].isVisible==1){
printf("----------------------------------------------- ");
printf("--Youareviewingthebook:%s ",name);
printf("--BookID:%d ",book[i].bookID);
printf("--Author:%s ",book[i].authorName);
printf("--GroupID:%d ",book[i].groupID);
printf("--PublishingHouse:%s ",book[i].publishHouse);
printf("--PublishingTime:%d.%d.%d ",book[i].publishTime.year,book[i].publishTime.month,book[i].publishTime.day);
printf("--BookPrice:%lf ",book[i].price);
printf("----------------------------------------------- ");
return;
}
}
if(i==count)
printf("Notfindthebookyouwant. ");
}

voidsearchByAuthorName()
{
charname[20];
printf("Pleaseinputtheauthor'snameofthebook:");
scanf("%s",name);
inti;
for(i=0;i<count;i++){
if(strcmp(book[i].authorName,name)==0&&book[i].isVisible==1){
printf("----------------------------------------------- ");
printf("--Youareviewingthebook:%s ",name);
printf("--BookID:%d ",book[i].bookID);
printf("--Author:%s ",book[i].authorName);
printf("--GroupID:%d ",book[i].groupID);
printf("--PublishingHouse:%s ",book[i].publishHouse);
printf("--PublishingTime:%d.%d.%d ",book[i].publishTime.year,book[i].publishTime.month,book[i].publishTime.day);
printf("--BookPrice:%lf ",book[i].price);
printf("----------------------------------------------- ");
return;
}
}
if(i==count)
printf("Notfindthebookyouwant. ");
}

voidquertBook()
{
intchoice;
printf("?0-book,1-author:");
scanf("%d",&choice);
if(choice==0)
searchByBookName();
if(choice==1)
searchByAuthorName();
}

voiddeleteByBookName()
{
charname[20];
printf("Pleaseinputthenameofthebook:");
scanf("%s",name);
inti;
for(i=0;i<count;i++){
if(strcmp(book[i].bookName,name)==0&&book[i].isVisible==1){
book[i].isVisible=0;
printf("DeleteComplete! ");
return;
}
}
if(i==count)
printf("Thebookdoesn'texist. ");
}

voiddeleteByBookID()
{
intID;
printf("PleaseinputtheIDofthebook:");
scanf("%d",&ID);
inti;
for(i=0;i<count;i++){
if(book[i].bookID==ID&&book[i].isVisible==1){
book[i].isVisible=0;
printf("DeleteComplete! ");
return;
}
}
if(i==count)
printf("Thebookdoesn'texist. ");

}

voiddeleteBook()
{
intchoice;
printf("?0-name,1-ID:");
scanf("%d",&choice);
if(choice==0)
deleteByBookName();
if(choice==1)
deleteByBookID();
}

voidmodifyByBookName()
{
charname[20];
printf("Pleaseinputthenameofthebook:");
scanf("%s",name);
inti;
for(i=0;i<count;i++){
if(strcmp(book[i].bookName,name)==0&&book[i].isVisible==1){
printf("Youaremodifyingthebook:%s",book[i].bookName);
printf(": ");
printf("Book%d: ",i+1);
printf("bookID:");
scanf("%d",&book[i].bookID);
getchar();
printf("bookname:");
scanf("%s",book[i].bookName);
getchar();
printf("authorname:");
scanf("%s",book[i].authorName);
printf("groupID:");
scanf("%d",&book[i].groupID);
getchar();
printf("publishinghouse:");
scanf("%s",book[i].publishHouse);
printf("publishingtime:");
scanf("%d.%d.%d",&book[i].publishTime.year,&book[i].publishTime.month,&book[i].publishTime.day);
printf("bookprice:");
scanf("%lf",&book[i].price);
book[i].isVisible=1;
printf("ModificationComplete! ");
return;
}
}
if(i==count)
printf("Thebookdoesn'texist. ");
}

voidmodifyByBookID()
{
intID;
printf("PleaseinputtheIDofthebook:");
scanf("%d",&ID);
inti;
for(i=0;i<count;i++){
if(book[i].bookID==ID&&book[i].isVisible==1){
printf("Youaremodifyingthebook:%s",book[i].bookName);
printf(": ");
printf("Book%d: ",i+1);
printf("bookID:");
scanf("%d",&book[i].bookID);
getchar();
printf("bookname:");
scanf("%s",book[i].bookName);
getchar();
printf("authorname:");
scanf("%s",book[i].authorName);
printf("groupID:");
scanf("%d",&book[i].groupID);
getchar();
printf("publishinghouse:");
scanf("%s",book[i].publishHouse);
printf("publishingtime:");
scanf("%d.%d.%d",&book[i].publishTime.year,&book[i].publishTime.month,&book[i].publishTime.day);
printf("bookprice:");
scanf("%lf",&book[i].price);
book[i].isVisible=1;
printf("ModificationComplete! ");
return;
}
}
if(i==count)
printf("Thebookdoesn'texist. ");
}

voidmodifyBook()
{
intchoice;
printf("?0-name,1-ID:");
scanf("%d",&choice);
if(choice==0)
modifyByBookName();
if(choice==1)
modifyByBookID();
}

voidinsertBook()
{
printf(" ");
printf("Book%d: ",count+1);
printf("bookID:");
scanf("%d",&book[count].bookID);
getchar();
printf("bookname:");
scanf("%s",book[count].bookName);
getchar();
printf("authorname:");
scanf("%s",book[count].authorName);
printf("groupID:");
scanf("%d",&book[count].groupID);
getchar();
printf("publishinghouse:");
scanf("%s",book[count].publishHouse);
printf("publishingtime:");
scanf("%d.%d.%d",&book[count].publishTime.year,&book[count].publishTime.month,&book[count].publishTime.day);
printf("bookprice:");
scanf("%lf",&book[count].price);
book[count].isVisible=1;
count++;
printf("InsertComplete! ");
}

voidmenu()
{
printf("--------------------------------- ");
printf("--1-inputdata-- ");
printf("--2-outputdata-- ");
printf("--3-searchforabook-- ");
printf("--4-deleteabook-- ");
printf("--5-modifyinfoofabook-- ");
printf("--6-insertdata-- ");
printf("--0-exit-- ");
printf("--------------------------------- ");

}

intmain(){
intchoice;
menu();
scanf("%d",&choice);
while(choice!=0){
switch(choice){
case1:
inputInfo();
break;
case2:
outputInfo();
break;
case3:
quertBook();
break;
case4:
deleteBook();
break;
case5:
modifyBook();
break;
case6:
insertBook();
break;
default:
break;
}
menu();
scanf("%d",&choice);
}
return0;
}

『柒』 C語言 圖書管理系統

///////////////////////////////////////////////////////////////////
// File :
// Author :
// Date :
// Modifier :
// Modify Date :
// Description :
///////////////////////////////////////////////////////////////////
#include <iomanip>
#include <string>
#include <cmath>
#include <vector>
#include <fstream>
#include <sstream>
#include <iostream>
using namespace std;
struct Book
{
int Number;// 書號
string Name;// 書名
int Price;// 價格
int Deal_Num;// 交易流水號
};
void Data_Input( vector< Book > &book )
{
int Num;
Book Temp;
string s;
stringstream sstr;
char File_Name[10]="Data.txt";

ifstream fp(File_Name);

if(!fp)
{
cerr<<" Can not Open"<<File_Name<<endl;
}

getline(fp,s);
sstr << s;
sstr >> s >> Num;
s.clear();

for(unsigned i=0; i<Num; i++ )
{
sstr.clear();
s.clear();

getline(fp,s);
sstr << s;
sstr >> Temp.Number >> Temp.Name>>Temp.Price>>Temp.Deal_Num;

book.push_back( Temp );
}

fp.close();

cout<<"完成系統錄入."<<endl;
}
void Data_Insert( vector< Book > &book )
{
Book Temp;
int Num;

cout<<"請輸入您需要錄入的信息總數:\n";
cin>>Num;

for(unsigned i=0; i<Num ;i++ )
{
cout<<"正在錄入第"<<i+1<<"本書目的信息:"<<endl;
cout<<"請鍵入書號: ";
cin>>Temp.Number;
cout<<"請鍵入書名: ";
cin>>Temp.Name;
cout<<"請鍵入價格: ";
cin>>Temp.Price;
cout<<"請鍵入交易流水號: ";
cin>>Temp.Deal_Num;

book.push_back(Temp);
}

cout<<"共計"<<Num<<"本書的信息已經被錄入."<<endl;
}
void Data_Delete( vector< Book > &book )
{
int Num;
vector< Book >::iterator Sear;

cout<<"請輸入您要刪除的書號: ";
cin>>Num;

for(Sear=book.begin(); Sear!=book.end(); Sear++ )
{
if( (*Sear).Number==Num )
{
book.erase( Sear );
cout<<"該書號被刪除."<<endl;
Num=-1;
break;
}
}

if( Num!=-1 )
{
cout<<"輸入書號有誤!\n";
}
}
void Data_Display( vector< Book > &book )
{
cout<<"*********LIST*********\n";

for(unsigned i=0; i<book.size() ;i++ )
{
cout<<"書號: "<<book[i].Number<<endl;
cout<<"書名: "<<book[i].Name<<endl;
cout<<"價格: "<<book[i].Price<<endl;
cout<<"交易流水號: "<<book[i].Deal_Num<<endl;
cout<<endl;
}
cout<<"*********END**********\n";
}
void Data_Output( vector< Book > &book )
{
char File_Name[10]="Data.txt";

ofstream fp(File_Name);

if(!fp)
{
cerr<<" Can not Open "<< File_Name<< endl;
}

fp<<"圖書總計(本): "<<book.size()<<endl;

for(unsigned i=0; i<book.size() ;i++ )
{
fp<<book[i].Number<<book[i].Name<<book[i].Price<<book[i].Deal_Num<<endl;
}

fp.close();

cout<<"書目已被保存到本地."<<endl;
}
int main()
{
int choice;
vector< Book > book;

while( choice!=5 )
{
cout<<"********************************"<<endl;
cout<<"** 0--------------->讀取數據 **"<<endl;
cout<<"** 1--------------->增加數據 **"<<endl;
cout<<"** 2--------------->刪除數據 **"<<endl;
cout<<"** 3--------------->查看數據 **"<<endl;
cout<<"** 4--------------->保存記錄 **"<<endl;
cout<<"** 5--------------->退出程序 **"<<endl;
cout<<"********************************"<<endl;
cout<<"請鍵入您的選擇:\t";
cin>>choice;

switch(choice)
{
case 0:Data_Input( book );break;
case 1:Data_Insert( book );break;
case 2:Data_Delete( book );break;
case 3:Data_Display( book );break;
case 4:Data_Output( book );break;
case 5:break;
default:break;
}
}

return 0;
}

『捌』 圖書信息管理系統C語言

自己寫的!
題目和你們一樣!

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

struct books_list
{

char author[20]; /*作者名*/
char bookname[20]; /*書名*/
char publisher[20]; /*出版單位*/
char pbtime[15]; /*出版時間*/
char loginnum[10]; /*登陸號*/
float price; /*價格*/
char classfy[10]; /*分類號*/
struct books_list * next; /*鏈表的指針域*/
};

struct books_list * Create_Books_Doc(); /*新建鏈表*/
void InsertDoc(struct books_list * head); /*插入*/
void DeleteDoc(struct books_list * head , int num);/*刪除*/
void Print_Book_Doc(struct books_list * head);/*瀏覽*/
void search_book(struct books_list * head); /*查詢*/
void info_change(struct books_list * head);/*修改*/
void save(struct books_list * head);/*保存數據至文件*/

/*新建鏈表頭節點*/
struct books_list * Create_Books_Doc()
{
struct books_list * head;
head=(struct books_list *)malloc(sizeof(struct books_list)); /*分配頭節點空間*/
head->next=NULL; /*頭節點指針域初始化,定為空*/
return head;
}

/*保存數據至文件*/
void save(struct books_list * head)
{
struct books_list *p;
FILE *fp;
p=head;
fp=fopen("data.txt","w+"); /*以寫方式新建並打開 data.txt文件*/
fprintf(fp,"┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n"); /*向文件輸出表格*/
fprintf(fp,"┃登錄號┃ 書 名 ┃ 作 者┃ 出版單位 ┃ 出版時間 ┃分類號┃ 價格 ┃\n");
fprintf(fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n");
/*指針從頭節點開始移動,遍歷至尾結點,依次輸出圖書信息*/
while(p->next!= NULL)
{
p=p->next;
fprintf(fp,"┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f ┃\n",p->loginnum,p->bookname,p->author,p->publisher,p->pbtime,p->classfy,p->price);
}
fprintf(fp,"┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n");
fclose(fp);
printf(" 已將圖書數據保存到 data.txt 文件\n");
}

/*插入*/
void InsertDoc(struct books_list *head)
{
/*定義結構體指針變數 s指向開辟的新結點首地址 p為中間變數*/
struct books_list *s, *p;
char flag='Y'; /*定義flag,方便用戶選擇重復輸入*/
p=head;
/*遍歷到尾結點,p指向尾結點*/
while(p->next!= NULL)
{
p=p->next;
}
/*開辟新空間,存入數據,添加進鏈表*/
while(flag=='Y'||flag=='y')
{
s=(struct books_list *)malloc(sizeof(struct books_list));
printf("\n 請輸入圖書登陸號:");
fflush(stdin);
scanf("%s",s->loginnum);
printf("\n 請輸入圖書書名:");
fflush(stdin);
scanf("%s",s->bookname);
printf("\n 請輸入圖書作者名:");
fflush(stdin);
scanf("%s",s->author);
printf("\n 請輸入圖書出版社:");
fflush(stdin);
scanf("%s",s->publisher);
printf("\n 請輸入圖書出版時間:");
fflush(stdin);
scanf("%s",s->pbtime);
printf("\n 請輸入圖書分類號:");
fflush(stdin);
scanf("%s",s->classfy);
printf("\n 請輸入圖書價格:");
fflush(stdin);
scanf("%f",&s->price);
printf("\n");
p->next=s; /*將新增加的節點添加進鏈表*/
p=s; /*p指向尾節點,向後移*/
s->next=NULL;
printf(" ━━━━ 添加成功!━━━━");
printf("\n 繼續添加?(Y/N):");
fflush(stdin);
scanf("%c",&flag);
printf("\n");
if(flag=='N'||flag=='n')
{break;}
else if(flag=='Y'||flag=='y')
{continue;}
}
save(head); /*保存數據至文件*/
return;
}

/*查詢操作*/

void search_book(struct books_list *head)
{
struct books_list * p;
char temp[20];
p=head;
if(head==NULL || head->next==NULL) /*判斷資料庫是否為空*/
{
printf(" ━━━━ 圖書庫為空!━━━━\n");
}
else
{
printf("請輸入您要查找的書名: ");
fflush(stdin);
scanf("%s",temp);
/*指針從頭節點開始移動,遍歷至尾結點,查找書目信息*/
while(p->next!= NULL)
{
p=p->next;
if(strcmp(p->bookname,temp)==0)
{
printf("\n圖書已找到!\n");
printf("\n");
printf("登錄號: %s\t\n",p->loginnum);
printf("書名: %s\t\n",p->bookname);
printf("作者名: %s\t\n",p->author);
printf("出版單位: %s\t\n",p->publisher);
printf("出版時間: %s\t\n",p->pbtime);
printf("分類號: %s\t\n",p->classfy);
printf("價格: %.2f\t\n",p->price);
}
if(p->next==NULL)
{
printf("\n查詢完畢!\n");
}
}
}
return;
}

/*瀏覽操作*/

void Print_Book_Doc(struct books_list * head)
{
struct books_list * p;
if(head==NULL || head->next==NULL) /*判斷資料庫是否為空*/
{
printf("\n ━━━━ 沒有圖書記錄! ━━━━\n\n");
return;
}
p=head;
printf("┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n");
printf("┃登錄號┃ 書 名 ┃ 作 者┃ 出版單位 ┃ 出版時間 ┃分類號┃ 價格 ┃\n");
printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n");
/*指針從頭節點開始移動,遍歷至尾結點,依次輸出圖書信息*/
while(p->next!= NULL)
{
p=p->next;
printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f ┃\n",p->loginnum,p->bookname,p->author,p->publisher,p->pbtime,p->classfy,p->price); /*循環輸出表格*/
}
printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n");
printf("\n");
}

/*修改操作*/
void info_change(struct books_list * head)
{
struct books_list * p;
int panan=0; /*此變數用於判斷是否找到書目*/
char temp[20];
p=head;
printf("請輸入要修改的書名:");
scanf("%s",temp);
while(p->next!= NULL)
{
p=p->next;
if(strcmp(p->bookname,temp)==0)
{
printf("\n 請輸入圖書登陸卡號:");
fflush(stdin);
scanf("%s",p->loginnum);
printf("\n 請輸入圖書書名:");
fflush(stdin);
scanf("%s",p->bookname);
printf("\n 請輸入圖書作者名:");
fflush(stdin);
scanf("%s",p->author);
printf("\n 請輸入圖書出版社:");
fflush(stdin);
scanf("%s",p->publisher);
printf("\n 請輸入圖書出版時間:");
fflush(stdin);
scanf("%s",p->pbtime);
printf("\n 請輸入圖書分類號:");
fflush(stdin);
scanf("%s",p->classfy);
printf("\n 請輸入圖書價格:");
fflush(stdin);
scanf("%f",&p->price);
printf("\n");
panan=1;
}
}
if(panan==0)
{
printf("\n ━━━━ 沒有圖書記錄! ━━━━\n\n");
}
return;
}

/*刪除操作*/
void DeleteDoc(struct books_list * head)
{
struct books_list *s,*p; /*s為中間變數,p為遍歷時使用的指針*/
char temp[20];
int panan; /*此變數用於判斷是否找到了書目*/
panan=0;
p=s=head;
printf(" [請輸入您要刪除的書名]:");
scanf("%s",temp);
/*遍歷到尾結點*/
while(p!= NULL)
{
if(strcmp(p->bookname,temp)==0)
{
panan++;
break;
}
p=p->next;
}
if(panan==1)
{
for(;s->next!=p;) /*找到所需刪除卡號結點的上一個結點*/
{
s=s->next;
}
s->next=p->next; /*將後一節點地址賦值給前一節點的指針域*/
free(p);
printf("\n ━━━━ 刪除成功! ━━━━\n");
}
else /*未找到相應書目*/
{
printf(" 您輸入的書目不存在,請確認後輸入!\n");
}
return;
}

int main(void)
{
struct books_list * head;
char choice;
head=NULL;
for(;;) /*實現反復輸入選擇*/
{
printf(" ┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n");
printf(" ┃ ┃ socat 圖書管理系統 ┃ ┃\n");
printf(" ┃ ┗━━━━━━━━━━━━━━━━━━━┛ ┃\n");
printf(" ┃ ●[1]圖書信息錄入 ┃\n");
printf(" ┃ ┃\n");
printf(" ┃ ●[2]圖書信息瀏覽 ┃\n");
printf(" ┃ ┃\n");
printf(" ┃ ●[3]圖書信息查詢 ┃\n");
printf(" ┃ ┃\n");
printf(" ┃ ●[4]圖書信息修改 ┃\n");
printf(" ┃ ┃\n");
printf(" ┃ ●[5]圖書信息刪除 ┃\n");
printf(" ┃ ┃\n");
printf(" ┃ ●[6]退出系統 ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf(" 請選擇:");
fflush(stdin);
scanf("%c",&choice);
if(choice=='1')
{
if(head==NULL)
{
head=Create_Books_Doc();
}
InsertDoc(head);

}
else if(choice=='2')
{
Print_Book_Doc(head);
}
else if(choice=='3')
{
search_book(head);
}
else if(choice=='4')
{
info_change(head);
}
else if(choice=='5')
{
DeleteDoc(head);
}
else if(choice=='6')
{
printf("\n");
printf(" ━━━━━━━━ 感謝使用圖書管理系統 ━━━━━━━━\n");
break;
}
else
{
printf(" ━━━━ 輸入錯誤,請重新輸入!━━━━");
break;
}
}
return 0;
}

『玖』 c語言小型圖書信息管理系統

#include<stdio.h>
#include<stdlib.h>
#include"windows.h"
#include"string.h"

#defineS_MAX50

intuser_count=0;//用戶信息的總數
intbook_count=0;
charini_path[100]={""};//數據文件的絕對路徑
charuser_path[100]={""};//用戶數據文件的絕對路徑
charbook_path[100]={""};
intbook_pos=0;//book數組的計數
intuser_pos=0;

structuser_data
{
charname[10];
charbook_name[50];
}user[S_MAX];

structbook_data
{
charno[10];
charname[50];
charauthor[30];
charmoney[10];
charin_or_out[10];
charuser_name[10];
}book[S_MAX];

voidread_file()//從文件讀取數據
{
user_pos=0;
inti;
for(i=0;i<S_MAX;i++)
{
memset(user[i].name,'',10);
memset(user[i].book_name,'',50);

memset(book[i].no,'',10);
memset(book[i].name,'',50);
memset(book[i].author,'',30);
memset(book[i].money,'',10);
memset(book[i].in_or_out,'',10);
memset(book[i].user_name,'',10);
}
user_count=GetPrivateProfileInt("USER","user_count",0,user_path);
book_count=GetPrivateProfileInt("book","book_count",0,book_path);

for(i=0;i<user_count;i++)
{
chart[5]={""};
sprintf(t,"%d",i+1);
GetPrivateProfileString(t,"name","",user[i].name,10,user_path);
GetPrivateProfileString(t,"book_name","",user[i].book_name,50,user_path);
user_pos++;
}
for(i=0;i<book_count;i++)
{
chart[5]={""};
sprintf(t,"%d",i+1);
GetPrivateProfileString(t,"no","",book[i].no,10,book_path);
GetPrivateProfileString(t,"name","",book[i].name,50,book_path);
GetPrivateProfileString(t,"author","",book[i].author,30,book_path);
GetPrivateProfileString(t,"money","",book[i].money,10,book_path);
GetPrivateProfileString(t,"in_or_out","",book[i].in_or_out,10,book_path);
GetPrivateProfileString(t,"user_name","",book[i].user_name,10,book_path);
book_pos++;
}
}

voidwrite_file()
{
inti;
for(i=0;i<user_count;i++)
{
chart[5]={""};
sprintf(t,"%d",i+1);
WritePrivateProfileString(t,"name",NULL,user_path);
WritePrivateProfileString(t,"book_name",NULL,user_path);

WritePrivateProfileString(t,"no",NULL,book_path);
WritePrivateProfileString(t,"name",NULL,book_path);
WritePrivateProfileString(t,"author",NULL,book_path);
WritePrivateProfileString(t,"money",NULL,book_path);
WritePrivateProfileString(t,"in_or_out",NULL,book_path);
WritePrivateProfileString(t,"user_name",NULL,book_path);
}
chartemp[5]={""};
inttemp_count=0;
for(i=0;i<user_pos;i++)
{
if(strcmp(user[i].name,"")==0)
{
continue;
}
chart[5]={""};
sprintf(t,"%d",i+1);
WritePrivateProfileString(t,"name",user[i].name,user_path);
WritePrivateProfileString(t,"book_name",user[i].book_name,user_path);
temp_count++;
}
sprintf(temp,"%d",temp_count);
WritePrivateProfileString("USER","user_count",temp,user_path);

temp_count=0;
for(i=0;i<book_pos;i++)
{
if(strcmp(book[i].no,"")==0)
{
continue;
}
chart[5]={""};
sprintf(t,"%d",i+1);
WritePrivateProfileString(t,"no",book[i].no,book_path);
WritePrivateProfileString(t,"name",book[i].name,book_path);
WritePrivateProfileString(t,"author",book[i].author,book_path);
WritePrivateProfileString(t,"money",book[i].money,book_path);
WritePrivateProfileString(t,"in_or_out",book[i].in_or_out,book_path);
WritePrivateProfileString(t,"user_name",book[i].user_name,book_path);
temp_count++;
}
sprintf(temp,"%d",temp_count);
WritePrivateProfileString("BOOK","book_count",temp,book_path);
}

voidsearch_user_name()//按借書人姓名查詢
{
system("cls");
charsearch_key[10]={""};
printf("請輸入要查詢圖書借書人:");
scanf("%s",search_key);
inti;
ints[10]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
ints_i=0;
intfind=0;
for(i=0;i<book_pos;i++)
{
if(strcmp(book[i].user_name,search_key)==0)
{
find=1;
s[s_i]=i;
s_i++;
printf(" 編號:%s",book[i].no);
printf(" 名稱:%s",book[i].name);
printf(" 作者:%s",book[i].author);
printf(" 金額:%s",book[i].money);
printf(" 狀態:%s",book[i].in_or_out);
printf(" 借書人:%s ",book[i].user_name);
}
}
if(find==0)
{
printf(" 未找到符合條件的信息!");
}
else
{
for(i=0;i<s_i;i++)
{
printf(" 第%d本書:%s",i+1,book[i].name);
}
printf(" 共%d本",i);
}
fflush(stdin);
getchar();
}

voidsearch_book_author()//按圖書作者查詢
{
system("cls");
charsearch_key[50]={""};
printf("請輸入要查詢圖書的作者:");
scanf("%s",search_key);
inti;
intfind=0;
for(i=0;i<book_pos;i++)
{
if(strcmp(book[i].author,search_key)==0)
{
find=1;
printf(" 編號:%s",book[i].no);
printf(" 名稱:%s",book[i].name);
printf(" 作者:%s",book[i].author);
printf(" 金額:%s",book[i].money);
printf(" 狀態:%s",book[i].in_or_out);
printf(" 借書人:%s ",book[i].user_name);
break;
}
}
if(find==0)
{
printf(" 未找到符合條件的信息!");
}
fflush(stdin);
getchar();
}

voidsearch_book_name()//按圖書名稱查詢
{
system("cls");
charsearch_key[50]={""};
printf("請輸入要查詢圖書的名稱:");
scanf("%s",search_key);
inti;
intfind=0;
for(i=0;i<book_pos;i++)
{
if(strcmp(book[i].name,search_key)==0)
{
find=1;
printf(" 編號:%s",book[i].no);
printf(" 名稱:%s",book[i].name);
printf(" 作者:%s",book[i].author);
printf(" 金額:%s",book[i].money);
printf(" 狀態:%s",book[i].in_or_out);
printf(" 借書人:%s ",book[i].user_name);
break;
}
}
if(find==0)
{
printf(" 未找到符合條件的信息!");
}
fflush(stdin);
getchar();
}

voidsearch_book_no()//按圖書編號查詢
{
system("cls");
charsearch_key[10]={""};
printf("請輸入要查詢圖書的編號:");
scanf("%s",search_key);
inti;
intfind=0;
for(i=0;i<book_pos;i++)
{
if(strcmp(book[i].no,search_key)==0)
{
find=1;
printf(" 編號:%s",book[i].no);
printf(" 名稱:%s",book[i].name);
printf(" 作者:%s",book[i].author);
printf(" 金額:%s",book[i].money);
printf(" 狀態:%s",book[i].in_or_out);
printf(" 借書人:%s ",book[i].user_name);
break;
}
}
if(find==0)
{
printf(" 未找到符合條件的信息!");
}
fflush(stdin);
getchar();
}
voidsearch_all_book()//查詢所有圖書
{
system("cls");
if(book_pos==0)
{
printf("真TM窮,一本書都沒有");
}
else
{
inti;
printf("共有%d本書 ",book_pos);
for(i=0;i<book_pos;i++)
{
printf(" 編號:%s名稱:%s作者:%s金額:%s狀態:%s",book[i].no,book[i].name,book[i].author,book[i].money,book[i].in_or_out);
if(strcmp(book[i].in_or_out,"out")==0)
{
printf("借書人:%s",book[i].user_name);
}
}
}
fflush(stdin);
getchar();
}

voidsearch_all_user()//查詢所有用戶
{
system("cls");
if(user_pos==0)
{
printf("要倒閉了?一個人都沒有!");
}
else
{
inti;
printf("共有%d個用戶 ",user_pos);
for(i=0;i<user_pos;i++)
{
printf(" 用戶名稱:%s借書名稱:",user[i].name);
if(strcmp(user[i].book_name,"")!=0)
{
printf("%s",user[i].book_name);
}
else
{
printf("未借書");
}
}
}
fflush(stdin);
getchar();
}

voidNo7()//查詢
{
intf=1;
intsel;
while(f)
{
system("cls");
printf("********************************* ");
printf("** ");
printf("*圖書管理系統--查詢* ");
printf("** ");
printf("*1.按圖書編號查詢* ");
printf("** ");
printf("*2.按圖書名稱查詢* ");
printf("** ");
printf("*3.按作者查詢* ");
printf("** ");
printf("*4.按借書人姓名查詢* ");
printf("** ");
printf("*5.查詢所有圖書* ");
printf("** ");
printf("*6.查詢所有用戶* ");
printf("** ");
printf("*0.返回主菜單* ");
printf("** ");
printf("********************************* ");
printf("請選擇:(1,2,3,4,5,6,0)");
fflush(stdin);
scanf("%d",&sel);
getchar();
switch(sel)
{
case1:
search_book_no();

break;
case2:
search_book_name();

break;
case3:
search_book_author();

break;
case4:
search_user_name();

break;
case5:
search_all_book();
break;
case6:
search_all_user();
break;
case0:

f=0;
break;
default:
break;
}
}
}

voidNo6()//用戶信息刪除
{
system("cls");
chardel_key[10]={""};
printf("請輸入要刪除的用戶名稱:");
scanf("%s",del_key);
inti,del_pos;
intfind=0;
for(i=0;i<user_pos;i++)
{
if(strcmp(user[i].name,del_key)==0)
{
find=1;
printf(" 姓名:%s",user[i].name);
if(strlen(user[i].book_name)>0)
{
printf(" 所借書籍:%s",user[i].book_name);
}
del_pos=i;
break;
}
}
if(find==0)
{
printf(" 未找到符合條件的信息!");
fflush(stdin);
getchar();
return;
}

while(1)
{
fflush(stdin);
printf(" 確認要刪除該記錄嗎?(y/n):");
chart;
scanf("%c",&t);
if(t=='y'||t=='Y')
{
if(strlen(user[del_pos].book_name)>0)
{
printf(" 該用戶尚有書籍未歸還,不能刪除!");
fflush(stdin);
getchar();
return;
}
strcpy(user[del_pos].name,"");
strcpy(user[del_pos].book_name,"");
write_file();
printf(" 刪除成功!");
read_file();
fflush(stdin);
getchar();
break;
}
elseif(t=='N'||t=='n')
{
printf(" 你選擇了不刪除,按任意鍵返回!");
fflush(stdin);
getchar();
break;
}
else
{
continue;
}
}
}
//請在回復後發餘下部分