99年毕业设计获优的程序-图书管理程序

原创 2006年04月22日 16:28:00

这是99年做毕业设计时,用BC3.2做的图书管理程序(当年毕业设计获优,还不错),DOS平台,通过DOS33号中断可以支持鼠标操作,图形界面(仿Window95),不过对菜单部分由于当时技术有限,仅能支持鼠标操作,不支持快捷键。小图标都是自己一点一点画出来的(当然不是BMP位图,那时候还没有这个概念),现在看看这些程序感觉很亲切,所以把它拿出来见见太阳:)

这是闪现屏幕

这是主界面(以上图片用数码相机照的,DOS下的程序,忘记怎么截图了)

这是主程序代码:

//-------------------------------------------------------------------//
//              图   书   管    理   主   程    序                   //
//-------------------------------------------------------------------//
  #include "head.hpp"
  #include "list.hpp"
//--------------------
  #define CLS  w.edit(6,56,632,420)
  WIN w("图书管理","book.tu");
  char far *escr[1]={{"图书管理系列..."}};
  PROM far *p1='/0',*p2='/0';

  struct date da;
  int ROLE=0;
  RUNFUN fun[5]={{NULL}},fun0[8]={{NULL}};
//-----查询------------
   #include "find.cpp"
//-----编目-----------
   #include "index.cpp"
//-----借书------------
   #include "borrow.cpp"
//-----还书------------
   #include "return.cpp"
//-----帮助------------
   void Help(void)
   {
    w.endscr("帮助...");
    HELPWIN h("帮助","sdfds","help.dat");
    w.endscr("图书管理系列...");
   }

//------日期-----------
 #include "date.cpp"
 //-----角色-----------
 //#include "role.cpp"
 //---设置密码---------
 #include "setcode.cpp"
 //---详细信息---------
 #include "allmess.cpp"
//************主程序*************//

void main(void)
{
   system("cover"); //封面
   screen(5);     //设置图形模式,且底色为黑色
   compcode();
 //-----------------
   getdate(&da);  //取系统日期
   mouse.init();
   mouse.show();
   setfillstyle(1,5);bar(0,0,640,480); //清屏
 //--------------------------------
   char far *Book[5]={"查询","编目","借书","还书","帮助"};
   w.setoffon();w.unsave();w.form();
   MENU menu(5,1,Book,6,30); //定义一下拉菜单
   menu.setmode(1);menu.init();
   //------------------------------
    setcolor(5);line(6,52,630,52);
    setcolor(15);line(6,53,630,53);
   //------------------------------
   int tt[]={title,borrowmessage,bookmessage,zhantie,edit,del,
      borrow,retu,code,riqi};
   char far *ms[]={"查看书库目录","查看借书信息","查看某书的详细信息",
     "库记录追加","库记录修改","库记录删除","借书",
      "还书","设置密码","日期/时间"};
   K_E_Y kk(10,120,59,tt,ms);
   if(ROLE==0)kk.setflag("34567");
     else kk.setflag("");
   kk.setmode("368");
   kk.init();
   //save("tubit?.dat",120,59,420,85);
   if(ROLE==0)load("tubit1.dat"); else load("tubit0.dat");
   w.wind(6,59,105,79);
   if(ROLE==0)hz.hz(15,61,"普通用户",5);
     else  hz.hz(15,61,"超级用户",5);
   w.key(Jv,85,59,0);
   //-------------------------------
   w.edit(6,86,632,420);
   char *escr[1]={{"图书管理系列..."}};
   w.endscr(0,escr);
   BAR(613,90,631,402);BAR(10,401,630,419);
   setfillstyle(1,7);bar(610,401,631,419);
   w.key(Ja,612,86,0);   w.key(Jv,612,382,0);
   w.key(Jd,7,400,0);   w.key(Jb,593,400,0);
   w.winu(612,106,631,300);w.winu(27,400,450,419);
   printf("/16[sa%d,%d,%d,%d,%s$]",0,0,639,451,"tumain.pcx");

   fun[0]=Find;    //查询
   fun[1]=Index;   //编目
   fun[2]=Borrow;  //借书
   fun[3]=Return;  //还书
   fun[4]=Help;    //帮助
  //-------------------
   fun0[0]=readall;     //查看书库目录
   fun0[1]=messageall;  //查看借书信息
   fun0[2]=allmess;     //查看某书的详细信息
   fun0[3]=append;      //库记录追加
   fun0[4]=eedit;       //库记录修改
   fun0[5]=delnum;      //库记录删除
   fun0[6]=subBorrow;   //借书
   fun0[7]=Return;      //还书
   fun0[8]=setcode;     //设置密码
   fun0[9]=daTe;        //日期/时间
   //--------------------
   menu.RUN(kk,fun,fun0,&w);  //菜单运行
 //--------------------------------
   closegraph();
   mouse.init();
}
//----------------------------------------------------------------------//

