c语言编程

c语言编程,第1张

#include <iostream.h>

#include <fstream.h>

#include <string.h>

#include <iomanip.h>

class reader

{

private:

char code[4]//读者编号

char name[10]//读者姓名

public:

void get() //输入读者资料

{

cout <<"请输入读者编号: "

cin>>code

cout <<"请输入读者姓名: "

cin>>name

}

void print() //打印读者资料

{

cout <<"读者编号: " <<code <<endl

cout <<"读者姓名: " <<name <<endl

}

char* getcode()

{

return(code)

}

char* getname()

{

return(name)

}

}

class book

{

private:

char code[4]//书籍编号

char name[10]//书籍名称

char writer[10]//书籍作者

char concern[10]//书籍出版社

float price//书籍价格

public:

char flag//判断此书是否借出

book() //利用构造函数,将flag变量默认为 'N ',即没有借出

{

flag='N'

}

void get() //输入书籍资料

{

cout <<"请输入书籍编号: "

cin>>code

cout <<"请输入书籍名称: "

cin>>name

cout <<"请输入书籍作者: "

cin>>writer

cout <<"请输入书籍出版社: "

cin>>concern

cout <<"请输入书籍价格: "

cin>>price

}

void print()

{

cout <<"书籍编号: " <<code <<endl

cout <<"书籍名称: " <<name <<endl

cout <<"书籍作者: " <<writer <<endl

cout <<"书籍出版社: " <<concern <<endl

cout <<"书籍价格: " <<price <<endl

}

void getflag()

{

cout <<"确认要租此书吗?[Y/N] "

cin>>flag

}

char* getcode()

{

return(code)

}

char* getname()

{

return(name)

}

}

class readerborrowbook //用于记录租书情况的类

{

public:

char readercode[4]

char bookcode[4]

void borrowbook()

{

cout <<"请输入您的读者编号: "

cin>>readercode

cout <<"请输入您要借的书籍的编号: "

cin>>bookcode

}

void print()

{

cout <<"借书证号: " <<readercode <<endl

cout <<"借的书籍: " <<bookcode <<endl

}

}

reader readerzlk[50]//定义读者库数组(读者库)

book library[100]//定义书籍数组(书籍库)

readerborrowbook rbb[100]//定义借书记录数组(借书库)

fstream file_reader//定义读者库文件对象(全局的)

fstream file_book//定义书籍库文件对象(全局的)

fstream file_rbb//定义借书库文件对象(全局的)

int r = 0//记录读者个数

int b = 0//记录书籍本数

int t = 0//记录借书记录

void CSHreader() //初始化读者库函数

{

file_reader.open( "readerfile.txt ", ios::in)//打开文件

file_reader.read((char*)&readerzlk[0], sizeof(readerzlk[0]))//将文件内容读到读者库数组的第一个对象

if (strlen(readerzlk[0].getcode()) == 0)//判断第一个对象的内容是否为空,如为空,则文件为空

{

cout <<"读者库信息为空,请建立读者信息。 " <<endl

}

else

{

while(!file_reader.eof())//否则将文件后面的内容读到读者库数组后面的对象之中,从而达到初始化的效果

{

r++

file_reader.read((char*)&readerzlk[r], sizeof(readerzlk[r]))

if (r >= 50)

{

cout <<"读者库已满! " <<endl

break

}

}

cout <<"初始化读者库成功…… " <<endl

}

file_reader.close()

}

void CSHbook() //初始化书籍库函数(注释同读者库一样)

{

file_book.open( "bookfile.txt ", ios::in)

file_book.read((char*)&library[0], sizeof(library[0]))

if (strlen(library[0].getcode()) == 0)

{

cout <<"书籍库信息为空,请建立书籍信息。 " <<endl

}

else

{

while(!file_book.eof())

{

b++

file_book.read((char*)&library[b], sizeof(library[b]))

if (b >= 100)

{

cout <<"书籍库已满! " <<endl

break

}

}

cout <<"初始化书籍库成功…… " <<endl

}

file_book.close()

}

void CSHrbb() //初始化借书库

