C語(yǔ)言程序設(shè)計(jì)模板:圖書館管理系統(tǒng)簡(jiǎn)介_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)模板:圖書館管理系統(tǒng)簡(jiǎn)介_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)模板:圖書館管理系統(tǒng)簡(jiǎn)介_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)模板:圖書館管理系統(tǒng)簡(jiǎn)介_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)模板:圖書館管理系統(tǒng)簡(jiǎn)介_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

HUNANUNIVERSITY

c語(yǔ)言程序訓(xùn)練

報(bào)告

【設(shè)計(jì)目的】

圖書信息包括:讀者登錄號(hào)、管理員登錄號(hào)、圖書編號(hào)、作者名、種類、出版社、圖書庫(kù)存、圖書借出數(shù)目

等.

圖書信息管理系統(tǒng),使之能提供如下功能:

1)系統(tǒng)以菜單方式工作

2)讀者注冊(cè)功能

3)讀者登錄功能

4)讀者借書還書功能

5)查詢讀者借閱記錄

6)行而在管圖書信息功能

7)修改密碼功能

8)管理員登錄功能

9)增長(zhǎng)、修改、刪除圖書功能

10)查看圖書信息功能

【設(shè)計(jì)思緒】

根據(jù)題目規(guī)定,應(yīng)當(dāng)杷圖書信息用構(gòu)造體形式輸入,應(yīng)當(dāng)提供如下構(gòu)造體和文獻(xiàn)的輸入等操作:在程序中

需要實(shí)現(xiàn)圖書信息錄入,瀏覽,查詢,刪除和修改等功能的操作,因此需要建立對(duì)應(yīng)的模塊來(lái)實(shí)現(xiàn):此外

還需提供選擇菜單實(shí)現(xiàn)功能,在運(yùn)行時(shí)到達(dá)所規(guī)定的目的:管理員和讀者登錄界面和各自功能應(yīng)有不一樣

的實(shí)現(xiàn)。

【總體設(shè)計(jì)】

【詳細(xì)設(shè)計(jì)】

1.主函數(shù)

主函數(shù)設(shè)計(jì)規(guī)定簡(jiǎn)潔,只提供部分提醒語(yǔ)和函數(shù)的調(diào)用

源代碼為

//rkou.c程序的入口

#include<stdio.h>

#include<stdlib.h>

ttinclude<string.h>

ftinclude<conio.h>

Uinclude*head,h*

#include*fuc.h*

#include*picture.h"

Uinclude*jiangzhuol.h"

ttinclude~output.h"

main()