这是关于鼠标部分的源码:

//------------------------------------------------------------------------//
//                    鼠     标    类     库                              //
//------------------------------------------------------------------------//
 typedef struct mouse_xzrd
 {
  int x,y;
  int far *image;
 }M_XZRD;
extern int Mpp0[]={0xffff,0xffff,0xffff,0xffff,
     0xffff,0xffff,0xffff,0xffff,
     0xffff,0xffff,0xffff,0xffff,
     0xffff,0xffff,0xffff,0xffff,
     0x8002,0x4004,0x2008,0x1010,
     0x0820,0x0440,0x0280,0x0000,
     0x0280,0x0440,0x0820,0x1010,
     0x2008,0x4004,0x8002,0x0000
     };
extern int Mpp1[]={0x3fff,0x1fff,0x0fff,0x07ff,
     0x03ff,0x01ff,0x00ff,0x007f,
     0x003f,0x001f,0x01ff,0x10ff,
     0x30ff,0x787f,0xf87f,0xfc7f,
     0x0000,0x4000,0x6000,0x7000,
     0x7800,0x7c00,0x7e00,0x7f00,
     0x7f80,0x7e00,0x7c00,0x4600,
     0x0600,0x0300,0x0300,0x0180
     };
extern int Mpp2[]={0xfc7f,0xfc7f,0xfc7f,0xfc7f,
     0xfc7f,0xfc7f,0x0001,0x0001,
     0x0001,0xfc7f,0xfc7f,0xfc7f,
     0xfc7f,0xfc7f,0xfc7f,0xffff,
     0x0000,0x0100,0x0100,0x0100,
     0x0100,0x0100,0x0100,0x7ffc,
     0x0100,0x0100,0x0100,0x0100,
     0x0100,0x0100,0x0000,0x0000
     };
extern int Mpp3[]={0xfeff,0xfc7f,0xfc7f,0xfc7f,
     0xf83f,0xf83f,0xf01f,0xe00f,
     0xc007,0x8003,0x0001,0x0001,
     0xf83f,0xf01f,0xe00f,0xe10f,
     0x0000,0x0100,0x0100,0x0100,
     0x0380,0x0380,0x07c0,0x0fe0,
     0x1ff0,0x3ff8,0x7ffc,0x0380,
     0x0380,0x07c0,0x0ee0,0x0000
     };
extern int Mpp4[]={0xffff,0xf00f,0xc003,0x8001,
     0x0000,0x0000,0x0000,0x0000,
     0x0000,0x0000,0x0000,0x0000,
     0x8001,0xc003,0xf00f,0xffff,
     0x0000,0x0000,0x0ff0,0x381c,
     0x6ff6,0x5c3a,0x57ea,0x566a,
     0x566a,0x57ea,0x5c3a,0x6ff6,
     0x381c,0x0ff0,0x0000,0x0000
     };

extern int Mpp5[]={0xffff,0xffff,0xffff,0xffff,
     0xffff,0xffff,0xffff,0xffff,
     0xffff,0xffff,0xffff,0xffff,
     0xffff,0xffff,0xffff,0xffff,
     0x0c00,0x1200,0x1200,0x1200,
     0x13fe,0x1249,0x1249,0x1249,
     0x7249,0x9001,0x9001,0x9001,
     0x8001,0x8001,0x4002,0x3ffc
     };
