图书管理系统功能增加
摘要:通过对软件的二次开发或功能拓展,便于提高我们的逆向设计与开发的能力。本文选择C++期末大作业中的“图书管理系统”,通过对代码阅读与分析,实现密码修改与图书查询功能的增加。
一.代码总结
1.1代码总结
通过对代码的阅读与分析,该图书管理系统软件大部分功能都已经成功实现,其主要功能关系如下图所示:

该系统使用CPP语言,对用户进行登录、信息添加、信息管理、购买图书、支付等功能逐步实现,基本满足了用户对该系统的初步需求。但是在登陆密码修改与图书查询方面缺少比较完善的代码。
1).在原“登陆密码修改”界面。只要对用户名验证即可重新设置密码,虽然实现了修改功能,但用户登录信息的安全性却大打折扣,很容易在用户登陆后被他人随意篡改。
2).在原“查询库存”界面中只有“显示库存”一个功能,缺少了一个需求非常大的查询功能。
二.代码修改
2.1代码修改
基于系统的安全性与实用性,我对其代码做了以下的简单修改:
void loginpassword::editkey(){
system("cls");
string name, loginkey1, loginkey2;
cout << "\n*********************************************************" << endl;
cout << "请输入您的用户名:";
fflush(stdin);
cin >> name;
if(this -> name == name){
cout << "\n请输入您的登录旧密码:";
fflush(stdin);
cin >> loginkey1;
if(this -> loginkey == loginkey1){
cout << "\n请输入您的登录新密码:";
fflush(stdin);
cin >> loginkey2;
this -> loginkey = loginkey2;
cout << "修改密码成功!" << endl;
}
else{
cout << "您的登录旧密码输入有误!" << endl;
}
}
else{
cout << "您的用户名输入有误!" << endl;
}
cout << "2秒后将自动跳转!" << endl;
Sleep(2000);
}
case 2:search_book();break;
void search_book()
{
system("cls");
cout << "查找图书" << endl;
cout << "输入书名:";
string str;
fflush(stdin);
cin >> str;
Book b[3];
ifstream in("Book.dat", ios::binary);
if(!in)
{
cout << "不能打开文件" << endl;
abort();
}
int i;
for(i = 0; i < 3; i ++)
{
bkread(in, b[i]);
}
for(i = 0;i < 3; i ++)
{
if(str == b[i].getbook_name())
{
cout << endl;
b[i].display();
cout << endl << "找到名为" << b[i].getbook_name() << "的图书!" << endl;
cout << endl << "按任意键继续!";
fflush(stdin);
getchar();
break;
}
}
in.close();
Sleep(2000);
}
1).在登录修改密码功能中加了原密码的验证,如果验证成功,则可以修改账户原密码;否则无法进行修改。
2).增加了图书查询功能,用户可以通过输入书名进行查找。根据不同的查找结果,显示不同的界面。
三.实验总结
对软件的二次开发或者其他功能的扩展,首先要对他人的代码进行阅读与整体框架的划分,然后找出软件中存在的问题与不足,最后根据实际的需求与情况,合理地对代码进行修改与补充。信息安全目前漏洞较大,也是最为关注的问题之一,对信息进行加密是非常重要。
在这次的功能扩展中,发现无论是二次开发,还是功能扩展,都需要先读懂他人的代码与系统结构,当梳理好其系统结构才能对其更好地修改。同时也意识到代码的可读性是非常重要的,便于自己与他人的阅读。也要多学习其他知识,用数据库代替文件实现增、删、改、查,信息的安全加密等。

浙公网安备 33010602011771号