C++结课报告(简易日程管理系统).doc

上传人:scccc 文档编号:12124647 上传时间:2021-12-02 格式:DOC 页数:24 大小:763.71KB
返回 下载 相关 举报
C++结课报告(简易日程管理系统).doc_第1页
第1页 / 共24页
C++结课报告(简易日程管理系统).doc_第2页
第2页 / 共24页
C++结课报告(简易日程管理系统).doc_第3页
第3页 / 共24页
C++结课报告(简易日程管理系统).doc_第4页
第4页 / 共24页
C++结课报告(简易日程管理系统).doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《C++结课报告(简易日程管理系统).doc》由会员分享,可在线阅读,更多相关《C++结课报告(简易日程管理系统).doc(24页珍藏版)》请在三一文库上搜索。

1、.C+程序设计报告基于命令Win32命令行应用程序的简易日程管理系统12010520033 徐益C+语言程序设计教师:黄鹏宇作者一、问题阐述日程管理就是将每天的工作和事务安排在日期中,并做一个有效的记录,方便管理日常的工作和事务,达到工作备忘的目的。同时也具有对员工日常工作进行指导、监督的作用。电子版的日程管理通常具有定时提醒和共享等功能。通过学习C+课程以及面向对象的程序设计,我发现日程管理中所需的日期、时间、记录等都可以抽象成类,并可以利用函数实现简单的添加、查询功能。由于能力的限制,本次“简易日程管理系统”的设计依旧基于Win32命令行应用程序(MFC好难啃),主要实现的功能有:1、 输

2、入日程;2、 查询全部日程;3、 查询单条日程;4、 修改时间。二、基本设计包括流程图、类关系图、文件关系图。1、流程图2、类关系图包含于包含于3、文件关系图三、源代码SIMPLESCHEDULESYSTEM.CPP#include "stdafx.h"#include<iostream>#include<fstream>#include"record.h"using namespace std;void menue();void addRecord();void getRecord();void changeToday();vo

3、id getRecordAll();ofstream fout(RECORDPATH);Date today(2014, 12, 25);int main()while (true)menue();int n;cin >> n;switch (n)case 1: cout << "n" << endl; addRecord(); cout << "n" << endl; break;case 2: cout << "n" << endl; getRec

4、ordAll(); cout << "n" << endl; break;case 3: cout << "n" << endl; changeToday(); cout << "n" << endl; break;case 4: cout << "n" << endl; getRecord(); cout << "n" << endl; break;case 0:return

5、 0;default: cout << "n" << endl; cout << "输入错误"<<endl; cout << "n" << endl; break;cout << "按任意键继续"getchar();getchar();fout.close();return 0;void menue()cout << "*" << endl;cout << "|*|&

6、quot; << endl;cout << "| |" << endl;cout << "| 简易日程管理系统 |" << endl;cout << "| |" << endl;cout << "| 1 : 输入日程 |" << endl;cout << "| |" << endl;cout << "| 2 : 全部日程 |" <

7、;< endl;cout << "| |" << endl;cout << "| 3 : 修改当前日期 |" << endl;cout << "| |" << endl;cout << "| 4 : 查询日程 |" << endl;cout << "| |" << endl;cout << "| 0 : 退出 |" << end

8、l;cout << "| |" << endl;cout << "| |" << endl;cout << "|*|" << endl;cout << "*" << endl;cout << " " << endl;cout << "今天是" << today.getDate() << endl;cout <<

9、 " " << endl;cout << " " << endl;cout << "请选择:" << endl;cout << " " << endl;void addRecord()string date, s_time, e_time, content;char ch;int n;cout << "*" << endl;cout << "*输入日程*"

10、<< endl;cout << "*" << endl;cout << "需输入的记录数:" << endl;cin >> n;for (int i = n; i > 0;i-)cout << "请输入日期(格式为*/*/*):" << endl;cin >> date;cout << "请输入开始时间(格式为*:*):" << endl;cin >> s_time;