extern int Mpp6[]={0xffff,0xffff,0xffff,0xffff,
     0xffff,0xffff,0xffff,0xffff,
     0xffff,0xffff,0xffff,0xffff,
     0xffff,0xffff,0xffff,0xffff,
     0x0000,0x0000,0x0420,0x0c30,
     0x1428,0x27e4,0x4002,0x8001,
     0x4002,0x27e4,0x1428,0x0c30,
     0x0420,0x0000,0x0000,0x0000
     };
extern int Mpp7[]={0xffff,0xffff,0xffff,0xffff,
     0xffff,0xffff,0xffff,0xffff,
     0xffff,0xffff,0xffff,0xffff,
     0xffff,0xffff,0xffff,0xffff,
     0x0100,0x0280,0x0440,0x0820,
     0x1010,0x3c78,0x0440,0x0440,
     0x0440,0x0440,0x3c78,0x1010,
     0x0820,0x0440,0x0280,0x0100
     };
extern int Mpp8[]={0xffff,0xffff,0xffff,0xffff,
     0xffff,0xffff,0xffff,0xffff,
     0xffff,0xffff,0xffff,0xffff,
     0xffff,0xffff,0xffff,0xffff,
     0x0000,0x0002,0x0006,0x000e,
     0x001e,0x003e,0x007e,0x00fe,
     0x01fe,0x007e,0x003e,0x0062,
     0x0060,0x00c0,0x00c0,0x0180
     };
extern M_XZRD Mouse0={7,7,Mpp0}; //X形
extern M_XZRD Mouse1={0,0,Mpp1}; //右键头形
extern M_XZRD Mouse2={7,7,Mpp2}; //十字形
extern M_XZRD Mouse3={7,0,Mpp3}; //飞机形
extern M_XZRD Mouse4={7,7,Mpp4}; //圆形
extern M_XZRD Mouse5={5,0,Mpp5}; //手形
extern M_XZRD Mouse6={7,7,Mpp6}; //<->形
extern M_XZRD Mouse7={7,7,Mpp7}; //VA形
extern M_XZRD Mouse8={15,1,Mpp8}; //左键头形
 class MOUSE
 {
  private:
   int flag; //鼠标安装与否
   int FLAG; //鼠标显隐与否
   int num; //鼠标键的个数
   int x,y; //座标
   int right,left; //鼠标左右健按下与否
   M_XZRD far *form; //鼠标形状
   int bx,by,ex,ey; //鼠标的显隐区
   int chart; //图形状态打开与否
   int chartsize; //图形下鼠标的大小
   int winxsize,winysize; //文本下鼠标的大小
   int key; //鼠标键位
   int rx,ry; //鼠标形状热点
   int rbx,rby,lbx,lby; //鼠标键最后按下的座标
   int rex,rey,lex,ley; //鼠标键最后松开的座标
   int leftnum,rightnum;
   int KEY()
   { union REGS r; r.h.ah=0x00;
     int86(0x16,&r,&r);return(r.h.ah);}
 public:
   int KEYKEY;
   MOUSE(void){chart=0;chartsize=16;winxsize=8;winysize=8;
    form=&Mouse1;bx=0;by=0;ex=640;ey=480;KEYKEY=0;
    rbx=0;rby=0;lbx=0;lby=0;
    rex=0;rey=0;lex=0;ley=0;leftnum=0;rightnum=0;
    init();shape();show();}
   void show_message(void); //显示鼠标信息
   void init(void);  //鼠标初始化
   void shape(void); //定义鼠标的形状
   void setshape(int); //设置鼠标的形状
   void show(void); //显示鼠标
   void hide(void); //消隐鼠标
   void setbeginxy(int,int);//设置鼠标初始位置
   void message(void); //获得鼠标信息
   void mousekeymessage(void); //获得鼠标按下松开信息
   void show_mousekeymessage(void); //显示鼠标按下松开信息
   void setmax(int,int); //设置鼠标显示X范围
   void setmay(int,int); //设置鼠标显示Y范围
   void setmaxy(int,int,int,int); //设置鼠标显示范围
   int  mousekey(void); //判断是鼠标还是键盘信息
   void mousev(void); // 设置鼠标的灵敏度
   int  getx(void){message();return x;} //获得鼠标x值
   int  gety(void){message();return y;} //获得鼠标y值
   int  getlbx(void){mousekeymessage();return lbx;} //获得鼠标左键按下的x值
   int  getlby(void){mousekeymessage();return lby;} //获得鼠标左键按下的y值
   int  getlex(void){mousekeymessage();return lex;} //获得鼠标左键松开的x值
   int  getley(void){mousekeymessage();return ley;} //获得鼠标左键松开的y值
   int  getrbx(void){mousekeymessage();return rbx;} //获得鼠标右键按下的x值
   int  getrby(void){mousekeymessage();return rby;} //获得鼠标右键按下的y值
   int  getrex(void){mousekeymessage();return rex;} //获得鼠标右键松开的x值
   int  getrey(void){mousekeymessage();return rey;} //获得鼠标右键松开的y值
   //获得鼠标左键按下的次数
   int  getleftnum(void){mousekeymessage();return leftnum;}
   //获得鼠标右键按下的次数
   int  getrightnum(void){mousekeymessage();return rightnum;}
   int  getkey(void){message();return key;} //获得鼠标key值
   //显示鼠标座标
   void showxy(void){gotoxy(1,1);cout<<"x="<<x<<" y="<<y<<" key="<<key<<endl;}
   int yesno(int,int,int,int);//判断鼠标是否在指定范围
   void run(void far interrupt(far *p)(),int nn);// 用户鼠标程序的运行
   void close(void);  //消除用户鼠标程序的运行
 };
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void MOUSE::show_message(void)
 {
  cout<<"Mouse num:"<<num<<endl;
  cout<<"Mouse form:"<<form<<endl;
  cout<<"Mouse showsection:"<<bx<<","<<by<<","<<ex<<","<<ey<<endl;
 }
