【源碼】C語言 + 圖形庫 = 簡單又好看的圖書管理系統!


直接上代碼,就是這么任性!

各位小伙伴也都可以去運行一下,之前也弄了一個圖書管理系統,但是今天加了個界面,需要注意的是記得安裝好圖形庫哦!

————————————

#include <stdio.h>

#include <graphics.h>

#pragma comment(lib,"winmm.lib")

IMAGE BD,TAB;

FILE* fp;

void Image(); //背景

void Save_Data(); //保存

void Delete_Data(); //刪除

int n = 0;

typedef struct book

{

char num[4];

char price[4];

char name[10];

} BOOK;

BOOK bk[20];

void Add()

{

fp = fopen("./BOOK.txt", "a+");

cleardevice();

loadimage(&BD, "./2008071502334265.jpg", 640, 480);

putimage(0, 0, &BD);

char ch;

int ih;

int num;

char *ar[] = { "請輸入序號:", "請輸入書名:", "請輸入價格:" };

setbkmode(TRANSPARENT);

settextcolor(RED);

settextstyle(50, 20, "華文彩雲");

outtextxy(250, 10, "添加書籍");

setfillcolor(RGB(180, 180, 180));

fillrectangle(100, 60, 580, 450);

settextcolor(BLACK);

settextstyle(20, 0, "楷體");

outtextxy(100, 70, *ar);

int i = 0;

while ((num = getch()) != VK_RETURN)

{

outtextxy(100 + 10 * i, 100,num);

*(bk[n].num + i) = num;

i++;

}

outtextxy(100, 150, *(ar + 1));

i = 0;

while ((ch = getch()) != VK_RETURN)

{

outtextxy(100 + 10 * i, 180, ch);

*(bk[n].name + i) = ch;

i++;

}

outtextxy(100, 230, *(ar + 2));

i = 0;

while ((ih = getch()) != VK_RETURN)

{

outtextxy(100 + 10 * i, 260,ih);

*(bk[n].price + i) = ih;

i++;

}

outtextxy(250, 400, "正在保存...");

Sleep(2000);

fprintf(fp, "%s %s %s ", bk[n].num, bk[n].name, bk[n].price);

n++;

fclose(fp);

cleardevice();

}

void Scan()

{

cleardevice();

loadimage(&BD, "./2008071502334265.jpg", 640, 480);

putimage(0, 0, &BD);

setbkmode(TRANSPARENT);

settextcolor(RED);

settextstyle(50, 20, "華文彩雲");

outtextxy(250, 10, "瀏覽書籍");

setfillcolor(RGB(180, 180, 180));

fillrectangle(100, 60, 580, 450);

for (int i = 0; i <= 7; i++)

{

line(100, 60 + i * 50, 580, 60 + i * 50);

}

fp = fopen("./BOOK.txt", "r");

settextcolor(BLACK);

settextstyle(20, 0, "楷體");

for (int i = 0; fscanf(fp, "%s %s %s ", bk[i].num, bk[i].name, bk[i].price)!=EOF; i++,n++)

{

outtextxy(100, 70 + i * 50, bk[i].num);

outtextxy(150, 70 + i * 50, bk[i].name);

outtextxy(200, 70 + i * 50, bk[i].price);

}

fclose(fp);

}

void Delete_Data()

