C語言打造—齊全的圖書館借閱系統(tǒng)

今天控制臺寫一個完整的圖書館借閱系統(tǒng),上次小編寫了一個比較基礎(chǔ)的康谆,功能也不是很完善领斥,很簡單嫉到,這次把它完善了一下比較全面,功能齊全了戒突,可以借書 還書屯碴。下面的話代碼還是比較多的,所以說暫時不把所有的功能發(fā)出來膊存,如果全鋪在上面导而,肯定是有視覺疲勞的,先發(fā)一部分隔崎,后面的幾個點今艺,再說一下,各位就自己動手去做吧爵卒。

/************************************************************************************************************************************

文 件 名:201600406061ldy

文件描述:結(jié)構(gòu)體數(shù)組+文件實現(xiàn)圖書管理系統(tǒng)

編譯環(huán)境:VS 2013

最后修改:2017-01-06

修 改 人:Ldy

*************************************************************************************************************************************/

#define _CRT_SECURE_NO_WARNINGS

#include

#include // 頭文件

#include

#define N 99//宏定義最大存儲圖書數(shù)量

#define M 50//宏定義最大存儲借書人

struct book//定義結(jié)構(gòu)體存儲圖書信息

{

int num;//圖書編號

char name[20];//圖書名字

char author[10];//圖書作者

float price;//圖書價格

char state[5];//圖書存在狀態(tài)

char borrower_name[10];//圖書借書人

};

struct book Book[N];//定義結(jié)構(gòu)體數(shù)組存儲圖書信息

struct reader//定義結(jié)構(gòu)體存儲注冊信息

{

char Name[10];//存 注冊者的名字

char StuNum[15];//存 注冊者的學(xué)號

char ClassGrade[15];//存 注冊者的班級

char College[25];//存 注冊者的學(xué)院

char Sex[4];//存 注冊者的性別

};

struct reader student[M];

FILE *fp;//定義文件指針

FILE *fp1;//定義文件指針

int tem = 5;//用于判斷是否借書

void add();

void find();

void delete();

void modifier();

void regist();

void borrowb();

void returnb();

void vers_nfo();

void add()//增加圖書

{

system("cls");//清屏

//system("color 7e");

int i, j, k;//i虚缎,j 控制循環(huán)、k記錄當(dāng)前圖書數(shù)量钓株,

int n = 0;//n記錄當(dāng)前圖書數(shù)量

if ((fp = fopen("圖書信息.txt", "a+")) == NULL)//打開文件

{

printf("Can not open file!");

return;

}

for (i = 0; fscanf(fp, "%d %s %s %f %s %s", &Book[i].num, Book[i].name, Book[i].author, &Book[i].price, Book[i].state, Book[i].borrower_name) != EOF; i++)

{

n++;//記錄當(dāng)前書數(shù)

}

printf(" 親 請您輸入新增圖書本數(shù):");

scanf("%d", &j); //輸入新增圖書本數(shù)

if (n == 0)

{

k = 0;

}

else

{

k = n;//插入的位置

}

for (i = 0; i < j; i++)//圖書信息的錄入

{

Book[k].num = ++n;

printf(" 親 請您根據(jù)提示完成信息的錄入实牡,圖書 %d:", i + 1);

printf(" Please Input name:");

scanf("%s", Book[k].name);//錄入書名

printf(" Please Input author:");

scanf("%s", Book[k].author);//錄入書作者

printf(" Please Input price:");

scanf("%f", &Book[k].price);//錄入書價格

strcpy(Book[k].borrower_name, "暫無");//初始化借書人

strcpy(Book[k].state, "存在");//初始化書存在狀態(tài)

//把圖書信息寫入文件

fprintf(fp, "%d %s %s %f %s %s", Book[k].num, Book[k].name, Book[k].author, Book[k].price, Book[k].state, Book[k].borrower_name);

}

fclose(fp);//關(guān)閉文件

if (i == 0)//判斷 錄入圖書為數(shù)目

{

printf(" 親 您錄入圖書數(shù)目為:0");

printf(" 按 任 意 鍵 退 繼 續(xù)......");

}

else

{

printf(" 恭喜您成功錄入 %d 本書, ", j);

printf(" 按 任 意 鍵 繼 續(xù)......");

}

getchar();//獲取一個字符,若有則進行下一步

getchar();

}

void find()//瀏覽

