圖書管理源碼
『壹』 求c語言圖書管理系統源代碼
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//
#define MAXSIZE 100 //最大值定義為100
#define LIST_INIT_SIZE 100//圖書證使用者最大值定義為100
//借書人的結構體
typedef struct Boro//借書行為
{
char BNum[20];//借書的書號
char RetDate[8];//歸還日期
struct Boro *next;
}Bor;
typedef struct LinkBook
{
Bor *next;//該圖書證的借書行為
char CNum[20];//證號
int Total;//借書的數量
}lend[LIST_INIT_SIZE];//借書人數組
//圖書的結構體信息
typedef struct LNode
{
char CardNum[20];//圖書證號
struct LNode *next;
}LinkList; //借書人
typedef struct book
{//每種圖書需要登記的內容包括書號ISBN、書名、作者、出版社、總庫存量和現庫存量。
char num[20];//書號
char name[20];//書名
char auth[20];//作者
char pub[20];//出版社
int TotNum;//總庫存
int NowNum;//現庫存
LinkList *next;//借了該書的人
}ook[MAXSIZE];
//
int Retotal;//讀者數量
int total; //定義外部變數.書的種類數
//
//結構體初始化
void InitBo(ook &boo) //初始化圖書信息
{
for(int i=0;i<MAXSIZE;i++)
{
boo[i].NowNum=0;
boo[i].TotNum=0;
boo[i].next=NULL;
}
}
void InitRe(lend &Lin) //初始化借閱者信息
{
for(int i=0;i<LIST_INIT_SIZE;i++)
Lin[i].next=NULL;
}
//
int mid=0;//外部函數mid,用來返回查找到的位置
bool BinarySearch(ook boo,char SearchNum[]) //二分法查找比較書號
{ //用bool函數,但由於函數不能有兩個返回值,所以設置一個外部變數mid,用來返回查找到的位置
int low=0,high=total-1;
int found=0;
while(low<=high)
{
mid=(low+high)/2; //中間點
if(strcmp(boo[mid].num,SearchNum)==0) //書號相同
{
found=1;
return true;
}//查找成功
if(strcmp(boo[mid].num,SearchNum)!=0)//書號不同
high=mid-1;
else low=mid+1;
}
if(found==0)
return false; //查找失敗
}
void Buy(ook &boo, char BuyNum[])
{//1、 采編入庫:新購入一種書,如果該書在圖書賬目中已經存在,則將其庫存量增加(包
//括總庫存量和現庫存量),如果該書不存在,則在圖書賬目中增加一種書,總庫存量和現庫存量均為1。
if(BinarySearch(boo,BuyNum)) //如果書庫中有此書
{
boo[mid].TotNum++; //總庫存加1
boo[mid].NowNum++; //現庫存加1
printf("入庫成功.\n");
printf("已更改書庫中該書的信息。編號 %s 的書 %s 作者是 %s ,出版社是 %s ,目前的總庫存是 %d ,現庫存是 %d 。\n",boo[mid].num,boo[mid].name,boo[mid].auth,boo[mid].pub,boo[mid].TotNum,boo[mid].NowNum);
}
if(!BinarySearch(boo,BuyNum))
{
int i;
for(i=total;i>mid&&total;i--) //插在適合位置 保持有序
boo[i]=boo[i-1]; //空出插入位置
printf("該書在書庫中不存在。設立新書目,請補全書的詳細信息。\n");
strcpy(boo[i].num,BuyNum);
printf("該書購入的數量是:");
scanf(" %d",&boo[i].NowNum);
boo[i].TotNum=boo[i].NowNum;
printf("該書的名字是:");
scanf(" %s",&boo[i].name);
printf("該書的作者是:");
scanf(" %s",&boo[i].auth);
printf("該書的出版社是:");
scanf(" %s",&boo[i].pub);//補全信息
boo[i].next=NULL;
total++;//總量+1
printf("已增加該書的信息。編號 %s 的書 %s 作者是 %s ,出版社是 %s ,目前的總庫存是 %d ,現庫存是 %d 。\n",boo[i].num,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowNum);
printf("入庫成功.\n");
}
}
void Delete(ook &boo,char DeleteNum[])
{//2、 清空庫存:某一種書已無保留價值,將它從圖書賬目中注銷。
if(BinarySearch(boo,DeleteNum)==false||total==0) //如果無此書
printf("書庫中沒有該書.\n");
if(BinarySearch(boo,DeleteNum))//若有
{
if(!boo[mid].next)
{
int j;
for( j=mid;j<total;j++)
boo[j]=boo[j+1];
strcpy(boo[j].num,boo[j+1].num);
strcpy(boo[j].name,boo[j+1].name);
strcpy(boo[j].auth,boo[j+1].auth);
strcpy(boo[j].pub,boo[j+1].pub);
boo[j].TotNum=boo[j+1].TotNum;
boo[j].NowNum=boo[j+1].NowNum;
printf("已成功刪除該書.\n");
}
else printf("該書有借閱者,無法刪除。\n");
}
}
void Borrow(ook &boo,lend &Lin,char BorrowNum[],char CaNum[])
{//3、 借閱:如果一種書的現庫存量大於零,則借出一本書,將現庫存量減1,
//並登記借閱者的圖書證號和歸還期限。
Bor *p,*q;
LinkList *m,*n;
if(!BinarySearch(boo,BorrowNum)||total==0) //如果沒有找到此書
printf("書庫里沒這書。\n");//如果有這書
if(BinarySearch(boo,BorrowNum)) //書庫里有
{
if(boo[mid].NowNum>0) //看現庫存是否大於0
{
boo[mid].NowNum--;//借出一本,少1
if(boo[mid].next==NULL) //若該書信息下顯示該種書還沒被人借過
{
m=(LinkList *)malloc(sizeof(LNode));//分配
boo[mid].next=m;//該圖書信息中的鏈表的第一個結點
strcpy(m->CardNum,CaNum);
m->next=NULL;//後一個結點為空
}
else //如果已經有人在借這書了
{
m=boo[mid].next;
while(m->next) //遍歷到最後一個結點
m=m->next;
n=(LinkList *)malloc(sizeof(LNode));//分配空間,增加1個結點
m->next=n;
strcpy(n->CardNum,CaNum);//記錄證號
n->next=NULL;
}
int i=0;
for(i=0;i<Retotal;i++)//
{
if(!strcmp(Lin[i].CNum,CaNum))//如果已經有該圖書證的信息
{
p=Lin[i].next;
while(p->next)p=p->next;//遍歷到最後一個結點
q=(Bor *)malloc(sizeof(Boro));//分配空間
p->next=q;
strcpy(q->BNum,BorrowNum); //記錄書號
printf("輸入歸還日期:");
scanf("%s",&q->RetDate);
q->next=NULL;
printf("借閱成功.\n");
break; //找到證了就跳出循環
}
}
if(i==Retotal)//如果沒有這張證的信息
{
strcpy(Lin[i].CNum,CaNum); //記錄證號
p=(Bor *)malloc(sizeof(Boro)); //分配空間
Lin[i].next=p;
strcpy(p->BNum,BorrowNum);
printf("輸入歸還日期:");
scanf(" %s",&p->RetDate);
p->next=NULL;
Retotal++; //借閱證號信息總數加1
printf("借閱成功.\n");
}
}
else printf("借閱失敗.該書現在庫存為0.\n");
}
}
void Return(ook &boo,lend &Lin,char ReturnNum[],char BorrowerNum[])
{//4、 歸還:注銷對借閱者的登記,改變該書的現存量。
Bor *p,*q;
LinkList *m,*n;
int flag=0;//設置一個參數
if(!BinarySearch(boo,ReturnNum)||!total) //沒書
printf("書庫中無此書.\n");
if(BinarySearch(boo,ReturnNum)) //有書
{
m=boo[mid].next;
if(!strcmp(m->CardNum,BorrowerNum)) //如果是第一個借的人還的
{
boo[mid].NowNum++; //現庫存加1
boo[mid].next=m->next; //刪除結點
free(m); //釋放該結點的空間空間
}
else
{
while(m->next) //查找歸還者的借閱者結點
{
if(!strcmp(m->next->CardNum,BorrowerNum)) //如果找到
{
n=m->next; //n為歸還者的借閱結點
m->next=n->next; //m指向歸還者的借閱結點的下一結點
free(n); //釋放空間
boo[mid].NowNum++; //現庫存加1
break;
}
m=m->next;
}
}
}
//在借閱者表裡查找借閱者信息
for(int i=0;i<Retotal;i++)
{
if(!strcmp(Lin[i].CNum,BorrowerNum)) //如果找到借閱者
{
p=Lin[i].next;
if(!strcmp(p->BNum,ReturnNum)) //如果是歸還的是借的第一本書
{
Lin[i].next=p->next; //指向下一借書結點
free(p); //釋放結點空間
printf("成功歸還該書.\n");
flag=1;
break;
}
else //找不到
{
while(p->next) //找到歸還書的借書結點
{
if(!strcmp(p->next->BNum,ReturnNum)) //如果找到
{
q=p->next; //q為歸還書的借書結點
p->next=q->next; //p指向下一借書結點
free(q); //釋放空間
printf("成功歸還該書.\n");
flag=1;
break;
}
p=p->next;
}
}
}
}
for(int k=0;k<Retotal;k++)
if(!Lin[k].next)
{
int j;
for(j=k;j<Retotal;j++)
Lin[j]=Lin[j+1]; //其後都往前移一位,覆蓋掉當前信息
strcpy(Lin[j].CNum," "); //刪除圖書證號
Retotal--; //圖書證數減1
} //刪除當前狀態下沒借書的圖書證的信息,節省空間
if(flag==0) printf("無該證信息.\n");
}
//5、 查找:實現按三種查詢條件之一查找:按書號查找、
//按書名查找、按作者查找。註:可不實現組合查找,即幾個條件組合查找。
void SearchByNum(ook &boo,char SeaNum[])
{//BY NUM 根據書號查找
LinkList *p;
p=boo[mid].next;
if(BinarySearch(boo,SeaNum)==false)printf("對不起,未找到您想查找的書。\n");//二分查找 沒找到
else//找到了的話
{
{
printf("┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┓\n");
printf("┃ 書號 ┃ 書名 ┃ 作者 ┃ 出版社 ┃ 現庫存 ┃ 總庫存 ┃\n");
printf("┣━━━━━━━╋━━━━━━━╋━━━━━━━━╋━━━━━━━━╋━━━━━╋━━━━━┫\n");
printf("┃%14s┃%14s┃%16s┃%16s┃%10d┃%10d┃\n",boo[mid].num,boo[mid].name,boo[mid].auth,boo[mid].pub,boo[mid].NowNum,boo[mid].TotNum);
printf("┗━━━━━━━┻━━━━━━━┻━━━━━━━━┻━━━━━━━━┻━━━━━┻━━━━━┛\n");
if(boo[mid].next!=NULL)
{
printf("┏━━━━━━━┓\n");
printf("┃ 已借該書的 ┃\n");
printf("┃ 圖書證號 ┃\n");
while(p)
{
printf("┣━━━━━━━┫\n");
printf("┃%14s┃\n",p->CardNum);
p=p->next;
}
printf("┗━━━━━━━┛\n");
}
}
while(p)
{
printf(" %s ",p->CardNum);//在按書號查找的函數里也顯示借了這本書的借閱者的證號
p=p->next;
}
printf(" \n");
}//顯示查找的書籍的信息
}
void SearchByName(ook &boo)
{//BY NAME 根據書名查找
char SeaName[20];
printf("輸入想查找的書的書名:\n");
scanf(" %s",&SeaName);
printf("找到符合該書名的書的詳細信息如下:\n");
for(int i=0;i<total;i++)
{
if(strcmp(SeaName,boo[i].name)==0)//如果書名一樣
{
printf("書號:%s\n書名:%s\n作者:%s\n出版社:%s\n總庫存量:%d\n現庫存量:%d\n\n",boo[i].num,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowNum);
}//顯示符合信息的所有書籍的信息
}
}
void SearchByAuth(ook &boo)
{// BY AUTH 根據作者查找
char SeaAuth[20];
printf("輸入想查找的書的作者:\n");
scanf(" %s",&SeaAuth);
printf("找到符合該作者的書的詳細信息如下:\n");
for(int i=0;i<total;i++)
{
if(strcmp(SeaAuth,boo[i].auth)==0)//如果作者一樣
{
printf("書號:%s\n書名:%s\n作者:%s\n出版社:%s\n總庫存量:%d\n現庫存量:%d\n\n",boo[i].num,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowNum);
}//顯示符合信息的所有書籍的信息
}
}
//6、 查看:可查看某圖書證號的借閱者借閱的全部圖書,可查看全部超期未還的圖書。
void ViewCard(ook &boo,lend &Lin)
{//查看某圖書證號的借閱者借閱的全部圖書
char Num[20];
printf("請輸入您所想要查看的圖書證號:\n");
scanf(" %s",&Num);
Bor *p;
int qqq=0;
for(int i=0;i<Retotal;i++)
{
if(strcmp(Lin[i].CNum,Num)==0) //找到該證
{
printf("這個證借的書有:\n");
p=Lin[i].next;
while(p)
{
printf(" %s ",p->BNum); //書號
p=p->next;
}
printf("\n");
qqq=1;
break;
}
}
if(qqq==0)
printf("該證不存在.\n");
}
void ViewBook(ook &boo,lend &Lin)
{//查看全部超期未還的圖書
char date[8];
Bor *p;
printf("請輸入日期(請按格式20060605輸入):\n");
scanf(" %s",&date);
printf("所有超期未還的書有:\n");
for(int i=0;i<Retotal;i++)
{
p=Lin[i].next;
while(p)//當p不空時
{
if(strcmp(p->RetDate,date)<0) //超過日期
{
printf("書號為 %s 證號為 %s 應歸還日期為 %s \n",p->BNum,Lin[i].CNum,p->RetDate);
}//顯示所有超期未還的書的信息
p=p->next;
}
}
}
void Menu() //菜單
{
printf("┏—————————————————M E N U————————————————┓\n");
printf("│ │\n");
printf("│ 1. 采編入庫:新購入一種書,如果該書在圖書賬目中已經存在, │\n");
printf("│ 則將其庫存量增加(包括總庫存量和現庫存量)。 │\n");
printf("│ 如果該書不存在,則在圖書賬目中增加一種書, │\n");
printf("│ 總庫存量和現庫存量均為輸入的數字。 │\n");
printf("│ 2. 清空庫存:某一種書已無保留價值,將它從圖書賬目中注銷。 │\n");
printf("│ 3. 借閱:如果一種書的現庫存量大於零,則借出一本書,將現庫存量減1, │\n");
printf("│ 並登記借閱者的圖書證號和歸還期限。 │\n");
printf("│ 4. 歸還:注銷對借閱者的登記,改變該書的現存量。 │\n");
printf("│ 5. 按書號查找。 │\n");
printf("│ 6. 按書名查找。 │\n");
printf("│ 7. 按作者查找。 │\n");
printf("│ 8. 查看某圖書證號的借閱者借閱的全部圖書。 │\n");
printf("│ 9. 查看全部超期未還的圖書。 │\n");
printf("│ 0. 退出圖書管理系統。 │\n");
printf("│ │\n");
printf("┗—————————————請 選 擇 你 需 要 的 操 作————————————┛\n");
}
int main()
{
ook Bo;
lend Lin;
char BNum[20];
char CNum[20];
printf("-----------------------歡 迎 進 入 圖 書 管 理 系 統!---------------------------\n\n");
int choice=10;
int SearchCho=10,ViewCho=10;
while(choice!=0)
{
Menu();//顯示菜單
scanf(" %d",&choice);
switch(choice)
{
case 1://采編入庫
printf("請輸入入庫的書的書號:");
scanf(" %s",BNum);
Buy(Bo,BNum);
case 2://清空庫存
printf("請輸入想要清除的書的書號:");
scanf(" %s",BNum);
Delete(Bo,BNum);
break;
case 3://借閱
printf("請輸入想要借閱的書的書號:\n");
scanf(" %s",&BNum);
printf("請輸入圖書證號:");
scanf(" %s",&CNum);
Borrow(Bo,Lin,BNum,CNum);
break;
case 4://歸還
printf("請輸入想要歸還的書的書號:\n");
scanf(" %s",&BNum);
printf("請輸入圖書證號:");
scanf(" %s",&CNum);
Return(Bo,Lin,BNum,CNum);
break;
case 5://查找//根據書號查找
printf("請輸入書號:");//輸入書號查找
scanf(" %s",&BNum);
SearchByNum(Bo,BNum);
break;
case 6://根據書名查找
SearchByName(Bo);
break;
case 7://根據作者查找
SearchByAuth(Bo);
break;
case 8://查看某圖書證所借的所有書
ViewCard(Bo,Lin);
break;
case 9: //查看全部超期未還的書
ViewBook(Bo,Lin);
break;
case 0://退出系統
exit(0);break;
default:printf("輸入錯誤!\n");exit(0);break;
}
}
『貳』 急求c語言程序設計 圖書管理系統 源代碼
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#define N 100 //書籍的最多本數
struct book
{ char title[30];
int number;
char author[30];
float price;
int store;
char borrower_name[20];
char borrower_gender[5];
int borrower_number;
}s[N];
int m=0;
void input(structbook *p); //輸入圖書信息
void save(structbook *p); //保存圖書信息
void read(structbook *p); //讀取圖書信息
void search(structbook *p); //查找圖書信息
void del(structbook *p); //刪除圖書信息
void borrow(structbook *p); //借閱圖書
void retur(structbook *p); //歸還圖書
void main()
{
int x;
do
{
printf("**************************************菜單**************************************\n"
" *********** 1.輸入圖書信息 ********** \n"
" *********** 2.查找圖書信息 ********** \n"
" *********** 3.刪除圖書信息 ********** \n"
" *********** 4.借閱圖書 ********** \n"
" *********** 5.歸還圖書 ********** \n"
" *********** 0.退出 ********** \n");
printf("********************************************************************************\n");
printf("請在0-5中選擇,以回車鍵結束\n");
scanf("%d",&x);
switch(x)
{ case 1: input(&s[0]);break;
case 2: search(&s[0]);break;
case 3: del(&s[0]);break;
case 4: borrow(&s[0]);break;
case 5: retur(&s[0]);break;
case 0: break;
}
}while(x!=0);
}
void input(structbook *p)
{ int y;
for(;p<(&s[0]+N);p++)
{ printf("請輸入書名:");scanf("%s",p->title);
printf("請輸入編號:"); scanf("%d",&p->number);
printf("請輸入作者:"); scanf("%s",p->author);
printf("請輸入圖書價格:"); scanf("%f",&p->price);
printf("請輸入圖書數量:"); scanf("%d",&p->store);
m++;
printf("第%d個信息已經輸入完畢,是否繼續?\n按任意鍵繼續,按0鍵結束.",m);
scanf("%d",&y);//讀取是否繼續
if(y==0)
{ save(&s[0]);
read(&s[0]);//調用讀取文件函數
break;
}
}
}
void search(structbook *p)//查詢模塊
{ int n;
char name1[20];
char name2[20];
char c[3];
do
{ p=&s[0];
printf("\t請選擇查找方式:\n");//列印查詢方式菜單
printf(" 1.按書名查找\n 2.按作者查找\n 0.返回\n");
printf("請在0-2中選擇:\n\n");
scanf("%d",&n);//讀取查找方式
if(n==0) break;
switch(n)
{ case 1: printf("請輸入書名:\n");scanf("%s",name1);break;
case 2: printf("請輸入作者:\n");scanf("%s",name2);break;
}
for(;p<&s[m];p++)
{ read(&s[0]);//調用讀取函數
if(strcmp(p->title,name1)==0||strcmp(p->author,name2)==0)
{ printf("\n查找圖書信息成功!\n");
printf("書名 編號 作者 價格 數量\n");
printf("%-10s%-10d%-10s%-10.2f%-10d\n",p->title,p->number,p->author,p->price,p->store);//列印信息
break;
}
}
printf("是否繼續查找?\n「是」請鍵入「yes」, 「否」請按任意鍵,返回菜單\n");
scanf("%s",c);
}while(strcmp(c,"yes")==0);//判斷是否結束
}
void del(structbook *p)//刪除模塊
{ int i;
struct book *p1,*p2;
char name1[20];
char name2[20];
char c[3];
int n;
do
{ p=&s[0];
printf("請選擇刪除以方式回車鍵結束:\n");//列印刪除方式菜單
printf( " 1.按書名刪除\n 2.按作者刪除\n 0.返回\n");
printf("請在0-2中選擇:\n\n");
scanf("%d",&n);//讀取查找方//
if(n==0) break;
switch(n)
{case 1:printf("請輸入書名:\n");
scanf("%s",name1);break;
case 2: printf("請輸入作者:\n");
scanf("%s",name2);break;
}
read(&s[0]); //調用讀取函數
for(i=0;i<m;i++,p++)
{
if(strcmp(p->title,name1)==0||strcmp(p->author,name2)==0)
{ p1=p;
for(p2=p1+1;p2<=&s[m];p1++,p2++)
{
strcpy(p1->title,p2->title);
strcpy(p1->author,p2->author);
p1->number=p2->number;
p1->store=p2->store;
p1->price=p2->price;
m--;
printf("刪除成功!!\n");
}
}
else {printf("沒有該書記錄!!");
break;}
}
printf("是否繼續刪除?「是」請鍵入「yes」, 「否」請按任意鍵,返回菜單\n");
scanf("%s",c); //讀取是否繼續
save(&s[0]); //調用保存函數
}while(strcmp(c,"yes")==0); //判斷是否繼續刪除
}
void borrow(structbook *p)//借書模塊
{ int z;
char name3[20],name4[20];
char w[3];
do
{ p=&s[0];
printf("請先查找您要借閱的圖書!");
printf("請選擇查找方式:\n");//列印查詢方式菜單
printf(" 1.按書名查找\n 2.按作者查找\n 0.返回\n");
printf("請在0-2中選擇:\n");
scanf("%d",&z);//讀取查找方式
if(z==0) break;
switch(z)
{ case 1: printf("請輸入書名:\n");scanf("%s",name3);break;
case 2: printf("請輸入作者:\n");scanf("%s",name4);break;
}
read(&s[0]);//調用讀取函數
for(;p<&s[m];p++)
{ if(strcmp(p->title,name3)==0||strcmp(p->author,name4)==0)
{
printf("\n查找圖書信息成功!\n");
printf("書名 編號 作者 價格 數量\n");
printf("%-10s%-10d%-10s%-10.2fs%-10d\n",p->title,p->number,
p->author,p->price,p->store);//列印信息
printf("請輸入您的姓名:");scanf("%s",p->borrower_name);
printf("請輸入您的性別:");scanf("%s",p->borrower_gender);
printf("請輸入您的學號:");scanf("%d",&p->borrower_number);
p->store--;
printf("借書成功!\n");
printf("書名 編號 作者 價格 數量 借書人 性別 學號\n");
printf("%-10s%-10d%-10s%-10.2f%-10d%-10s%-10s%-10d\n",p->title,p->number,p->author,
p->price,p->store,p->borrower_name,p->borrower_gender,p->borrower_number);
break;
}
}
printf("是否繼續借書??");
printf("「是」請鍵入「yes」, 「否」請按任意鍵,返回菜單\n");
scanf("%s",w); //讀取是否繼續
save(&s[0]); //調用保存函數
}while(strcmp(w,"yes")==0); //判斷是否繼續借書
}
void retur(structbook *p)//還書模塊
{ int e,f;
char name5[20];
char name6[20];
char t[3];
do
{ p=&s[0];
printf("請先查找您要還的圖目!");
printf("請選擇查找方式:\n"); //列印查詢方式菜單
printf(" 1.按書名查找\n 2.按作者查找\n 0.返回\n");
printf("請在0-2中選擇:\n\n");
scanf("%d",&e); //讀取查找方式
if(e==0) break;
switch(e)
{ case 1: printf("請輸入書名:\n");scanf("%s",name5);break;
case 2: printf("請輸入作者:\n");scanf("%s",name6);break;
}
read(&s[0]);//調用讀取函數
for(;p<&s[m];p++)
{ if(strcmp(p->title,name5)==0||strcmp(p->author,name6)==0)
{ printf("\n查找圖書信息成功!\n");
printf("確認還書請按「1」!");//確認是否還書
scanf("%d",&f);
if(f==1)
{ strcpy(p->borrower_name,"0");
strcpy(p->borrower_gender,"0");
p->borrower_number=0;
p->store++;
printf("書名 編號 作者 價格 數量 借書人 性別 學號\n");
printf("%-10s%-10d%-10s%-10.2f%-10d%-10s%-10s%-10d\n",p->title,p->number,p->author,
p->price,p->store,p->borrower_name,p->borrower_gender,p->borrower_number);
//列印信息
}
break;
}
else {printf("沒有該書記錄!!");
break;}
}
printf("是否繼續還書?\n");
printf("「是」請鍵入「yes」, 「否」請按任意鍵,返回菜單\n");
scanf("%s",t); //讀取是否繼續
save(&s[0]); //調用保存函數
}while(strcmp(t,"yes")==0); //判斷是否繼續還書
}
void save(structbook *p)//保存文件
{ FILE *fp,*fp1;
int i;
if((fp=fopen("tushu.txt","wb"))==NULL)//打開文件並判斷是否出錯
{ printf("創建文件失敗!\n\n");//列印出錯提示
getchar(); return;
}
if((fp1=fopen("book.txt","wb"))==NULL)//打開文件並判斷是否出錯
{ printf("創建文件失敗!\n\n");//列印出錯提示
getchar(); return;
}
for(i=0;i<m;i++,p++)
if(fwrite(p,sizeof(structbook),1,fp)==0)//向文件寫入數據,並判斷是否出錯
printf("向文件輸入數據失敗!\n\n");
fprintf(fp1,"%d",m);
fclose(fp);//關閉文件
fclose(fp1);//關閉文件
}
void read(structbook *p)//從文件讀取信息模塊
{ FILE *fp,*fp1;
int i;
if((fp=fopen("tushu.txt","rb"))==NULL)//打開文件,並判斷是否出錯
{ printf("出錯,請檢查文件是否存在,按任意鍵返回住菜單");//列印出錯提示
getchar();
}
if((fp1=fopen("book.txt","rb"))==NULL)//打開文件並判斷是否出錯
{ printf("創建文件失敗!\n\n");//列印出錯提示
getchar(); return;
}
fscanf(fp1,"%d",&m);
fclose(fp1);//關閉文件
for(i=0;i<m;i++,p++)
{ fread(p,sizeof(struct book),1,fp);//從文件中讀取信息
}
fclose(fp);//關閉文件
}
你把保存的文件地址自己修改一下就可以了。。希望能幫到你
『叄』 用C++編寫圖書管理系統(源代碼)
這個由於你給的分太少,估計每人會給你做的。
我給你一個做參照吧,基本功能都已經實現了,並且在VC6上已經編譯運行確認:
#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() {return name;} //獲取姓名
int gettag() {return tag;} //獲取刪除標記
int getno() {return no;} //獲取讀者編號
void setname(char na[]) //設置姓名
{
strcpy(name,na);
}
void delbook(){ tag=1; }//設置刪除標記 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() { return name; }//獲取姓名
int getno(){ return no; }//獲取圖書編號
int gettag(){ return tag; }//獲取刪除標記
void setname(char na[])//設置書名
{
strcpy(name,na);
}
void delbook(){ tag=1;}//刪除圖書
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語言編寫的圖書管理系統源代碼,具體要求如下
/*這有個以前用過的程序,你可以自己改改使用,但是有些功
能好像有問題,會中斷運行。至於程序的縮進式格式就你自己
敲回車和退格解決吧,不然代碼看起來會很亂不好看。*/
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#include<ctype.h>
#define STACK_INIT_SIZE 10
#define OK 1
#define TRUE 1
#define FALSE 0
#define ERROR 0
struct student /*定義學生類型,用於存放借出的書籍*/
{
int carnum;
char lendbook[10];
}student[1000];
struct employ /*定義職工類型*/
{
int employnum;
char employname[15];
int employage;
char employsex[2];
char employleve[10];
long int employtage;
}employ[50];
struct book /*定義書的類型*/
{
int booknum;
char bookname[10];
char bookcreat[10];
int turefalse; /*用於借書和還書模塊判斷一本書是否借出的條件*/
}book[1000];
struct car /*借書卡的數據類型*/
{
int carnum;
char studentname[10];
int studentclass;
}car[100];
huanbook() /*還書函數*/
{
FILE *fp,*fp2; /*定義兩個文件指針,fp2用於修改數據時設立臨時文件用,防止數據遭破壞*/
int i,n;
int carnum;
char lendbook[10];
printf("請你輸入你的卡號\n");
scanf("%d",&carnum);
fp=fopen("car.txt","r"); /*讀取卡號記錄*/
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++) /*for循環判斷卡號是否存在*/
{
if(car[i].carnum==carnum) /*卡號存在,進入下一循環*/
{
n=i;
fclose(fp);
printf("請輸入你要還的書的名字\n");
scanf("%s",lendbook);
fp=fopen("record.txt","r");
for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++) /*判斷是否借閱了輸入的書*/
{
if(strcmp(student[i].lendbook,lendbook)==0) /*借閱了該書,進入下一循環,否則出錯顯示*/
{
fclose(fp);
fp=fopen("record.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++)
{
if(strcmp(student[i].lendbook,lendbook)==0)
{
continue; /*刪除還掉的書的借書記錄*/
}
fwrite(&student[i],sizeof(struct student),1,fp2); /*寫入原來沒還的書的記錄*/
}
fclose(fp);
fclose(fp2);
fp=fopen("record.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&student[i],sizeof(struct student),1,fp2)!=0;i++)
{
fwrite(&student[i],sizeof(struct student),1,fp); /*將借書記錄信息寫回*/
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w"); /*清臨時文件的記錄*/
fclose(fp2);
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) /*將書的記錄寫入臨時文件,防止因為修改信息破壞以前的記錄*/
{
if(i==n)
{
book[i].turefalse=1;
fwrite(&book[i],sizeof(struct book),1,fp2); /*將還的書的原來狀態設為無人借閱的*/
continue;
}
fwrite(&book[i],sizeof(struct book),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(&book[i],sizeof(struct book),1,fp); /*將臨時文件寫回*/
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w"); /*清臨時文件*/
fclose(fp2);
printf("還書完畢,按任意鍵返回\n");
getch();
return 1;
}
}
printf("你沒有借這樣的書,任意鍵返回\n"); /*出錯提示*/
fclose(fp);
getch();
return 0;
}
}
printf("系統沒這樣的卡,和管理員聯系,按任意鍵返回\n"); /*出錯提示*/
fclose(fp);
getch();
}
findbook()
{
FILE *fp;
char bookname[10];
int ture,i;
fp=fopen("book.txt","r");
printf("請輸入你要查找的書名\n");
scanf("%s",bookname);
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(bookname,book[i].bookname)==0)
{
if(book[i].turefalse==1)
{
printf("這本書的詳細資料是:%d %s %s 此書現在無人借閱\n按任意鍵返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
}
else {printf("這本書已經有人借出\n");fclose(fp);return 0;}
fclose(fp);
return FALSE;
}
}
printf("沒有你要查詢的書籍\n");
fclose(fp);
return FALSE;
}
findbook1()
{
FILE *fp;
char bookcreat[10];
int ture,i;
fp=fopen("book.txt","r");
printf("請輸入你要查找的作者名\n");
scanf("%s",bookcreat);
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(bookcreat,book[i].bookcreat)==0)
{
if(book[i].turefalse==1)
{
printf("這本書的詳細資料是:%d %s %s 此書現在無人借閱\n按任意鍵返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
}
else {printf("這本書已經有人借出\n");fclose(fp);return 0;}
fclose(fp);
return FALSE;
}
}
printf("沒有你要查詢的書籍\n");
fclose(fp);
return FALSE;
}
lendcount()
{
FILE *fp;
int i,n=0;
fp=fopen("record.txt","r");
for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++)
{
printf("卡號:%d 借出的書籍:%s \n",student[i].carnum,student[i].lendbook);
n=n+1;
}
fclose(fp);
printf("目前共有%d本書借出\n",n);
printf("按任意鍵\n");
getch();
return n;
}
chabook()
{
char ch5;
do
{
printf("---------------歡迎進入圖書查詢系統!--------------\n");
printf(" 1:<按書名查找>\n");
printf(" 2:<按作者查找>\n");
printf(" 0:<返回>\n");
printf("請輸入0--2,其他輸入非法!\n");
scanf("%s",&ch5);
switch(ch5)
{
case '1':findbook();getch();break;
case '2':findbook1();getch();break;
case '0':break;
default:printf("無此操作\n");getch();break;
}
}while(ch5!='0');
return FALSE;
}
lendbook()
{
FILE *fp,*fp2;
int i,n;
int carnum;
printf("請你輸入你的卡號\n");
scanf("%d",&carnum);
fp=fopen("car.txt","r");
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++)
{
if(car[i].carnum==carnum)
{
n=i;
fclose(fp);
printf("請輸入你要借閱的書的名字\n");
scanf("%s",student[n].lendbook);
fp=fopen("book.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(book[i].bookname,student[n].lendbook)==0)
{
if(book[i].turefalse==0) {printf("對不起,此書有人借出,請借其他書\n");fclose(fp);getch();return;}
else
fclose(fp);
fp=fopen("record.txt","a+");
student[n].carnum=carnum;
fwrite(&student[n],sizeof(struct student),1,fp);
fclose(fp);
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(book[i].bookname,student[n].lendbook)==0)
{
book[i].turefalse=0;
fwrite(&book[i],sizeof(struct book),1,fp2);
continue;
}
fwrite(&book[i],sizeof(struct book),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(&book[i],sizeof(struct book),1,fp);
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w");
fclose(fp2);
printf("借書完畢,按任意鍵返回\n");
getch();
return;
}
}
printf("不存在這樣的書,任意鍵返回\n");
fclose(fp);
getch();
return;
}
}
printf("你的卡號不存在,請申請新卡,按任意鍵返回\n");
fclose(fp);
getch();
}
carcount()
{
FILE *fp;
int i,n=0;
fp=fopen("car.txt","r");
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++)
{
printf("第%d張卡<卡號:%d 姓名:%s 班級:%d>\n",i+1,car[i].carnum,car[i].studentname,car[i].studentclass);
n=n+1;
}
fclose(fp);
printf("目前共有%d本書\n",n);
printf("按任意鍵\n");
getch();
}
delcar()
{
FILE *fp,*fp2;
int i;
int carnum;
char choice;
fp=fopen("car.txt","r");
fp2=fopen("bookl.txt","w");
printf("請輸入你要刪除的卡號\n");
printf("如果你輸入的卡號存在,系統自動刪除該信息!如果不存在,系統不做任何改動\n");
scanf("%d",&carnum);
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++)
{
if(car[i].carnum!=carnum)
{
fwrite(&car[i],sizeof(struct car),1,fp2);
}
}
fclose(fp);
fclose(fp2);
printf("是否真的要刪除該卡?刪除後該書籍的所有信息將無法恢復《Y/N》\n");
scanf("%s",&choice);
if(choice=='y'||choice=='Y')
{
fp=fopen("car.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&car[i],sizeof(struct car),1,fp2)!=0;i++)
{
fwrite(&car[i],sizeof(struct car),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("按任意鍵返回\n");
getch();
return;
}
else
{
printf("按任意鍵返回\n");
getch();
return;
}
}
addcar()
{
FILE *fp;
int i=0;
fp=fopen("car.txt","a+");
printf("請你輸入卡號\n");
scanf("%d",&car[i].carnum);
printf("請你輸入學生姓名\n");
scanf("%s",car[i].studentname);
printf("請你輸入班級\n");
scanf("%d",&car[i].studentclass);
fwrite(&car[i],sizeof(struct car),1,fp);
fclose(fp);
printf("輸入完畢,任意鍵返回\n");
getch();
}
changemploy()
{
FILE *fp,*fp2;
char employname[10],choice;
int i;
fp=fopen("employ.txt","r");
fp2=fopen("bookl.txt","w");
printf("請你輸入要修改的職工的名字\n");
scanf("%s",employname);
for(i=0;fread(&employ[i],sizeof(struct employ),1,fp)!=0;i++)
{
if(strcmp(employ[i].employname,employname)==0)
{
printf("你所要修改的職工的資料如下,請選擇你要修改的內容\n");
printf("<職工號:%d職工名:%s 年齡:%d 性別:%s 學歷:%s 工資:%d>\n",employ[i].employnum,employ[i].employname,employ[i].employage,employ[i].employsex,employ[i].employleve,employ[i].employtage);
printf("2:修改職工名\n");
printf("3:修改職工年齡\n");
printf("4:修改職工工資\n");
printf("5:修改職工學歷\n");
printf("請輸入1-5:");
scanf("%s",&choice);
switch(choice)
{
case '1':
{
printf("請輸入新的職工號\n");
scanf("%d",&employ[i].employnum);
fwrite(&employ[i],sizeof(struct employ),1,fp2);
}break;
case '2':
{
printf("請輸入新的職工姓名\n");
scanf("%s",employ[i].employname);
fwrite(&employ[i],sizeof(struct employ),1,fp2);
}break;
case '3':
{
printf("請輸入新的年齡\n");
scanf("%d",&employ[i].employage);
fwrite(&employ[i],sizeof(struct employ),1,fp2);
}break;
case '4':
{
printf("請輸入新的職工工資\n");
scanf("%d",&employ[i].employtage);
fwrite(&employ[i],sizeof(struct employ),1,fp2);
}break;
case '5':
{
printf("請輸入新的職工學歷\n");
scanf("%s",employ[i].employleve);
fwrite(&employ[i],sizeof(struct employ),1,fp2);
}
default:printf("沒有這樣的操作");break;
}
continue;
}
fwrite(&employ[i],sizeof(struct employ),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("employ.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&employ[i],sizeof(struct employ),1,fp2)!=0;i++)
{
fwrite(&employ[i],sizeof(struct employ),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("按任意鍵返回\n");
getchar();
return;
}
delemploy()
{
FILE *fp,*fp2;
int i;
char employname[10],choice;
fp=fopen("employ.txt","r");
fp2=fopen("bookl.txt","w");
printf("請輸入你要刪除的職工名\n");
printf("如果你輸入的職工存在,系統自動刪除該信息!如果不存在,系統不做任何改動\n");
scanf("%s",employname);
for(i=0;fread(&employ[i],sizeof(struct employ),1,fp)!=0;i++)
{
if(strcmp(employname,employ[i].employname)!=0)
{
fwrite(&employ[i],sizeof(struct employ),1,fp2);
}
}
fclose(fp);
fclose(fp2);
printf("是否真的要刪除該職工信息?刪除後的所有信息將無法恢復《Y/N》\n");
scanf("%s",&choice);
if(choice=='y'||choice=='Y')
{
fp=fopen("employ.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&employ[i],sizeof(struct employ),1,fp2)!=0;i++)
{
fwrite(&employ[i],sizeof(struct employ),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("按任意鍵返回\n");
getch();
return TRUE;
}
else
{
printf("按任意鍵返回\n");
getch();
return FALSE;
}
}
employcount()
{
FILE *fp;
int i,n=0;
fp=fopen("employ.txt","r");
for(i=0;fread(&employ[i],sizeof(struct employ),1,fp)!=0;i++)
{
printf("第%d職工的信息如下:\n<職工號:%d 職工名:%s 年齡:%d 性別:%s 學歷:%s 工資:%d>\n",n+1,employ[i].employnum,employ[i].employname,employ[i].employage,employ[i].employsex,employ[i].employleve,employ[i].employtage);
n++;
}
fclose(fp);
printf("目前共有%d個職工\n",n);
printf("按任意鍵返回\n");
}
addemploy()
{
FILE *fp;
char choice='y';
int i=1;
fp=fopen("employ.txt","a+");
while(choice=='y'||choice=='Y')
{
printf("請你輸入職工號碼\n");
scanf("%d",&employ[i].employnum);
printf("請你輸入職工名\n");
scanf("%s",employ[i].employname);
printf("請輸入職工年齡\n");
scanf("%d",&employ[i].employage);
printf("請你輸入性別\n");
scanf("%s",employ[i].employsex);
printf("請你輸入職工的學歷水平\n");
scanf("%s",employ[i].employleve);
printf("請輸入職工的工資\n");
scanf("%d",&employ[i].employtage);
fwrite(&employ[i],sizeof(struct employ),1,fp);
printf("是否要輸入下個職工信息?\n");
scanf("%s",&choice);
}
printf("按任意鍵返回\n");
fclose(fp);
}
addbook()
{
FILE *fp;
int i=0;
char choice='y';
fp=fopen("book.txt","a+");
while(choice=='y'||choice=='Y')
{
printf("請你輸入第%d本書的序號\n",i+1);
scanf("%d",&book[i].booknum);
printf("請你輸入書名\n");
scanf("%s",book[i].bookname);
printf("請你輸入書的作者\n");
scanf("%s",book[i].bookcreat);
printf("請設為1或0,1代表書還沒人借,0表示書已經借出,設其他值,程序運行時無法得出正常結果\n");
printf("請你設定書的狀態\n");
scanf("%d",&book[i].turefalse);
fwrite(&book[i],sizeof(struct book),1,fp);
printf("是否要輸入下本書\n");
scanf("%s",&choice);
}
fclose(fp);
}
bookcount()
{
FILE *fp;
int i,n=0;
fp=fopen("book.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(book[i].booknum!=0&&strlen(book[i].bookname)!=0&&strlen(book[i].bookcreat)!=0)
{
printf("第%d本書<序號:%d 書名:%s 作者:%s 狀態:%d>\n",i+1,book[i].booknum,book[i].bookname,book[i].bookcreat,book[i].turefalse);
n=n+1;
}
}
fclose(fp);
printf("目前共有%d本書\n",n);
printf("按任意鍵\n");
}
delbook()
{
FILE *fp,*fp2;
int i;
char bookname[10],choice;
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
printf("請輸入你要刪除的書名\n");
printf("如果你輸入的書名存在,系統自動刪除該信息!如果不存在,系統不做任何改動\n");
scanf("%s",bookname);
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(bookname,book[i].bookname)!=0)
{
fwrite(&book[i],sizeof(struct book),1,fp2);
}
}
fclose(fp);
fclose(fp2);
printf("是否真的要刪除該書籍?刪除後該書籍的所有信息將無法恢復《Y/N》\n");
scanf("%s",&choice);
if(choice=='y'||choice=='Y')
{
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(&book[i],sizeof(struct book),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("按任意鍵返回\n");
getch();
return;
}
else
{
printf("按任意鍵返回\n");
getch();
return;
}
}
changebook()
{
FILE *fp,*fp2;
char bookname[10],choice;
int i;
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
printf("請你輸入要修改的書籍的書字\n");
scanf("%s",bookname);
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(book[i].bookname,bookname)==0)
{
printf("你所要修改的書的資料如下,請選擇你要修改的內容\n");
printf("序號:〈%d〉 書名:〈%s〉 作者:〈%s〉 \n",book[i].booknum,book[i].bookname,book[i].bookcreat);
printf("1:修改書的序號\n");
printf("2:修改書名\n");
printf("3:修改作者\n");
printf("請輸入1-3:");
scanf("%s",&choice);
switch(choice)
{
case '1':
{
printf("請輸入新的序號\n");
scanf("%d",&book[i].booknum);
fwrite(&book[i],sizeof(struct book),1,fp2);
}break;
case '2':
{
printf("請輸入新的書名\n");
scanf("%s",book[i].bookname);
fwrite(&book[i],sizeof(struct book),1,fp2);
}break;
case '3':
{
printf("請輸入新的作者\n");
scanf("%s",book[i].bookcreat);
fwrite(&book[i],sizeof(struct book),1,fp2);
}break;
defaut:printf("沒有這樣的操作");break;
}
continue;
}
fwrite(&book[i],sizeof(struct book),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(&book[i],sizeof(struct book),1,fp);
}
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("按任意鍵返回\n");
getchar();
return;
}
main()
{
char ch1,ch2,ch3,ch4,ch5;
do
{
printf("\t\t請你選擇操作類型:\n");
printf(" 1:<查閱圖書>\n");
printf(" 2:<借閱圖書>\n");
printf(" 3:<管理系統>\n");
printf(" 4:<還書>\n");
printf(" 0:<退出>\n");
printf("請輸入0--4\n");
scanf("%s",&ch1);
switch(ch1)
{
case '1':chabook();break;
case '2':lendbook();;break;
case '3':{
do
{
printf("---------------歡迎進入管理系統!--------------\n");
printf(" 1:<增加圖書>\n");
printf(" 2:<刪除圖書>\n");
printf(" 3:<修改圖書資料>\n");
printf(" 4:<書籍統計>\n");
printf(" 5:<職工管理系統>\n");
printf(" 6:<學生管理系統>\n");
printf(" 0:<返回>\n");
printf("請輸入0--6,其他輸入非法!\n");
scanf("%s",&ch2);
switch(ch2)
{
case '1':addbook();
break;
case '2':delbook();break;
case '3':changebook();break;
case '4':bookcount();getch();break;
case '5':{do
{
printf("---------------歡迎進入職工管理系統!--------------\n");
printf(" 1:<增加員工>\n");
printf(" 2:<刪除員工>\n");
printf(" 3:<修改員工資料>\n");
printf(" 4:<員工統計>\n");
printf(" 0:<返回>\n");
printf("請輸入0--4,其他輸入非法!\n");
scanf("%s",&ch3);
switch(ch3)
{
case '1':addemploy();getch();break;
case '2':delemploy();break;
case '3':changemploy();break;
case '4':employcount();getch();break;
case '0':break;
default:printf("無此操作\n");getch();break;
}
}while(ch3!='0');}break;
case '6':{
do
{
printf("---------------歡迎進入學生管理系統!--------------\n");
printf(" 1:<申請新卡>\n");
printf(" 2:<刪除卡號>\n");
printf(" 3:<借書統計>\n");
printf(" 4:<卡號統計>\n");
printf(" 0:<返回>\n");
printf("請輸入0--4,其他輸入非法!\n");
scanf("%s",&ch4);
switch(ch4)
{
case '1':addcar();break;
case '2':delcar();break;
case '3':lendcount();break;
case '4':carcount();break;
case '0':break;
default:printf("無此操作\n");getch();break;
}
}while(ch4!='0');}break;
case '0':break;
default:printf("無此操作\n");getch();break;
}
}while(ch2!='0');}break;
case '4':huanbook();break;
case '0':break;
default:printf("無此操作\n");getch();break;
}
}while(ch1!='0');
}
『伍』 圖書管理系統源代碼
想找人代做?
不免費
『陸』 急求用C語言編寫的圖書管理系統源代碼
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#include<ctype.h>
#define STACK_INIT_SIZE 10
#define OK 1
#define TRUE 1
#define FALSE 0
#define ERROR 0
struct student /*定義學生類型,用於存放借出的書籍*/
{
int carnum;
char lendbook[10];
}student[1000];
struct employ /*定義職工類型*/
{
int employnum;
char employname[15];
int employage;
char employsex[2];
char employleve[10];
long int employtage;
}employ[50];
struct book /*定義書的類型*/
{
int booknum;
char bookname[10];
char bookcreat[10];
int turefalse; /*用於借書和還書模塊判斷一本書是否借出的條件*/
}book[1000];
struct car /*借書卡的數據類型*/
{
int carnum;
char studentname[10];
int studentclass;
}car[100];
huanbook() /*還書函數*/
{
FILE *fp,*fp2; /*定義兩個文件指針,fp2用於修改數據時設立臨時文件用,防止數據遭破壞*/
int i,n;
int carnum;
char lendbook[10];
printf("請你輸入你的卡號\n");
scanf("%d",&carnum);
fp=fopen("car.txt","r"); /*讀取卡號記錄*/
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++) /*for循環判斷卡號是否存在*/
{
if(car[i].carnum==carnum) /*卡號存在,進入下一循環*/
{
n=i;
fclose(fp);
printf("請輸入你要還的書的名字\n");
scanf("%s",lendbook);
fp=fopen("record.txt","r");
for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++) /*判斷是否借閱了輸入的書*/
{
if(strcmp(student[i].lendbook,lendbook)==0) /*借閱了該書,進入下一循環,否則出錯顯示*/
{
fclose(fp);
fp=fopen("record.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++)
{
if(strcmp(student[i].lendbook,lendbook)==0)
{
continue; /*刪除還掉的書的借書記錄*/
}
fwrite(&student[i],sizeof(struct student),1,fp2); /*寫入原來沒還的書的記錄*/
}
fclose(fp);
fclose(fp2);
fp=fopen("record.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&student[i],sizeof(struct student),1,fp2)!=0;i++)
{
fwrite(&student[i],sizeof(struct student),1,fp); /*將借書記錄信息寫回*/
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w"); /*清臨時文件的記錄*/
fclose(fp2);
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) /*將書的記錄寫入臨時文件,防止因為修改信息破壞以前的記錄*/
{
if(i==n)
{
book[i].turefalse=1;
fwrite(&book[i],sizeof(struct book),1,fp2); /*將還的書的原來狀態設為無人借閱的*/
continue;
}
fwrite(&book[i],sizeof(struct book),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(&book[i],sizeof(struct book),1,fp); /*將臨時文件寫回*/
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w"); /*清臨時文件*/
fclose(fp2);
printf("還書完畢,按任意鍵返回\n");
getch();
return 1;
}
}
printf("你沒有借這樣的書,任意鍵返回\n"); /*出錯提示*/
fclose(fp);
getch();
return 0;
}
}
printf("系統沒這樣的卡,和管理員聯系,按任意鍵返回\n"); /*出錯提示*/
fclose(fp);
getch();
}
findbook()
{
FILE *fp;
char bookname[10];
int ture,i;
fp=fopen("book.txt","r");
printf("請輸入你要查找的書名\n");
scanf("%s",bookname);
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(bookname,book[i].bookname)==0)
{
if(book[i].turefalse==1)
{
printf("這本書的詳細資料是:%d %s %s 此書現在無人借閱\n按任意鍵返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
}
else {printf("這本書已經有人借出\n");fclose(fp);return 0;}
fclose(fp);
return FALSE;
}
}
printf("沒有你要查詢的書籍\n");
fclose(fp);
return FALSE;
}
findbook1()
{
FILE *fp;
char bookcreat[10];
int ture,i;
fp=fopen("book.txt","r");
printf("請輸入你要查找的作者名\n");
scanf("%s",bookcreat);
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(bookcreat,book[i].bookcreat)==0)
{
if(book[i].turefalse==1)
{
printf("這本書的詳細資料是:%d %s %s 此書現在無人借閱\n按任意鍵返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
}
else {printf("這本書已經有人借出\n");fclose(fp);return 0;}
fclose(fp);
return FALSE;
}
}
printf("沒有你要查詢的書籍\n");
fclose(fp);
return FALSE;
}
lendcount()
{
FILE *fp;
int i,n=0;
fp=fopen("record.txt","r");
for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++)
{
printf("卡號:%d 借出的書籍:%s \n",student[i].carnum,student[i].lendbook);
n=n+1;
}
fclose(fp);
printf("目前共有%d本書借出\n",n);
printf("按任意鍵\n");
getch();
return n;
}
chabook()
{
char ch5;
do
{
printf("---------------歡迎進入圖書查詢系統!--------------\n");
printf(" 1:<按書名查找>\n");
printf(" 2:<按作者查找>\n");
printf(" 0:<返回>\n");
printf("請輸入0--2,其他輸入非法!\n");
scanf("%s",&ch5);
switch(ch5)
{
case '1':findbook();getch();break;
case '2':findbook1();getch();break;
case '0':break;
default:printf("無此操作\n");getch();break;
}
}while(ch5!='0');
return FALSE;
}
lendbook()
{
FILE *fp,*fp2;
int i,n;
int carnum;
printf("請你輸入你的卡號\n");
scanf("%d",&carnum);
fp=fopen("car.txt","r");
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++)
{
if(car[i].carnum==carnum)
{
n=i;
fclose(fp);
printf("請輸入你要借閱的書的名字\n");
scanf("%s",student[n].lendbook);
fp=fopen("book.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(book[i].bookname,student[n].lendbook)==0)
{
if(book[i].turefalse==0) {printf("對不起,此書有人借出,請借其他書\n");fclose(fp);getch();return;}
else
fclose(fp);
fp=fopen("record.txt","a+");
student[n].carnum=carnum;
fwrite(&student[n],sizeof(struct student),1,fp);
fclose(fp);
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(book[i].bookname,student[n].lendbook)==0)
{
book[i].turefalse=0;
fwrite(&book[i],sizeof(struct book),1,fp2);
continue;
}
fwrite(&book[i],sizeof(struct book),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(&book[i],sizeof(struct book),1,fp);
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w");
fclose(fp2);
printf("借書完畢,按任意鍵返回\n");
getch();
return;
}
}
printf("不存在這樣的書,任意鍵返回\n");
fclose(fp);
getch();
return;
}
}
printf("你的卡號不存在,請申請新卡,按任意鍵返回\n");
fclose(fp);
getch();
}
carcount()
{
FILE *fp;
int i,n=0;
fp=fopen("car.txt","r");
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++)
{
printf("第%d張卡<卡號:%d 姓名:%s 班級:%d>\n",i+1,car[i].carnum,car[i].studentname,car[i].studentclass);
n=n+1;
}
fclose(fp);
printf("目前共有%d本書\n",n);
printf("按任意鍵\n");
getch();
}
delcar()
{
FILE *fp,*fp2;
int i;
int carnum;
char choice;
fp=fopen("car.txt","r");
fp2=fopen("bookl.txt","w");
printf("請輸入你要刪除的卡號\n");
printf("如果你輸入的卡號存在,系統自動刪除該信息!如果不存在,系統不做任何改動\n");
scanf("%d",&carnum);
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++)
{
if(car[i].carnum!=carnum)
{
fwrite(&car[i],sizeof(struct car),1,fp2);
}
}
fclose(fp);
fclose(fp2);
printf("是否真的要刪除該卡?刪除後該書籍的所有信息將無法恢復《Y/N》\n");
scanf("%s",&choice);
if(choice=='y'||choice=='Y')
{
fp=fopen("car.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&car[i],sizeof(struct car),1,fp2)!=0;i++)
{
fwrite(&car[i],sizeof(struct car),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("按任意鍵返回\n");
getch();
return;
}
else
{
printf("按任意鍵返回\n");
getch();
return;
}
}
addcar()
{
FILE *fp;
int i=0;
fp=fopen("car.txt","a+");
printf("請你輸入卡號\n");
scanf("%d",&car[i].carnum);
printf("請你輸入學生姓名\n");
scanf("%s",car[i].studentname);
printf("請你輸入班級\n");
scanf("%d",&car[i].studentclass);
fwrite(&car[i],sizeof(struct car),1,fp);
fclose(fp);
printf("輸入完畢,任意鍵返回\n");
getch();
}
『柒』 求圖書館管理系統C++源代碼
#include<iostream>
#include<fstream>
#include<windows.h>
#include<stdlib.h>
using namespace std;
void mainmenu();
void Manage_Book();
void input_Book();
void input_Reader();
void New_Book();
void Seek_Book();
void Borrow_Manage();
void Borrow_Book();
void Return_Book();
void Output_Message();
void Exit_System();
int u,v=3,k=0;
struct Book
{
char name[20];
int booknumber;
int num_present;
int num_all;
}book[1000];
struct Reader
{
char name[20];
int readernumber;
int card;
}reader[3];
void mainmenu()
{
int Num_Choice1,flag=1;
system("color E");
for(;k<=0;k++)
{
input_Book();
input_Reader();
}
while(flag==1)
{
system("cls");
cout<<"\t\t\t◆◆◆◆◆主菜單◆◆◆◆◆"<<endl
<<"\t\t\t☆ 1.圖書管理 ☆"<<endl
<<"\t\t\t☆ 2.借閱管理 ☆"<<endl
<<"\t\t\t☆ 3.輸出信息 ☆"<<endl
<<"\t\t\t☆ 4.退出系統 ☆"<<endl
<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl;
cout<<"請輸入所需要的服務編碼"<<endl;
cin>>Num_Choice1;
switch(Num_Choice1)
{
case 1:
Manage_Book();
break;
case 2:
Borrow_Manage();
break;
case 3:
Output_Message();
break;
case 4:
Exit_System();
flag=0;
break;
default:
flag=0;
cout<<"輸入有誤!!"<<endl;
}
}
}
void Manage_Book()
{
int flag1=1,Num_Choice2;
system("cls"); while(flag1==1)
{
cout<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl
<<"\t\t\t☆ 1.新書入庫 ☆"<<endl
<<"\t\t\t☆ 2.圖書查詢 ☆"<<endl
<<"\t\t\t☆ 3.返回主菜單 ☆"<<endl
<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl;
cin>>Num_Choice2;
switch(Num_Choice2)
{
case 1:
flag1=2;
New_Book();
break;
case 2:
flag1=2;
Seek_Book();
break;
case 3:
mainmenu();
default:
flag1=1;
cout<<"輸入有誤!"<<endl;
system("pause");
system("cls");
}
}}
void input_Book()
{
cout<<"請依照提示輸入現有的三本圖書的信息:"<<endl;
for(int i=0;i<3;i++)
{
cout<<"書名:"<<endl;
cin>>book[i].name;
cout<<"書號:"<<endl;
cin>>book[i].booknumber;
cout<<"庫存量:"<<endl;
cin>>book[i].num_all;
cout<<"現存量:"<<endl;
cin>>book[i].num_present;
}
}
void New_Book()
{
system("cls");
int j;
char newbook_name[20];
cout<<"請輸入新書書名:"<<endl;
cin>>newbook_name;
for(j=0;j<1000;j++)
{
if(strcmp(newbook_name,book[j].name)==0)
{
book[j].num_all++;
book[j].num_present++;
break;
}
}
if(j==1000)
{
cout<<"請為此新書編號:"<<endl;
v++;
cin>>book[v].booknumber;
strcpy(book[v].name,newbook_name);
book[v].num_all=1;
book[v].num_present=1;
}
else cout<<"已有此書,庫存量加一"<<endl;
system("pause");
}
void Seek_Book()
{
system("cls");
int k,booknumber;
cout<<"請輸入所要查詢的書號:"<<endl;
cin>>booknumber;
for(k=0;k<1000;k++)
{
if(book[k].booknumber==booknumber)
{
cout<<"書號:"<<booknumber<<endl;
cout<<"書名:"<<book[k].name<<endl;
cout<<"庫存量:"<<book[k].num_all<<endl;
cout<<"現存量:"<<book[k].num_present<<endl;
system("pause");
break;
}
}
if(k==1000)
{
cout<<"未找到此書!!"<<endl;
system("pause");
}
}
void Borrow_Manage()
{
int flag=1;
system("cls");
int Num_Choice3;
while(flag==1)
{
cout<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl
<<"\t\t\t☆ 1.借書登記 ☆"<<endl
<<"\t\t\t☆ 2.還書管理 ☆"<<endl
<<"\t\t\t☆ 3.返回主菜單 ☆"<<endl
<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl;
cin>>Num_Choice3;
switch(Num_Choice3)
{
case 1:
flag=2;
Borrow_Book();
break;
case 2:
flag=2;
Return_Book();
break;
case 3:
mainmenu();
default:
flag=1;
cout<<"輸入有誤!!"<<endl;
system("pause");
}
system("cls");
}
}
void input_Reader()
{
system("cls");
cout<<"請依照提示輸入現有的三位讀者的信息:"<<endl;
for(int m=0;m<3;m++)
{
cout<<"姓名:"<<endl;
cin>>reader[m].name;
cout<<"編號:"<<endl;
cin>>reader[m].readernumber;
reader[m].card=0;
}
}
void Borrow_Book()
{
system("cls");
char reader_name[20];
int n,book_number;
cout<<"請輸入讀者姓名:"<<endl;
cin>>reader_name;
for(n=0;n<3;n++)
{
if(strcmp(reader_name,reader[n].name)==0)
{
if(reader[n].card!=0)
{
cout<<"已借書,不能再借,請按任意鍵返回"<<endl;
system("pause");
mainmenu();
}
else
break;
}
}
if(n==3)
{
cout<<"無此讀者!輸入有誤!!按任意鍵返回主菜單"<<endl;
system("pause");
mainmenu();
}
cout<<"請輸入所借圖書書號:"<<endl;
cin>>book_number;
for(n=0;n<v;n++)
{
if(strcmp(reader_name,reader[n].name)==0)
reader[n].card=book_number;
}
for(n=0;n<v;n++)
{
if(book[n].booknumber==book_number)
{
if(book[n].num_present==0)
{
cout<<"該書已經被借完,請按任意鍵返回"<<endl;
system("pause");
for(n=0;n<v;n++)
{
if(strcmp(reader_name,reader[n].name)==0)
reader[n].card=0;
}
mainmenu();
}
else
{
book[n].num_present--;
cout<<"借書成功,請按任意鍵返回"<<endl;
system("pause");
break;
}
}
}
if(n==v)
{
for(n=0;n<v;n++)
{
if(strcmp(reader_name,reader[n].name)==0)
reader[n].card=0;
}
cout<<"所輸入的書號不存在,請按任意鍵返回主菜單"<<endl;
system("pause");
mainmenu();
}
}void Return_Book()
{
system("cls");
int j;
char reader_name[20];
int book_number;
cout<<"請輸入讀者姓名:"<<endl;
cin>>reader_name;
for(j=0;j<3;j++)
{
if(strcmp(reader_name,reader[j].name)==0)
break;
}
if(j==3)
{
cout<<"無此讀者!輸入有誤!!按任意鍵返回主菜單"<<endl;
system("pause");
mainmenu();
}
cout<<"請輸入所還圖書書號:"<<endl;
cin>>book_number;
for(j=0;j<3;j++)
{
if(strcmp(reader_name,reader[j].name)==0)
{
if(book_number==reader[j].card)
{
reader[j].card=0;
for(j=0;j<v;j++)
{
if(book[j].booknumber==book_number)
{
book[j].num_present++;
cout<<"還書成功,請按任意鍵返回"<<endl;
system("pause");
break;
}
}
}
else
{
cout<<"該讀者未藉此書"<<endl;
system("pause");
}
}
if(j==v)
cout<<"所輸入的書號不存在:"<<endl;
}
}
void Output_Message()
{
system("cls");
int q;
cout<<"以下是圖書信息"<<endl<<endl;
for(q=0;q<v;q++)
{
cout<<"書號:"<<book[q].booknumber<<'\t';
cout<<"書名:"<<book[q].name<<'\t';
cout<<"庫存量:"<<book[q].num_all<<'\t';
cout<<"現存量:"<<book[q].num_present<<endl;
}
cout<<"以下是讀者信息"<<endl<<endl;
for(q=0;q<3;q++)
{
cout<<"姓名:"<<reader[q].name<<'\t'
<<"編號:"<<reader[q].readernumber<<'\t'
<<"所借書號:"<<reader[q].card<<endl;
}
system("pause");
}
void Exit_System()
{
system("cls");
cout<<"歡迎下次使用,謝謝"<<endl;
system("pause");
}
void main()
{
mainmenu();
}
『捌』 請教哪裡有jsp的圖書館管理系統的源碼
項目說明:
用戶名:admin
密碼:admin
運行環境:
硬體平台:
CPU:酷睿II。
內存:1GB以上。
軟體平台:
操作系統:Windows。
資料庫:MySQL。
編程平台:MyEclipse
瀏覽器:IE
Web伺服器:tomcat
解析度:最佳效果1024×768像素。
操作流程
(1)用戶登錄圖書館管理系統後,可看到圖書借閱排行榜,通過排行榜可以看出借閱圖書的名稱、圖書類型、借閱次數等相關信息。
(2)單擊「系統設置」/「圖書館信息」命令,對圖書館信息進行設置操作。
(3)單擊「系統設置」/「管理員設置」命令,對管理員信息進行添加、許可權設置、查詢及刪除操作。
(4)單擊「系統設置」/「參數設置」命令,對辦證費用及有效期限信息進行添加操作。
(5)單擊「系統設置」/「書架設置」命令,對書架信息進行添加、修改及刪除操作。
(6)單擊「讀者管理」/「讀者類型管理」命令,對讀者類型信息進行添加、修改及刪除操作。
(7)單擊「讀者管理」/「讀者檔案管理」命令,對讀者信息進行添加、修改及刪除操作。
(8)單擊「圖書管理」/「圖書類型設置」命令,對圖書類型信息進行添加、修改及刪除操作。
(9)單擊「圖書管理」/「圖書檔案管理」命令,對圖書信息進行添加、修改及刪除操作。
(10)單擊「圖書借還」/「圖書借閱」命令,對圖書借閱信息添加操作。
(11)單擊「圖書借還」/「圖書續借」命令,對圖書續借信息進行添加操作。
(12)單擊「圖書借還」/「圖書歸還」命令,對圖書歸還信息進行添加操作。
(13)單擊「系統查詢」/「圖書檔案查詢」命令,對圖書檔案信息進行查詢操作。
(14)單擊「系統查詢」/「圖書借閱查詢」命令,對借閱的圖書信息進行查詢操作。
(15)單擊「系統查詢」/「借閱到期提醒」命令,對借閱到期提醒信息進行查詢操作。
(16)單擊「更改口令」按鈕,對當前的用戶密碼進行修改操作。
(17)單擊「退出系統」按鈕,退出當前操作系統。
『玖』 c語言 圖書管理系統 源代碼
#include
#include
#include
#include
#include
struct book{
char number[100];
char tittle[100];
char writer[100];
char publisher[100];
char date[100];
char price[100];
char status[100];
char reader[100];
};
void search_book();
void borrow_book();
void return_book();
void add_book();
void delete_book();
void modify_book();
void scan_book();
int main()
{
int c1=0,c2,c3;
int l,x,z;
while(1)
{
system("color 2C");
printf("\t\t\t ^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n");
printf("\t\t\t| * - * - * -圖書管理系統 * - * - * |\n");
printf("\t\t\t* [1] 用戶登錄 *\n");
printf("\t\t\t* [2] 管理員登錄 *\n");
printf("\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n");
printf("\n");
printf("請選擇操作 :");
scanf("%d",&c1);
system("cls");
break;
}
if(c1==1)
{
while(1){
system("color 2C");
printf("\t\t\t ^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n");
printf("\t\t\t| * - * - * -圖書管理系統 * - * - * |\n");
printf("\t\t\t* [1] 查詢圖書 *\n");
printf("\t\t\t| [2] 借閱圖書 |\n");
printf("\t\t\t* [3] 借圖書 *\n");
printf("\t\t\t* [4] 瀏覽圖書信息 *\n");
printf("\t\t\t| [5] 退圖書管理系統 |\n");
printf("\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n");
printf("\n");
printf("請選擇操作 :");
scanf("%d",&c2);
getchar();
switch(c2)
{
case 1:search_book(); break;
case 2:borrow_book(); break;
case 3:return_book(); break;
case 4:scan_book(); break;
case 5:system("cls"); return 0;
}
}
}
if(c1==2)
{
while(1){
system("color 2C");
printf("\t\t\t ^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n");
printf("\t\t\t| * - * - * -圖書管理系統 * - * - * |\n");
printf("\t\t\t| [1] 添加圖書 |\n");
printf("\t\t\t* [2] 刪減圖書 *\n");
printf("\t\t\t| [3] 修改圖書信息 |\n");
printf("\t\t\t* [4] 瀏覽圖書信息 *\n");
printf("\t\t\t| [5] 退圖書管理系統 |\n");
printf("\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n");
printf("\n");
printf("請選擇操作 :");
scanf("%d",&c3);
getchar();
switch(c3)
{
case 1:add_book(); break;
case 2:delete_book(); break;
case 3:modify_book(); break;
case 4:scan_book(); break;
case 5:system("cls"); return 0;
}
}
}
}
/*查詢圖書*/
void search_book()
{
FILE*fp;
struct book n;
struct book nn;
int l,r;
char x,z;
fp=fopen("F:\\課程設計\\圖書管理系統.txt","rb");
while(1)
{
l=0;
system("cls");
printf("請輸入圖書名稱:");
scanf("%s",n.tittle);
fflush(stdin);
rewind(fp);
while(1)
{
fread(&nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.tittle,nn.tittle );
if(r==0)
{
l=1;
break;
}
}
if(l==0)
{
printf("沒要查詢圖書\n\n ");
}
else
{
printf("查詢圖書:");
printf("\n");
printf("****************************************\n");
printf("編號 書名 作者 版社 版間 價格 狀態 借閱者\n");
printf("\n");
printf("%s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);
printf("\n\n\n");
}
printf("否繼續查詢圖書 ? [(y)/否(n)] ? \n\n");
do
{
x=getche();
}while(x!='n'&&x!='y');
if(x=='n')
break;
}
fclose(fp);
system("cls");
}
//添加
void add_book()
{
FILE *fp;
struct book n;
struct book nn;
char x,z;
int l,r;
fp=fopen("F:\\課程設計\\圖書管理系統.txt","ab+");
do
{
system("cls");
do
{
l=0;
printf("\n");
printf("編號 書名 作者 版社 版間 價格 狀態 借閱者\n");
fflush(stdin);
scanf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);
system("cls");
rewind(fp);
while(!feof(fp))
{
fread(&nn,sizeof(nn),1,fp);
r=strcmp(n.tittle,nn.tittle);
if(r==0)
{
l=1;
printf(" 該圖書已存請輸入新圖書信息: \n\n");
break;
}
}
}while(l);
fwrite(&n,sizeof(n),1,fp);
printf("\n");
printf("否繼續輸入新圖書信息[y/n] \n\n");
do
{
x=getche();
}while(x!='n'&&x!='y');
}while(x=='y');
fclose(fp);
system("cls");
}
//刪除圖書
void delete_book()
{
FILE *fp,*fp1;
char x,z;
struct book n;
struct book nn;
int l,r;
fp=fopen("F:\\課程設計\\圖書管理系統.txt","ab+");
while(1)
{
l=0;
system("cls");
printf("\n");
printf("請輸入需要刪除圖書名: \n\n");
fflush(stdin);
scanf("%s",&n.tittle);
rewind(fp);
while(1)
{
fread(&nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.tittle,nn.tittle);
if(r==0)
{
l=1;
break;
}
}
if(l==0)
{
printf("\n");
printf("起未找該圖書 \n");
}
else
{
printf("\n");
printf("****************************************\n");
printf("編號 書名 作者 版社 版間 價格 狀態 借閱者\n");
printf("\n");
printf("%s %s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);
printf("\n");
printf("確認刪除圖書信息 [(y)/否(n)]\n\n");
do
{
z=getche();
}while(z!='n'&&z!='y');
if(z=='n')
break;
else
{
fp1=fopen("F:\\課程設計\\圖書管理系統new.txt","wb");
rewind(fp);
while(1)
{
fread(&nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.tittle,nn.tittle);
if(r!=0)
fwrite(&nn,sizeof(nn),1,fp1);
}
fclose(fp);
fclose(fp1);
fp=fopen("F:\\課程設計\\圖書管理系統.txt","wb");
fp1=fopen("F:\\課程設計\\圖書管理系統new.txt","rb");
while(1)
{
fread(&nn,sizeof(nn),1,fp1);
if(feof(fp1))
break;
fwrite(&nn,sizeof(nn),1,fp);
}
fclose(fp);
fclose(fp1);
}
}
printf("\n");
printf("否繼續刪除圖書信息 [(y)/否(n)] \n");
do
{
x=getche();
}while(x!='n'&&x!='y');
if(x=='n')
break;
}
fclose(fp);
system("cls");
}
//修改圖書信息
void modify_book()
{
FILE *fp;
struct book n;
struct book nn;
int l,r;
char x,z;
fp=fopen("F:\\課程設計\\圖書管理系統.txt","rb+");
while(1)
{
l=0;
printf("\n");
system("cls");
printf("請輸入需要修改圖書名: \n\n");
fflush(stdin);
scanf("%s",&n.tittle);
system("cls");
rewind(fp);
while(1)
{
fread(&nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.tittle,nn.tittle);
if(r==0)
{
l=1;
break;
}
}
if(l==0)
{
printf("\n");
printf("起未找該圖書信息 \n\n");
}
else
{
printf("\n");
printf("****************************************\n");
printf("編號 書名 作者 版社 版間 價格 狀態 借閱者\n");
printf("\n");
printf("%s %s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);
printf("請依修改圖書信息\n\n\n");
fflush(stdin);
scanf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);
fseek(fp,sizeof(nn),1);
fwrite(&n,sizeof(nn),1,fp);
}
printf("\n");
printf(" 否繼續修改用戶信息[y/n]? \n\n");
do
{
x=getch();
}while(x!='n'&&x!='y');
if(x=='n')
break;
}
fclose(fp);
system("cls");
}
//借書
void borrow_book()
{
FILE*fp;
struct book n;
struct book nn;
char x,z;
int l,r;
fp=fopen("F:\\課程設計\\圖書管理系統.txt","rb+");
while(1)
{
l=0;
system("cls");
printf("\n");
printf("請輸入需要借閱圖書名: \n");
fflush(stdin);
scanf("%s",&n.tittle);
rewind(fp);
while(1)
{
fread(&nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.tittle,nn.tittle);
if(r==0)
{
l=1;
break;
}
}
if(l==0)
{
printf("\n");
printf("起未找該圖書 \n");
}
else
{ printf("\n");
printf("****************************************\n");
printf("編號 書名 作者 版社 版間 價格 狀態 借閱者\n");
printf("\n");
printf("%s %s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);
printf("\n");
fflush(stdin);
printf("請輸入圖書信息並修改庫狀態及借閱者信息");
printf("****************************************\n");
printf("編號 書名 作者 版社 版間 價格 狀態 借閱者\n");
printf("\n");
scanf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);
fseek(fp,sizeof(nn),1);
fwrite(&n,sizeof(nn),1,fp);
}
printf("\n");
printf(" 否繼續借書 [(y)/否(n)] \n\n");
do
{
x=getch();
}while(x!='n'&&x!='y');
if(x=='n')
break;
}
fclose(fp);
system("cls");
}
//書
void return_book()
{
FILE*fp;
struct book n;
struct book nn;
char x,z;
int l,r;
fp=fopen("F:\\課程設計\\圖書管理系統.txt","rb+");
while(1)
{
l=0;
system("cls");
printf("\n");
printf("請輸入需要借圖書名: \n");
fflush(stdin);
scanf("%s",&n.tittle);
rewind(fp);
while(1)
{
fread(&nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.tittle,nn.tittle);
if(r==0)
{
l=1;
break;
}
}
if(l==0)
{
printf("\n");
printf("起未找該圖書 \n");
}
else
{
printf("\n");
printf("****************************************\n");
printf("編號 書名 作者 版社 版間 價格 狀態 借閱者\n");
printf("\n");
printf("%s %s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);
printf("\n");
fflush(stdin);
printf("請輸入圖書信息並修改庫狀態 \n\n");
printf("****************************************\n");
printf("編號 書名 作者 版社 版間 價格 狀態 借閱者\n");
printf("\n");
scanf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);
fseek(fp,-(int)sizeof(nn),1);
fwrite(&n,sizeof(nn),1,fp);
}
printf("\n");
printf("否繼續書 [(y)/否(n)] \n");
do
{
x=getche();
}while(x!='n'&&x!='y');
if(x=='n')
break;
}
fclose(fp);
system("cls");
}
//瀏覽
void scan_book()
{
FILE*fp;
char x,z;
struct book n;
fp=fopen("F:\\課程設計\\圖書管理系統.txt","rb");
rewind(fp);
system("cls");
while(1)
{
fread(&n,sizeof(n),1,fp);
if(feof(fp))
break;
else
{
printf("********************************************\n");
printf("編號 書名 作者 版社 版間 價格 狀態 借閱者\n");
printf("\n");
printf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);
printf("\n");
}
}
printf("\n");
printf("主菜單請按車");
do
{
x=getche();
}while(x!='\r');
if(x=='\r')
{
fclose(fp);
system("cls");
}
}
『拾』 下載了一個圖書管理系統源碼其中資料庫book.data文件如何打開呢
這應該是分離後的文件,先把data放到你知道的位置,哪個盤都可以,打開SQL2000然後右擊「資料庫」選所有任務里的附加資料庫,找到你放的data文件就OK了