赞
踩
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <sstream>
- #include <iomanip> //输出控制头文件1
- #include <time.h>
- #include <windows.h>
-
- using namespace std;
-
-
- class Recite {
- fstream file;
- fstream file1;
- public:
- Recite(); //创建生词本文件
- void insert_word(); //添加单词
- void query_all(); //查询所有单词
- void query_by_time();//根据时间查历史记录
- void query_history();//查询历史背词
- void query_exact(); //精确查词
- void delete_word(); //删除单词
- int get_num(); //返回生词本中单词的数量
- void recite_word(); //背生词
- void update_log(); //更新日志
- void run(); //总的服务界面
- };
-
- Recite::Recite() {
- file.open("生词本.txt");
- file.close();
- file.open("背词历史.log");
- file.close();
- file.open("历史记录.txt");
- file.close();
- }
-
- void Recite::insert_word() {
- clock_t startTime, endTime;
- file.open("生词本.txt", ios::out | ios::app); //在文件末尾处写入
- if (file.is_open() == 1) {
- //打开成功的话
- startTime = clock();
- char word[20], cha[5], trans[20]; //单词 词性 解释
- cout << "请输入要写入错题本的单词:";
- cin >> word;
- cout << "请输入单词的词性:";
- cin >> cha;
- cout << "请输入单词的解释:";
- cin >> trans;
- file << word << " " << cha << " " << trans << endl; //1就代表没有被删除的单词
- file.close();
- endTime = clock();
- cout << "写入成功,总共用时" << (double) (endTime - startTime) / CLOCKS_PER_SEC << " s" << endl;
- } else {
- cout << "打开文件失败" << endl;
- system("pause");
- }
-
- }
-
- void Recite::query_all() {
- clock_t startTime, endTime;
- startTime = clock();
- char buffer[100];
- int number = 0; //记录记录的条数
- cout << " --------+----+---------" << endl;
- cout << "|" << setw(8) << "单词";
- cout << "|" << setw(4) << "词性";
- cout << "|" << setw(8) << "翻译";
- cout << "|" << endl;
- cout << " --------+----+---------" << endl;
- file.open("生词本.txt", ios::in | ios::app);
- while (!file.eof()) {
- file.getline(buffer, 100);
- istringstream is(buffer);
- string s1, s2, s3, s4;
- is >> s1 >> s2 >> s3 >> s4;
- if (s1 != "" && s2 != "" && s3 != "") {
- number++;
- cout << "|" << setw(8) << s1;
- cout << "|" << setw(4) << s2;
- cout << "|" << setw(8) << s3;
- cout << "|" << endl;
- cout << " --------+----+---------" << endl;
- }
- }
- endTime = clock();
- cout << "总共有" << number << "条记录,总共用时" << (double) (endTime - startTime) / CLOCKS_PER_SEC << " s" << endl;
- file.close();
- }
-
- void Recite::query_by_time() {
- file.open("背词历史.log", ios::in | ios::out | ios::app);
- if (file.is_open()) {
- string time;
- cout << "请输入要查询的历史记录的年月日,格式为年-月-日:";
- cin >> time;
- string word[100], cha[100], trans[100];
- int i = 0;
- char buffer[100];
- while (!file.eof()) {
- file.getline(buffer, 100);
- istringstream is(buffer);
- string t1, t2;
- is >> t1 >> t2;
- if (t1 == time) {
- while (!file.eof()) {
- file.getline(buffer, 100);
- istringstream input(buffer);
- string s1, s2, s3;
- input >> s1 >> s2 >> s3;
- if (s1 != "" && s2 != "" && s3 != "") {
- word[i] = s1;
- cha[i] = s2;
- trans[i] = s3;
- i++;
- } else {
- if (s1 == time)
- continue;
- else
- break;
- }
- }
- }
- }
- file.close();
- file.open("历史记录.txt", ios::in | ios::out | ios::trunc);
- for (int j = 0; j < i; j++)
- file << word[j] << " " << cha[j] << " " << trans[j] << endl;
- file.close();
- query_history();
- } else {
- cout << "文件打开失败" << endl;
- return;
- }
- }
-
- void Recite::query_history() {
- clock_t startTime, endTime;
- startTime = clock();
- char buffer[100];
- int number = 0; //记录记录的条数
- cout << " --------+----+---------" << endl;
- cout << "|" << setw(8) << "单词";
- cout << "|" << setw(4) << "词性";
- cout << "|" << setw(8) << "翻译";
- cout << "|" << endl;
- cout << " --------+----+---------" << endl;
- file.open("历史记录.txt", ios::in | ios::app);
- while (!file.eof()) {
- file.getline(buffer, 100);
- istringstream is(buffer);
- string s1, s2, s3, s4;
- is >> s1 >> s2 >> s3 >> s4;
- if (s1 != "" && s2 != "" && s3 != "") {
- number++;
- cout << "|" << setw(8) << s1;
- cout << "|" << setw(4) << s2;
- cout << "|" << setw(8) << s3;
- cout << "|" << endl;
- cout << " --------+----+---------" << endl;
- }
- }
- endTime = clock();
- cout << "总共有" << number << "条记录,总共用时" << (double) (endTime - startTime) / CLOCKS_PER_SEC << " s" << endl;
- file.close();
- }
-
- void Recite::query_exact() {
- clock_t startTime, endTime;
- char buffer[100];
- int i, number = 0;
- cout << "1.按照单词查词" << endl;
- cout << "2.按照词性查词" << endl;
- cout << "3.按照中文解释查词" << endl;
- cout << "请输入需要确定查词方式:";
- cin >> i;
- startTime = clock();
- string word;
- cout << "请输入要查的单词:";
- cin >> word;
- cout << " --------+----+---------" << endl;
- cout << "|" << setw(8) << "单词";
- cout << "|" << setw(4) << "词性";
- cout << "|" << setw(8) << "翻译";
- cout << "|" << endl;
- cout << " --------+----+---------" << endl;
- file.open("生词本.txt", ios::in);
- switch (i) {
- case 1:
- while (!file.eof()) {
- file.getline(buffer, 100);
- istringstream is(buffer);
- string s1, s2, s3;
- is >> s1 >> s2 >> s3;
- if (s1 == word) {
- number++;
- cout << "|" << setw(8) << s1;
- cout << "|" << setw(4) << s2;
- cout << "|" << setw(8) << s3;
- cout << "|" << endl;
- cout << " --------+----+---------" << endl;
- }
- }
- endTime = clock();
- cout << "查询成功,一共有" << number << "条记录,用时:" << (double) (endTime - startTime) / CLOCKS_PER_SEC
- << " s" << endl;
- file.close();
- break;
- case 2:
- while (!file.eof()) {
- file.getline(buffer, 100);
- istringstream is(buffer);
- string s1, s2, s3;
- is >> s1 >> s2 >> s3;
- if (s2 == word) {
- number++;
- cout << "|" << setw(8) << s1;
- cout << "|" << setw(4) << s2;
- cout << "|" << setw(8) << s3;
- cout << "|" << endl;
- cout << " --------+----+---------" << endl;
- }
- }
- endTime = clock();
- cout << "查询成功,一共有" << number << "条记录,用时:" << (double) (endTime - startTime) / CLOCKS_PER_SEC
- << " s" << endl;
- file.close();
- break;
- case 3:
- while (!file.eof()) {
- file.getline(buffer, 100);
- istringstream is(buffer);
- string s1, s2, s3;
- is >> s1 >> s2 >> s3;
- if (s3 == word) {
- number++;
- cout << "|" << setw(8) << s1;
- cout << "|" << setw(4) << s2;
- cout << "|" << setw(8) << s3;
- cout << "|" << endl;
- cout << " --------+----+---------" << endl;
- }
- }
- endTime = clock();
- cout << "查询成功,一共有" << number << "条记录,用时:" << (double) (endTime - startTime) / CLOCKS_PER_SEC
- << " s" << endl;
- file.close();
- break;
- default:
- //默认用单词查询
- while (!file.eof()) {
- file.getline(buffer, 100);
- istringstream is(buffer);
- string s1, s2, s3;
- is >> s1 >> s2 >> s3;
- if (s1 == word) {
- number++;
- cout << "|" << setw(8) << s1;
- cout << "|" << setw(4) << s2;
- cout << "|" << setw(8) << s3;
- cout << "|" << endl;
- cout << " --------+----+---------" << endl;
- }
- }
- endTime = clock();
- cout << "查询成功,一共有" << number << "条记录,用时:" << (double) (endTime - startTime) / CLOCKS_PER_SEC
- << " s" << endl;
- file.close();
- break;
- }
- }
-
- int Recite::get_num() {
- file1.open("生词本.txt", ios::in); //以只读方式打开生词本
- char buffer[100];
- int number = 0;
- while (!file.eof()) {
- file.getline(buffer, 100);
- istringstream is(buffer);
- string s1, s2, s3;
- is >> s1 >> s2 >> s3;
- if (s1 != " " && s2 != " " && s3 != " ")
- number++;
- }
- file1.close();
- return number;
- }
-
- void Recite::delete_word() {
- query_all(); //显示所有的记录
- string str;
- clock_t startTime, endTime;
- cout << "请输入想要删除的单词:";
- cin >> str;
- startTime = clock();
- file.open("生词本.txt", ios::in);
- char buffer[100];
- string str1[100], str2[100], str3[100];
- int i = 0;
- while (!file.eof()) {
- file.getline(buffer, 100);
- istringstream is(buffer);
- string s1, s2, s3;
- is >> s1 >> s2 >> s3;
- if (s1 != str && s1 != "" && s2 != "" && s3 != "") {
- str1[i] = s1;
- str2[i] = s2;
- str3[i] = s3;
- i++;
- }
- }
- file.close();
- file.open("生词本.txt", ios::out | ios::trunc); //以截断方式打开文件,清空所有内容
- for (int j = 0; j < i; j++) {
- file << str1[j] << " " << str2[j] << " " << str3[j] << " " << endl;
- }
- file.close();
- endTime = clock();
- cout << "删除成功,用时:" << (double) (endTime - startTime) / CLOCKS_PER_SEC << " s" << endl;
- }
-
- void Recite::recite_word() {
- file.open("生词本.txt", ios::in | ios::out);
- if (file.is_open() == 1) {
- clock_t startTime, endTime;
- //遍历后将单词拷贝至内存
- string word[100], cha[100], trans[100], str;
-
- char buffer[100];
- int i = 0;
- while (!file.eof()) {
- file.getline(buffer, 100);
- istringstream is(buffer);
- string s1, s2, s3;
- is >> s1 >> s2 >> s3;
- if (s1 != "" && s2 != "" && s3 != "") {
- word[i] = s1;
- cha[i] = s2;
- trans[i] = s3;
- i++;
- }
- }
- int number = i;
- cout << "本次需要复习的单词数量是:" << number << endl;
- system("pause");
- system("cls");
- int num_of_recite[100]; //记录需要背诵单词的次数,一开始都是1
- for (int k = 0; k < 100; k++)
- num_of_recite[k] = 1;
- int sucessful = 0; //判断单词是否背完了,背完了就是1,没有背完就是0
- if (number == 0)
- sucessful = 1;
- int num = 0;
- startTime = clock();
- while (sucessful == 0) {
- for (int j = 0; j < i; j++) {
- if (num_of_recite[j] != 0) {
- cout << "中文意思:" << trans[j] << " " << cha[j] << endl;
- cout << "请输入单词:";
- cin >> str;
- if (str == word[j]) {
- cout << "正确!";
- num_of_recite[j]--;
- system("pause");
- system("cls");
- num++;
- if (num == number)
- sucessful = 1;
- } else {
- cout << "错误,正确答案是:" << word[j];
- num_of_recite[j]++;
- system("pause");
- system("cls");
- }
- }
- }
- }
- endTime = clock();
- cout << "恭喜你背完啦~~,用时:" << (double) (endTime - startTime) / CLOCKS_PER_SEC << " s" << endl;
- //背完单词后清空单词表
- file.close();
- file.open("生词本.txt", ios::out | ios::trunc);
- file.close();
- //然后写入日志
- file.open("背词历史.log", ios::out | ios::app);
- SYSTEMTIME st = {0};
- GetLocalTime(&st);
- file << st.wYear << "-" << st.wMonth << "-" << st.wDay << " " << st.wHour << ":" << st.wMinute << ":"
- << st.wSecond << endl;
- for (int j = 0; j < i; j++) {
- file << word[j] << " " << cha[j] << " " << trans[j] << endl;
- }
- file.close();
- } else {
- cout << "生词表为空,先加入生词再背诵吧" << endl;
- return;
- }
- }
-
- void Recite::update_log() {
-
- cout << "新增的内容:" << endl;
- cout << "1.新增背词功能,在背诵完生词后生词会自动从生词表删除,并且添加到背词历史中" << endl;
- cout << "2.新增历史生词查询功能,可以根据当天的年与日查询背诵完的生词" << endl;
- }
-
- void Recite::run() {
- cout << "------------------------------" << endl;
- cout << "|欢迎使用大家一起背单词 |" << endl;
- cout << "|1.添加生词 |" << endl;
- cout << "|2.显示所有生词 |" << endl;
- cout << "|3.精确查词 |" << endl;
- cout << "|4.删除生词表中的词 |" << endl;
- cout << "|5.背生词 |" << endl;
- cout << "|6.查询背诵历史 |" << endl;
- cout << "|7.更新日志 |" << endl;
- cout << "|8.退出 |" << endl;
- cout << "------------------------------" << endl;
- cout << "请输入需要服务的序号:";
- int i;
- cin >> i;
- while (i != 8) {
- switch (i) {
- case 1:
- system("cls");
- insert_word();
- break;
- case 2:
- system("cls");
- query_all();
- break;
- case 3:
- system("cls");
- query_exact();
- break;
- case 4:
- system("cls");
- delete_word();
- break;
- case 5:
- system("cls");
- recite_word();
- break;
- case 6:
- system("cls");
- query_by_time();
- break;
- case 7:
- system("cls");
- update_log();
- break;
- case 8:
- break;
- default:
- cout << "对应数字的服务不存在,请重新输入" << endl;
- break;
- }
- system("pause");
- system("cls");
- cout << "------------------------------" << endl;
- cout << "|欢迎使用背词宝version1.1 |" << endl;
- cout << "|1.添加生词 |" << endl;
- cout << "|2.显示所有生词 |" << endl;
- cout << "|3.精确查词 |" << endl;
- cout << "|4.删除生词表中的词 |" << endl;
- cout << "|5.背生词 |" << endl;
- cout << "|6.查询背诵历史 |" << endl;
- cout << "|7.更新日志 |" << endl;
- cout << "|8.退出 |" << endl;
- cout << "------------------------------" << endl;
- cout << "请输入需要服务的序号:";
- cin >> i;
- }
- }
-
- int main() {
- Recite r;
- r.run();
-
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。