(inti=setup();

switch(i)

{case0:while(n<53)

{conects(n);

default:eros(i):

syslem("pause");

2.程序中全局變量申明定義,以和所有函數(shù)申明

源代碼為

structbook〃圖書構(gòu)造體申明

charname[50],classic[10].writer[20];//書名,類別,作者

intjn://借出數(shù)量

intzn;〃在館數(shù)量

intbh;〃圖書編號(hào)

structinformation〃管理員和讀者構(gòu)造體申明

(charnamc[10],no[12],key[10];〃姓名,賬號(hào),密碼

structshow〃圖書借閱記錄的I構(gòu)造體申明

charnamel[10],name2[50],writer[20],no[12];〃書名,讀者姓名,書的作者,讀

者賬號(hào)

intbh,o:〃圖書編號(hào),借閱狀況(未還,己

還)

〃如下為用到的全局變量

structbookbk:

structinformationaa,rr;

structinformationstu[100]:

structbookbb[100J;

structinformationad[100];

structshowss[100];

inti,j,k,s;

intn=0:

intx:

FILE*fp;

〃如下函數(shù)重要功能:以便窗口與顧客之間互換信息

intregstO:

voidpassword(char*a,intb,intj);//登陸時(shí)的輸入函數(shù)

voidexamine(int*b);〃保證鉞入H勺數(shù)據(jù)是數(shù)字

voidchangepaw(inta,intb);〃修改密碼用到的提醒函數(shù)

voidinputsOO:〃輸出圖書類別以供顧客選擇

voidinputsl(inta,intb,intc,intd,inte):〃以便顧客輸入圖書各項(xiàng)信息(如書名,編

號(hào))

voidinputs2(inta,intb,intc):〃以便顧客輸入管理員的信息(如賬號(hào)姓

名)

voidinputs3(inta,intb,intc);〃以便顧客輸入讀者的信息(如賬號(hào)姓名)

voideros(inti):〃錯(cuò)誤顯示函數(shù),操作一旦出錯(cuò),則會(huì)出現(xiàn)

對(duì)應(yīng)1句錯(cuò)誤信息

voidconects(intj);〃連接函數(shù),選擇界面

〃?下函數(shù)重要用于變化文獻(xiàn)的內(nèi)容并保留

intsetupO;〃數(shù)據(jù)初始化函

數(shù)

intxzc(charno[12],charkey1[10],charkey2[10],charname[10]);〃讀者注冊(cè)函數(shù)

intexam(charno「101.charkeyF101,intn):〃密碼賬號(hào)蛤杳

函數(shù)

intmp(charno[12],charkeyl[10],charkey2[10],charkey3[10],intn);〃密碼修改函數(shù)

voidpaixuO;〃對(duì)圖書按照編號(hào)從小到大的次

序進(jìn)行排列

intsc(intbh);〃管理員刪除圖書信息函數(shù)

intzj(structbookbb):〃管理員增長(zhǎng)圖H信息函數(shù)

intxg(structbookbb);〃管理員修改圖書信息函數(shù)

intjs(intbh,charno[12]);〃借書函數(shù)

inths(intbh,charno[12]);〃還書函數(shù)

intbhl(intbh);〃判斷該編號(hào)的圖H信息與否存在函數(shù)

voidbh2(intbh):〃按照?qǐng)DH編號(hào)顯示圖竹信息函數(shù)

intsml(charname[50]):〃判斷與否存在該名字口勺圖書信息函數(shù)

voidsm2(charname[50]);〃按照?qǐng)D書名字顯示圖書信息函數(shù)

intzzKcharwriter[20]):〃判斷與否存在該作者的圖書信息函數(shù)

voidzz2(charwriter[20]);//按照?qǐng)D書作者顯示圖書信息函數(shù)

voidlb(charclassic[1。]);〃按類別顯示圖書信息

intrckl(intbh);〃判斷該編號(hào)的圖書的借書記錄與否存在

voidrck2(intbh);〃按編號(hào)顯示圖書借書狀況

intgck21(charnot12]):〃判斷該賬號(hào)讀者的借書記錄與否存在

voidgck22(charno[12]);〃按讀者顯示借書狀況2

voidgckl2():〃他示所有借書狀況

voidgck230;〃管理員查看所有書的信息

voidcopy(intbh)://按編圖書編號(hào)將圖書信息臨時(shí)保留在此外一種構(gòu)造

體里面

voidcopy2(charno[12]);〃按管理員賬號(hào)將管理員信息臨時(shí)保留在此外一?種構(gòu)造

體里面

voidcopy3(charno[12]);〃按讀者賬號(hào)將讀者信息臨時(shí)保留在此外一種構(gòu)造體里

//pic()函數(shù):每個(gè)函數(shù)表達(dá)一種界面,conecis函數(shù)將它們連接起來(lái)

voidpicOO;

voidpicl():

voidpic2();

voidpic3();

voidpic4():

voidpic5();

voidpic6();

voidpic7();

voidpic8();

voidpic9():

voidpiclOO:

voidpicl1();

voidpicl2():

voidpicl3():

voidpic!4();

voidpicl5();

voidpic16();

voidpic!7();

voidpic18();

voidpic!9();

voidpic20();

voidpic21();

voidpic22();

voidpic23();

voidpic24();

voidpic25();

voidpic26();

voidpic27();

voidpic29();

voidpic30();

voidpic31();

voidpic32();

voidpic33();

voidpic34():

voidpic35();

voidpic36();

voidpic37();

voidpic38();

voidpic39();

voidpic40();

voidpic41();

voidpic42();

voidpic43();

voidpic44();

voidpic45();

voidpic46();

voidpic47();

voidpiccO;

3?顧客輸入以和界面反饋用到的功能函數(shù)

源代碼為

intregst0

{charnum[12]>pawl[10],paw2[10],name[10]:

inti:

printfT請(qǐng)輸入賬號(hào)\n(U字符以內(nèi),不能具有中文字符):\n");

password(num.0.11):

printf("輸入您的密碼\n(9字符以內(nèi),不能具有中文字符):\n");

password(pawl,1,9);

printf("請(qǐng)?jiān)俅屋斎朊艽a:\n"):

password(paw2,1,9);

printf("輸入您的姓名:\n*);

gets(name);

systcm("cls");

i=xzc(num,pawl,paw2,name);

returni;

voidpassword(char*a,intb,intj)

(charc;

inti=0;

while((c=getch())!=’\r)

{if(c==8)

(printf(*\b\b*);

if(i>0)

i—;

elseif(i<j)

(if(b)prinlf("*");

elseprintfc);

afil=c:

i++;

if(i=j)

printf

a[i]=\0';

printf(*,\n*):

voidexamine(int*b)

(whilc(!scanfa))

{while(getchar()!=,\n);

printf("請(qǐng)輸入數(shù)字??!\n");

rewind(stdin);

if(b)system(*cls*);

voidchangepaw(inta,intb)

(inti;

charcl[10],c2[10],c3[10]:

printf("請(qǐng)輸入原密碼、n");

password(cl,1,9);

printf(”請(qǐng)輸入新密碼\n");

password(c2,1,9):

prinlf("請(qǐng)?jiān)俅屋斎胄旅艽a\n"):

password(c3,1,9);

syslem("cls"):

if(b)

i-mp(aa.no,c1,c2,c3,b);

if(i)

{eros(i);n=27;

elsen=26;

else

{i=mp(rr.no,c1,c2,c3,b);

if⑴

{eros(i);n=44;

elsen=43;

voidinputsOO

{inti=l;

while(i==l)

{printf(*1.A類\n2.B類\n3.C類一4.D類\n5.E類\(16.F類\n");

examine(&i,1);

switch(i)

{casei:strcpy(bk.classic,"A類");i=0;break;

case2:strcpy(bk.classic,;i=0;break;

case3:strcpy(bk.classic,"C類");i=0;break;

case4:strcpy(bk.classic,"D類");i=0;brcak;

case5:strcpy(bk.classic,*E:i=0:break:

case6:strcpy(bk.classic,"F類");i=0;break;

default:i=l;

voidinputs!(inta.intb,intc,intd,inte)

(inti:

switch(a)

{case1:printf("請(qǐng)輸入圖書編號(hào):\n*):examine(&bk.bh,1);

default:;

switch(b)

{case1:printf("請(qǐng)輸入圖書名稱:\n*);gets(bk.name);

default:;

switch(c)

{caseI:printf("請(qǐng)輸入圖書II勺\n*);gets(bk.writer);

default::

switch(d)

{case1:printf("請(qǐng)輸入該圖書的庫(kù)存:\n*);examine(&bk.zn,1);

default:;

system("cls");

switch(e)

{case1:printf("請(qǐng)選擇圖書類別:\n");inputs。();

default:;

voidinputs2(inta.intb.intc)

(switch(a)

case1:printf("請(qǐng)輸入賬號(hào):\n*);password(aa.no,0,11);

default:;

switch(b)

{case1:prinlf("請(qǐng)輸入密碼:\n");password(aa.key,1,9);

default:;

switch(c)

{case1:prinlf("諳輸入姓名:\n");gels(aa.name);

default:;

system(^cls*);

voidinputs3(inta,intb,intc)

{switch(a)

{case1:prinlf("請(qǐng)輸入賬號(hào):\n");password(rr.no,0,11);

default:;

switch(b)

{case1:prinlf("請(qǐng)輸入密碼:\n");password(rr.key,1,9):

default:;

switch(c)

{case1:printf(”請(qǐng)輸入姓名:\n");gels(rr.name);

default:;

system(^cls^):

voideros(inti)〃錯(cuò)誤函數(shù)

switch(i)

case-1:printf("error]!初始化失敗、n\n");break;

case-2:printf(*error2!賬號(hào)不存在'n'n");break;

case-3:printf(*error3!賬號(hào)不存在\n\n"):break;

caseprintf(*error4!密碼錯(cuò)誤\n\n");break:

caseprintf(*error5!輸入的密碼不一致\n'n");break:

caseprintf(*error6!編號(hào)不存在\n\n");break;

case-7printf("error7!書名不能為空\(chéng)n\n");break;

caseprintf(*errorS!作者名字不能為空\(chéng)n'n");break;

caseprintf(*error9!無(wú)此圖書編號(hào)的記錄\n\n");break;

case-10:printf("errorlO!無(wú)此賬號(hào)口勺記錄\n\n");break;

case-11:printf(*errorl1!原始密碼輸入^^\n\n");break;

caseprintf(*errorl2!您已經(jīng)償還此書'n'n");break:

case-13:printf(^errorlB!您所增長(zhǎng)的圖書編號(hào)已存在[n\n");break;

case-14:printf("errorl4!搜索不到此書的有關(guān)信息break;

case-15:printf(*errorl5!搜索不到該作者的信息\n'n'):break;

case-16:prinlf("error16!打不開文獻(xiàn),保留失敗\n\n");break;

caseprintf(*errorl7!該圖書信息己存在\n'n"):break;

case-18:printf(*errorl8!您沒(méi)有借過(guò)這本書\n'n");break;

caseprintf(^errorlO!您已經(jīng)借閱了這本書,不能花借\n'n"):break::

case-20:printf(werror20!抱敝,圖書已經(jīng)借完了\n'n");break;

case-21:printf("error21!賬號(hào)已存在\n\n");break;

case-22:printf(*error22!尚有圖書未還,不能刪除該條信息\n'n");break;

default:;

voidconects(intj)

(switch(j)

{case0:pic0();break;

case1:picl():break;

case2:pic2():break;

case3:pic3():break;

case4:pic4():break:

case5:pic5();break;

case6:pic6():break;

case7:pic7();break;

case8:pic8();break;

case9:pic9():break;

case10:piclO();break;

case11:picl1();break:

case12:picl2():break;

case13:pic13();break:

case14:pic14():break:

case15:picl5();break:

case16:picl6();break;

case17:picl7();break:

case18:picl8();break:

case19:pic19();break;

case20:pic200;break:

case21:pic21();break;

case22:pic22();break;

case23:pic23();break:

case24:pic24():break;

case25:pic250;break:

case26:pic26();break:

case27:pic27();break;

case29:pic29();break:

case30:pic30();break:

case31:pic31();break;

case32:pic32();break;

case33:pic33();break;

case34:pic340:break:

case35:pic35();break;

case36:pic36():break:

case37:pic37();break:

case38:pic38();break;

case39:pic39();break:

case40:pic40();break;

case41:pic41():break:

case42:pic42();break;

case43:pic43();break:

case44:pic44();break;

case45:pic45();break;

case46:pic46():break:

case47:pic47();break;

default:;

4.文獻(xiàn)操作多種函數(shù)

源代碼為

//jiangzhuol.h文獻(xiàn)操作多種函數(shù)

intsetupO//數(shù)據(jù)初始化函數(shù)

FILE*fp;

fp=fopen(*reader.txC,*1*);//對(duì)文檔以只讀方式進(jìn)行操作

if(fp=NULL)

return-1;〃當(dāng)文獻(xiàn)打不開時(shí)返回T

else

i=0;

while(!feof(fp))

fscanf(fp,*%s%s%s",stu[i].name,stu[i].no,stu[i].key):〃將文檔里面的數(shù)據(jù)格式化讀取

到構(gòu)造體數(shù)組里面

i++;

i=i-l;

fclosc(fp);

fp=fopCnrad.txt*/r*);〃對(duì)文檔以只讀的方式進(jìn)行操作

if(fp=NULL)

return-1://當(dāng)文獻(xiàn)打不開時(shí)返回T

else

j=0;

while(!feof(fp))

fscanf(fp,"%s%s%s",ad[j].name,ad[j].no,ad[j].key);//將文檔里面的數(shù)據(jù)格式化讀取到

構(gòu)造體數(shù)組里面

j++;

j=j-l;

fclose(fp);

fp=fopenCbook.txt*,*r*):〃對(duì)文檔以只讀的方式進(jìn)行操作

if(fp=NULL)

return-1:〃當(dāng)文獻(xiàn)打不開時(shí)返回T

else

k=0;

whiledfeof(fp))

fscanf(fp,"%d%s%s%s%d%d

”,&bb[k].bh,bb[k].name,bb[k].classic,bblk].writer,&bb[k].zn,&bb[k].jn)://將文檔里面的數(shù)據(jù)

格式化讀取到構(gòu)造體數(shù)組里面

k++;

k=k-l;

fclose(fp);

fp=fopen(*show.txt*,*r*);〃對(duì)文檔以只讀的方式進(jìn)行操作

if(fp=NULL)

return-I;〃當(dāng)文獻(xiàn)打不開時(shí)返向-1

else

s=0:

while(!feof(fp))

fscanf(fp,*%s%s%s%s%d

”,ss[s].nameI,ss[s].no,&ss[s].bh,ss[s].name2,ss[s].writer,&ss[s'.o);〃將文檔里面口勺數(shù)據(jù)格式

化讀取到構(gòu)造體數(shù)組里而

s++;

s=s-l;

fclose(fp):

return0;〃當(dāng)操作所有對(duì)時(shí)時(shí)返回0

intxzc(charno[12],charkey1[10],charkey2[10],charname[10])//讀者注冊(cè)函數(shù)

intx=0;

for(x=0;x<=i;x++)

if(istrcmp(no,stu[x].no))〃判斷讀者輸入的賬號(hào)與構(gòu)造體里面的賬號(hào)與否相似

return-21;

break;

if(x==i&&strcmp(n。,slu[x].no))〃判斷讀者輸入的賬號(hào)與構(gòu)造體里面的賬號(hào)與否相似

if(!strcmp(keyl,key2))〃判斷讀者兩次輸入的密碼與否一致

i=i+l;

strcpy(stu[i].name,name):

strcpy(stu[i].no,no);

strcpy(stu[i].key,keyl):

fp=fopen("reader.;//時(shí)文獻(xiàn)以寫的方式將注冊(cè)的信息保留到文獻(xiàn)里面

if(fp=NULL)

return_16:

else

fprintf(fp,*%s\t\t%s\t\t%s\n*,stu[i].name,stu[i].no,stu[i].key);

fclose(fp):

return0;

else

return-5;

intexam(charno[10],charkey[10],intn)〃密碼賬號(hào)檢查函數(shù)

(intx:

if(n==O)〃對(duì)讀者的密碼和賬號(hào)信息進(jìn)行檢查

for(x=0:x<=i;x++)

if(!strcmp(no,stu[x].no))〃判斷該賬號(hào)與否存在

if(!strcmp(kcy,stufx].key))〃當(dāng)賬號(hào)存在時(shí)判斷與之對(duì)應(yīng)I向密碼與否相似

return0;

break;

else

return一4;

break:

if(x==i&&strcmp(no,stu[x].no))

return-3;

if(n==l)〃對(duì)管理員的密碼賬號(hào)信息進(jìn)行檢查

for(x=0;x<=i;x++)

if(!strcmp(no,ad[x].no))//判斷該賬號(hào)與否存在

if(!strcmp(key,ad[x].key))//判斷與之對(duì)應(yīng)的密碼與否存在

return0;

break;

else

return-4:

break;

if(x==j&&strcmp(no,ad[x].no))

return-3;

intzj(structbookb)//管理員增長(zhǎng)圖書信息函數(shù)

{intx;

for(x=0;x<=k;x++)

{if(bb[x].bh=b.bh)〃判斷所增長(zhǎng)的圖書編號(hào)與否已存在

return-13;

break;

if(!strcmp(b.name,bb[x].name)&&!strcmp(b.writer,bb[x].writer))//判斷所增長(zhǎng)的J圖書

與否存在

{return-17;

break:

if(x=k)

{if(strlen(bb[O].nane)==O)〃判斷文檔的第一行與否為空

k=k;

else

k=k+l:

bb[k].bh=b.bh;〃將所增長(zhǎng)的圖書信息添加到構(gòu)造體里面

strcpy(bbFkl.name.b.name):

strcpy(bb[k].classic,b.classic):

strcpy(bbCkl.writer,b.writer);

bb[k].zn=b.zn:

bb[k].jn=b.jn:

fp=fopen("book.txl"Ja");〃將增長(zhǎng)的圖書信息追加到文獻(xiàn)里面

if(fp==NULL)

return-16;

else

fprintf(fp,*%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n*?bb[k].bh,bb[k].name,bb[k].classic,bb[k].write

r,bb[k].zn,bb[k].jn):

fclose(fp);

return0;

intsc(intbh)〃管理員刪除圖書信息函數(shù)

(intx;

for(x=0;x<=k;x++)

if(bb[x].bh==bh)//判斷所刪除圖書的編號(hào)與否存在

if(bb[x].jn!=0)

return-22:

for(x=x;x<=k-l;x++)

bb「xl=bb-x+ll:〃刪除圖書信息后將該圖書信息背面的圖書信息依次前移

k—;

fp=fopen("book,txt","w+”);〃將刪除后的所有圖書信息亙新寫入文檔

if(fp==Nl-LL)

return-16;

else

for(x=0:x<=k;x++)

fprintf(fp,*%d\t%-30s\t%-30s\tV10s\t%d\t%d\n*,bb[x].bh,bb[x].name,bb[x].classic,bb[x].write

r,bb[x].zn,bb[x].jn):

fclose(fp);

return0;

break;

intmp(charnot12],charkeyl[13]?charkey2[10],charkey3[10],intn)〃密碼修改函數(shù)

(intx:

if(n==0)〃讀者密碼修改

for(x=0:x<=i;x++)

if(Istrcmp(no,stu[x].no))〃定位讀者賬號(hào)位置

if(!strcmp(stu[x].key,key1))//判斷輸入的原密碼與否對(duì)小J

{if(!strcmp(key2fkey3))〃判斷兩次輸入的新密碼與否一致

strcpy(stu[x].key,key3);

fp=fopen("reader.Ixl"."w+"):〃將修改后的信息保留在文獻(xiàn)里面

if(fp==NULL)

return-16;

else

for(x=0;x<=i;x++)

fprintf(fp,*%s\t\t%s\t\t%s\n*,stu[x].name,stu[x].no,stu[x].key);

fclose(fp);

return0;

else

return-5;

else

return-11:

if(n==l)〃管理員密碼修改

for(x=0;x<=j;x++)

if(Istrcmp(no,ad[x].no))〃定位管理員賬號(hào)位置

if(!strcmp(keyl,adCxl.key))〃判斷輸入l內(nèi)原窘碼與否時(shí)的

if(!strcmp(key2,key3))〃判斷兩次輸入的新密碼與否一致

strcpy(ad[x].key,key3);

fp=fopen("ad.txt","w+”);〃將修改后的信息保留在文獻(xiàn)里面

if(fp==NULL)

return-16;

else

for(x=0;x<=j;x++)

fprintf(fp,*%s\t\t%s\t\t%s\n*,ad[x].name,ad[x].no,ad[x].key);

fclose(fp);

return0;

else

return-5:

else

return-11;

intxg(structbookb)〃管理員修改圖書信息函數(shù)

(intx;

if(strlen(b.name)==0)〃判斷所輸入的要修改的圖M名字與否為空

return-7;

else

if(strlen(b.writer)==0)//判斷所輸入的要修改的圖書作者與否為空

return-8;

else

for(x=0;x<=k;x++)

if((bb[x].bh=b.bh))〃定位要修改的圖書編號(hào)位置

strepy(bb[x].name,b.name):〃將修改后的信息保留在構(gòu)造體里

strepy(bb[x].classic,b.classic);

strepy(bb「xl.writer,b.writer):

bb[x].zn=b.zn;

bb[x].jn=b.jn:

fp=fopen("b〉ok.ixi","w+”);〃將修改后的所有信息保留在文獻(xiàn)里

if(fp==NULL)

return-16;

else

for(x=0;x<=k;x++)

fprintf(fp,*%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n*?bb[x].bh,bb[x].name,bb[x].classic,bb[x].write

r,bb[x].zn,bb[x].jn);

fclose(fp);

return0;

voidcopy(intbh)//按編圖書編號(hào)將圖書信息臨時(shí)保留在此外一種構(gòu)造體里面

(intx;

for(x=0;x<=k:x++)

if(bb[x].bh==bh)

strcpy(bk.name,bb[x].name);

strepy(bk.classic,bb[x].classic);

strcpy(bk.writer,bb[x].writer):

bk.zn=bbfx].zn;

bk.jn=bb「xl.jn:

bk.bh=bb[x].bh;

voidcopy2(charno[12])〃按管理員賬號(hào)將管理員信息臨時(shí)保留在此外一種構(gòu)造體里面

intx:

for(x=0;x<=j;x++)

if(!strcmp(ad[x].no,no))

strcpy(aa.name,ad[x].name):

strcpy(aa.key,ad[x].key);

voidcopy3(charno[12])〃按讀者賬號(hào)將讀者信息臨時(shí)保留在此外一沖構(gòu)造體里面

(intx:

for(x=0;x<=i:x++)

if(!strcmp(stutxj.no,no))

strcpy(rr.name,stu[x].name);

strcpy(rr.key,stu[x].key);

intjs(intbh,charno[12])〃借書函數(shù)

(intx,y,z;

for(x=0;x<=k;x++)

if(bb[x].bh-bh)//判斷借書編號(hào)與否存在

if(bb[x].zn>0)//判斷在館數(shù)與否為0

if(strlen(ss[O].namel)==0)〃判斷文獻(xiàn)里面的第一廳信息與否存在

for(y=0;y<=i;y++)

if(Jstrcnpfsturyl.no.no))

(-bb[x].zn:〃修改借書后的信息

++bb[x].jn;

ss[O].o=2;

strcpy(ss[O].name1,stu[y].name);〃將借書后的信息保留在構(gòu)造體數(shù)組

里而

strcpy(ss[O].no,no);

strcpy(ssfO].writer,bbfxl.writer);

slrcpy(ss[O].name2,bb[x].name):

ss[O].bh=bh;

else

for(y=0:y<=s;y++)

if((ss[y].bh=bh)&&!stremp(ss[y].no,no))〃定位與輸入的編號(hào)和賬號(hào)?

致的借書記錄

if(ss[y].o=2)//判斷與否已借過(guò)該書

return-19;

else

-bbW.zn:〃修改借書后的信息

++bb[x].jn;

ss[y].0=2:

break;

else

if(y==s)

s++;

for(z=0:z<=i:z++)

if(!strcmp(stu[z].no,no))//定位讀者信息

bb[x].zn-;〃修改借書后的信息

bb[x].jn++;

strcpy(ss[s].name1,stufz].name);

strcpy(ss[s].namc2,bb[x].name);

strcpy(ss[s].no,no);

strcpy(ss[s].writer,bb[x].writer);

ss[s].bh=bb[x].bh;

ss[s].0=2;

break;

fp=fopen("book.txi","w+");〃將借書后的圖書信息寫入文獻(xiàn)

if(fp=NULL)

return-16:

else

for(y=0;y<=k;y++)

fprintf(fp,A,%d\t%-30s\t%-30s\t%-10s\t%d\t%d\nA',bb[y].bh,bb[y].name,bb[y].classic,bb[y].write

r.bbfyl.zn.bbTyl.jn):

fclose(fp);

fp=fopen("show.txt","w+")://將借書記錄寫入文獻(xiàn)

if(fp=NULL)

return-16;

else

for(y=0;y<=s;y++)

fprintf(fp,*%-20s\t%s\t%d\t%-30s\t%-10s\t%d\n*,ss[y].name1,ss[y'.no,ss[y].bh,ss[y].name2?ss[

y].writer,ss[y].o);

fclose(fp);

return0;

else

return-20;

inths(intbh,charno[12])〃還書函數(shù)

(intx,p;

for(x=0;x<=s:x++)

if(ss[x].bh=bh&&!stremp(ss[x].no,no))〃判斷其借書記錄與否存在

{if(ss[x].o==2)〃判斷該書與否被借過(guò)

{for(p=0;p<=k;p++-)

if(bb[p].bh==bh)〃修改還書后的圖書信息

f++bbTpl.zn:

—bb[p].jn;

ss[x].0=1;

fp=fopen(*book.txt*,*w+*):〃將還書后的所有圖書自息重新寫入文獻(xiàn)

if(fp==NULL)

return-16;

else

for(p=0;p<=k;p++)

fprintf(fp,飛d\t%-30s\t%-30s\t*10s\t$d\t$d\n”,bb[p].bh,bb[p].name,bb[p].classic,bb[p].write

r,bb[p].zn,bb[p].jn);

fclose(fp);

fp=fopen("show,txtW);〃將還書后的所有借書記錄重新寫入文獻(xiàn)

if(fp==NULL)

return-16:

else

for(p=0:p<=s;p++)

fprintf(fp,*%-20s\t%s\t%d\t%-33s\t%-1Os\t%d\n*,ss[p].name1,ss[p..no,ss[p].bh,ss[p].name2,ss[

p].writer,ss[p].o);

fclose(fp);

return0:

else

return-12:

else

if(x=s)

return-18:

voidpaixuO//對(duì)圖書按照編號(hào)從小到大的次序進(jìn)行排列

(intx,flag;

structbooka:

do〃用冒泡法排序

flag=l:

for(x=0;x<=k-l;x++)

if(bb[x].bh>bb[x+l].bh)

a=bb[x+l]:

bb[x+l]=bb[x];

bb[x]=a;

flag=0:

}while(flag=0):

fp=fopen("book.txt*/w+*)://將排序后的信息重新寫入文獻(xiàn)

for(x=0;x<=k:x++)

fprintf(fp.*%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n*.bbFxl.bh..bbTxl.classic.bbFxl.write

r,bb[x].zn,bb[x].jn);

fclose(fp);

5.登陸界面所有函數(shù)

源代碼為

//picture.h登陸界面所有函數(shù)

voidpicaO

(printf(*\n登陸顧客,T6s登陸者:%T6s權(quán)限:管理員\n”,aa.no,aa.name);

printf(*------------------------------------------------------------------------\n\n*);

voidpicbO

(printfC\n登陸顧客:%T6s登陸者:%-16s權(quán)限:讀者、n”,rr.no,rr.name);

printfC------------------------------------------------------------------------\n\n*):

voidpicOO〃登陸界面

(PrintfC\n\t\t\t歡迎登陸湖南大學(xué)圖書管理系統(tǒng)\n"):

printfC-----------------------------------------------------------------------\n\n");

printfCl.登陸\n2.讀者注卅\n3.退出系統(tǒng)\n\n");

printf(*-----------------------------------------------------------------------\n\n*);

examine(&x,1);

switch(x)

{case1:n=l;break:

case2:n=45;break;

case3:n=50:break:

default:;

voidpiclO〃管理員登陸界面

inti:

printfC\n\t\t\t\t登陸\iT);

printf(*--------------------------------------------------------------------------------\n\n*);

prinifCl.管理員登陸\n2.讀者登陸\n3.返回系統(tǒng)界面\n'n");

printf(*--------------------------------------------------------------------------------\n\n*):

examine(&x,1):

switch(x)

{case1:inputs2(l,1,0);

i=exam(aa.no,aa.key,1);

if⑴

{eros(i):n=3;

elsen=2:break;

case2:inputs3(l,1,0);

i=exam(rr.no,rr.key,0);

i

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論