亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語(yǔ)言實(shí)現(xiàn)圖書(shū)管理系統(tǒng)

 更新時(shí)間:2018年01月18日 09:39:58   作者:T_tangc  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)圖書(shū)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)圖書(shū)管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

一、分析過(guò)程

首先此程序需要實(shí)現(xiàn)輸入、增加、刪除、查詢、輸出的五大功能,則首先需要設(shè)置一個(gè)菜單鍵,讓用戶可以選擇不同的功能,完成不同的操作,然后編寫(xiě)不同的函數(shù)實(shí)現(xiàn)不同的功能,在這個(gè)過(guò)程中注意要人性化,讓用戶方便,直觀的進(jìn)行操作。

二、算法

三、函數(shù)模塊介紹

 1錄入模塊:本模塊主要執(zhí)行信息的錄入功能

 2瀏覽模塊:本模塊主要是執(zhí)行把已有信息輸出瀏覽功能

 3查詢模塊:本模塊主要是按照?qǐng)D書(shū)名查找圖書(shū)的相關(guān)信息

 4刪除模塊:主要是執(zhí)行刪除圖書(shū)信息的功能

 5退出模塊:方便用戶離開(kāi)

四、源程序

#include<stdio.h> 
#include<math.h> 
#include<string.h> 
#include<stdlib.h> 
 
 
struct books_list 
{ 
 
 char author[20]; /*作者名*/ 
 char bookname[20]; /*書(shū)名*/ 
 char publisher[20]; /*出版單位*/ 
 char pbtime[15]; /*出版時(shí)間*/ 
 char loginnum[10]; /*登陸號(hào)*/ 
 float price;  /*價(jià)格*/ 
 char classfy[10]; /*分類(lèi)號(hào)*/ 
 struct books_list * next; /*鏈表的指針域*/ 
}; 
 
struct books_list * Create_Books_Doc(); /*新建鏈表*/ 
void InsertDoc(struct books_list * head); /*插入*/ 
void DeleteDoc(struct books_list * head , int num);/*刪除*/ 
void Print_Book_Doc(struct books_list * head);/*瀏覽*/ 
void search_book(struct books_list * head); /*查詢*/ 
void save(struct books_list * head);/*保存數(shù)據(jù)至文件*/ 
 
/*新建鏈表頭節(jié)點(diǎn)*/ 
struct books_list * Create_Books_Doc() 
{ 
 struct books_list * head; 
 head=(struct books_list *)malloc(sizeof(struct books_list)); /*分配頭節(jié)點(diǎn)空間*/ 
 head->next=NULL; /*頭節(jié)點(diǎn)指針域初始化,定為空*/ 
 return head; 
} 
 
