古詩詞大全網 - 經典古詩 - 請幫我做壹個圖書館管理系統

請幫我做壹個圖書館管理系統

#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;

}

}

printf("妳沒有借這樣的書,不要耍我,任意鍵返回\n"); /*出錯提示*/

fclose(fp);

getch();

return;

}

}

printf("系統沒這樣的卡,和管理員聯系,按任意鍵返回\n"); /*出錯提示*/

fclose(fp);

getch();

}

lendcount() /*其他的自己看就懂了,不行也可以qq聯系:258032791,c++版本要的話跟我說,願意交愛好編程的交友,畢業沒時間了,找工作忙,有些模塊沒寫,發現什麽問題自己改,*/

{

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();

}

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':printf("按作者查找,有時間再寫\n");getch();break;

case '0':break;

default:printf("無此操作\n");getch();break;

}

}while(ch5!='0');

}

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("1:修改職工的號\n");

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);

}

defaut: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;

}

else

{

printf("按任意鍵返回\n");

getch();

return;

}

}

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("按任意鍵返回");

}

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");

}

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",book[i].booknum,book[i].bookname,book[i].bookcreat);

}

else {printf("這本書已經有人借出\n");fclose(fp);return;}

fclose(fp);

return;

}

}

printf("沒有妳要查詢的書籍\n");

fclose(fp);

return;

}

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(fp);

fclose(fp2);

fp2=fopen("bookl.txt","w");

fclose(fp2);

printf("按任意鍵返回\n");

getchar();

return;

}

main()

{

char ch1,ch2,ch3,ch4,ch5;

do

{

clrscr();

printf("**************歡迎進入中文圖書館管理程序!****************\n");

printf("~~~~~~~~~~\t\t\t~~~~~~~~~~~~\n");

printf("制作人:蔣勇\t班級:光電0603\t學號:s05064110\n");

printf("聯系地址:西安郵電學院 10#242\n");

printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");

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

{

clrscr();

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

{

clrscr();

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

{

clrscr();

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');

}