{

file_rbb.open( "rbb.txt ", ios::in)

file_rbb.read((char*)&rbb[0], sizeof(rbb[0]))

if (strlen(rbb[0].readercode) == 0)

{

cout <<"借书库信息为空,暂时无借书情况。 " <<endl

}

else

{

while (!file_rbb.eof())

{

t++

file_rbb.read((char*)&rbb[t], sizeof(rbb[t]))

if (t >=100)

{

cout <<"借书库已满,请速让读者归还书籍。 " <<endl

break

}

}

cout <<"初始化借书库成功…… " <<endl

}

file_rbb.close()

}

void borrowbook() //借书函数

{

int d = 0//逻辑判断值

int i = 0

char flag = 'y'

readerborrowbook temp

while (flag == 'y' || flag == 'Y')

{

temp.borrowbook()

for(i=0i<ri++)//判断有无此读者编号

{

if(strcmp(temp.readercode, readerzlk[i].getcode()) ==0)

{

d=1//为1则有此编号,否则无此编号

break

}

}

if (d == 0)

{

cout <<"对不起!您的编号不存在! " <<endl

return

}

d =0, i =0 //恢复初始值,进行书的编号的判断

for (i=0i<bi++) //判断有无此书籍编号

{

if (strcmp(temp.bookcode, library[i].getcode()) == 0)

{

d = 1//同上

break

}

}

if (d==0)

{

cout <<"对不起!我们这里没有此书籍! " <<endl

return

}

//判断书籍是否借出,本意是想通过 ".flag "是否等于 'Y '或 'y '来判断书是否借出的,可是总是判断不成功。

//本意是if (library[i].flag == 'Y ' || library[i].flag == 'y ')

// {cout <<"非常抱歉,此书已经租出。 " <<endlreturn}

int j = 0

for (j = 0 j < t j++)

{

if (strcmp(temp.bookcode, rbb[j].bookcode) == 0)

{

cout <<"非常抱歉,此书已经租出。 " <<endl

return

}

}

library[i].getflag()

if (library[i].flag == 'Y ' || library[i].flag == 'y ')

{

file_rbb.open( "rbb.txt ", ios::app)

library[i].print()

rbb[t] = temp

file_rbb.write((char*)&rbb[t], sizeof(rbb[t]))

t++

cout <<"借书成功!请按时归还! " <<endl

file_rbb.close()

}

else

{

cout <<"您不中意此书吗?借书未成功。 " <<endl

}

cout <<"要继续租书吗?[Y/N] "

cin>>flag

}

}

void Printborrowbook() //查看借书情况函数

{

int i = 0

for (i = 0 i < t i++)

{

rbb[i].print()

cout <<endl

}

}

void borrow()

{

char ch

cout <<"1.凭证借书 2.查看借书情况 3.退出 " <<endl

cout <<"请输入功能代码: "

cin>>ch

switch (ch)

{

case '1 ':

borrowbook()

break

case '2 ':

Printborrowbook()

break

case '3 ':

return

break

default:

cout <<"输入错误,请重新输入: " <<endl

}

}

void replacebook() //还书模块

{

char bookcode[4]

int i = 0, d = 0

cout <<"您要还的书籍的编号是: "

cin>>bookcode

for (i = 0 i < t i++)

{

if (strcmp(bookcode, rbb[i].bookcode) == 0)

{

d = 1//逻辑判断,为1则租出,否则没有租出

break//因为书籍编号具有唯一性,故退出循环

}

}

if (d == 0)

{

cout <<"此书尚未租出或者不存在。 " <<endl

return

}

else

{

cout <<"此书租出情况如下: " <<endl

rbb[i].print()

}

char flag

cout <<"确认要还此书吗?[Y/N] "

cin>>flag

if (flag == 'y'|| flag=='Y')

{

int p, j=0

p = t-i //P为要循环的次数

for(j= 0j<=pj++)

{

rbb[i]=rbb[i+1]

i++

}

t--

//以下为观察借书数组变化的代码

for (i=0i<ti++)

{

rbb[i].print()

cout <<endl

}

}

}

void rbbwritefile() //将借书库删除内容后的数组写入文件,以达到还书的效果,在程序结束之前调用即可

{

int i = 0

file_rbb.open( "rbb.txt ", ios::out)

for (i = 0 i < t i++)

{

file_rbb.write((char*)&rbb[i], sizeof(rbb[i]))

}

file_rbb.close()

}

void addreader() //增加读者函数

