當前位置:歷史故事大全網 - 範文作文 - C语言编程

C语言编程

C 的行不?

等等,要菜单就是说要支持MFC

如果你不嫌弃,就先试试这个吧,手头只有这个了。

#include lt;stringgt;//字符串头文件

#include lt;fstreamgt;//文件头文件

#include lt;iostreamgt; //是指标准库中输入输出流的头文件using namespace std;//使用名称空间std

const int BMAX=50; //书最多个数

/ /图书管理模块

//图书类别

类图书

{

public:

int no ; // 图书编号

char name[20]; // 图书名称

int b_flag; //1为在架,2为借出

int b_del; //1为存在,2为删除

public :

book(){} //构造函数

void setno(int n)

{

no=n; // 图书编号取值

}

int getno()

{

return no; //返回图书编号值

}

void setname(char na[])

{

strcpy(name, na); //字符串复制

}

char* getname()

{

return name; //返回图书名称

}

void borbook()

{

b_flag=2; / /借书标志

}

void delbook()

{

b_del=2; //删除标志

}

void addbook(int no,char na[]) // 增加图书功能

{

setno(no);

setname(na);

b_flag=1;

b_del=1;

}

}

//图书数据库类

bdatabase类

{

public:

book btarray[BMAX]; //图书集合

int top;

public:

bdatabase()

{

book b;

top=-1;

fstream file("book.txt",ios::in); // 打开文件

while (1)

{

file.read((char *)amp;b,sizeof(b));

if (!file) break;

top ;

p>

btarray[top] = b;

}

file.close(); //关闭文件

}

~bdatabase() //解析构造函数,将btarray[]写入到book.txt文件中

{

fstream file("book.txt",ios:: out);

for (int i=0;ilt;=top;i )

{

if (btarray[i].b_del==1 )

file.write((char *)amp;btarray[i],sizeof(btarray[i]));

}

file.close ();

}

void addbooks() //往图书数据库中加图书

{

book bk;

int no;

char bname[20];

coutlt;lt;"请输入书号: ";

cingt;gt; no;

coutlt;lt;endllt;lt;"请输入书名:";

cingt;gt;bname;

coutlt;lt;endl ;

bk.b_flag=1;

bk.addbook(no, bname);

top ;

btarray[top] =bk;

return;

}

int findbooks(int suffix) //查找图书,该函数用于借书这本书操作,suffix是队列下标

{

int no;

coutlt;lt;"请输入书号: ";

cingt;gt;否;

for(int i=0; ilt;=top; i )

{

if(btarray[i].no==no amp ;amp; btarray[i].b_del==1)

{

返回 i;

}

}

返回-1;

}

int findbooks()

//查找图书,该函数用于图书维护

{

int no;

char value[6];

coutlt ;lt;"请输入书号: ";

cingt;gt;否;

for(int i=0; ilt;=top; i )

{

if(btarray[i].no==无 amp;amp; btarray[i].b_del==1)

{

if (btarray[i].b_flag==1) strcpy(value,"在架");

if(btarray[i].b_flag==2) strcpy(value,"借出");

coutlt;lt;"书号: "lt;lt;btarray[i].nolt;lt;" 书名: "lt;lt;btarray[i].namelt;lt;" 图书状态:"lt;lt;值lt;lt;endl;

返回i;

}

}

返回-1;

}

void editbooks() //编辑图书

{

int cur;

cur = findbooks ();

if (cur==-1)

{ coutlt;lt;"没有这本书"lt;lt;endl;

return ;

}

coutlt;lt;"书号: "lt;lt;btarray[cur].nolt;lt;"书名: "lt;lt;btarray[cur ].namelt;lt;endl;

coutlt;lt;"请修改数据:"lt;lt;endl;

coutlt;lt;endllt;lt;"书名: ";

cingt;gt;btarray[cur].name;

return ;

}

void delbooks() / /删除图书

{

int cur;

cur = findbooks();

if (cur==-1)

{

return;

}

if(btarray[cur].b_flag==2) //删除时判断图书是否存在借出

{

coutlt;lt;"该图书已经借出,请在归还后再删除。

"lt;lt;endl;

返回;

}

btarray[cur].b_del=2;

返回;

}

void listbooks() // 显示全部图书

{

char value[6];

for(int i=0;ilt;=top;i)

{

if(btarray[i].b_del==1)

{

if(btarray[i].b_flag==1) strcpy(value,"在架");

if(btarray[i].b_flag==2) strcpy( value,"借出");

coutlt;lt;"书号: "lt;lt;btarray[i].nolt;lt;"书名: "lt;lt;btarray[i] .namelt;lt;" 图书状态:"lt;lt;valuelt;lt;endl;

}

}

返回;

}

}

//读者管理模块

//读者类别

类读者

