c語言圖書館管理系統----學會使用結構體
題目:
一本書的關鍵資訊有ISBN編碼、書名、作者、價格、出版社,設計書的結構體型別,然後設計如下函式:
(1)設計函式input(struct books mybook) (struct是前面設計的書結構體型別)從鍵盤讀入1本書的資訊。
(2)設計排序函式sort(struct books mybook[ ],int low,int high),將3本書按照價格排序。
(3)主函式通過3次迴圈呼叫input輸入3本書的資訊,然後使用sort函式對這3本書進行排序,最後輸出排序結果。
實驗程式碼:
#include <stdio.h>
#include <windows.h>
#include<string.h>
#include <locale.h>
#define NUM 3
struct books{
int ISBN;//編號
char book_name[20];//書名
char name[20];//作者
int price;//價格
char chubanshe[20];//出版社
};
int j;
void input(struct books mybook[NUM])
{
int i;
for(i=0;i<NUM;i++)
{
printf("請輸入編號、書名、作者、價格、出版社\n");
scanf("%d %s %s %d %s",&mybook[i].ISBN,&mybook[i].book_name,&mybook[i].name,&mybook[i].price,&mybook[i].chubanshe);
// printf("編號%d 書名%s 作者%s 價格%d 出版社%s ",mybook[i].ISBN,mybook[i].book_name,mybook[i].name,mybook[i].price,mybook[i].chubanshe);
}
}
void swap(struct books *p1,struct books *p2) //交換兩個結構體變數
{
struct books temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
void sort(struct books p[],int low,int high)//遞迴實現快速排序
{
int i,j;
i=low;
j=high;
if(low<high)
{
while(i<j)
{
while(i<j )
j--;
if(i < j)
swap(&p[i++],&p[j]);
// num[i++]=num[j];
while(i<j )
i++;
if(i < j)
swap(&p[i],&p[j--]);
// num[j--]=num[i];
}
sort(p,low,i-1);
sort(p,i+1,high);
}
}
void main()
{
struct books mybook[NUM];
input(mybook);
sort(mybook,0,NUM-1);
printf("按照價格排序\n");
for(j=0;j<NUM;j++)
{
printf("編號%d 書名%s 作者%s 價格%d 出版社%s \n",mybook[j].ISBN,mybook[j].book_name,mybook[j].name,mybook[j].price,mybook[j].chubanshe);
}
}
記錄:
為什麼要有結構體?
因為在實際問題中,一組資料往往有很多種不同的資料型別。例如,登記學生的資訊,可能需要用到 char型的姓名,int型或 char型的學號,int型的年齡,char型的性別,float型的成績。又例如,對於記錄一本書,需要 char型的書名,char型的作者名,float型的價格。在這些情況下,使用簡單的基本資料型別甚至是陣列都是很困難的。而結構體(類似Pascal中的“記錄”),則可以有效的解決這個問題。
結構體本質上還是一種資料型別,但它可以包括若干個“成員”,每個成員的型別可以相同也可以不同,也可以是基本資料型別或者又是一個構造型別。
結構體的優點:結構體不僅可以記錄不同型別的資料,而且使得資料結構是“高內聚,低耦合”的,更利於程式的閱讀理解和移植,而且結構體的儲存方式可以提高CPU對記憶體的訪問速度。
相關文章
- C++圖書館管理系統 [STL實現]C++
- 如何系統學習C 語言(中)之 結構體篇結構體
- “c語言+結構體+連結串列”實現名片系統C語言結構體
- C語言學生管理系統原始碼C語言原始碼
- 圖書館系統(8)
- C語言實現通訊錄管理系統(結構體、列舉、聯合體應用)C語言結構體
- 資料結構 課程設計 員工管理系統(C語言)資料結構C語言
- C語言結構體專題C語言結構體
- C語言結構體大小分析C語言結構體
- C語言學習筆記:結構體與指標C語言筆記結構體指標
- go語言學習-結構體Go結構體
- C語言結構體作為形參C語言結構體
- C語言-->(十四)結構體、巨集、編譯C語言結構體編譯
- C語言程式設計讀書筆記:結構C語言程式設計筆記
- 智慧圖書館:構建高效影片智慧管理方案,提升圖書館個性化服務
- Evergreen 3.2.4 和 3.1.10 釋出,開源圖書館管理系統
- C語言教程——03 C語言結構C語言
- 基於陣列的學生管理系統【C語言版】陣列C語言
- C語言結構聯合位欄位知識體系總結大學霸IT達人C語言
- 校園圖書管理系統開發-中小學智慧圖書管理系統開發
- C語言-選擇結構C語言
- C語言_資料結構圖(留個筆記)C語言資料結構筆記
- Go 語言 結構體Go結構體
- C 語言結構體記憶體佈局問題結構體記憶體
- C語言結構體記憶體佈局問題C語言結構體記憶體
- 學舟圖書閱讀管理系統
- C語言宣告知識體系總結大學霸IT達人C語言
- C語言騷操作:結構體初始化方法C語言結構體
- 重學C語言_資料結構與基礎語法C語言資料結構
- C語言語句知識結構大學霸IT達人C語言
- C語言實用演算法系列之學生管理系統_對整個結構體操作_氣泡排序_提取排序規則C語言演算法結構體排序
- C語言之結構體C語言結構體
- c語言字面值知識體系總結大學霸IT達人C語言
- 圖書管理系統2
- 簡單介紹C語言使用四種方法初始化結構體C語言結構體
- 【Oracle體系結構】 Oracle19C 系統結構介紹Oracle
- Go 語言 結構體連結串列Go結構體
- C語言 16 系統庫C語言