{

system("cls");

//system("color 7b");

printf(" 1. 全 部 書 查 詢");

printf(" 2. 書 編 號 查 詢");

printf(" 3. 書 名 字 查 詢");

printf(" 4. 書 作 者 查 詢");

int a, i, n = 0, j = 0;

char bname[20];

char bauthor[20];

if ((fp = fopen("圖書信息.txt", "r")) == NULL)//打開文件

{

printf("Can not open file!");

return;

}

for (i = 0; fscanf(fp, "%d %s %s %f %s %s", &Book[i].num, Book[i].name, Book[i].author, &Book[i].price, Book[i].state, Book[i].borrower_name) != EOF; i++)

{

n++;//記錄當(dāng)前書數(shù)

}

fclose(fp);//關(guān)閉文件

if (n == 0)//判斷是否已錄入圖書

{

printf(" 沒 有 圖 書 可 查 詢V岷稀4次搿!J芨稹题涨!");

printf(" 按 任 意 鍵 退 出!");

getchar();

//system("cls");

getchar();

}

else

{

printf(" 請輸入對應(yīng)查詢方式的編號:");

scanf("%d", &a);//從鍵盤輸入查詢方式的編號

if ((fp = fopen("圖書信息.txt", "r")) == NULL)//打開文件

{

printf("Can not open file!");

return;

}

switch (a)

{

case 1:

system("cls");

//從圖書信息文件讀取數(shù)據(jù)

for (i = 0; fscanf(fp, "%d %s %s %f %s %s", &Book[i].num, Book[i].name, Book[i].author, &Book[i].price, Book[i].state, Book[i].borrower_name) != EOF; i++)

{

if (i == 0)//在輸出第一個圖書信息前輸出下列信息

{

printf("圖書編號 圖書名字 圖書作者 圖書價格 存在狀態(tài) 圖書借書人");

}

//輸出圖書信息

fprintf(stdout, "%8d %8s %8s %8.2f %8s %10s", Book[i].num, Book[i].name, Book[i].author, Book[i].price, Book[i].state, Book[i].borrower_name);

}

printf(" 查詢成功, 按任意鍵繼續(xù)......");

getchar();

getchar();

system("cls");

break;

case 2:

system("cls");

printf(" 請輸入圖書編號:");

int num1;

scanf("%d", &num1);//從鍵盤輸入圖書的編號

//從文件中讀取圖書信息并與 從鍵盤輸入圖書的編號進行比較

for (i = 0; fscanf(fp, "%d %s %s %f %s %s", &Book[i].num, Book[i].name, Book[i].author, &Book[i].price, Book[i].state, Book[i].borrower_name) != EOF; i++)

{

if (num1 == i + 1)

{

printf("圖書編號 圖書名字 圖書作者 圖書價格 存在狀態(tài) 圖書借書人");

//輸出圖書信息

fprintf(stdout, "%8d %8s %8s %8.2f %8s %10s", Book[i].num, Book[i].name, Book[i].author, Book[i].price, Book[i].state, Book[i].borrower_name);

printf(" 查詢成功, 按任意鍵繼續(xù)......");

getchar();

getchar();

system("cls");

}

}

if (num1 >= i + 1)//判斷輸入的圖書編號是否存在

{

printf(" 查詢結(jié)果:你輸入的圖書編號不存在!!!!!!");

printf(" 按任意鍵繼續(xù).......");

getchar();

getchar();

}

break;

case 3:

system("cls");

printf(" 請輸入圖書的名字:");

getchar();

gets(bname);//輸入圖書的名字

//從文件中讀取圖書信息并與 從鍵盤輸入圖書的名字進行比較

for (i = 0; fscanf(fp, "%d %s %s %f %s %s", &Book[i].num, Book[i].name, Book[i].author, &Book[i].price, Book[i].state, Book[i].borrower_name) != EOF; i++)

{

if (strcmp(Book[i].name, bname) == 0)//比較

{

j++;

printf("圖書編號 圖書名字 圖書作者 圖書價格 存在狀態(tài) 圖書借書人");

//輸出圖書信息

fprintf(stdout, "%8d %8s %8s %8.2f %8s %10s", Book[i].num, Book[i].name, Book[i].author, Book[i].price, Book[i].state, Book[i].borrower_name);

printf(" 查詢成功, 按任意鍵退出......");

getchar();

system("cls");

}

}

if (j == 0)

{

printf(" 查詢結(jié)果:沒有此書!!!!!!");

printf(" 按任意鍵退出......");

getchar();

system("cls");

}

break;

case 4:

system("cls");

printf(" 請輸入圖書的作者:");

getchar();

gets(bauthor);//從鍵盤輸入圖書的作者

//getchar();

//fclose(fp);

//fp = fopen("圖書信息.txt", "r");

//從文件中讀取圖書信息并與 從鍵盤輸入圖書的的作者進行比較

for (i = 0; fscanf(fp, "%d %s %s %f %s %s", &Book[i].num, Book[i].name, Book[i].author, &Book[i].price, Book[i].state, Book[i].borrower_name) != EOF; i++)

{

if (strcmp(Book[i].author, bauthor) == 0)

{

j++;

printf("圖書編號 圖書名字 圖書作者 圖書價格 存在狀態(tài) 圖書借書人");

//輸出圖書信息

fprintf(stdout, "%8d %8s %8s %8.2f %8s %10s", Book[i].num, Book[i].name, Book[i].author, Book[i].price, Book[i].state, Book[i].borrower_name);

//fclose(fp);

printf(" 查詢成功, 按任意鍵繼續(xù)......");

getchar();

system("cls");

}

}

if (j == 0)

{

printf(" 查詢結(jié)果:沒 有 此 書!!!!!!");

printf(" 按任意鍵退出......");

getchar();

}

break;

default:

system("cls");

printf("");

printf(" ——————————————————————---------------------------------------------------------");

printf(" 選 擇 錯 誤.......");

printf(" ——————————————————————---------------------------------------------------------");

printf(" 按 任 意 鍵 退 出......");

getchar();

getchar();

system("cls");

break;

}

fclose(fp);//關(guān)閉文件

}

}

