返回顶部

一缕半夏微光

温柔半两,从容一生

导航

新冠疫情实时登记个人温度系统

本来这篇总结应该在清明节的时候就需要写了,一直拖到现在,这是我进入软件工程系以来完成的第一个作业,虽然我所写的代码仍有许多不足,还有需要改进的地方 。

这次作业我虽然下载了vc,但是并未使用其来开发这款软件,我用的是vs做出了一个其中还有些许bug的系统。先暂且将我所敲的代码粘上:

#include<iostream>
#include<fstream>
#include<windows.h>
#include<iomanip>
#include<string>
using namespace std;

int main()
{
	string temperature;//摄氏温度
	int choose;
	
	SYSTEMTIME sys;
	// 定义一个 SYSTEMTIME 结构体 sys
	GetLocalTime(&sys);
	// GetLocalTime是一个Windows API 函数,用来获取当地的当前系统日期和时间。
	ofstream outfile;
	outfile.open("data.txt", ios::app);
	outfile<<sys.wYear<<"-"<<sys.wMonth<<"-"<<sys.wDay<<"\n"<< std::setfill('0') << std::setw(2) << sys.wHour
		<< ":" << std::setfill('0') << std::setw(2) << sys.wMinute << ":" << std::setfill('0') << std::setw(2) << sys.wSecond <<endl;
	
	cout << "请输入你现在的温度:" << endl;
	cin >> temperature;
	outfile <<"温度:"<< temperature << "\n";
	outfile << "\n";
	outfile.close();
	
	cout << "请问你是否需要查询温度,如果是,请填1,如果不是,请填0:" << endl;
	cin >> choose;
	if (choose == 1)
	{
		string T;
		cout << "请输入你要查询的日期:" << endl;
		cin >> T;
		cout << "所获取到的信息有:" << endl;
		string s;
		ifstream infile1;
		infile1.open("data.txt");
		while (getline(infile1, s))
		{
			cout << s << endl;
		}
		infile1.close();
		cin.get();
	}
	else exit(0);
	
	return 0;
}  

 

在代码中出现的问题便是无法真正的根据日期来查找温度,而是将记事本txt中的数据全部输出到控制器,在这个方面还是需要改进的。

下面是代码运行之后的结果以及txt文档中所记录的数据:

 

值得注意的是,在代码中,其中所获取的时间以及日期均是系统时间。主要还是通过以下代码实现的:

        SYSTEMTIME sys;
	// 定义一个 SYSTEMTIME 结构体 sys
	GetLocalTime(&sys);
	// GetLocalTime是一个Windows API 函数,用来获取当地的当前系统日期和时间。
	ofstream outfile;
	outfile.open("data.txt", ios::app);
	outfile<<sys.wYear<<"-"<<sys.wMonth<<"-"<<sys.wDay<<"\n"<< std::setfill('0') << std::setw(2) << sys.wHour
		<< ":" << std::setfill('0') << std::setw(2) << sys.wMinute << ":" << std::setfill('0') << std::setw(2) << sys.wSecond <<endl;  

其中,能够准确无误的使得其获取的时间中没有出现10:8:56的情况,而是出现10:08:56,这其中是使用了流格式控制符,其头文件是<iomanip>。另外,若是想要将自己所输入的数据保存在文件中,并且不会因为再次输入而清除数据,这里首先就需要创建一个文件,即要用到头文件<fstream>,其中,要想打开文件后保证所写入的文件不会覆盖源文件的内容,也就是原来文件中的数据会得到保存,那么便在“data.txt”后添加上了ios::app。

拓展<fstream>的用法

fstream有两个派生类,即ifstream和ofstream,分别对应输入文件流、输出文件流。在使用它们之前,必须将它们的头文件包含到你的cpp文件中。

创建一个文件流的方法很简单

ifstream fin;  
fin.open("C:\filename.txt");

这样就创建了一个输入文件流fin,它对应的文件是C盘根目录下的filename.txt。实际上,open方法还包含了一个参数mode,用以指定其打开方式。

ios::in 以读取方式打开文件
ios::out 以写入方式打开文件
ios::ate 存取指针在文件末尾
ios::app 写入时采用追加方式
ios::trunc 写入时抹去旧数据
ios::binary 以二进制方式存取

上面的代码并未指定任何打开方式,则采用默认参数:输入文件流即ios::in,输出文件流即ios::out。一般在需要组合特殊的mode才显示指定,比如:ios:in|ios:binary;//以二进制方式读取文件。除此之外,还可以在构造时指定相应的文件路径和名称,让创建过程一步到位。上述代码可改写为:

ifstream fin("C:\filename.txt");

与open方法相反的是close方法,它的作用与open正好相反。open是将文件流对象与外设中的文件关联起来,close则是解除二者的关联。但需要注意的是,close还起到了清空缓存的作用。最好让open方法与close方法成对出现。

创建并打开一个文件流后,就能像操作标准I/O那样使用流插入操作符(<<)与流提取操作符(>>)。对于输入文件流来说,可以调用getline函数从文件流中读取一整行数据,这样就可以读入含有空格的字符串。

以上拓展来源于脚本之家,详情请见于https://www.jb51.net/article/41444.htm

posted on 2020-04-13 18:49  一缕半夏微光  阅读(89)  评论(0编辑  收藏  举报