/*保存數(shù)據(jù)至文件*/ 
void save(struct books_list * head) 
{ 
 struct books_list *p; 
 FILE *fp; 
 p=head; 
 fp=fopen("data.txt","w+"); /*以寫(xiě)方式新建并打開(kāi) data.txt文件*/ 
 fprintf(fp,"┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n"); /*向文件輸出表格*/ 
 fprintf(fp,"┃登錄號(hào)┃ 書(shū) 名 ┃ 作 者┃ 出版單位 ┃ 出版時(shí)間 ┃分類(lèi)號(hào)┃ 價(jià)格 ┃\n"); 
 fprintf(fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n"); 
 /*指針從頭節(jié)點(diǎn)開(kāi)始移動(dòng),遍歷至尾結(jié)點(diǎn),依次輸出圖書(shū)信息*/ 
 while(p->next!= NULL) 
 { 
 p=p->next; 
 fprintf(fp,"┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f ┃\n",p->loginnum,p->bookname,p->author,p->publisher,p->pbtime,p->classfy,p->price); 
 } 
 fprintf(fp,"┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n"); 
 fclose(fp); 
 printf("  已將圖書(shū)數(shù)據(jù)保存到 data.txt 文件\n"); 
} 
 
/*插入*/ 
void InsertDoc(struct books_list *head) 
{ 
 /*定義結(jié)構(gòu)體指針變量 s指向開(kāi)辟的新結(jié)點(diǎn)首地址 p為中間變量*/ 
 struct books_list *s, *p; 
 char flag='Y'; /*定義flag,方便用戶選擇重復(fù)輸入*/ 
 p=head; 
 /*遍歷到尾結(jié)點(diǎn),p指向尾結(jié)點(diǎn)*/ 
 while(p->next!= NULL) 
 { 
 p=p->next; 
 } 
 /*開(kāi)辟新空間,存入數(shù)據(jù),添加進(jìn)鏈表*/ 
 while(flag=='Y'||flag=='y') 
 { 
 s=(struct books_list *)malloc(sizeof(struct books_list)); 
 printf("\n  請(qǐng)輸入圖書(shū)登陸號(hào):"); 
 fflush(stdin); 
 scanf("%s",s->loginnum); 
 printf("\n  請(qǐng)輸入圖書(shū)書(shū)名:"); 
 fflush(stdin); 
 scanf("%s",s->bookname); 
 printf("\n  請(qǐng)輸入圖書(shū)作者名:"); 
 fflush(stdin); 
 scanf("%s",s->author); 
 printf("\n  請(qǐng)輸入圖書(shū)出版社:"); 
 fflush(stdin); 
 scanf("%s",s->publisher); 
 printf("\n  請(qǐng)輸入圖書(shū)出版時(shí)間:"); 
 fflush(stdin); 
 scanf("%s",s->pbtime); 
 printf("\n  請(qǐng)輸入圖書(shū)分類(lèi)號(hào):"); 
 fflush(stdin); 
 scanf("%s",s->classfy); 
 printf("\n  請(qǐng)輸入圖書(shū)價(jià)格:"); 
 fflush(stdin); 
 scanf("%f",&s->price); 
 printf("\n"); 
 p->next=s; /*將新增加的節(jié)點(diǎn)添加進(jìn)鏈表*/ 
 p=s; /*p指向尾節(jié)點(diǎn),向后移*/ 
 s->next=NULL; 
 printf("  ━━━━ 添加成功!━━━━"); 
 printf("\n  繼續(xù)添加?(Y/N):"); 
 fflush(stdin); 
 scanf("%c",&flag); 
 printf("\n"); 
 if(flag=='N'||flag=='n') 
 {break;} 
 else if(flag=='Y'||flag=='y') 
 {continue;} 
 } 
 save(head); /*保存數(shù)據(jù)至文件*/ 
 return; 
} 
 
/*查詢操作*/ 
 
void search_book(struct books_list *head) 
{ 
 struct books_list * p; 
 char temp[20]; 
 p=head; 
 if(head==NULL || head->next==NULL) /*判斷數(shù)據(jù)庫(kù)是否為空*/ 
 { 
 printf(" ━━━━ 圖書(shū)庫(kù)為空!━━━━\n"); 
 } 
 else 
 { 
 printf("請(qǐng)輸入您要查找的書(shū)名: "); 
 fflush(stdin); 
 scanf("%s",temp); 
 /*指針從頭節(jié)點(diǎn)開(kāi)始移動(dòng),遍歷至尾結(jié)點(diǎn),查找書(shū)目信息*/ 
 while(p->next!= NULL) 
 { 
 p=p->next; 
 if(strcmp(p->bookname,temp)==0) 
 { 
 printf("\n圖書(shū)已找到!\n"); 
 printf("\n"); 
 printf("登錄號(hào): %s\t\n",p->loginnum); 
 printf("書(shū)名: %s\t\n",p->bookname); 
 printf("作者名: %s\t\n",p->author); 
 printf("出版單位: %s\t\n",p->publisher); 
 printf("出版時(shí)間: %s\t\n",p->pbtime); 
 printf("分類(lèi)號(hào): %s\t\n",p->classfy); 
 printf("價(jià)格: %.2f\t\n",p->price); 
 } 
 if(p->next==NULL) 
 { 
 printf("\n查詢完畢!\n"); 
 } 
 } 
 } 
 return; 
} 
 
 /*瀏覽操作*/ 
 
void Print_Book_Doc(struct books_list * head) 
{ 
 struct books_list * p; 
 if(head==NULL || head->next==NULL) /*判斷數(shù)據(jù)庫(kù)是否為空*/ 
 { 
 printf("\n  ━━━━ 沒(méi)有圖書(shū)記錄! ━━━━\n\n"); 
 return; 
 } 
 p=head; 
 printf("┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n"); 
 printf("┃登錄號(hào)┃ 書(shū) 名 ┃ 作 者┃ 出版單位 ┃ 出版時(shí)間 ┃分類(lèi)號(hào)┃ 價(jià)格 ┃\n"); 
 printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n"); 
 /*指針從頭節(jié)點(diǎn)開(kāi)始移動(dòng),遍歷至尾結(jié)點(diǎn),依次輸出圖書(shū)信息*/ 
 while(p->next!= NULL) 
 { 
 p=p->next; 
 printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f ┃\n",p->loginnum,p->bookname,p->author,p->publisher,p->pbtime,p->classfy,p->price); /*循環(huán)輸出表格*/ 
 } 
 printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n"); 
 printf("\n"); 
} 
 
/*刪除操作*/ 
void DeleteDoc(struct books_list * head) 
{ 
 struct books_list *s,*p; /*s為中間變量,p為遍歷時(shí)使用的指針*/ 
 char temp[20]; 
 int panduan; /*此變量用于判斷是否找到了書(shū)目*/ 
 panduan=0; 
 p=s=head; 
 printf("  [請(qǐng)輸入您要?jiǎng)h除的書(shū)名]:"); 
 scanf("%s",temp); 
 /*遍歷到尾結(jié)點(diǎn)*/ 
 while(p!= NULL) 
 { 
 if(strcmp(p->bookname,temp)==0) 
 { 
 panduan++; 
 break; 
 } 
 p=p->next; 
 } 
 if(panduan==1) 
 { 
 for(;s->next!=p;) /*找到所需刪除卡號(hào)結(jié)點(diǎn)的上一個(gè)結(jié)點(diǎn)*/ 
 { 
 s=s->next; 
 } 
 s->next=p->next; /*將后一節(jié)點(diǎn)地址賦值給前一節(jié)點(diǎn)的指針域*/ 
 free(p); 
 printf("\n  ━━━━ 刪除成功! ━━━━\n"); 
 } 
 else /*未找到相應(yīng)書(shū)目*/ 
 { 
 printf("  您輸入的書(shū)目不存在,請(qǐng)確認(rèn)后輸入!\n"); 
 } 
 return; 
} 
 
int main() 
{ 
 struct books_list * head; 
 char choice; 
 head=NULL; 
 for(;;) /*實(shí)現(xiàn)反復(fù)輸入選擇*/ 
 { 
 printf(" ┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n"); 
 printf(" ┃ ┃ tony 圖書(shū)館管理系統(tǒng) ┃ ┃\n"); 
 printf(" ┃ ┗━━━━━━━━━━━━━━━━━━━┛ ┃\n"); 
 printf(" ┃ [1]圖書(shū)信息錄入 ┃\n"); 
 printf(" ┃   ┃\n"); 
 printf(" ┃ [2]圖書(shū)信息瀏覽 ┃\n"); 
 printf(" ┃   ┃\n"); 
 printf(" ┃ [3]圖書(shū)信息查詢 ┃\n"); 
 printf(" ┃   ┃\n"); 
 printf(" ┃ [4]圖書(shū)信息刪除 ┃\n"); 
 printf(" ┃   ┃\n"); 
 printf(" ┃ [5]退出系統(tǒng)  ┃\n"); 
 printf(" ┃   ┃\n"); 
 printf(" ┃   ┃\n"); 
 printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━┛\n"); 
 printf("  請(qǐng)選擇:"); 
 fflush(stdin); 
 scanf("%c",&choice); 
 if(choice=='1') 
 { 
 if(head==NULL) 
 { 
 head=Create_Books_Doc(); 
 } 
 InsertDoc(head); 
 
 } 
 else if(choice=='2') 
 { 
 Print_Book_Doc(head); 
 } 
 else if(choice=='3') 
 { 
 search_book(head); 
 } 
 else if(choice=='4') 
 { 
 DeleteDoc(head); 
 } 
 
 else if(choice=='5') 
 { 
 printf("\n"); 
 printf(" ━━━━━━━━ 感謝使用圖書(shū)管理系統(tǒng) ━━━━━━━━\n"); 
 break; 
 } 
 else 
 { 
 printf("  ━━━━ 輸入錯(cuò)誤,請(qǐng)重新輸入!━━━━\n"); 
 
 } 
 } 
 
 return 0; 
} 

五、課程設(shè)計(jì)總結(jié)

通過(guò)這一周的課程設(shè)計(jì),我感受到做程序一定要有自己的清晰計(jì)劃,否則會(huì)無(wú)處用力,感覺(jué)會(huì)很亂,當(dāng)高屋建瓴的有計(jì)劃后,然后開(kāi)始認(rèn)真嚴(yán)謹(jǐn)?shù)脑O(shè)計(jì)每一個(gè)模塊,要知道用戶的一切輸入都是不可信的,必須想得要全面,要仔細(xì)的對(duì)待每一個(gè)細(xì)節(jié),任何一個(gè)差錯(cuò)都有可能讓程序崩潰,這其中有許多的困難,剛開(kāi)始感覺(jué)到束手無(wú)策,但是放一放,換個(gè)角度想就會(huì)豁然開(kāi)朗,我覺(jué)得從這個(gè)中感覺(jué)到了充實(shí),滿足感,也提醒我以后要多多練練,多上機(jī),積累經(jīng)驗(yàn),爭(zhēng)取設(shè)計(jì)出更多的好的程序。

