个人备忘录个人备忘录
一:需求分析
1.课程设计名称:
个人备忘录管理系统
2(设计类容:
编写一个简单的个人备忘录程序,帮助管理日常事务。
3.程序设计要求:
运用面向对象的程序设计方法,要求选择动态数组类模板或链表类模板,任务中
要运用I/O流对象对文件进行读写操作。
4(需求原因:随着生活水平的提高,人们的生活节奏越来越快,每天都要处理很多事情,而
又会常常因忘记处理重要的事情而苦恼。鉴于此,本系统主要为了更好地管理个人的备忘录,
让使用者的生活井然有序,不会忘记重要的会议和约会。
功能实现:
(1)界面
※...
个人备忘录
一:需求分析
1.课程
名称:
个人备忘录管理系统
2(设计类容:
编写一个简单的个人备忘录程序,帮助管理日常事务。
3.程序设计要求:
运用面向对象的程序设计方法,要求选择动态数组类模板或链
类模板,任务中
要运用I/O流对象对文件进行读写操作。
4(需求原因:随着生活水平的提高,人们的生活节奏越来越快,每天都要处理很多事情,而
又会常常因忘记处理重要的事情而苦恼。鉴于此,本系统主要为了更好地管理个人的备忘录,
让使用者的生活井然有序,不会忘记重要的会议和约会。
功能实现:
(1)界面
※※※※※※※※※※※※※※※※※※※※
?个人备忘录?
?菜单?
?******1---添加信息4---查询信息******?
?******2---存储信息5---修改信息******?
?******3---显示信息6---删除信息******?
?******7---退出程序 ******?
※※※※※※※※※※※※※※※※※※※※
(2)功能
1) 添加:即增加一条信息到备忘录中;
2) 显示:即在屏幕上显示所有备忘录中的信息。
3) 存储:即将备忘录信息保存在一个文件中。
4) 装入:即将文件中的信息读入程序。
5) 查询:可根据日期查找备忘信息,若找到,显示在屏幕上。 6) 修改:可修改某日的备忘信息。
4. 测试数据
程序应输入不少于10个人员的通讯录信息,应考虑到人员可以同名的情况。
一、 算法设计
1. 设计思想:
(1)定义一个备忘录类(BWL),将备忘录所包含的信息(时间、内容)设定为类BWL
的对象,便于赋值以及调用。
(2)函数的框架图
主体框架图
主菜单(nemu)
票
据票据图 使显退查存修删添 用示出询储改除加)utilize 信系信信信信信
息统息息息息息
)
2. 设计表示:
(1) 主菜单(menu):
显示各项程序功能,通过此,用户可以根据自己所需进行选择。
程序代码:
void main()
{
int t;
BWL bwl;
do{
cout<<"※※※※※※※※※※※※※※※※※※※※"<
>t;
switch(t)
{
case 1:bwl.creatBWL();break;
case 2:bwl.saveBWL();break;
case 3:bwl.showBWL();break;
case 4:bwl.findBWL();break;
case 6:bwl.deleteBWL();break;
case 5:bwl.correctBWL();break;
}
if(t==7)
break;
}
while(1);
}
按1键,进入添加功能;按2键,进入存储功能;按3键,进入显示功能;
按4键,进入查询功能;按5键,进入修改功能;按6键,进入删除功能;
按7键,退出系统。
(2) 添加信息(menu1)
void BWL::creatBWL()//创建信息
{
cout<<"请依次输入备忘录时间和内容:"<>timeBWL;
cout<<"备忘录内容:";
cin>>contentBWL;
saveBWL();//调用函数,对信息进行保存
cout<<"备忘录已经保存~"<>t;
ifstream f1("beiwanglu.txt"); //以读方式打开文件
//创建链表并从文件中读取备忘录信息
q=new BWL;
head=q;
f1>>time>>content;
q->Install(time,content);
while(!f1.eof())
{
p=new BWL;
f1>>time>>content;
p->Install(time,content);
q->next=p;
q=p;
}
q->next=NULL;
f1.close(); //关闭文件
p=head;
while(p!=NULL)
{
if(strcmp(p->retime(),t)==0)//如果t恰好等于p
{
cout<display();
cout<<"您所要查看的备忘录已显示~"<next;//否则将p往后移一个节点,进行查找
}
if(p=NULL)//如果为空
cout<<"这个时间没有备忘录~"<>t;
ifstream f1("beiwanglu.txt"); //以读方式打开文件
//创建链表并从文件中读取备忘录信息
q=new BWL;
head=q;
f1>>time>>content;
q->Install(time,content);
while(!f1.eof())
{
p=new BWL;
f1>>time>>content;
p->Install(time,content);
q->next=p;
q=p;
}
q->next=NULL;
f1.close(); //关闭文件
p=head;
while(p!=NULL)
{
if(strcmp(p->retime(),t)==0)//先进行查找
{
cout<display();
cout<<"请输入新的备忘录信息:"<>time;
cout<<"备忘录内容:"<>content;
p->Install(time,content);
ofstream f2("beiwanglu.txt"); //以写方式打开文件
//向文件中写入修改后的备忘录信息,并进行保存
p=head;
while(p!=NULL)
{
f2<retime()<recontent()<next;
}
f2.close(); //关闭文件
cout<<"备忘录信息修改完毕"<next;//若找不到,则将p的下一个结点赋给p,进行循环查找
}
if(p==NULL)
cout<<"无此备忘录信息"<>t;
ifstream f1("beiwanglu.txt"); //以读方式打开文件
//创建链表并从文件中读取备忘录信息
q=new BWL;//用new开辟一个新节点
head=q;//把q的值赋给head
f1>>time>>content;//从键盘输入信息
q->Install(time,content);
while(!f1.eof())
{
p=new BWL;//又开辟一个新节点
f1>>time>>content;
p->Install(time,content);
q->next=p;//将p的值赋给q->next
q=p;//使指q向刚刚建立的节点
}//以此循,创建链表
q->next=NULL;//直到为空时,不再执行循环
f1.close(); //关闭文件
//查找结点
p=head;
while(p!=NULL)//如果不为空
{
if(strcmp(p->retime(),t)==0)//找到了所需要的结点
{
cout<display();
if(p==head)//如果指向的是表头结点
{
head = head->next; //把第二个结点的地址赋给head;
}
else
{
q->next=p->next;//否则把p的下一个结点赋给q的下一个结点,循环查找,
删除p
}
delete p;
cout<<"备忘录已被删除~"<next;//把p向后移一个结点,将p->next赋给p ,进行循环查找
}
}
if(p==NULL)//如果p不为空
cout<<"这段时间没有备忘录~"<retime()<<' '<recontent()<next;
}
f2.close();//关闭文件
}
创建链表并把已打开文件的信息存入链表内,输入要删除的备忘录时间,查找时间,把这个节点删除。
二、 用户
1,需添加信息的用户,请进入添加信息项
2,需存储信息的用户,请进入存储信息项;
3,需显示信息的用户,请进入显示信息项;
4,需查询信息的用户,请进入查询信息项;
5需修改信息的用户,请进入修改信息项;
6,需删除信息的用户,请进入删除信息查询;
四、调试及测试
调试:程序编完后后调试时出现了一些问,平时编程时不怎么注意,粗心,结果不是这里丢了分号就是那里括号,有的地方多了一点,有的少了一点,碰到稍微大一点的问题是在开始定义指针变量时我把姓名、时间、信息都定义为一个指针,到了它们调用时才分别定义,结果在程序运行时显示的是零错误零警告,但是在修改操作时无法修改,经过改正后程序可以正常运行。
五、小结
通过此次C++实验课程设计,不仅加深了我对C++程序设计语言的了解,并且很大程度上锻炼了我的逻辑思维力。有不太懂的时候,就查阅一些书本、网络资料,这样不仅能够加深以前所学的知识,也掌握了一些自己尚且欠缺的知识和技巧,更让我对所学的知识有了系统的认识和理解。而且在探索中掌握了解决实际问题的能力。理解到光靠想然的是不行的,只有自己切实的动手才能提高自己。并且在学习的过程中我也发现了自己的一些毛病,一些平时不注意的问题在实验的过程中暴露无疑,并且理解到平时编程时不注意的一些小问题到了现在竟成了大问题,而且还不易发现,这更提醒了我编程是一件严肃的事,马虎不得,要养成好的编程的习惯,这样才能少犯错误,而且面对问题一味独立思考不是最好的办法,可以向同学或老师请教,相互协作,仔细研究,这样更能锻炼团队意识,对以后很有帮助。
六、参考文献
[1](郑莉 等编著《C++语言程序设计(第三版)》北京:清华大学出版社 [2](郑莉 等编著《C++语言程序设计(第三版)学生用书》北京: 清华大学出版社 [3](李春葆 等编著《C++程序设计学习与上机实验指导》 北京:清华大学出版社 [4](范辉 等编著《Visual C++6.0程序设计简明教程》 高等教育出版社 [5](李龙澍《C++程序设计实训教程》北京:清华大学出版社
[6](洪国胜 等编著 《C++ Builder程序设计轻松上手》北京:清华大学出版社
[7](严蔚敏等 《数据结构(c语言版)》 北京:清华大学出版社,1997年4月第1版。
[8](胡学钢等《数据结构算法设计指导》北京:清华大学出版社,1999年 第1版。
附录一 源程序清单
#define beiwanglu_h//定义头文件
#include #include
#include #include//定义输出输入流
#include
using namespace std; class BWL
{
public:
BWL(){}//构造函数
void creatBWL();//新建一个信息
void showBWL();//显示所有的信息
void correctBWL();//修改信息
void deleteBWL();//删除信息
void findBWL();//查找信息
void saveBWL();//保存
void Install(char time[],char content[])//设置时间,内容
{
strcpy(timeBWL,time);
strcpy(contentBWL,content);
}//存储信息至链表
char *retime()//返回时间
{
return timeBWL;
}
char *recontent()//返回内容
{
return contentBWL;
}
void display()//显示
{
cout<>timeBWL;
cout<<"备忘录内容:";
cin>>contentBWL;
saveBWL();//调用函数,对信息进行保存
cout<<"备忘录已经保存~"<>t;
ifstream f1("beiwanglu.txt"); //以读方式打开文件
//创建链表并从文件中读取备忘录信息
q=new BWL;//用new开辟一个新节点
head=q;//把q的值赋给head
f1>>time>>content;//从键盘输入信息
q->Install(time,content);
while(!f1.eof())
{
p=new BWL;//又开辟一个新节点
f1>>time>>content;
p->Install(time,content);
q->next=p;//将p的值赋给q->next
q=p;//使指q向刚刚建立的节点
}//以此循,创建链表
q->next=NULL;//直到为空时,不再执行循环
f1.close(); //关闭文件
//查找结点
p=head;
while(p!=NULL)//如果不为空
{
if(strcmp(p->retime(),t)==0)//找到了所需要的结点
{
cout<display();
if(p==head)//如果指向的是表头结点
{
head = head->next; //把第二个结点的地址赋给head;
}
else
{
q->next=p->next;//否则把p的下一个结点赋给q的下一个结点,循环查找,删除p
}
delete p;
cout<<"备忘录已被删除~"<next;//把p向后移一个结点,将p->next赋给p ,进行循环查找
}
}
if(p==NULL)//如果p不为空
cout<<"这段时间没有备忘录~"<retime()<<' '<recontent()<next;
}
f2.close();//关闭文件
}
void BWL::showBWL()//显示信息
{
ifstream f2("beiwanglu.txt",ios::in);//以读的方式打开文件
//在使用文件时,要检查文件是否可用
if(!f2)
{
cout<<"文件不存在"<>t;
ifstream f1("beiwanglu.txt"); //以读方式打开文件
//创建链表并从文件中读取备忘录信息
q=new BWL;
head=q;
f1>>time>>content;
q->Install(time,content);
while(!f1.eof())
{
p=new BWL;
f1>>time>>content;
p->Install(time,content);
q->next=p;
q=p;
}
q->next=NULL;
f1.close(); //关闭文件
p=head;
while(p!=NULL)
{
if(strcmp(p->retime(),t)==0)//如果t恰好等于p
{
cout<display();
cout<<"您所要查看的备忘录已显示~"<next;//否则将p往后移一个节点,进行查找
}
if(p=NULL)//如果为空
cout<<"这个时间没有备忘录~"<>t;
ifstream f1("beiwanglu.txt"); //以读方式打开文件
//创建链表并从文件中读取备忘录信息
q=new BWL;
head=q;
f1>>time>>content;
q->Install(time,content);
while(!f1.eof())
{
p=new BWL;
f1>>time>>content;
p->Install(time,content);
q->next=p;
q=p;
}
q->next=NULL;
f1.close(); //关闭文件
p=head;
while(p!=NULL)
{
if(strcmp(p->retime(),t)==0)//先进行查找
{
cout<display();
cout<<"请输入新的备忘录信息:"<>time;
cout<<"备忘录内容:"<>content;
p->Install(time,content);
ofstream f2("beiwanglu.txt"); //以写方式打开文件
//向文件中写入修改后的备忘录信息,并进行保存
p=head;
while(p!=NULL)
{
f2<retime()<recontent()<next;
}
f2.close(); //关闭文件
cout<<"备忘录信息修改完毕"<next;//若找不到,则将p的下一个结点赋给p,进行循环查找
}
if(p==NULL)
cout<<"无此备忘录信息"<>t;
switch(t)
{
case 1:bwl.creatBWL();break;
case 2:bwl.saveBWL();break;
case 3:bwl.showBWL();break;
case 4:bwl.findBWL();break;
case 6:bwl.deleteBWL();break;
case 5:bwl.correctBWL();break;
}
if(t==7)
break;
}
while(1);
}
附录二 运行结果截图
}
本文档为【个人备忘录】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。