备忘录任务提醒系统设计.docx
《备忘录任务提醒系统设计.docx》由会员分享,可在线阅读,更多相关《备忘录任务提醒系统设计.docx(30页珍藏版)》请在冰点文库上搜索。
![备忘录任务提醒系统设计.docx](https://file1.bingdoc.com/fileroot1/2023-5/11/08f0732f-5fa5-4f4f-8716-72e4b0522908/08f0732f-5fa5-4f4f-8716-72e4b05229081.gif)
备忘录任务提醒系统设计
1.系统需求分析
1.1系统设计的目的与意义:
现在学校的学生学习任务较多,各样的考试也比较频繁,因此需要一个备忘录任务提醒系统来对学生的学习任务和考试时间进行管理。
1.2系统功能需求:
本系统有一个类,Memorandum类,存储任务的年、月、日、序号、内容。
有任务信息显示、任务信息添加、任务信息查询、任务信息修改、学生成绩信息删除以及显示系统当前时间等功能。
2.总体设计
2.1系统功能分析:
系统通过调用函数来实现任务信息显示、任务信息添加、任务信息查询、任务信息修改、任务信息删除以及显示系统当前时间等功能。
insert()函数用于录入任务信息;modify()函数用来修改任务信息内容;display()函数用于显示所有已有的任务记录;dele()函数用来删除已有的任务信息;seek()函数用来查询任务信息;TIME()函数用来显示系统当前时间;主函数main()用于调用这些函数。
2.2系统功能模块划分与设计:
本系统定义了Memorandum类这个类,定义了insert()、modify()、display()、dele()、seek()、print()及TIME()等函数来实现系统所需功能。
2.3系统功能模块图:
开机动画
今日提醒
任务添加
备忘录
任务查询
任务修改
修改
返回主菜单
3.详细设计
3.1任务信息类的设计:
该类定义了五个字符数组分别用来存放年、月、日、序号、内容,定义了显示函数。
图3.1
4.系统调试
4.1在调试过程中,出现了下面一些错误:
1、输入数据时,输错了数据的类型会造成死循环,因此输入时需要注意。
2、一开始主界面输入非正确字母时,没有提示错误。
容易造成用户误解,在主函数的switch语句结束处加上default:
cout<<"选择错误,请从新选择!
";就可以了。
4.2具体调试过程:
今日提醒
主界面
备忘录
任务显示
任务添加
任务查询
任务修改
任务删除
5.结果分析
程序设计了类与对象,满足了课题对类的要求,在设计的过程中,建立了较为清晰的类层次,也利用了面向对象的方法以及C++的编程思想来完成系统的设计,做到了利用函数存储任务信息、添加任务信息进文件、修改信息、查询信息、删除信息显示文件中存储的已有的信息等要求。
而且界面简洁,容易操作。
但是程序太长,不够简练,导致出现错误很难发现和修改。
6.总结
对于算术运算符、关系运算符和逻辑运算符的应用有的深刻的体会。
加强学习了文件的各种应用、数据结构的应用以及模块化程序设计的相关知识。
熟悉使用计算机环境MicrosoftVisualC++6.0,经过运行和调试得到了想要的结果—“备忘录任务提醒系统”,有任务信息显示、任务信息添加、任务信息查询、任务信息修改、学生成绩信息删除以及显示系统当前时间等功能。
但也存在一些问题。
对C++语言在编写程序时的用处有了更明确的认识,懂得了编写C++程序的一般方法方步骤。
最大的收获是明白了编写程序时一定要有信心和勇气,要相信自己一定可
以把这个程序编写出来。
分析问题做出算法,想好思路,在心里有个大致的框架,然后按部就班的记下自己想到的每一点内容,把写下的东西认真整理,查缺补漏,把一些细节的地方补上,就这样一个貌似很难的程序就写出来了,其实编程并不难,关键是要投入,要钻到里面去。
下一步就是读程序了,读程序时一定要小心仔细,一条语句一条语句的读,看是否能输出自己想要输出的结果,如果发现错误要马上改过来,再接着向下读,直到把程序调试的完美无缺为至。
这次的课程设计,真是让我充分的感觉到了要自己设计一个程序是多么的难,以及学习好c++是多么的重要。
在这个程序的设计过程中,我清楚的意识到自己的水平有多么的薄弱,课程的知识学得有多么的不扎实。
看网上的例子好像觉得也没那么难,自己一上机实际操作就出现了很多问题,调试的时候系统总是在报错,还有很多警告,每增加一个函数就要调试好久,有时候应为少了一个大括号或是分号,导致要找很久很久。
虽然系统可以运行,也具有了一些基本的功能,但我意识到了自己有太多的不足。
以后还会有很多的课程设计,一定要吸取这次的教训,把知识学懂学透学精,真正的为我所用,这样走上社会我才能真正的发挥所长。
7.程序代码
#include
#include
#include
#include
#include
#include
#include
usingnamespacestd;
#defineA49//A--1
#defineB50//B--2
#defineC51//C--3
#defineD52//D--4
#defineE53//E--5
#defineF54//F--6
//-------------------------------------备忘录的函数声明-------------------------------------------
#defineN10000//最大信息字数
voiddisplay();//显示信息函数
voidinsert();//添加信息函数
voidseek();//查询信息函数
voidmodify();//修改信息函数
voiddele();//删除信息函数
classMemorandum
{
public:
charyear[10];//年
charmonth[10];//月
charday[10];//日
charnum[20];//序号
charmessege[1000];//内容信息
}memo[N];
intk=1,n;
voidprint(inti)
{
printf("\t\t%s\t%s\t%s\t%s\t%s\n",memo[i].year,memo[i].month,memo[i].day,memo[i].num,memo[i].messege);
}
//--------------------------------------菜单函数声明----------------------------------------------
voidmenu();
voidmenuMemorandum();
voidmovie();
voidrunMain(char);
//------------------------------------<函数声明>-----------------------------------------------
voidbuffer(int);//延时
voidTIME();
//------------------------------------<一级菜单>-----------------------------------------------
voidmenu()
{
system("cls");//调用DOS清屏命令
cout<<"☆☆☆备忘录任务提醒系统☆☆☆"<cout<<"********************************************************************************"<cout<<"---13软件工程一班彭路"<TIME();
cout<<"\n欢迎使用\n"<cout<<"============================================================="<cout<<"=******************************************="<cout<<"=***************1.备忘录***************="<cout<<"=***************2.退出系统***************="<cout<<"=******************************************="<cout<<"============================================================="<}
//------------------------------------<二级菜单备忘录>-----------------------------------------------
voidmenuMemorandum()//二级菜单备忘录
{
charch;
loop:
system("cls");//调用DOS清屏命令
cout<<"☆☆☆备忘录任务提醒系统☆☆☆"<cout<<"********************************************************************************"<TIME();
cout<<"\n备忘录"<cout<<"============================================================="<cout<<"=******************************************="<cout<<"=**************1.显示所有信息**************="<cout<<"=**************2.添加备忘录****************="<cout<<"=**************3.查询备忘录****************="<cout<<"=**************4.修改备忘录****************="<cout<<"=**************5.删除备忘录****************="<cout<<"=**************6.返回主菜单****************="<cout<<"=******************************************="<cout<<"============================================================="<cout<ch=getch();
switch(ch)
{
caseA:
display();
gotoloop;
caseB:
insert();
gotoloop;
caseC:
seek();
gotoloop;
caseD:
modify();
gotoloop;
caseE:
dele();
gotoloop;
caseF:
system("cls");
cout<<"\n\n\n"<cout<<"\t\t\t欢迎您再次使用备忘录任务提醒系统!
\n\n"<cout<cout<<"\t\t\t返回主菜单中请稍等...\n\n"<k=0;
buffer
(2);
break;
default:
gotoloop;
}
}
//-------------------------------------------1.显示所有信息函数-------------------------
voiddisplay()//显示信息函数
{
FILE*fp;
inti=0;
if((fp=fopen("备忘录.dat","r"))==NULL)
{
cout<<"\t\t备忘录不存在!
\n"<getchar();
cout<<"\t请您按回车键返回主菜单!
\n";
getchar();
system("cls");
exit
(1);
}
while(!
feof(fp))
{
fread(&memo[i],sizeof(structMemorandum),1,fp);
i++;
}
fclose(fp);
n=i-1;
if(n==0)
{
cout<<"\t\t备忘录是空的!
\n";
getchar();
cout<<"\t请您按回车键返回主菜单!
\n";
getchar();
system("cls");
return;
}
cout<<"\t\t\t备忘录的全部信息:
\n"<cout<<"\t\t年\t月\t日\t序号\t内容\n"<for(i=0;iprint(i);
getchar();
cout<<"\t此备忘录共有信息为"<cout<<"\t请按回车键返回主菜单!
"<getchar();
system("cls");
}
//-------------------------------------------------2.添加信息函数-----------------------------------
voidinsert()//添加信息函数
{
FILE*fp;
inti=0,j,flag=1,flag1=0;
charc;
if((fp=fopen("备忘录.dat","r"))==NULL)
{
cout<<"\t对不起!
!
!
您还未创建任何文件!
\n\n";
cout<<"\t您确定要新建一个名为‘备忘录.dat’的二进制文件吗?
\n\n";
cout<<"\tY----创建N----不创建";
getchar();
scanf("%c",&c);
if(c=='Y'||c=='y')
{
if((fp=fopen("备忘录.dat","wb+"))==NULL)
{
cout<<"\t\t打开文件错误!
\n";
exit(0);
}
cout<<"\t\t恭喜您创建文件成功!
\n\n";
}
else
{
getchar();
cout<<"\t请您按回车键返回备忘录菜单!
\n\n";
getchar();
system("cls");
return;
}
}
while(feof(fp)==0)
{
fread(&memo[i],sizeof(structMemorandum),1,fp);
i++;
}
fclose(fp);
n=i-1;
i=n;
while
(1)
{
cout<<"\t现在文件中的信息数目为"<flag=1;
while(flag==1)
{
flag=0;
cout<<"\t请您输入第"<
";
scanf("%2s",memo[i].num);
if(memo[i].num[0]=='Q'||memo[i].num[0]=='q')
{
if((fp=fopen("备忘录.dat","wb"))==NULL)
{
cout<<"\t\t\t文件不能打开!
\n";
exit(0);
}
for(i=0;iif(fwrite(&memo[i],sizeof(structMemorandum),1,fp)!
=1)
cout<<"\t\t\t文件保存错误!
\n\n";
fclose(fp);
if(flag1==0){
cout<<"\t您已经退出备忘录信息添加菜单!
\n\n";
cout<<"\t现在文件中的信息数目为"<}
else{
cout<<"\t\t\t恭喜您数据保存成功!
\n\n";
cout<<"\t现在文件中的信息数目为"<}
getchar();
cout<<"\t请您按回车键返回主菜单!
\n";
getchar();
system("cls");
return;
}
for(j=0;j
if(strcmp(memo[i].num,memo[j].num)==0)
{
cout<<"\t该序号已存在请您检查后重新输入!
\n\n";
flag=1;
break;
}
}
cout<<"\t请您输入第"<
scanf("%s",memo[i].year);
cout<<"\t请您输入第"<
scanf("%s",memo[i].month);
cout<<"\t请您输入第"<
scanf("%s",memo[i].day);
cout<<"\t请您输入第"<
scanf("%s",memo[i].messege);
i++;
n=i;
flag1=1;
}
}
//-----------------------------------------------3.查询信息函数---------------------------------
voidseek()//查询信息函数
{
FILE*fp;
inti=0,flag;
charch;
chars1[10],s2[10],s3[10];
if((fp=fopen("备忘录.dat","r"))==NULL)
{cout<<"\t\t备忘录不存在!
\n\n";
getchar();
cout<<"\t\t请您按回车键返回主菜单!
\n";
getchar();
system("cls");
return;
}
while(!
feof(fp))
{
fread(&memo[i],sizeof(structMemorandum),1,fp);
i++;
}
fclose(fp);
n=i-1;
if(n==0){
cout<<"\t\t备忘录是空的!
\n";
getchar();
cout<<"\t\t请您按回车键返回主菜单!
\n";
getchar();
system("cls");
return;
}
system("cls");
cout<<"☆☆☆备忘录任务提醒系统☆☆☆\n";
cout<<"********************************************************************************\n";
TIME();
cout<<"\n查询菜单\n";
cout<<"=============================================================\n";
cout<<"=********************************************=\n";
cout<<"=***************1.按日期查询*****************=\n";
cout<<"=***************2.按序号查询*****************=\n";
cout<<"=***************3.返回主功能菜单*************=\n";
cout<<"=============================================================\n";
cout<<"\t现在文件中的信息数目为"<while
(1){
cout<<"\t请您选择查询菜单编号:
";
scanf("%s",&ch);
flag=0;
switch(ch)
{
caseA:
cout<<"\n\t请您输入要查询的信息的年份:
";scanf("%s",s1);
cout<<"\n\t请您输入要查询的信息的月份:
";scanf("%s",s2);
cout<<"\n\t请您输入要查询的信息的日期:
";scanf("%s",s3);
for(i=0;iif(strcmp(memo[i].year,s1)==0&&strcmp(memo[i].month,s2)==0&&strcmp(memo[i].day,s3)==0)
{
if(flag==0)
cout<<"\t\t年份\t月份\t日期\t序号\t内容\n\n";
print(i);
cout<flag=1;
}
if(flag==0)
cout<<"\t您输入的日期不存在请您重新选择输入!
\n\n";
break;
caseB:
cout<<"\n\t请输入要查询的信息的序号:
";
scanf("%