發(fā)一下最終的效果圖总滩,可以看一下纲堵,可以加下群315732400(群內(nèi)有各類型的項目資源可以學(xué)習(xí))

涉及到的知識點也不是很多,主要知識點 模塊化的程序設(shè)計闰渔,C語言數(shù)組操作席函,兩個文件的交互,后面的話還有一些點暫時就沒發(fā)出來了澜建,一般有基礎(chǔ)的話自己可以動手去嘗試操作一下向挖,去完善一下,可以做出來的炕舵,后面涉及到的1何之、刪除圖書信息 2、圖書修改3咽筋、借書注冊4溶推、借書手續(xù)5、還書手續(xù)6、版本信息7蒜危、菜單虱痕。小編暫時就說到這了,是不是比簡單的那個感覺瞬間好看多了辐赞,希望對大家剛接觸的有所幫助吧

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子夹囚,更是在濱河造成了極大的恐慌,老刑警劉巖荸哟,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堰燎,死亡現(xiàn)場離奇詭異赊淑,居然都是意外死亡钾挟,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門百框,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慎菲,“玉大人,你說我怎么就攤上這事解幼±恐海” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長榕堰,這世上最難降的妖魔是什么踱讨? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任产雹,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘篮撑。我一直安慰自己驮吱,他們只是感情好茧妒,可當(dāng)我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布左冬。 她就那樣靜靜地躺著桐筏,像睡著了一般铸鹰。 火紅的嫁衣襯著肌膚如雪圾笨。 梳的紋絲不亂的頭發(fā)上土铺,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天,我揣著相機與錄音,去河邊找鬼后德。 笑死部宿,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瓢湃。 我是一名探鬼主播理张,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼绵患!你這毒婦竟也來了雾叭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤落蝙,失蹤者是張志新(化名)和其女友劉穎织狐,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掘殴,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡赚瘦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了奏寨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片起意。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖病瞳,靈堂內(nèi)的尸體忽然破棺而出揽咕,到底是詐尸還是另有隱情,我是刑警寧澤套菜,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布亲善,位于F島的核電站,受9級特大地震影響逗柴,放射性物質(zhì)發(fā)生泄漏蛹头。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一戏溺、第九天 我趴在偏房一處隱蔽的房頂上張望渣蜗。 院中可真熱鬧,春花似錦旷祸、人聲如沸耕拷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽骚烧。三九已至浸赫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赃绊,已是汗流浹背既峡。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留凭戴,地道東北人涧狮。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像么夫,于是被迫代替她去往敵國和親者冤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內(nèi)容