① c語言圖書管理系統!!
這個其實也不難,我可以幫你完成這樣的程序!
② C語言 圖書管理系統
雪茄煙
③ 用C語言編一個簡單的圖書管理系統(包括借閱查詢還書三部分)(學生作業用)
#include<stdio.h>
#include<string.h>
struct sale/*商品名的定義*/
{int number;<br>char name[20];<br>float price;<br>long count;<br>long time;<br>long date;};
/*各個函數*/
void input(struct sale s[7]);/*輸入函數*/
void output(struct sale s[7]);/*輸出函數*/
void seek(struct sale s[7]);/*查找函數*/
void row(struct sale s[7]);/*排序函數*/
void change(struct sale s[7]);/*刪除、修改、或插入*/
void main()/*主函數執行區域*/
{struct sale s[7]={{2,"pen",0.5,200,20050604,20090102},{1,"milk",3.5,100,20050403,20090202},
{5,"coke",3.5,500,20060203,20070503},{6,"chewing",0.3,200,20060305,20080205},
{4,"eraser",0.4,20,20060304,20500607},{3,"pencil",0.9,100,20040607,20060709}};/*定義初始值*/;
/*input(s);【已付初始值暫不運行!!】*/
output(s);
seek(s);
row(s);
change(s);
}
/*void input(struct sale s[7])【注釋:已付初始值,暫不運行!!】
{int i;<br>printf("請分別輸入產品編號、名稱、單價、庫存數量、入庫時間、有效日期:\n");<br> for(i=0;i<7;i++)<br> scanf("%d%s%f%ld%ld%ld",&s.number,&s.name,&s.price,&s.count,&s.time,&s.date);}*/
void output(struct sale s[7])/*定義輸出*/
{int i;<br>printf("編號\t名稱\t單價\t庫存數量\t入庫時間\t\t有效日期\n");<br> for(i=0;i<7;i++)<br> printf("%d\t%s\t%.2f\t%ld\t\t%ld\t\t%ld\n",s.number,s.name,s.price,s.count,s.time,s.date);}
void seek(struct sale s[7])/*定義查找*/
{int i;<br> int m;<br> int k;<br> k=1;<br> printf("請輸入要查找的編號\n");<br> printf("m== ");<br> scanf("%d",&m);<br> for(i=0;i<7;i++)<br> {<br> if(m==s.number)<br> {printf("你想查找的物品是:\n");<br> printf("編號\t名稱\t單價\t庫存數量\t入庫時間\t\t有效日期\n");<br> printf("%d\t%s\t%.2f\t%ld\t\t%ld\t\t%ld\n",s.number,s.name,s.price,s.count,s.time,s.date);<br> k=m;}
}
if(k==1)
printf("沒有此類商品!!!\n");
}
void row(struct sale s[7])/*排序*/
{
struct sale t;
int i,j;
int m,a;
printf("\n");
printf("輸出已排好序的商品\n");
for(j=0;j<6;j++)
for(i=0;i<6-j;i++)
if(s.number>s.number)
{
t=s;
s=s;
s=t;
}
printf("重新排序後是; \n");
printf("編號\t名稱\t單價\t庫存數量\t入庫時間\t\t有效日期\n");
for(a=0;a<7;a++)
printf("%d\t%s\t%.2f\t%ld\t\t%ld\t\t%ld\n",s[a].number,s[a].name,s[a].price,s[a].count,s[a].time,s[a].date);
}
void change(struct sale s[7])/*刪除、修改、或插入*/
{
struct sale c;
int i,m,q,n,k;
k=0;
printf("請輸入您要刪除、修改或要插入的物品編號\n");/*前奏*/
scanf("%d",&m);
for(i=0;i<7;i++)
if(m==s.number)
{{printf("編號\t名稱\t單價\t庫存數量\t入庫時間\t\t有效日期\n");<br> printf("%d\t%s\t%.2f\t%ld\t\t%ld\t\t%ld\n",s.number,s.name,s.price,s.count,s.time,s.date);}
printf("你確實要刪除它么???還是要修改??\n");
printf("如果想刪除請輸入1,如果要修改請輸入2。\n");
printf("您要輸入的是: ");
scanf("%d",&q);
if(q==1)/*執行刪除命令*/
{printf("您刪除後的結果是:\n");<br> for(i=0;i<7;i++)<br> if(m!=s.number)<br> {printf("編號\t名稱\t單價\t庫存數量\t入庫時間\t\t有效日期\n");<br> printf("%d\t%s\t%.2f\t%ld\t\t%ld\t\t%ld\n",s.number,s.name,s.price,s.count,s.time,s.date);}}
if(q==2)/*執行修改命令*/
{printf("輸入你想修改的庫存數量: ");<br> scanf("%d",&n);<br> s[m].count=n;<br> printf("修改後的商品信息為:\n");<br> printf("編號\t名稱\t單價\t庫存數量\t入庫時間\t\t有效日期\n");<br> for(i=0;i<7;i++)<br> printf("%d\t%s\t%.2f\t%ld\t\t%ld\t\t%ld\n",s.number,s.name,s.price,s.count,s.time,s.date);}
k=i;
}
if(k==0)/*執行插入命令*/
{printf("\n\n");<br> printf("由於插入語句沒有要求,所以插入語句尚未完成,有些功能尚未完善,所以會有錯誤,請老師見諒。\n\n\n");<br> printf("此類商品不存在,請插入\n");<br> printf("請分別輸入要插入產品的編號、名稱、單價、庫存數量、入庫時間、有效日期:\n");<br> i=m-1; <br> scanf("%d%s%f%ld%ld%ld",&s.number,&s.name,&s.price,&s.count,&s.time,&s.date);<br> printf("編號\t名稱\t單價\t庫存數量\t入庫時間\t\t有效日期\n");<br> printf("%d\t%s\t%.2f\t%ld\t\t%ld\t\t%ld\n",s.number,s.name,s.price,s.count,s.time,s.date);<br> for(i=0;i<7;i++)<br> printf("%d\t%s\t%.2f\t%ld\t\t%ld\t\t%ld\n",s.number,s.name,s.price,s.count,s.time,s.date);<br> <br> <br> row(s);<br> <br> <br> }}
這是我大一時候做的大作業,雖然不是圖書管理系統,你只要改改就行了,原理都一樣,呵呵
④ C語言圖書管理系統
我前一段時間寫了一個類似的程序,LZ可以把我的源代碼下載下來後看一下。基本上符合LZ的要求。
由於代碼比較長,這里只提供下載鏈接了。
源代碼: http://www.namipan.com/d/
⑤ 求一圖書管理系統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
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
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)
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
#include
#include
struct BOOK
{
int id,usr[10],total,store,days[10];
char name[31],author[21];
}books[100];
/*上面是結構體的定義,用於存放書籍及借書的信息。*/
void page_title(char *menu_item)
{
clrscr();
printf(">>> 圖 書 管 理 系 統 <<<\n\n- %s -\n\n",menu_item);
}
/*上面是列印頁眉的函數,同時通過參數menu_item,可以顯示當前的狀態。*/
void return_confirm(void)
{
printf("\n按任意鍵返回……\n");
getch();
}
/*上面是返回前請求確認的函數,以便在返回前觀察結果*/
int search_book(void)
{
int n,i;
printf("請輸入圖書序號:");
scanf("%d",&i);
for(n=0;n<100;n++)
{
if(books[n].id==i)
{
printf("書名:%s\n",books[n].name);
printf("作者:%s\n",books[n].author);
printf("存數:%d of ",books[n].store);
printf("%d\n",books[n].total);
return n;
}
}
printf("\n輸入錯誤或無效圖書序號.\n");
return -1;
}
/*上面的函數是在數組中找到圖書號匹配的記錄,顯示其信息並返
回數組下標,如果找不到相應記錄則提示錯誤並返回-1。*/
void book_out(void)
{
int n,s,l,d;
page_title("借閱圖書");
if((n=search_book())!=-1&&books[n].store>0)
{
printf("請輸入借書證序號:");
scanf("%d",&s);
printf("請輸入可借天數:");
scanf("%d",&d);
for(l=0;l<10;l++)
{
if(books[n].usr[l]==0)
{
books[n].usr[l]=s;
books[n].days[l]=d;
break;
}
}
books[n].store--;
}
if(n!=-1&&books[n].store==0) printf("此書已經全部借出.\n");
return_confirm();
}
/*上面是借書的函數,首先調用找書函數*/
void book_in(void)
{
int n,s,l;
page_title("歸還圖書");
if((n=search_book())!=-1&&books[n].store<books[n].total)
{
printf("借閱者圖書證列表:\n");
for(l=0;l<10;l++)
if (books[n].usr[l]!=0)
printf("[%d] - %d天\n",books[n].usr[l],books[n].days[l]);
printf("請輸入借書證序號:");
scanf("%d",&s);
for(l=0;l<10;l++)
{
if(books[n].usr[l]==s)
{
books[n].usr[l]=0;
books[n].days[l]=0;
break;
}
}
books[n].store++;
}
if(n!=-1&&books[n].store==books[n].total)
printf("全部入藏.\n");
return_confirm();
}
void book_add(void)
{
int n;
page_title("注冊新書");
for(n=0;n<100;n++)
if(books[n].id==0) break;
printf("序號:");
scanf("%d",&books[n].id);
printf("書名:");
scanf("%s",&books[n].name);
printf("作者:");
scanf("%s",&books[n].author);
printf("數量:");
scanf("%d",&books[n].total);
books[n].store=books[n].total;
return_confirm();
}
void book_del(void)
{
int n;
page_title("注銷舊書");
if((n=search_book())!=-1) books[n].id=0;
printf("該書已注銷.\n");
return_confirm();
}
void main(void)
{
menu: page_title("操作選單");
printf("請用數字鍵選擇操作\n\n");
printf("1 借閱圖書\n2 歸還圖書\n\n");
printf("3 注冊新書\n4 注銷舊書\n\n");
printf("\n0 退出\n");
switch(getch())
{
case '1' : book_out();break;
case '2' : book_in();break;
case '3' : book_add();break;
case '4' : book_del();break;
case '0' : exit(0);
}
goto menu;
}
{
int n;
page_title("廣?症慕");
if((n=search_book())!=-1) books[n].id=0;
printf("乎慕廝廣?.\n");
return_confirm();
}
void main(void)
{
menu: page_title("荷恬僉汽");
printf("萩喘方忖囚僉夲荷恬\n\n");
printf("1 処堋夕慕\n2 拷珊夕慕\n\n");
printf("3 廣過仟慕\n4 廣?症慕\n\n");
printf("\n0 曜竃\n");
switch(getch())
{
case '1' : book_out();break;
case '2' : book_in();break;
case '3' : book_add();break;
case '4' : book_del();break;
case '0' : exit(0);
}
goto menu;
}
⑦ c語言圖書管理系統
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
typedef int BOOL;
typedef struct bookinfo
{
char number[15];/*產品編號*/
char name[30];/*產品名稱*/
float price;/*單價*/
char auther[20];/*作者*/
BOOL isExit;/*存在狀態*/
char lendername[20];/*借書人姓名*/
char lendersex[2];/*借書人性別*/
char lendernum[15];/*借書人學號*/
}BOOKINFO;
void menu()
{
printf("\n\n\n\n\n\n\n");
printf("\t\t\t圖書管理系統\n");
printf("\t\t\t1:新進圖書基本信息的輸入\n");
printf("\t\t\t2:顯示全部記錄\n");
printf("\t\t\t3:根據圖書名稱查詢圖書基本信息\n");
printf("\t\t\t4:根據圖書名稱對撤銷的圖書信息進行刪除\n");
printf("\t\t\t5:按照圖書名稱從小大到排序\n");
printf("\t\t\t6:統計某價格以上的圖書數量\n");
printf("\t\t\t7:列出所有未借出去的圖書信息\n");
printf("\t\t\t8:退出\n");
}
void choice_1_input_new()/*輸入新進的圖書信息*/
{
char choice;
FILE *p;
BOOKINFO newbook;
system("cls");
while(1)
{
printf("輸入圖書編號:");
gets(newbook.number);
printf("輸入圖書名稱:");
gets(newbook.name);
printf("輸入圖書單價:");
scanf("%f",&newbook.price);
while(getchar()!='\n');
printf("輸入圖書的作者:");
gets(newbook.auther);
printf("輸入借書人姓名:");
gets(newbook.lendername);
printf("輸入借書人性別:");
gets(newbook.lendersex);
printf("輸入借書人學號:");
gets(newbook.lendernum);
printf("是否保存該條書目?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
{
newbook.isExit=1;/*將圖書狀態設置成1,表示沒有借出*/
p=fopen("c:\\bookinfo.data","ab");
fwrite(&newbook,sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n該條書目已添加到c:\\bookinfo.data文件中!\n");
}
else
{
printf("\n本條書目未保存!\n");
}
printf("\n是否繼續添加書目?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}
}
void choice_2_display_all()/*顯示全部圖書信息*/
{
FILE *p;
int n;
BOOKINFO bookinfo[100];
int booknumber=0;
system("cls");
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
/*booknumber--;使用feof()函數會多讀一行,因此需要booknumber自減一次,使書目的數量正確*/
fclose(p);
booknumber--;
if(booknumber==0)
{
printf("沒有任何圖書信息!\n\n");
}
else
{
n=0;
printf(" 圖書信息如下\n");
printf(" 圖書信息 | 借書人信息 \n");
printf("編號 名稱 單價 作者 圖書狀態 | 姓名 性別 學號\n");
while(n<booknumber)
{
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
n++;
}
}
printf("\n\n按任意鍵回到主菜單!\n");
getch();
}
void choice_3_search_according_name()/*根據圖書名稱顯示圖書的信息*/
{
char search[20]="";/*search用來存放要查詢的書名*/
int n;
FILE *p;
char choice;
BOOKINFO bookinfo[100];
int booknumber=0;
system("cls");
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函數會多讀一行,因此需要booknumber自減一次,使書目的數量正確*/
fclose(p);
while(1)
{
printf("輸入要查詢的書本名稱:");
gets(search);
if(booknumber==0)
{
printf("書庫中沒有任何信息!\n\n");
printf("按任意鍵回到主菜單!\n\n");
getch();
break;
}/*if結束*/
else
{
for(n=0;n<booknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)
{
printf("該書的詳細信息如下:\n");
printf(" 圖書信息 | 借書人信息 \n");
printf("編號 名稱 單價 作者 圖書狀態 | 姓名 性別 學號\n");
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
break;
}
if(n>=booknumber)
printf("沒有查找該書的任何信息!\n");
printf("\n\n是否繼續查詢?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}/*else結束*/
}/*while(1)結束*/
}
void choice_4_delete_according_name()/*根據圖書名稱對圖書信息進行刪除*/
{
char search[20]="";/*search用來存放要刪除的書名*/
int n,i;
FILE *p;
char choice;
BOOKINFO bookinfo[100];
int booknumber;
system("cls");
while(1)
{
printf("輸入要刪除的書本名稱:");
gets(search);
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函數會多讀一行,因此需要booknumber自減一次,使書目的數量正確*/
fclose(p);
if(booknumber==0)
{
printf("書庫中沒有任何信息!\n\n");
printf("按任意鍵回到主菜單!\n\n");
getch();
break;
}/*if結束*/
else
{
for(n=0;n<booknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)
{
break;
}
if(n>=booknumber)
printf("沒有查找該書的任何信息!\n");
else
{
printf("是否確認需要刪除該條書目?(Y/N)");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
{
for(i=n;i<booknumber-1;i++)
bookinfo[i]=bookinfo[i+1];
booknumber--;
p=fopen("c:\\bookinfo.data","wb");
for(n=0;n<booknumber;n++)
fwrite(&bookinfo[n],sizeof(BOOKINFO),1,p);
fclose(p);
printf("刪除成功!\n");
}
else
printf("\n\n該條書目沒有被刪除!");
}
printf("\n\n是否繼續進行刪除操作?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}/*else結束*/
}/*while(1)結束*/
}
void choice_5_sort_according_name()/*根據圖書名稱排序*/
{
FILE *p;
int m,n;
BOOKINFO temp;
BOOKINFO bookinfo[100];
int booknumber;
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
system("cls");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函數會多讀一行,因此需要booknumber自減一次,使書目的數量正確*/
fclose(p);
if(booknumber==0)
{
printf("沒有任何圖書信息!\n\n");
}
else
{
for(m=0;m<booknumber-1;m++)
for(n=m+1;n<booknumber;n++)
if(strcmp(bookinfo[m].name,bookinfo[n].name)>0)
{
temp=bookinfo[m];
bookinfo[m]=bookinfo[n];
bookinfo[n]=temp;
}
p=fopen("c:\\bookinfo.data","wb");
for(m=0;m<booknumber;m++)
fwrite(&bookinfo[m],sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n\n完成排序!\n\n");
}
printf("按任意鍵回到主菜單!\n");
getch();
}
void choice_6_display_high_price()/*根據價格列出圖書信息*/
{
float price;
FILE *p;
int n;
int count=0;
BOOKINFO bookinfo[100];
int booknumber;
system("cls");
printf("請輸入價格:");
scanf("%f",&price);
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函數會多讀一行,因此需要booknumber自減一次,使書目的數量正確*/
fclose(p);
if(booknumber==0)
{
printf("沒有任何圖書信息!\n\n");
}
else
{
for(n=0;n<booknumber;n++)
{
if(bookinfo[n].price>=price)
count++;
}
if(count==0)
printf("書庫中沒有比%.1f$價格高的圖書!",price);
else
{
printf(" 價格高於%.1f$的圖書信息如下\n",price);
printf(" 圖書信息 | 借書人信息 \n");
printf("編號 名稱 單價 作者 圖書狀態 | 姓名 性別 學號\n");
for(n=0;n<booknumber;n++)
{
if(bookinfo[n].price>=price)
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
}
}
}
printf("\n\n按任意鍵回到主菜單!\n");
getch();
}
void choice_7_display_according_exitflag()/*根據存在狀態列出圖書信息*/
{
FILE *p;
int n;
int count=0;
BOOKINFO bookinfo[100];
int booknumber;
system("cls");
booknumber=0;
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("書庫中沒有任何書目存在!\n");
}
else
{
for(n=0;n<booknumber;n++)
if(bookinfo[n].isExit==1)
count++;
if(count==0)
printf("書庫中的書籍全部借出!\n");
else
{
printf("書庫中未被借出的圖書信息如下:\n\n");
printf(" 圖書信息 | 借書人信息 \n");
printf("編號 名稱 單價 作者 圖書狀態 | 姓名 性別 學號\n");
for(n=0;n<booknumber;n++)
if(bookinfo[n].isExit==1)
{
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
}
}
}
printf("\n按任意鍵返回主菜單!\n");
getch();
}
void main()
{
char choice;
clock_t tm;
FILE *p;
if((p=fopen("c:\\bookinfo.data","rb"))==NULL)
{
p=fopen("c:\\bookinfo.data","wb");
fclose(p);
}
while(1)
{
system("cls");
menu();
choice=getch();
switch(choice)
{
case '1':choice_1_input_new();break;/*輸入新進的圖書信息*/
case '2':choice_2_display_all();break;/*顯示全部圖書信息*/
case '3':choice_3_search_according_name();break;/*根據圖書名稱顯示圖書的信息*/
case '4':choice_4_delete_according_name();break;/*根據圖書名稱對圖書信息進行刪除*/
case '5':choice_5_sort_according_name();break;/*根據圖書名稱排序*/
case '6':choice_6_display_high_price();break;/*根據價格列出圖書信息*/
case '7':choice_7_display_according_exitflag();break;/*根據存在狀態列出圖書信息*/
case '8':printf("\n\n\t\t\t謝謝使用,再見!\n\t\t\t按任意鍵退出!\n");getch();return;
default:
printf("\n\n\t\t\t請輸入菜單中的數字!(1~8)");
tm=clock();
while(clock()<tm+1800);
break;
}
}
}
寫的很趕,不知道行不行
程序很長,但是沒什麼復雜的東西。
要是寫的不好,樓主就將就吧。
⑧ 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();
}