更多學(xué)習(xí)資料請(qǐng)關(guān)注專(zhuān)題《管理系統(tǒng)開(kāi)發(fā)》。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于QT制作一個(gè)簡(jiǎn)易的傳輸文件小工具

    基于QT制作一個(gè)簡(jiǎn)易的傳輸文件小工具

    本文主要介紹了通過(guò)QT實(shí)現(xiàn)的一個(gè)文件傳輸小工具。功能就是能實(shí)現(xiàn)文件的雙向傳輸,即客戶端能傳給服務(wù)端,服務(wù)端可以傳給客戶端。文中示例代碼具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2021-12-12
  • C++ 程序員為什么看不起php程序員

    C++ 程序員為什么看不起php程序員

    由于當(dāng)今市場(chǎng)狀況,各種培訓(xùn)班飛起,PHPer越來(lái)越多,學(xué)習(xí)成本很低。導(dǎo)致了很多人對(duì)PHP的誤解。其實(shí)PHP學(xué)到深入的時(shí)候,所需知識(shí)很多,并不是表面看到的那樣。另外,PHP確實(shí)嚴(yán)謹(jǐn)性不高,這個(gè)跟C++,java確實(shí)都沒(méi)法比。但是,PHP在web開(kāi)發(fā)中的效率,是其他語(yǔ)言所不能比的
    2017-02-02
  • C/C++ 中怎樣使用SetConsoleTextAttribute()函數(shù)來(lái)控制輸出字符的顏色

    C/C++ 中怎樣使用SetConsoleTextAttribute()函數(shù)來(lái)控制輸出字符的顏色

    這篇文章主要介紹了C/C++ 中如何使用SetConsoleTextAttribute()函數(shù)來(lái)控制輸出字符的顏色,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • C/C++實(shí)現(xiàn)segy文件的讀取詳解

    C/C++實(shí)現(xiàn)segy文件的讀取詳解

    SEGY是地震數(shù)據(jù)一般以地震道為單位進(jìn)行組織,采用SEG-Y文件格式存儲(chǔ)。標(biāo)準(zhǔn)SEGY文件一般包括三部分:卷頭、道頭與地震道數(shù)據(jù)。本文將介紹利用C++讀取segy文件的方法,感興趣的可以了解一下
    2022-03-03
  • C語(yǔ)言實(shí)現(xiàn)字母大小寫(xiě)轉(zhuǎn)換的方法

    C語(yǔ)言實(shí)現(xiàn)字母大小寫(xiě)轉(zhuǎn)換的方法

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)字母大小寫(xiě)轉(zhuǎn)換的方法,涉及C語(yǔ)言字符串的遍歷與轉(zhuǎn)換技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-07-07
  • 最短時(shí)間學(xué)會(huì)基于C++實(shí)現(xiàn)DFS深度優(yōu)先搜索

    最短時(shí)間學(xué)會(huì)基于C++實(shí)現(xiàn)DFS深度優(yōu)先搜索

    常見(jiàn)使用深度優(yōu)先搜索(DFS)以及廣度優(yōu)先搜索(BFS)這兩種搜索,今天我們就來(lái)講講什么是深度優(yōu)先搜索,感興趣的可以了解一下
    2021-08-08
  • C++實(shí)現(xiàn)AVL樹(shù)的完整代碼

    C++實(shí)現(xiàn)AVL樹(shù)的完整代碼

    AVL樹(shù)是高度平衡的而二叉樹(shù)。它的特點(diǎn)是:AVL樹(shù)中任何節(jié)點(diǎn)的兩個(gè)子樹(shù)的高度最大差別為1。 今天通過(guò)本文給大家分享C++實(shí)現(xiàn)AVL樹(shù)的完整代碼,感興趣的朋友一起看看吧
    2021-06-06
  • VC小技巧匯總之5則實(shí)用小技巧

    VC小技巧匯總之5則實(shí)用小技巧

    這篇文章主要介紹了VC小技巧匯總之5則實(shí)用小技巧,需要的朋友可以參考下
    2014-07-07
  • C語(yǔ)言函數(shù)封裝及變量的作用域

    C語(yǔ)言函數(shù)封裝及變量的作用域

    這篇文章主要介紹了C語(yǔ)言函數(shù)封裝及變量的作用域,以及分享一些字符串的相關(guān)實(shí)戰(zhàn)練習(xí),字符串轉(zhuǎn)整數(shù)、整數(shù)轉(zhuǎn)字符串、浮點(diǎn)數(shù)轉(zhuǎn)字符串、字符串轉(zhuǎn)浮點(diǎn)數(shù)、判斷平年閏年、技術(shù)字符串長(zhǎng)度等等。下文詳細(xì)內(nèi)容需要的小伙伴可以參考一下
    2022-05-05
  • 淺談Qt QGraphics體系及刷新機(jī)制介紹

    淺談Qt QGraphics體系及刷新機(jī)制介紹

    這篇文章主要介紹了淺談Qt QGraphics體系及刷新機(jī)制介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04

最新評(píng)論