void MOUSE::init(void)
 {
  union REGS r;
  flag=0;
  if(getvect(0x33)!=0L)
   {  r.x.ax=0;
      int86(0x33,&r,&r);
      if(r.x.ax==0){cout<<"NOT INSTALLED MOUSE !";exit(0);}
      if(r.x.ax!=0){
  flag=1;num=r.x.bx;
  shape();
       if(!chart)
  {
    r.h.ah=0x0f;
    int86(0x10,&r,&r);
    if(r.h.al==0||r.h.al==1)winxsize=16;
    chart=1;
      }}
    }
 }
void MOUSE::shape()
 {
  if(flag)
   { _ES=FP_SEG(form->image);
     _DX=FP_OFF(form->image);
     _CX=form->y;
     _BX=form->x;
     _AX=0x09;
     geninterrupt(0x33);
     rx=form->x;
     ry=form->y;
   }
}
void MOUSE::setshape(int n)
 {
  switch (n)
  {
   case 0:form=&Mouse0;break;
   case 1:form=&Mouse1;break;
   case 2:form=&Mouse2;break;
   case 3:form=&Mouse3;break;
   case 4:form=&Mouse4;break;
   case 5:form=&Mouse5;break;
   case 6:form=&Mouse6;break;
   case 7:form=&Mouse7;break;
   case 8:form=&Mouse8;break;
   default:break;
  }
  shape();
 }
inline void MOUSE::show(void)
 {
  union REGS r;
  if(flag)
  {
    r.x.ax=1;
    int86(0x33,&r,&r);
    FLAG=1;
  }
 }
inline void MOUSE::hide(void)
 {
  union REGS r;
  if((FLAG)&&(flag))
  {
    r.x.ax=2;
    int86(0x33,&r,&r);
    FLAG=0;
  }
 }
void MOUSE::setbeginxy(int X,int Y)
{
  union REGS r;
  if(flag)
  {
   r.x.ax=4;
   r.x.cx=X;
   r.x.dx=Y;
  int86(0x33,&r,&r);
  x=X;y=Y;
 }
}
inline void MOUSE::message(void)
 {
 union REGS r;
  if(flag)
  {
   r.x.ax=3;
   int86(0x33,&r,&r);
   key=r.x.bx;
   KEYKEY=key;
   x=r.x.cx;
   y=r.x.dx;
 }}