{

public:

int no;

char name[20];

int r_del; //1存在,2删除

int r_bor; //1借过书,2没有借书

book brbook;

public:

void addreader( int id, char na[])//增加读者

{

no = id;

strcpy(name, na);

r_del=1;

}

void setbrbook(book bt) //设置借书标记

{

brbook = bt;

}

book getbrbook()

{

return brbook; // 返回借书信息

}

};

//读卡器数据库类

class rdatabase

{

public:

reader rdarray[BMAX];

int top;

public:

rdatabase()

{

reader rd;

top=-1;

fstream file("reader.txt",ios::in); //打开文件

while (1)

{

file.read((char *)amp

;rd,sizeof(rd));

if (!file) break;

top ;

rdarray[top]=rd;

}

file.close(); //关闭文件

}

~rdatabase()//解析结构函数

{

fstream file("reader.txt",ios::out);

for (int i=0;ilt;=top;i )

{

if (rdarray[i].r_del==1)

file.write((char *)amp;rdarray[i],sizeof(rdarray[i] ]));

}

file.close();

}

void addreaders() // 添加读者

{

reader rd;

int no;

char rname[20];

coutlt;lt; "请输入学号: ";

cingt;gt;no;

coutlt;lt;endllt;lt;"请输入姓名: ";

cingt;gt;rname;

coutlt;lt;endl;

rd.addreader(no,rname);

rd.r_bor=2;

rd.addreader(no,rname);

rd.r_bor=2;

p>

top ;

rdarray[top]=rd;

return;

}

int findreaders(int suffix ) //查找读者,这个函数用于借书还书操作。

参数后缀是集群下标

{

int no;

coutlt;lt;"请输入学号: ";

cingt;gt;no;

for(int i=0;ilt;=top;i )

{

if(rdarray[i].no ==无amp;amp; rdarray[i].r_del==1)

{

return i;

}

}

return -1;

}

int findreaders() //查找读者,该函数用于读者维护操作

{

int no;

char value[3];

coutlt;lt;"请输入学号: ";

cingt;gt;no;

for(int i=0;ilt;=top;i )

{

if(rdarray[i].no ==无amp;amp; rdarray[i].r_del==1)

{

if(rdarray[i].r_bor==1) strcpy(value,"借");

if(rdarray[i].r_bor==2) strcpy(value,"无");

coutlt;lt;"学号: "lt;lt ;rdarray[i].nolt;lt;" 姓名: "lt;lt;rdarray[i].namelt;lt;" 是否借书: "lt;lt;valuelt;lt;endl;

return i;

}

}

return -1;

}

void editreaders() / /编辑读者信息

{

int cur;

cur = findreaders();

if (cur==-1)

{ coutlt;lt;“没有该学生”lt;lt;endl;

return;

}

coutlt;lt ;"请修改数据:"lt;lt;endl;

coutlt;lt;endllt;lt;"姓名: ";

cingt;gt;rdarray[cur].name ;

return ;

}

void delreaders() //删除读者,如果借书要还书后才能删除

{

int cur;

cur = findreaders()

if (cur==-1)

{

返回;

}

if( rdarray[cur].r_bor==1)

{

coutlt;lt;“该用户借了图书,请还书后再删除”lt;lt;endl;

返回;

}

rdarray[cur].r_del=2;

返回;

}

void listreaders() //显示所有读卡器

{

char value[3];

for(int i=0;ilt ;=top; i )

{

if(rdarray[i].r_del==1)

{

if( rdarray[i].r_bor==1) strcpy(value,"借");

if(rdarray[i].r_bor==2) strcpy(value,"无");

coutlt;lt;"学号: "lt;lt;rdarray[i].nolt;lt;" 姓名: "lt;lt;rdarray[i].namelt;lt;" 是否借书: "lt ;lt;valuelt;lt;endl;

}

}

返回;

}

}

void bookjiemain() //图书维护子菜单

{

coutlt;lt;"|------------ ---------|"lt;lt;endl;

coutlt;lt;"| 图书维护 |"lt;lt;endl;

coutlt;lt ;"| (1)增加|"lt;lt;endl;

coutlt;lt;"| (2)更改 |"lt;lt;endl;

coutlt;lt;"| (3)除除 |"lt;lt;endl;

coutlt;lt;"| (4)查找 |"lt;lt;endl;

coutlt;lt;"| (5)显示 |"lt;lt;endl;

coutlt;lt;"| (6)返回上一层 |"lt;lt;endl;

coutlt;lt;"|------------------------| "lt;lt;endl;

}

void readerjiemian() //读者维

护子菜单

