【www.shanpow.com--热门范文】
c语言图书管理系统篇(一):C语言 图书管理系统
#include <stdio.h>#include <stdlib.h> #include <conio.h>
struct BOOK { int id,usr[10],total,store,days[10]; char name[30],author[20]; }books[100]; /*上面是结构体的定义,用于存放书籍及借书的信息。*/
void page_title(char *menu_item) { system("cls"); printf(">>> 图 书 管 理 系 统 <<<\n\n- %s -\n\n",menu_item); } /*上面是打印页眉的函数,同时通过参数menu_item,可以显示当前的状态。*/
void return_confirm(void) { printf("\n按任意键返回……\n");
getch();} /*上面是返回前请求确认的函数,以便在返回前观察结果*/
int search_book(void) { int n,i; printf("请输入图书序号:");
scanf("%d",&i); for(n=0;n<100;n++) { if(books[n].id==i) { printf("书名:%s\n",books[n].name); printf("作者:%s\n",books[n].author); printf("存数:%d\n",books[n].store); printf("总数:%d\n",books[n].total); return n; } } printf("\n输入错误或无效图书序号.\n"); return -1; } /*上面的函数是在数组中找到图书号匹配的记录, 显示其信息并返 回数组下标,如果找不到相应记录则提示错误并返回-1。*/
void book_out(void) { int n,s,l,d; page_title("借阅图书"); if((n=search_book())!=-1&&books[n].store>0)
{ printf("请输入借书证序号:"); scanf("%d",&s);
printf("请输入可借天数:"); scanf("%d",&d); for(l=0;l<10;l++) { if(books[n].usr[l]==0) { books[n].usr[l]=s; books[n].days[l]=d; break; } } books[n].store--;
} if(n!=-1&&books[n].store==0) printf("此书已经全部借出.\n"); return_confirm(); } /*上面是借书的函数,首先调用找书函数*/
void book_in(void) { int n,s,l; page_title("归还图书"); if((n=search_book())!=-1&&books[n].store<books[n].total) { printf("借阅者图书证列表:\n"); for(l=0;l<10;l++) if (books[n].usr[l]!=0) printf("[%d] - %d天\n",books[n].usr[l],books[n].days[l]);
printf("请输入借书证序号:"); scanf("%d",&s);
for(l=0;l<10;l++) { if(books[n].usr[l]==s) { books[n].usr[l]=0; books[n].days[l]=0; break; } } books[n].store++;
} if(n!=-1&&books[n].store==books[n].total) printf("全部入藏.\n");
return_confirm();}
void book_add(void){ int n; page_title("注册新书"); for(n=0;n<100;n++) if(books[n].id==0) break;
printf("序号:"); scanf("%d",&books[n].id);
printf("书名:"); scanf("%s",&books[n].name);
printf("作者:"); scanf("%s",&books[n].author);
printf("数量:"); scanf("%d",&books[n].total);
books[n].store=books[n].total; return_confirm(); }
void book_del(void) { int n; page_title("注销旧书"); if((n=search_book())!=-1) books[n].id=0; printf("该书已注销.\n");
return_confirm(); }
void main(void) {
menu: page_title("操作选单"); printf("请用数字键选择操作\n\n"); printf("1 借阅图书\n2 归还图书\n\n"); printf("3 注册新书\n4 注销旧书\n\n"); printf("\n0 退出\n"); switch(getch()) { case "1" : book_out();break; case "2" : book_in();break; case "3" : book_add();break; case "4" : book_del();break; case "0" : exit(0); } goto menu; }
#include<iostream> #include<iomanip> #include<string> #include<fstream>#include<stdio.h>using namespace std; const int Maxb=10000; //最多的图书 class Book//图书类 { int tag; //删除标记1:已删0:未删 int number; //ISBN书号 char name[20]; //书名 char author[10]; //主编char number2[10];//版次char position[20];//出版社char time[20];//出版年int price;//定价int onshelf; //是否在架1:在架0:已借 public: Book() {} char *getname() { return name; } //获取姓名 int getnumber() { return number; } //获取ISBN书号 int gettag() { return tag; } //获取删除标记 char *getauthor() {return author;} //获取主编char *getnumber2() {return number2;} //获取版次char *getposition() {return position;} //获取出版社char *gettime() {return time;} //获取出版年char getprice() {return price;} //获取图书定价
void delbook() { tag=1; } //删除图书 void addbook(int n,char *na,char *au,char *n2,char *da,char *ti,int pr) //增加图书 { tag=0; number=n; price=pr;strcpy(name,na); strcpy(author,au);strcpy(number2,n2);strcpy(position,da);strcpy(time,ti);onshelf=1; }
void disp() //输出图书 { cout << setw(10) << number << setw(10) << name << setw(10) << setw(10)<<author<<setw(10)<<number2<<setw(10)<<position<<setw(10)<<time<<setw(10)<<price<<endl; } };
class BDatabase //图书库类 { int top; //图书记录指针 Book book[Maxb]; //图书记录 public: BDatabase() //构造函数,将book.txt读到book[]中 { Book b; top=-1; fstream file("book.txt",ios::in); while (1) { file.read((char *)&b,sizeof(b)); if (!file) break; top++; book[top]=b; } file.close(); }
void clear() //全删 { top=-1; }
int addbook(int n,char *na,char *au, char *n2, char *da,char *ti,int pr) //增加图书 { Book *p=search1(n); if (p==NULL) { top++; book[top].addbook(n,na,au,n2,da,ti,pr); return 1; } return 0; }
Book *search1(int bookid) //查找图书 { for (int i=0;i<=top;i++) if (book[i].getnumber()==bookid && book[i].gettag()==0) return &book[i]; return NULL; }
Book *search2(int bookid,char *name) //按书名查找图书{ for(int i=0;i<=top;i++) if(strcmp(book[i].getname(),name)==0) {bookid=book[i].getnumber(); return &book[i]; } return NULL;}
Book *search3(int bookid,char *author) //按主编查找图书{ for(int i=0;i<=top;i++) if(strcmp(book[i].getauthor(),author)==0) {bookid=book[i].getnumber(); return &book[i]; } return NULL;}
void bookdata(); //图书库维护
void disp() { cout<<setw(10)<<"图书书号"<<setw(10)<<"图书名字"<<setw(10)<<"图书主编"<<setw(10)<<"版次"<<setw(10)<<"出版社"<<setw(10)<<"出版年"<<setw(10)<<"价格"<<endl<<endl<<endl<<endl;for (int i=0;i<=top;i++) if (book[i].gettag()==0) book[i].disp(); } ~BDatabase() //析构函数,将book[]写入book.txt文件中 { fstream file("book.txt",ios::out); for (int i=0;i<=top;i++) if (book[i].gettag()==0) file.write((char *)&book[i],sizeof(book[i])); file.close(); } };
void BDatabase::bookdata() { int choice=1; int choice2=1;int choice3=1;int choice4;char bname[40]; char editor[40];char banci[40];char position[40];char year[40];int value;int bookid; Book *b; while (choice!=0) { cout<<endl<<endl;cout<<" **************************** "<<endl;cout<<" **** 1添加图书 **** "<<endl;cout<<" **** 3 删除图书 **** "<<endl;cout<<" **** 4 图书查询 **** "<<endl;cout<<" **** 5 显示图书 **** "<<endl;cout<<" **** 6 全部删除 **** "<<endl;cout<<" **** 7 借书 **** "<<endl;cout<<" **** 8 还书 **** "<<endl;cout<<" **** 0 退出 **** "<<endl;cout<<" ****************************"<<endl<<endl;cout<<endl<<"请按键选择您需要的操作:"; cin>>choice; while(choice!=1&&choice!=2&&choice!=3&&choice!=4&&choice!=5&&choice!=6&&choice!=0){ cout<<endl<<" ** 您输入的编号在菜单里不存在,请重新输入 **"<<"\a"<<endl<<endl; cout<<" 请选择您需要的操作:"; cin>>choice;}
switch (choice) { case 1: cout <<"输入ISBN书号(一定为数字否则会异常):"; cin >> bookid; cout <<"输入书名:"; cin >> bname; cout <<"输入主编:";cin >>editor;cout <<"输入版次(一定为数字否则会异常):";cin>>banci;cout<<"输入出版社:";cin>>position;cout<<"输入出版年(一定为数字否则会异常):"; cin>>year;cout<<"输入价格(一定为数字否则会异常):";cin>>value;addbook(bookid,bname,editor,banci,position,year,value); cout<<"ISBN书号"<<bookid<<"添加成功,如需返回主菜单请按1,退出系统请按0(一定要输入数字)";cin>>choice4;while (choice4!=0&&choice4!=1){ cout<<"输入错误请重新输入"<<endl; cin>>choice4;}switch (choice4){case 1: choice=1;break;case 0: choice=0; break;}
break;
case 3: cout << " 输入ISBN书号:"; cin >> bookid; b=search1(bookid); if (b==NULL) { cout << " 该图书不存在" << endl; break; } b->delbook(); break; case 4: cout<<"查找方式:"<<endl<<"1按ISBN书号查询 2按书名查询 3按主编查询 0退出:"; cin>>choice3;switch(choice3){case 1: {cout << " 输入ISBN书号:"; //按ISBN书号查询cin >> bookid; b=search1(bookid); if (b==NULL) { cout << " 该图书不存在" << endl; break; } b->disp(); }break;case 2:{ cout<<"请输入书名:"; cin>>bname; b=search2(bookid,bname); if(b==NULL) { cout<<"该图书不存在啊!"<<endl; break; } b->disp();} break;case 3: { cout<<"请输入主编:"; cin>>editor; b=search3(bookid,editor); if(b==NULL) { cout<<"该主编不存在!"<<endl; break; } b->disp();} break;}break; case 5: disp(); break; case 6: clear(); break; }
} cout<<endl<<" ****** 慢走 ******"<<endl<<endl<<endl;}; int main() { BDatabase BookDB; cout<<endl<<endl<<endl;cout<<" Welcome to the library of SCU "<<endl;cout<<" 欢 迎 来 到 四 川 大 学 图 书 馆 "<<endl;cout<<endl<<endl<<"请输入0进入图书馆"<<endl;int w;cin>>w;if(w==0)BookDB.bookdata(); system("pause");return 0;}
c语言图书管理系统篇(二):C语言 图形库写个——简单图书管理系统
前貌似写了一个简单的ATM系统,那个是肯定的啦,有读者书也真简单,本身也是啦,标题也写的是简单的ATM系统哈,那我今天的话也继续带来一个C语言写的简单的图书管理系统哈,下面的话,我发一下代码,各位也可以去运行一下,今天的话,图书管理弄了个界面,那么就各位记得安装好图形库
#include
#include
#include
#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 =>
{
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 =>
{
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
{
for (int a = 0; a
{
if (bk[i].num[a] == arr[a])
{
for (int v = i; v =>
{
for (int z = 0; z
*(bk[v].num+z) = *(bk[v + 1].num+z);
for (int z = 0; z
*(bk[v].name+z) = *(bk[v + 1].name+z);
for (int z = 0; z
*(bk[v].price+z) = *(bk[v + 1].price+z);
}
break;
}
}
}
x--;
fclose(fp);
fopen("./BOOK.txt", "w+");
for (int i = 0; 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 =>=>
{
Add();
}
else if (m.x >= 220 && m.y >= 180 && m.x =>=>
{
Scan();
getch();
}
else if (m.x >= 220 && m.y >= 260 && m.x =>=>
{
Delete_Data();
getch();
}
else if (m.x >= 220 && m.y >= 340 && m.x =>=>
{
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;
}
弄了一个好看的界面,顺带也加上了音乐也感觉还不错吧,但是也比较基础的呢 可以加下群466572167(群里有资料可以下载学习,也可以交流学习)
主要是就发了三个图片,一个是主要界面以及功能方面,然后就是后面两个图,两个功能一个是添加功能,一个是浏览,暂时就说到这哈。可以加群466572167学习交流提升自己,涉及到的知识点也并不是很多,也就一些基本的C语言知识点哈,1、文件操作 2、graphics.h头文件以及图形界面库函数 3、C语言基本语法与控制结构,其实的话编程是很有乐趣的,前提是你得喜欢这个,但是呢,也不要局限在知识点里面了,编程思维是很重要的,小编就暂时说到这了哈。
本文为头条号作者发布,不代表今日头条立场。