void MOUSE::mousekeymessage(void)
 {
 union REGS r;
  if(flag)
  {//-----按下-----
   //左键
   r.x.ax=5;
   r.x.bx=0;
   int86(0x33,&r,&r);
   key=KEYKEY=r.x.ax;
   leftnum=r.x.bx;
   lbx=r.x.cx;
   lby=r.x.dx;
   //右键
   r.x.ax=5;
   r.x.bx=1;
   int86(0x33,&r,&r);
   key=KEYKEY=r.x.ax;
   rightnum=r.x.bx;
   rbx=r.x.cx;
   rby=r.x.dx;
   //-----松开-----
   //左键
   r.x.ax=6;
   r.x.bx=0;
   int86(0x33,&r,&r);
   key=KEYKEY=r.x.ax;
   lex=r.x.cx;
   ley=r.x.dx;
   //右键
   r.x.ax=6;
   r.x.bx=1;
   int86(0x33,&r,&r);
   key=KEYKEY=r.x.ax;
   rex=r.x.cx;
   rey=r.x.dx;
 }}
void MOUSE::show_mousekeymessage(void)
 {
  gotoxy(10,6);
  cout<<"Left ("<<lbx<<","<<lby<<")-("<<lex<<","<<ley<<")/n";
  gotoxy(10,7);
  cout<<"Right ("<<rbx<<","<<rby<<")-("<<rex<<","<<rey<<")/n";
 }
void MOUSE::setmax(int x1,int x2)
{
  union REGS r;
  if(flag)
  {
   if(!FLAG)
    {
     x1=(x1*winxsize)-winxsize;
     x2=(x2*winxsize)-winxsize;
    }
   r.x.ax=7;
   r.x.cx=x1;
   r.x.dx=x2;
  int86(0x33,&r,&r);
 }
}
void MOUSE::setmay(int y1,int y2)
{
  union REGS r;
  if(flag)
  {
   if(!FLAG)
    {
     y1=(y1*winysize)-winysize;
     y2=(y2*winysize)-winysize;
    }
   r.x.ax=8;
   r.x.cx=y1;
   r.x.dx=y2;
  int86(0x33,&r,&r);
 }
}
void MOUSE::setmaxy(int x1,int y1,int x2,int y2)
{
 union REGS r;
 if(flag)
 {
  r.x.ax=16;
  r.x.cx=x1;
  r.x.dx=y1;
  r.x.si=x2;
  r.x.di=y2;
  int86(0x33,&r,&r);
 }
 else hide();
}
inline int MOUSE::mousekey()
 {
   if(kbhit())return KEY();
    message();
    if(key==1)  return(1001);
    if(key==2)  return(1002);
    if(key==3)  return(1003);
    return(-1);
}
void MOUSE::mousev()
 {
  if(flag)
  {
    _BX=20;
    _CX=20;
    _AX=0x1a;
   geninterrupt(0x33);
 }}
int MOUSE::yesno(int bx,int by,int ex,int ey)
{ int t;
  if(bx>ex){t=bx;bx=ex;ex=t;}
  if(by>ey){t=by;by=ey;ey=t;}
  message();
  if(x>bx&&x<ex&&y>by&&y<ey)return 1;
   else return 0;
 }
void  MOUSE::run(void far interrupt(*p)(),int nn)
 {
  if(flag)
  {
    _ES=FP_SEG(p);
    _DX=FP_OFF(p);
    _CX=nn;
    _AX=0x14;
  geninterrupt(0x33);
  }
 }
void MOUSE::close(void)
 {
  if(flag)
  {
    _ES=0;
    _DX=0;
    _CX=0;
    _AX=0x14;
   geninterrupt(0x33);
  }
 }
//------------------------------------------------------------------------//

好了,先放这些吧。现在想想如果用DOS做简单的图形界面的嵌入式系统,也许这个也有点用(我刚到公司,做的第一个程序就是用这个改进的(DOS下的物料计量系统))

 

 

 

