软件工程综合实践专题第1次作业

软件工程综合实践专题第1次作业(17软工二班茅杭斌1759230)

我这次拿到的软件的主要是一个简单的图书馆图书管理软件,是拿同学上学期的大作业来进行理解分析的。

一、源代码:

#include<iostream>

#include<fstream>

#include<string>

using namespace std;

class Book

{

public:

string name;

扫描二维码关注公众号,回复: 5415933 查看本文章

string num;

int count;

};

Book book[60];

static int asize=50;

void scan()

{

ifstream fin("E:\\程序\\Project1\\book.txt", ios::in);

if (fin)

cout << "文件打开成功" << endl;

else

cout << "文件打开失败" << endl;

int  i;

for (i = 0; i < asize; i++)

fin >> book[i].name >>book[i].num >> book[i].count;

fin.close();

}

int save()

{

ofstream fout("E:\\程序\\Project1\\book.txt", ios::out);

int i;

if (fout)

{

cout << "文件打开成功" << endl;

for (i = 0; i < asize; i++)

fout << book[i].name << '\t' << book[i].num << '\t' << book[i].count << endl;

return 1;

}

else

{

cout << "文件打开失败" << endl;

return 0;

}

fout.close();

}

void display()

{

int i;

for (i = 0; i < asize; i++)

cout << book[i].name << '\t' << book[i].num << '\t' << book[i].count << endl;

}

 

void add()

{

string name1, a;

int n;

cout << "输入你要添加的书名:";

cin >> name1;

cout << "输入你要添加的书号:";

cin >> a;

cout << "输入你要添加的数量:";

cin >> n;

asize++;

book[asize].name = name1;

book[asize].num = a;

book[asize].count = n;

cout << book[asize].name << '\t' << book[asize].num << '\t' << book[asize].count << endl;

if (save())

{

display();

cout << "添加成功" << endl;

}

else

cout << "添加失败" << endl;

 

fflush(stdin);

}

void borrow()

{

int n = 1, i=0;

string a;

cout << "请输入借书名称或书号:";

cin >> a;

while (i <= asize)

{

if (a == book[i].name)

{

cout << "是否借阅该图书:\n1---借阅\n2---不借阅\n";

cin >> n;

if (n == 1)

{

book[i].count--;

cout << "借阅成功" << endl;

cout << book[i].name << '\t' << book[i].num << '\t' << book[i].count << endl;

break;

}

else

{

cout << "借阅失败" << endl;

break;

}

}

else if (a == book[i].num)

{

cout << "是否借阅该图书:\n1---借阅\n2---不借阅\n";

cin >> n;

if (n == 1)

{

book[i].count--;

cout << "借阅成功" << endl;

cout << book[i].name << '\t' << book[i].num << '\t' << book[i].count << endl;

break;

}

else

{

cout << "借阅失败" << endl;

break;

}

}

i++;

}

if (i>asize)

{

cout << "没有找到该图书!" << endl;

}

if (save())

cout << "储存成功" << endl;

else

cout << "储存失败" << endl;

 

fflush(stdin);

}

void back()

{

int n = 1, i=0;

string a;

cout << "请输入还书名称或书号:";

cin >> a;

while (i <= asize)

{

if (a == book[i].name)

{

cout << "是否归还该图书:\n1---归还\n2---不归还\n";

cin >> n;

if (n == 1)

{

book[i].count++;

cout << "归还成功" << endl;

cout << book[i].name << '\t' << book[i].num << '\t' << book[i].count << endl;

break;

}

else

{

cout << "归还失败" << endl;

break;

}

}

else if (a == book[i].num)

{

cout << "是否归还该图书:\n1---归还\n2---不归还\n";

cin >> n;

if (n == 1)

{

book[i].count++;

cout << "归还成功" << endl;

cout << book[i].name << '\t' << book[i].num << '\t' << book[i].count << endl;

break;

}

else

{

cout << "归还失败" << endl;

break;

}

}

i++;

}

if (i>asize)

{

cout << "没有找到该图书!" << endl;

}

if (save())

cout << "储存成功" << endl;

else

cout << "储存失败" << endl;

 

fflush(stdin);

}

void search()

{

void searchname();

void searchnum();

int n;

cout << "1---按书名查询\n2---按书号查询" << endl;

cin >> n;

switch (n)

{

case 1:searchname(); break;

case 2:searchnum(); break;

default: cout << "输入有误" << endl; break;

}

}

void searchname()

{

int i, flag;

string str;

cout << "请输入要查询的书名:";

cin >> str;

for (i = 0; i<asize; i++)

{

if (book[i].name == str)

{

flag = 1;

break;

}

else

flag = 0;

}

if (flag)

cout << book[i].name << '\t' << book[i].num << '\t' << book[i].count << endl;

else

cout << "查询错误!" << endl;

}

void searchnum()

{

int i, flag;

string str;

cout << "请输入要查询的书号:";

cin >> str;

for (i = 0; i<asize; i++)

{

if (book[i].num == str)

{

flag = 1;

break;

}

else

flag = 0;

}

if (flag)

cout << book[i].name << '\t' << book[i].num << '\t' << book[i].count << endl;

else

cout << "查询错误!" << endl;

}

void exam()

{

string user;

string sec;

cout << "请登陆:" << endl;

cout << "用户名:";

cin >> user;

cout << "密码:";

cin >> sec;

if (user == "abc")

{

if (sec == "123")

{

cout << "登陆成功!" << endl;

int n = 1;

while (n != 0)

{

cout << "1---订购新书\n2---显示所有图书\n3---借阅功能\n4---还书功能\n5---查询功能\n0---退出\n请选择:";

cin >> n;

switch (n)

{

case 1:add(); break;

case 2:display(); break;

case 3:borrow(); break;

case 4:back(); break;

case 5:search(); break;

case 0: break;

default: cout << "输入有误" << endl; break;

}

}

}

else

{

cout << "密码错误!" << endl;

}

}

else

{

cout << "用户名错误!" << endl;

}

}

int main()

{

scan();

exam();

system("pause");

return 0;

}

 

二、代码分析

该程序定义了book类,又定义了scan()save()display()add()borrow()back()search()searchname()searchnum()exam()等方法,通过实现这些方法来达到不同功能的实现。

scan()方法来实现对一个text文件的打开操作。

save()方法来实现存储输入的图书信息。

dispaly()方法来实现显示所有图书的信息。

add()方法来实现录入订购新图书的信息。

borrow()方法来实现借阅图书功能。

back()方法来实现还书功能。

search()方法来实现查询图书功能,searchname()searchnum()是查询功能的延伸。

exam()方法来实现该软件的登录功能。

 

三、运行

1.如果输入错误的账号密码

2.如果输入正确的账号密码

3.功能1

4.功能2

5.功能3

6.功能4

7.功能5

8.退出

四、心得体会

这个程序的运行还是比较简单的,通过定义多个方法并调用实现功能。各功能的关联做的比较好,对于使用者来说是比较方便的。在代码的检验过程中,基本上没什么错误,因为是拷过来的代码,所以在text文件的打开地址上需要修改一下。最后也能完美的运行。

猜你喜欢

转载自www.cnblogs.com/wangxiangxi/p/10474184.html