{

if (r>= 50)

{

cout <<"读者库已经满,无法添加! " <<endl

return

}

char f = 'y'

int j = 0

int p = 0//逻辑判断值

reader temp

file_reader.open( "readerfile.txt ", ios::app)

while (f == 'Y ' || f == 'y ')

{

p = 0//假设编号为不存在

temp.get()

for (j = 0 j < r j++)//判断读者编号是否重复

{

if (strcmp(temp.getcode(), readerzlk[j].getcode()) == 0)

{

cout <<"对不起!此读者编号已经存在! " <<endl

p = 1//为1则存在,为0则不存在

}

}

if (p == 0)

{

readerzlk[r] = temp

file_reader.write((char*)&readerzlk[r], sizeof(readerzlk[r]))//写入读者库

cout <<"写入读者库成功…… " <<endl

r++

}

cout <<"要继续吗?[Y/N] "

cin>>f

}

file_reader.close()

}

void addbook() //增加书籍函数

{

if(b>=100)

{

cout <<"读者库已经满,无法添加! " <<endl

return

}

char f = 'Y'

int j = 0

int p = 0

book temp

file_book.open( "bookfile.txt ", ios::app)

while (f == 'Y' || f == 'y')

{

p = 0

temp.get()

for (j = 0 j < b j++)

{

if (strcmp(temp.getcode(), library[j].getcode()) == 0)

{

cout <<"对不起!此书籍编号已经存在! " <<endl

p = 1

}

}

if (p == 0)

{

library[b] = temp

file_book.write((char*)&library[b], sizeof(library[b]))

cout <<"写入书籍库成功…… " <<endl

b++

}

cout <<"要继续吗?[Y/N] "

cin>>f

}

file_book.close()

}

void readerLC() //列出所有读者

{

for (int j = 0 j < r j++)

{

readerzlk[j].print()

cout <<endl

}

}

void bookLC() //列出所有书籍

{

for (int j = 0 j < b j++)

{

library[j].print()

cout <<endl

}

}

void readFind_code() //读者编号查找函数

{

int j = 0

int p = 0//保存对象下标

int d = 0//逻辑判断值

char flag='Y'

char code[4]

while (flag=='Y'||flag=='y')

{

d = 0//默认为没有找到

cout <<"请输入要查找的读者的编号: "

cin>>code

for (j = 0 j < r j++)

{

if (strcmp(code, readerzlk[j].getcode()) == 0)

{

p = j//将下标传给p

d = 1//为1则找到对象

break//因为code具有唯一性,故后面的不用找了,所以跳出循环.

}

}

if (d == 1)

{

readerzlk[p].print()

}

else

{

cout <<"非常抱歉!没有找到你想要的! " <<endl

}

cout <<"要继续查找吗?[Y/N] "

cin>>flag

}

}

void bookFind_code() //书籍编号查找函数

{

int j = 0

int p = 0//保存对象

int d = 0//逻辑判断值

char flag = 'Y'

char code[4]

while (flag == 'Y' || flag == 'y')

{

d = 0//默认为没有找到

cout <<"请输入要查找的书籍的编号: "

cin>>code

for (j = 0 j < b j++)

{

if (strcmp(code, library[j].getcode()) == 0)

{

p = j//将下标传给p

d = 1//为1则找到对象

break//因为code具有唯一性,故后面的不用找了,所以跳出循环.

}

}

if (d == 1)

{

library[p].print()

}

else

{

cout <<"非常抱歉!没有找到你想要的! " <<endl

}

cout <<"要继续查找吗?[Y/N] "

cin>>flag

}

}

void readFind_name() //读者姓名查找模块

{

char name[10]

char flag ='Y'

int d = 0//逻辑判断值

while (flag == 'Y'|| flag == 'y')

{

d = 0//默认为没有找到.

cout <<"请输入要查找读者的姓名: "

cin>>name

for (int i =0i<ri++)

{

if (strcmp(name, readerzlk[i].getname()) == 0)

{

d = 1//找到记录,将d值变为1

readerzlk[i].print()//因为姓名不具有唯一性,所以得循环完.

cout <<endl

}

}

if (d == 0)

{

cout <<"非常抱歉!没有找到你想要的! " <<endl

}

cout <<"要继续查找吗?[Y/N] "

cin>>flag

}

}

void bookFind_name() //书籍名称查找模块