99年毕业设计获优的程序-图书管理程序

2006年04月22日 16:28:00 这是99年做毕业设计时,用BC3.2做的图书管理程序(当年毕业设计获优,还不错),DOS平台,通过DOS33号中断可以支持鼠标操作,图形界面(仿Win...
  • softart
  • softart
  • 2007年10月27日 12:18
  • 265

图书管理程序-完美控制台c++(cpp)

c++图书管理实用程序 图书管理程序-完美控制台.本程序提供了以下三种功能功能 一、图书反复入库操作 二、反复借书 三、反复还书 说明:1、本程序没有死循环,如果出现死循环,那一定是用户输入...
  • aoelfhong
  • aoelfhong
  • 2011年04月25日 00:20
  • 3050

课程设计---图书登记管理系统

图书登记管理系统应该具有下列功能:(1)、 通过键盘输入某本图书的信息;(2) 、给定图书编号,显示该本图书的信息;(3) 、给定作者姓名,显示所有该作者编写的图书信息;(4) 、给定出版社,显示该出...
  • Hackbuteer1
  • Hackbuteer1
  • 2011年07月10日 18:00
  • 4630

JAVA 图书馆的书籍管理程序

请设计并实现一个图书馆的书籍管理程序,要求提供方便的图形界面实现图书信息的录入/修改/删除功能。图书的信息至少包括:图书的编号、书名、类型、作者、价格、出版目期、出版社、购入日期、借阅人等。要求可以浏...
  • u011699990
  • u011699990
  • 2016年12月23日 14:06
  • 861

图书管理程序

      学了一年的C++,第一次做课程设计,可能略显粗糙,但也算把要求的功能都实现了。这段代码中还存在着很多不足,以后再改吧。      至于这段程序么,注释都说了~呵呵 /***********...
  • yel_hb
  • yel_hb
  • 2009年02月09日 18:59
  • 745

Excel VBA高效办公应用-第十四章-Excel图书管理系统

本示例提供了以下功能: 1. 图书资料管理(订阅、搜索、删除) 2. 读者管理(添加、搜索、删除) 3. 借阅图书 4. 归还图书 看上去功能挺齐全,可用Excel实现事务管理系统,在如今的互联网...
  • hpdlzu80100
  • hpdlzu80100
  • 2017年06月24日 22:58
  • 665

数据结构课程设计(图书管理系统)

这次《数据结构》的课程设计是做图书管理系统,花了一个通宵, 写了1000多行代码,总算搞定了。支持文件读写、索引表查找,能够模拟一般数据库系统的最最基本的功能。因为老师要求,所以不得不用C语言写,发现...
  • lwqc_yq
  • lwqc_yq
  • 2008年06月26日 17:34
  • 2089

JAVA程序设计(14.2)----- 图书馆管理系统 初步设计 界面篇

1.上一篇完成了 借书等核心任务 这一篇主要是登陆,租用界面的编制了 继承,接口,重写,匿名内部类,就地实例化,按钮,文本框,密码框,密码验证,回车转换焦点,回车自动点击登陆, 退出验证,关闭主界面返...
  • Anubies
  • Anubies
  • 2014年11月06日 23:05
  • 1847

Django 一个简单的图书管理程序 (三 展示)

之前创建了项目,编写的借阅者的一些操作。现在尝试着添加主页,通过浏览器展示这些操作。 1. 添加网页展示的信息 右键项目名称“library”,新建包“static”。 右键包名“static”...
  • wujingwen1111
  • wujingwen1111
  • 2012年08月14日 15:05
  • 4498

VB图书管理系统毕业设计

目录 第一章系统概述. 1 1.1 系统开发背景和意义. 1 1.2 开发环境. 1 第二章 系统需求分析. 2 2.1 任务概述. 2 2.2 数据描述(数据流图+数据字典)2...
  • u014312659
  • u014312659
  • 2014年07月28日 18:45
  • 533
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:99年毕业设计获优的程序-图书管理程序
举报原因:
原因补充:

(最多只允许输入30个字)