11、cout << "请输入结束时间(格式为*:*):" << endl;cin >> e_time;cout << "请输入事件内容:" << endl;cin >> content;Record rec(date, s_time, e_time, content);cout << "*" << endl;cout << rec.getRecord() << endl;today.earlyDate(rec.getDa

12、te();cout << "*" << endl;cout << "是否确认?(y/n):" << endl;cin >> ch;if (ch = 'y') fout << rec.getRecord() << endl;cout << "*输入成功*" << 'n' << endl;else i+;/rec.Record();void getRecord()string date_s

13、;bool isFind = false;cout << "*" << endl;cout << "*查询日程*" << endl;cout << "*" << endl;cout << "请输入日期(格式为*/*/*):" << endl;cin >> date_s;cout << "*" << endl;Date date(date_s);ifstream fi

14、n(RECORDPATH);for (string str; getline(fin, str);)int y, m, d;char ch;istringstream sin(str);sin >> y;sin >> ch;sin >> m;sin >> ch;sin >> d;if (date.getYear() = y&&date.getMonth() = m&&date.getDay() = d)cout << str<<endl;today.earlyDate(date)

15、;isFind = true;if (!isFind) cout << "没有记录" << endl;cout << "*" << endl;void getRecordAll()cout << "*" << endl;cout << "*全部日程*" << endl;cout << "*" << endl;ifstream fin(RECORDPATH);for (strin

16、g str; getline(fin, str);)cout << str << endl;cout << "*" << endl;void changeToday()string date;cout << "请输入日期(格式为*/*/*):" << endl;cin >> date;today.set(date);cout << "*设置成功*" << endl;MYDATE.H#ifndef MYDATE_H#define

17、MYDATE_H#include <iostream>#include <iomanip>#include <stdlib.h>using namespace std;class Dateint year, month, day;public:void set(int y, int m, int d);void set(string s);Date()Date(int y, int m, int d);Date(string s);int getYear() return year; int getMonth() return month; int getD

18、ay() return day; string getDate();bool isLeapYear()const;bool isLate(Date date);void print()const;void addDay(int n);int earlyDate(Date date);Date:Date(int y, int m, int d)year = y; month = m; day = d;/-Date:Date(string s)year = atoi(s.substr(0, 4).c_str();month = atoi(s.substr(5, 2).c_str();day = a

19、toi(s.substr(8, 2).c_str();/-void Date:set(int y, int m, int d)year = y; month = m; day = d;/-void Date:set(string s)year = atoi(s.substr(0, 4).c_str();month = atoi(s.substr(5, 2).c_str();day = atoi(s.substr(8, 2).c_str();/-inline bool Date:isLeapYear()constreturn (year % 4 = 0 && year % 100

20、 != 0) | (year % 400 = 0);/-inline void Date:print()constcout << setfill('0');cout << setw(4) << year << '/' << setw(2) << month << '/' << setw(2) << day << endl;cout << setfill(' ');/-void Date:addDay(

21、int n)for (int i = n; i > 0; i-)day+;switch (month)case 4:;case 6:;case 9:;case 11:if (day>30) day = 1; month+; break;case 12:if (day>31) day = 1; month = 1; year+; break;case 2:if (isLeapYear() && day>29) | day>28) day = 1; month+; break;default:if (day>31) day = 1; month+

22、; break;/-string Date:getDate()stringstream ss;ss << setw(4) << setfill('0') << year << "/" << setw(2) << setfill('0') << month << "/" << setw(2) << setfill('0') << day;string str = ss.str()

23、;/ss.stringstream();return str;bool Date:isLate(Date date)if (year > date.year) return true;else if (year = date.year)if (month > date.month) return true;else if (month = date.month)if (day > date.day) return true;return false;int Date:earlyDate(Date date)if (isLate(date)cout << "

24、;已过期" << endl;return -1;elseint i = 0;Date da(year,month,day);for (; date.isLate(da); i+)da.addDay(1);cout << "距今还有" << i << "天" << endl;#endifMYTIME.H#ifndef MYTIME_H#define MYTIME_H#include <iostream>#include <iomanip>#include <

25、stdlib.h>using namespace std;class Timeint hour, minute;public:Time()Time(int h, int m);Time(string s);void set(int h, int m);void set(string s);void print()const;string getTime();Time:Time(int h, int m)hour = h; minute = m;/-Time:Time(string s)hour = atoi(s.substr(0, 2).c_str();minute = atoi(s.s

26、ubstr(3, 2).c_str();/-void Time:set(int h, int m)hour = h; minute = m;/-void Time:set(string s)hour = atoi(s.substr(0, 2).c_str();minute = atoi(s.substr(3, 2).c_str();/-inline void Time:print()constcout << setfill('0');cout << setw(2) << hour << ':' << s

27、etw(2) << minute;cout << setfill(' ');/-string Time:getTime()stringstream ss;ss << setw(2) << setfill('0') << hour << ":" << setw(2) << setfill('0') << minute;string str = ss.str();/ss.stringstream();return str;/

28、-#endifRECORD.H#ifndef RECORD_H#define RECORD_H#include <iostream>#include <iomanip>#include <stdlib.h>#include <string>#include <sstream>#include "myDate.h"#include "myTime.h"#define RECORDPATH "record.txt"using namespace std;class RecordD

29、ate date;Time s_time;Time e_time;string content;public:Record(string da, string start, string end, string con);void input();void print();string getRecord();Date getDate() return date; ;Record:Record(string da, string start, string end, string con)date.set(da);s_time.set(start);e_time.set(end);conten

30、t = con;void Record:input()ofstream fout(RECORDPATH);fout.seekp(ios:end);fout << date.getDate() << ' ' << s_time.getTime() << "to" << e_time.getTime() << ' ' << content << endl;fout.close();/fout.basic_ofstream();string Record

31、:getRecord()stringstream ss;ss << date.getDate() << ' ' << s_time.getTime() << "to" << e_time.getTime() << ' ' << content;string str = ss.str();/ss.stringstream();return str;#endif四、演示流程开始界面选择输入日程输入记录全部日程修改时间查询日程退出退出后的RECORD.TXT文件五、问题反思这次作业本来是想尝试用MFC完成,后来发现部分控件的使用太困难,而时间也不够多,最后还是放弃了。在设计过程中,遇到最大的问题是如何进行数据储存。正如上面说到的MFC,我也没有足够的时间学习SQL,到最后还是决定用最熟悉的txt还是由于时间原因,数据的排序等一些深层处理都没能实现,应该算是比较遗憾吧。只能说课程中学习到的C+知识还是十分不足的,要解决一些复杂的实际问题还需要深层次的学习。最后还是希望老师多给点分吧(_)西安电子科技大学13010520033 徐益2014年12月22日凌晨.;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1