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++
- 圖書館管理系統UML建模
- 圖書館管理系統 SRS文件
- 如何系統學習C 語言(中)之 結構體篇結構體
- 圖書館管理系統程式設計程式設計
- “c語言+結構體+連結串列”實現名片系統C語言結構體
- C語言(結構體)C語言結構體
- 圖書館系統(8)
- 圖書館管理系統程式測試計劃
- C語言學生管理系統原始碼C語言原始碼
- C語言實現通訊錄管理系統(結構體、列舉、聯合體應用)C語言結構體
- 圖書館管理系統物件導向程式設計物件程式設計
- 學生資訊管理系統(c語言實訓)C語言
- C語言結構體專題C語言結構體
- 資料結構 課程設計 員工管理系統(C語言)資料結構C語言
- go語言學習-結構體Go結構體
- C語言學習筆記:結構體與指標C語言筆記結構體指標
- 【C語言課程設計】學生學籍管理系統C語言
- C語言連結串列實現的簡易學生成績管理系統C語言
- 基於檔案管理的學生資訊管理系統(C語言/C++)C語言C++
- C語言-->(十四)結構體、巨集、編譯C語言結構體編譯
- C語言結構體作為形參C語言結構體
- C語言_瞭解下結構體指標C語言結構體指標
- C語言程式設計讀書筆記:結構C語言程式設計筆記
- Evergreen 3.2.4 和 3.1.10 釋出,開源圖書館管理系統
- 用易圖書館管理系統 2003 V3.0
- 基於陣列的學生管理系統【C語言版】陣列C語言
- C語言職工工資管理系統C語言
- C語言教程——03 C語言結構C語言
- C 語言結構體的對齊原則結構體
- 校園圖書管理系統開發-中小學智慧圖書管理系統開發
- 圖書管理系統
- Go 語言 結構體Go結構體
- Jsp struts實現的圖書館管理系統專案原始碼JS原始碼
- C語言_資料結構圖(留個筆記)C語言資料結構筆記
- C 語言結構體記憶體佈局問題結構體記憶體
- C語言結構體記憶體佈局問題C語言結構體記憶體
- 圖書管理系統——執行及總結