{

int x = 0;

int b;

int arr[4];

fp = fopen("./BOOK.txt","r+");

cleardevice();

loadimage(&BD, "./2008071502334265.jpg", 640, 480);

putimage(0, 0, &BD);

setbkmode(TRANSPARENT);

settextcolor(RED);

settextstyle(50, 20, "華文彩雲");

outtextxy(250, 10, "刪除書籍");

setfillcolor(RGB(180, 180, 180));

fillrectangle(100, 60, 580, 450);

settextstyle(20, 0, "楷體");

outtextxy(100,70,"請輸入需要刪除書籍的序號:");

for (int i = 0; i <= 7; i++)

{

line(100, 60 + i * 50, 580, 60 + i * 50);

}

int a = 0;

while ((b = getch()) != VK_RETURN)

{

outtextxy(100 + 10 * a, 130, b);

*(arr + a) = b;

a++;

}

for (int i = 0; fscanf(fp, "%s %s %s ", bk[i].num, bk[i].name, bk[i].price) != EOF; i++, x++)

;

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

{

for (int a = 0; a < 4; a++)

{

if (bk[i].num[a] == arr[a])

{

for (int v = i; v <= x; v++)

{

for (int z = 0; z < 4;z++)

*(bk[v].num+z) = *(bk[v + 1].num+z);

for (int z = 0; z < 10; z++)

*(bk[v].name+z) = *(bk[v + 1].name+z);

for (int z = 0; z < 4; z++)

*(bk[v].price+z) = *(bk[v + 1].price+z);

}

break;

}

}

}

x--;

fclose(fp);

fopen("./BOOK.txt", "w+");

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

{

fprintf(fp, "%s %s %s ", bk[i].num, bk[i].name, bk[i].price);

}

fclose(fp);

}

void MouseMg()

{

MOUSEMSG m;

while (MouseHit())

{

m = GetMouseMsg();

switch (m.uMsg)

{

case WM_LBUTTONDOWN:

if (m.x >= 220 && m.y >= 100 && m.x <= 440 && m.y <= 140)

{

Add();

}

else if (m.x >= 220 && m.y >= 180 && m.x <= 440 && m.y <= 220)

{

Scan();

getch();

}

else if (m.x >= 220 && m.y >= 260 && m.x <= 440 && m.y <= 300)

{

Delete_Data();

getch();

}

else if (m.x >= 220 && m.y >= 340 && m.x <= 440 && m.y <= 380)

{

exit(0);

}

break;

}

}

}

void Image()

{

BeginBatchDraw();

loadimage(&BD, "./2008071502334265.jpg", 640, 480);

putimage(0, 0, &BD);

loadimage(&TAB,"./258PICg58PICzAJ_1024.jpg",220,40);

putimage(220, 100, &TAB);

loadimage(&TAB, "./258PICg58PICzAJ_1024.jpg", 220, 40);

putimage(220, 180, &TAB);

loadimage(&TAB, "./258PICg58PICzAJ_1024.jpg", 220, 40);

putimage(220, 260, &TAB);

loadimage(&TAB, "./258PICg58PICzAJ_1024.jpg", 220, 40);

putimage(220, 340, &TAB);

setbkmode(TRANSPARENT);

settextcolor(RED);

settextstyle(50, 20, "華文彩雲");

outtextxy(200, 10, "圖書管理系統");

settextcolor(BLACK);

settextstyle(17, 17, "華文新魏");

outtextxy(250, 115,"添加書籍");

settextstyle(17, 17, "華文新魏");

outtextxy(250, 195, "瀏覽書籍");

settextstyle(17, 17,"華文新魏");

outtextxy(250, 275, "刪除書籍");

settextstyle(17, 17,"華文新魏");

outtextxy(250, 355,"退出系統");

EndBatchDraw();

}

int main()

{

PlaySound("05-夜的鋼琴曲(五).wav", NULL, SND_FILENAME | SND_LOOP | SND_ASYNC);

initgraph(640, 480);

while (1)

{

Image();

MouseMg();

}

return 0;

}

————————————

弄了一個好看的界面,順帶也加上了音樂也感覺還不錯吧,而且也比較基礎的!加油~


 

 

 

第一個圖是主要界面以及功能方面,然后就是后面兩個圖,兩個功能一個是添加功能,一個是瀏覽,涉及到的知識點也並不是很多。

    1、文件操作;

    2、graphics.h頭文件以及圖形界面庫函數;

    3、C語言基本語法與控制結構。

其實的話,編程是很有樂趣的,前提是你得喜歡這個,但是也不要局限在知識點里面了,編程思維是很重要的。


 

最后,不管你是轉行也好,初學也罷,進階也可,如果你想學編程~

【值得關注】我的 C/C++編程學習交流俱樂部!【點擊進入】

問題答疑,學習交流,技術探討,還有超多編程資源大全,零基礎的視頻也超棒~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM