图书管理系统四

最近准备比赛(虽然成绩很不好),就没有写代码了。
这次主要是完成了记录书籍数量

思路:

  • 给读取函数中添加读取int类型的方法
  • 每次添加书籍前,先判断之前是否存在该书籍,若存在则 count++
  • 然后在界面中添加”可借数“,总之还是很简单的操作的。
  • github

主要代码:

void init(L * head)  // 初始化链表
{
	L * p,* pre;
	pre = head;
	string s;
	char num;
	ifstream infile("e://Library//ALLBOOK.txt", ios::in);//以读取的方式打开本地文件
	while (!infile.eof())//本地数据存入链表
	{

		p = new L;
		getline(infile, s, '\n');
		p->id = s;
		infile>>p->count ;       //读取数值
		getline(infile, s, '\n');//读取位置下移
		getline(infile, s, '\n');//读取下一行
		p->book_name = s;
		getline(infile, s, '\n');
		p->author = s;
		p->next = NULL;
		pre->next = p;
		pre = pre->next;
	}
}

void save(L *head)  //数据存入本地文件
{
	L * p = head;
	ofstream outfile("e://Library//ALLBOOK.txt", ios::out);//以写入的方式打开本地文件
	p = head->next;
	while (p != NULL)
	{
		if (p->id != "")
		{
		outfile << p->id << endl;
		outfile << p->count << endl;    //存 数量
		outfile << p->book_name << endl;
		outfile << p->author;

		if (p->next != NULL) outfile << endl;
		}
		p = p->next;
	}
}


bool find(L * head, string i, string bn, string au)//判断是否存在
{
	L * p = head;
	if (head->next == NULL)
	{
		return false;
	}
	for (p = head->next; p != NULL; p = p->next)
	{
		if (p->id == i&&p->book_name == bn&&p->author == au)
		{
			p->count++;                  //若是已经存在则添加其数量
			cout << "已添加书籍" << endl;
			return true;
		}
	}
	return false;
}

运行结果:

遇到主要问题

在文件中读取int类型数据,一开始纠结好久,本来打算先读取成string类型然后再做转化在进行运算,网上查了一下,查了好多东西,最后对getline这个函数功能有一定加深了解。getline在一次文件打开后,会进行读取,读取到你给定的字符或者他默认字符,然而你没有重新打开文件时,他读取的位置是不变的。然后你可以定义一个ifstream类型,利用>>将改行位置会自动识别int类型,将其存入你的变量中。下面是一个小例子:

#include<iostream>
#include<fstream>
using namespace std;
int main()
{
	ifstream inf("sb.txt",ios::in);
	int num=1;
	string s;
	getline(inf,s,'\n');
	cout<<s<<endl;
	inf>>num;
	cout<<num<<endl;
	getline(inf,s,'\n');
	getline(inf,s,'\n');
	cout<<s;
	return 0;
}

读取的文件

运行结果

因此通过这样的方法,我读取完数据后getline两次跳到int类型下一个类型数据

体会:

前几天在写的时候看看了,百度上整个系统的介绍,发现自己写的东西根本不能称之为系统啊,不过还还是一步步自己慢慢来吧,任重而道远。我这边还有好多好多不足的地方,不过我相信我自己能够一步步坚持下来的![奋斗脸]这次,太匆忙,发现自己也没有怎么迭代。不过我想我先把可借数已经记录下来了,接下来对于借书比较简单了,然而我指的简单是没有存在学生登录系统的借书功能,学生借书系统,我希望我能在这个暑假也能写个大概吧------立了个flag.

posted @ 2017-07-12 23:52  Linese  阅读(247)  评论(4编辑  收藏  举报