c语言图书管理系统


热门范文 2019-10-08 08:41:55 热门范文
[摘要]c语言图书管理系统篇(一):C语言 图书管理系统 include include include struct BOOK {  int id,usr[10],total,store,days[10]; char name[30],au

【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语言基本语法与控制结构,其实的话编程是很有乐趣的,前提是你得喜欢这个,但是呢,也不要局限在知识点里面了,编程思维是很重要的,小编就暂时说到这了哈。
本文为头条号作者发布,不代表今日头条立场。

本文来源:https://www.shanpow.com/news/482895/

《c语言图书管理系统.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式

相关阅读
  • 《中国九年义务教育歌》 《中国九年义务教育歌》
  • 员工作业效率算法说明 员工作业效率算法说明
  • 补入党介绍人证明 补入党介绍人证明
  • 严字当头确保全面从严治党主体责任落地落实 严字当头确保全面从严治党主体责任落地落实
  • 被巡察单位党组工作汇报材料 被巡察单位党组工作汇报材料
  • 疫情防控党课讲稿大全 疫情防控党课讲稿大全
  • 疫情防控事迹材料 疫情防控先进个人事迹材料 疫情防控事迹材料 疫情防控先进个人事迹材料
  • 大学生读书笔记1000字 大学生读书笔记1000字
为您推荐