{

coutlt;lt;"|------------------------|"lt;lt ;endl;

coutlt;lt;"| 读者维护 |"lt;lt;endl;

coutlt;lt;"| (1)增加 |"lt;lt;lt; endl;

coutlt;lt;"| (2)更改 |"lt;lt;endl;

coutlt;lt;"| (3)除除 |"lt; lt;endl;

coutlt;lt;"| (4)查找|"lt;lt;endl;

coutlt;lt;"| (5)显示|" lt;lt;endl;

coutlt;lt;"| (6)返回上一层 |"lt;lt;endl;

coutlt;lt;"|--- ------------------|"lt;lt;endl;

}

void mainjiemian() //主界面

{

coutlt;lt;"******************************** ****************"lt;lt;endl;

coutlt;lt;"*图书管理系系统*"lt;lt;endl;

coutlt;lt;"* *"lt;lt;endl;

coutlt;lt;"* (1)借书*"lt;lt;endl;

>

coutlt;lt;"* *"lt;lt;endl;

coutlt;lt;"* (2) 还书 *"lt;lt;endl;

coutlt;lt;"* *"lt;lt;endl;

coutlt;lt;"* (3)图书管理*"lt;lt;endl;

coutlt; lt;"* *"lt;lt;endl;

coutlt;lt;"* (4)用户管理 *"lt;lt;endl;

coutlt;lt;" *

*"lt;lt;endl;

coutlt;lt;"* (0) 退出 *"lt;lt;endl;

coutlt;lt;"**** **********************************************“lt;lt;endl;

}

voidborrowtoreturn(char br)

//借书还书函数。参数br用来判断是“借书”还是“还书” ”.1为“借书”,2为“还书”

{

int rdid=0;

int bkid=0;

int rsuffix, bsuffix;

bdatabase t_bd;

rdatabase t_rd;

if(br=='1') //借书

{

rsuffix=t_rd.findreaders(rdid);

bsuffix=t_bd.findbooks(bkid);

if (rsuffix= =-1 || b后缀==-1)

返回;

if(t_bd.btarray[bsuffix].b_flag==2)

{

coutlt;lt;"图书已借出,请选择其他图书"lt;lt;endl;

return;

}

if(t_rd.rdarray[rsuffix].r_bor==1)

{

coutlt;lt;"你已经借过图书,请先归还再借其他图书"lt ;lt;endl;

返回;

}

t_bd.btarray[bsuffix].b_flag=2;

t_rd.rdarray [rsuffix].r_bor=1;

t_rd.rdarray[rsuffix].brbook=t_bd.btarray[bsuffix];

返回;

}

if(br=='2')

{

rsuffix=t_rd.findreaders(rdid);

bsuffix=t_bd.findbooks (bkid);

if (rsuffix==-1 || bsuffix==-1 )

返回;

if(t_rd.rdarray[rsuffix].brbook.no==t_bd.btarray[bsuffix].no)

{

t_bd.btarray[bsuffix].b_flag=1;

t_rd.rdarray[rsuffix].r_bor=2;

t_rd.rdarray[ rsuffix].brbook=t_bd.btarray[bsuffix];

}

>

else

{

coutlt;lt;“请重新输入,读者借的图书号不正确”lt;lt;endl;

返回;

}

返回;

}

}

void booksmange()

{

char in;

bdatabase bd;

do{

bookjiemain();

cingt;gt;in;

switch (in)

{

case '1':

bd.addbooks() ;

中断;

case '2':

bd.editbooks();

中断;

案例 '3':

bd.delbooks();

中断;

案例 '4':

bd.findbooks ();

中断;

case '5':

bd.listbooks();

中断;

case '6':

break;

默认:coutlt;lt;"输入错误,请从新输入。"lt;lt;endl;;

}

}while(in!='6');

return;

}

void readermange()

{

char in;

rdatabase bd;

do{

readerjiemian();

do{

readerjiemian();

p>

cingt;gt;in;

switch (in)

{

case '1':

bd .addreaders();

中断;

case '2':

bd.editreaders();

中断;

中断;

bd.editreaders();

中断;

p>

case '3':

bd.delreaders();

中断;

case '4':

bd.findreaders();

中断;

case '5':

bd.listreaders();

中断;

case '6':

break;

默认:coutlt;lt;"输入错误,请从新输入。

"lt;lt;endl;

}

}while(in!='6');

return;

}

int main(int argc, char* argv[])

{ char in;

do{

mainjiemian();

cingt;gt;in;

switch (in)

{

case '1':

借用返回(in);

中断;

case '2':

借用返回(in);

中断;

case '3':

booksmange();

break;

case '4':

readermange ();

中断;

case '0':

中断;

默认:coutlt;lt;"输入错误,请从新输入。"lt;lt;endl;

}

}while(in!='0');

return 0;

}

  • 上一篇:高中數學必修二練習題 要答案和解析
  • 下一篇:工行代銷的指數基金有哪些?
  • copyright 2024歷史故事大全網