{

char name[10]

char flag = 'Y'

int d = 0

while (flag == 'Y'|| flag == 'y')

{

d = 0

cout <<"请输入要查找书籍的名称: "

cin>>name

for (int i = 0 i < b i++)

{

if (strcmp(name, library[i].getname()) == 0)

{

d = 1

library[i].print()

cout <<endl

}

}

if (d == 0)

{

cout <<"非常抱歉!没有找到你想要的! " <<endl

}

cout <<"要继续查找吗?[Y/N] "

cin>>flag

}

}

void readerFind() //读者查找

{

char flag

while (1)

{

cout <<"1.按读者编号查找 2.按读者姓名查找 3.退出 " <<endl

cout <<"请输入功能代码: "

cin>>flag

switch (flag)

{

case '1 ':

//编号查找模块

readFind_code()

break

case '2 ':

//姓名查找模块

readFind_name()

break

case '3 ':

return

break

default:

cout <<"输入错误,请重新输入: " <<endl

}

}

}

void bookFind() //书籍查找

{

char flag

while (1)

{

cout <<"1.按书籍编号查找 2.按书名查找 3.退出 " <<endl

cout <<"请输入功能代码: "

cin>>flag

switch (flag)

{

case '1 ':

//按书籍编号查找模块

bookFind_code()

break

case '2 ':

//按书名查找模块

bookFind_name()

case '3 ':

return

break

default:

cout <<"输入错误,请重新输入: " <<endl

}

}

}

void readerdelete() //读者删除

{

char code[4]

int d = 0, i = 0, j = 0

cout <<"请输入要删除的读者的编号: "

cin>>code

for(i=0i <ri++) //首先判断读者库有没有此读者

{

if (strcmp(code, readerzlk[i].getcode()) ==0)

{

d =1//为1则有

break

}

}

if (d ==0)

{

cout <<"对不起,此读者不存在. " <<endl

return

}

d = 0, j = 0//恢复初值,在借书库进行判断

for (j = 0j<tj++)

{

if(strcmp(code, rbb[j].readercode) == 0)

{

d = 1//为1则有书未还

break

}

}

if (d == 1)

{

cout <<"此读者有书未还,还书后方可删除此读者. " <<endl

return

}

char flag

int p = r - i

cout <<"确认删除此读者吗?[Y/N] "

cin>>flag

if(flag=='Y'||flag =='y')

{

for (j = 0j <= pj++) //挪动读者数组

{

readerzlk[i] = readerzlk[i +1]

i++

}

r--

cout <<"读者删除成功 " <<endl

}

for (i= 0i<ri++)

{

readerzlk[i].print()

cout <<endl

}

}

void readerdeletefile() //删除读者文件上的 *** 作

{

int i = 0

file_reader.open( "readerfile.txt ", ios::out)

for (i = 0i <ri++)

{

file_reader.write((char*)&readerzlk[i], sizeof(readerzlk[i]))

}

file_reader.close()

}

void librarydelete() //书籍删除

{

char code[4]

int d = 0, i = 0, j = 0

cout <<"请输入要删除的书籍编号: "

cin>>code

for (i =0i<bi++) //首先判断读者库有没有此读者

{

if(strcmp(code,library[i].getcode())==0)

{

d = 1//为1则有

break

}

}

if(d==0)

{

cout <<"对不起,此书籍不存在. " <<endl

return

}

d=0,j=0//恢复初值,在借书库进行判断

for(j =0j<tj++)

{

if(strcmp(code, rbb[j].bookcode)==0)

{

d = 1//为1则有书未还

break

}

}

if(d==1)

{

cout <<"此书未还,还后方可删除此书籍. " <<endl

return

}

char flag

int p = b - i

cout <<"确认删除此书籍吗?[Y/N] "

cin>>flag

if(flag == 'Y ' || flag == 'y ')

{

for (j =0j<=pj++) //挪动读者数组

{

library[i]=library[i+1]

i++

}

b--

cout <<"书籍删除成功 "<<endl

}

for(i=0i<bi++)

{

library[i].print()

cout<<endl

}

}

void librarydeletefile() //删除书籍文件上的 *** 作

{

int i = 0

file_book.open( "bookfile.txt ", ios::out)

for(i=0i<bi++)

{

file_book.write((char*)&library[i], sizeof(library[i]))

}

file_book.close()

}

void readerWH() //读者维护

