基于C++三大特性的图书管理系统【C++面向对象程序设计(1)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文

return this->id;

}

string getpassward() {//-----------------------------------------------------------获取密码

return this->passward;

}

string getsecproblem() {//--------------------------------------------------------获取密保问题

return this->secproblem;

}

string getsecanswer() {//---------------------------------------------------------获取密保答案

return this->secanswer;

}

UaAdate*& getnext() {//------------------------------------------------------------节点的指针域

return next;

}

};

2.链表基类


链表基类的作用就是实现基类的指针指向子类的对象,实现多态

主要的功能是对链表的增删改查。

class baselink {//----------------------节点功能类-----------------------

public:

virtual void addnode(string id, string passward, string secproblem, string secanswer)=0;

virtual UaAdate* looklink(string id) = 0;

virtual void savelink() = 0;

virtual void printlink() = 0;

virtual void delnode(string id) = 0;

};

3.用户链表类


这里的用户类头结点使用的UaAdate,大家可以多实现几个数据类型,将用户数据类型设置的

与管理员类型不一样。主要对链表基类中的接口进行实现

class Userlink :public baselink{//-----------------用户继承----------------------------

private:

UaAdate* Userhead;

public:

//---------------------------------------------------从用户文件中获取信息

Userlink() {

}

//------------------------------------------查找函数(给id查节点)

UaAdate* looklink(string id) {

}

//---------------------------------------------删除某一节点

void delnode(string id) {

}

//在末尾加上一个新的节点

void addnode(string id, string passward, string secproblem, string secanswer) {

}

void printlink() {//----------------------------------------打印链表

};

4.管理员链表类


与用户链表类很相似

class Admlink :public baselink {

private:

UaAdate* Admhead;

public:

//------------------------------------------从文件中获取管理员信息

Admlink() {

}

UaAdate* looklink(string id) {//查找函数

}

void savelink() {

}

void printlink() {

}

void addnode(string id, string passward, string secproblem, string secanswer) {

}

//---------------------------------------------删除某一节点}

void delnode(string id) {

};

5.图书节点类


对图书信息进行封装,用于组成链表中的节点

class bookdate {//--------------------------------------------------书类

private:

string name;

string writer;

int sum;

string bookclass;

bookdate* next;

public:

bookdate() {

}

bookdate(string name,string writer,int sum,string bookclass){

this->name = name;

this->writer = writer;

this->sum = sum;

this->bookclass = bookclass;

}

void setnext(string name,string writer,int sum,string bookclass) {

this->next = new bookdate(name,writer,sum,bookclass);

this->next->next = NULL;

}

void setsum(int sum) {

this->sum = sum;

}

void setbookclass(string bookclass) {

this->bookclass = bookclass;

}

bookdate*& getnext() {

return next;

}

string getname() {

return name;

}

string getwriter() {

return writer;

}

int getsum() {

return sum;

}

string getbookclass() {

return bookclass;

}

};

6.图书链表类


对图书的增删改查

class booklink {//-----------------------------------------------书库存书的功能类

private:

bookdate* head;

public:

booklink() {//------------------------------------------初始化私有成员

}

bookdate*& gethead() {

return head;

}

bookdate* looklink(string name, string writer) {//--------------查重---------

}

void savelink() {//--------------------------------------------------将新链表储存一下

}

void creatnode(string name,string writer,int sum,string bookclass) {//----------增书

}

void selectbook(string name,string writer) {//--------------------------查书

}

void rebuildbook(string name,string writer,int sum,string bookclass) {//-改书

}

void printlink() {//-----------------------------------------------打印链表

}

};

7.用户借记节点类


用户借书的时候,记录一下借阅的图书的数量,借书人的基本信息

并对类中的信息进行封装,作为借记功能类的节点使用

class userbook {//------------------------------------------------用户借书登记信息

private:

string bookname;

string bookwriter;

int sum;

string name;

string phone;

userbook* next;

public:

userbook() {

next = NULL;

}

userbook(string bookname, string bookwriter, int sum, string name, string phone) {

this->bookname = bookname;

this->bookwriter = bookwriter;

this->sum = sum;

this->name=name;

this->phone = phone;

this->next = NULL;

}

void setnext(string bookname,string bookwriter,int sum,string name,string phone) {

this->next = new userbook(bookname,bookwriter, sum, name, phone);

}

void setsum(int sum) {

this->sum = sum;

}

userbook*& getnext() {

return next;

}

string getbookname() {

return bookname;

}

string getbookwriter() {

return bookwriter;

}

int getbooksum() {

return sum;

}

string getusername() {

return name;

}

string getuserphone() {

return phone;

}

};

8.用户借记链表类


用户借书的信息进行记录

class userbooklink {//-----------------------------------------------用户借书登记功能类

private:

userbook* head;

public:

userbooklink() {//-------------------------------------------------构造函数将文件里面的东西读出来

}

userbook* looklink(string bookname,string bookwriter,string name) {//有就返回,没有就返回空

}

void addonenode(string bookname, string bookwriter, int sum, string name, string phone) {

}

void savelink() {//--------------------------------存链表

}

void changesum(string bookname,string bookwriter,int sum,string name) {//修改书的数量

};

9.多态的实现


这里实现多态主要在登录器处进行了实现,使用的一个登录器可以进行两种身份的登入。

int main() {

baselink* p;

Userlink U1;

Admlink A1;

booklink b;

p = &A1;

char n;bool k;

mainHere:

system(“cls”);

mainMenu();

n = Shield_4();

if (n == ‘1’ || n == ‘2’) {

if (n == ‘1’) {

p = &U1;

}

else if (n == ‘2’) {

p = &A1;

string Admpassward;

system(“cls”);

cout << “请输入管理员密匙:”;

cin >> Admpassward;

if (Admpassward != “芝麻开门”) {

cout << “密匙不匹配,您应该不是管理员”;

system(“pause”);

goto mainHere;

}

}

k=thisMenu§;//登录菜单

if (k == false) {

goto mainHere;

}

else {

if (p == &A1) {

k=Admmeun();

}<

  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值