{

char flag

while (1)

{

cout<<"1.增加读者 2.删除读者 3.查找读者 4.列出所有读者 5.退出 "<<endl

cout<<"请输入功能代码: "

cin>>flag

switch (flag)

{

case '1':

addreader()//增加读者

break

case '2':

readerdelete()//删除读者

break

case '3':

readerFind()//查找读者

break

case '4':

readerLC()//列出所有读者

break

case '5':

return

break

default:

cout<<"输入错误,请重新输入: "<<endl

}

}

}

void bookWH() //图书维护

{

char flag

while(1)

{

cout<<"1.增加图书 2.删除图书 3.查找图书 4.列出所有图书书 5.退出 "<<endl

cout <<"请输入功能代码: "

cin>>flag

switch(flag)

{

case '1':

addbook()//增加图书

break

case '2':

librarydelete()//删除图书

break

case '3':

bookFind()//查找图书

break

case '4':

bookLC()//列出图书

break

case '5':

return

break

default:

cout<<"输入错误,请重新输入: " <<endl

}

}

}

void main()

{

char ch,dh

cout <<"欢迎使用简易图书馆! " <<endl

CSHreader()//初始化读者库

CSHbook()//初始化书籍库

CSHrbb()//初始化借书库

stop:

while(1)

{

cout <<"1. 进入系统 2.退出系统 " <<endl

cout <<"请输入功能代码: "

cin>>ch

switch (ch)

{

case '1':

while(1)

{

cout <<"1.借书 2.还书 3.图书维护 4.读者维护 5.返回上一层 " <<endl

cout <<"请输入功能代码: "

cin>>dh

switch (dh)

{

case '1': //借书模块

borrow() break

case '2': //还书模块

replacebook()

break

case '3': //图书维护

bookWH()

break

case '4': //读者维护

readerWH()

break

case '5':

goto stop

break

default:

cout <<endl <<"输入错误!请重新输入: " <<endl

}

}

case '2':

rbbwritefile()//重写借书库

librarydeletefile()//重写书籍库

readerdeletefile()//重写读者库

cout <<"谢谢您的使用!BYEBYE! " <<endl

return

break

default:

cout <<endl <<"输入错误!请重新输入: " <<endl

}

}

}

#include <iostream>

#include <fstream>//输入/输出文件流类

using namespace std

const int Maxr=100//最多的读者

const int Maxb=100//最多的图书

const int Maxbor=5//每位读者最多借五本书

//读者类,实现对读者的信息的描述

class Reader

cout <<setw(5) <<no <<setw(10) <<name<<"借书编号:["

for(int i=0i<Maxbori++)

if(borbook[i]!=0)

cout <<borbook[i] <<"|"

cout <<"]"<<endl

file.read((char *)&s,sizeof(s))

if (!file)break

cin >>rname

r->setname(rname)

break

case '3':

cout <<" 输入读者编号:"

cin >>readerid

r=query(readerid)

cout <<"该读者不存在"<<endl

break

//图书类,实现对图书的描述,图书的编号,书名,借出,还入等

int no//图书编号

char name[20]//书名

strcpy(name,na)

void delbook(){ tag=1}//删除图书

void addbook(int n,char *na)//增加图书

tag=0

no=n

strcpy(name,na)

onshelf=1

if (onshelf==1)

void disp()//输出图书

汇编语言

为了解决使用机器语言编写应用程序所带来的一系列问题,人们首先想到使用助记符号来代替不容易记忆的机器指令。这种助记符号来表示计算机指令的语言称为符号语言,也称汇编语言。

在汇编语言中,每一条用符号来表示的汇编指令与计算机机器指令一一对应;记忆难度大大减少了,不仅易于检查和修改程序错误,而且指令、数据的存放位置可以由计算机自动分配。用汇编语言编写的程序称为源程序。

这里举个例子。

根据图书编号,请在“订单明细表”工作表的“图书名称”列中,使用vlookup函数完成图书单价的自动填充。“图书名称”和“图书编号”的对应关系在编号对照工作表中。

首先输入“=vlookup   就会如图显示。

第一步根据什么,也就是根据图书编号,查找图书名称,输入图书编号的那个格子,逗号,如图所示。

第二步, 去哪里,也就是说要去那片区域查找需要得到的东西。“图书名称”和“图书编号”的对应关系在编号对照工作表中。所以去编号对照工作表的如图区域。

第三步,图书名称在区域的第二列,所以要填个2,逗号,然后精确匹配,回车就行了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11482671.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存