博客文章管理系统设计大学毕设论文.docx
《博客文章管理系统设计大学毕设论文.docx》由会员分享,可在线阅读,更多相关《博客文章管理系统设计大学毕设论文.docx(12页珍藏版)》请在冰点文库上搜索。
![博客文章管理系统设计大学毕设论文.docx](https://file1.bingdoc.com/fileroot1/2023-5/10/72d5a693-1b77-4c6c-b0b8-ab9809f1dfbb/72d5a693-1b77-4c6c-b0b8-ab9809f1dfbb1.gif)
博客文章管理系统设计大学毕设论文
博客文章管理系统
一.需求分析
本次课程设计需要实现的是——博客文章管理系统。
经过初步研究调查,博客文章项目多种多样,有小说、散文、诗歌等。
各项研究的人员也是不同的,各项文章投入的内容各有差异。
所以初步设定文章的属性有编号、文章名和文章类别等等。
文章项目被不断的研究出来,所以系统需要实现录入与删除功能。
读者对文章研究项目需要进行选择,系统必须相应的实现查询与排序的功能。
最后,文章项目被确定以后,系统需要把数据从内存中写入硬盘,实现输入输出功能。
系统简单流程:
博客文章管理系统:
1.理顺和规范文章信息的查询和数据保存。
2.提供集成的信息系统,实现业务数据和资料的共享。
3.由于数据的处理由系统自动完成,准确性与及时性大大提高,分析手段更加规范和多样,不但减轻了工作强度,还将促进博客管理人员从繁琐的事务处理中解放出来,用更多的时间研究文章的分类和更高效的管理,研究并运用现代管理方法改进博客文章信息管理,促进现代管理方法在文章管理中的广泛应用。
博客文章系统各功能模块:
1、登记入录函数;2、输出显示函数;3、保存数据函数;4、删除函数;5修改函数;6、查询函数(内分:
按编号查询、按发布日期查询、按文章名查询、退出查询);7退出函数
2.系统设计和实现
a)系统研究项目类
系统研究项目类中,ID是文章编号,Name是文章名称,Time是发布日期等等。
研究项目整个类中包含一个输出函数。
所有数据成员与函数成员均为公有类型。
classcBlogarticle
+ID[BUFSIZE]:
char//文章编号
+Name[BUFSIZE]:
char//文章名称
+Time[BUFSIZE]:
char//发布日期
+Function[BUFSIZE]:
char//主要内容
+StayTime:
int//有效期
+Recommendedindex:
double//推荐指数
+flay:
bool//标志
+cBlogarticle()//构造函数初始化
b)设定的界面
博客文章管理系统
————————————————————————————
1:
文章信息添加
2:
文章信息显示
3:
文章信息保存
4:
文章信息删除
5:
文章信息修改
6:
文章信息查询
7:
退出系统
你选择
c)关键代码的分析
(1)读取数据库
voidReadData(tList*tListMedic)//读取数据库
{
charbuf[BUFSIZE];
ifstreamifile("Blogarticle.txt",ios_base:
:
in);//创建一个输出文件流对象
if(!
ifile)
{
cerr<<"读取时打开文件出错!
"<}
cBlogarticleBlogarticle;
while(ifile.getline(buf,BUFSIZE))//遍历文本,读取数据
{
ifile.getline(buf,BUFSIZE);
strcpy(Blogarticle.ID,buf);//读取文章编号
memset(buf,0,BUFSIZE);
ifile.getline(buf,BUFSIZE);//读取文章名
strcpy(Blogarticle.Name,buf);
memset(buf,0,BUFSIZE);
ifile.getline(buf,BUFSIZE);//读取发布日期
strcpy(Blogarticle.Time,buf);
memset(buf,0,BUFSIZE);
ifile.getline(buf,BUFSIZE);//读取类别
strcpy(Blogarticle.Style,buf);
memset(buf,0,BUFSIZE);
file.getline(buf,BUFSIZE);//读取主要内容
strcpy(Blogarticle.Function,buf);
memset(buf,0,BUFSIZE);
ifile.getline(buf,BUFSIZE);//读取有效期
Blogarticle.StayTime=atoi(buf);
memset(buf,0,BUFSIZE);
ifile.getline(buf,BUFSIZE);//读取推荐指数
Blogarticle.Recommendedindex=atoi(buf);
memset(buf,0,BUFSIZE);
Blogarticle.flag=true;
tListMedic->Insert(Blogarticle);}
cout<<"读取数据成功!
\n\n";
ifile.close();//关闭文件
return;}
voidDisplay(tList*tListMedic)//显示链表
{cNode*p;
p=tListMedic->head->next;while(p)
{if(p->data.flag)
{cout<<"\n\n文章编号:
"<<(p->data).ID<<"\t文章名:
"<<(p->data).Name<<"\n\t\t发布日期:
"<<(p->data).Time<<"\n\t\t类别:
"<<(p->data).Style;
cout<<"\n\t\t主要内容:
"<<(p->data).Function<<"\n\t\t有效期:
"<<(p->data).StayTime<<"\n\t\t推荐指数"<<(p->data).Recommendedindex;}
p=p->next;}
cout<system("pause");system("cls");return;
}
(2)添加文章函数
voidAddTheBlogarticle(tList*tListMedic)//添加文章函数
{cin>>tempBlogarticle.Name;//读入文章名
cout<<"请输入文章发布日期:
";
cin>>tempBlogarticle.Time;//读入发布日期
cout<<"请输入文章类别:
";
cin>>tempBlogarticle.Style;//读入类别
cout<<"请输入文章主要内容:
";
cin>>tempBlogarticle.Function;//读入主要内容
cout<<"请输入文章有效期:
";
cin>>tempBlogarticle.StayTime;//读入有效期
cout<<"请输入推荐指数";
cin>>tempBlogarticle.Recommendedindex;//读入指数
tempBlogarticle.flag=true;
tListMedic->Insert(tempBlogarticle);
cout<<"添加成功!
\n";
system("pause");
system("cls");
}
(3)保存数据
voidSaveData(tList*tListMedic)//保存数据
{
inti=0;
ofstreamofile("Blogarticle.txt",ios_base:
:
out);//创建一个输入文件流对象
if(!
ofile)
{
cerr<<"保存时打开文件出错!
"<}
cNode*p;
p=tListMedic->head->next;
while(p)
{
//从内存中读取数据,存到外盘
if(p->data.flag)
{ofile<<"\n";
ofile<<(p->data).ID<<"\n";
ofile<<(p->data).Name<<"\n";
ofile<<(p->data).Time<<"\n";
ofile<<(p->data).Style<<"\n";
ofile<<(p->data).Function<<"\n";
ofile<<(p->data).StayTime<<"\n";
ofile<<(p->data).Recommendedindex<<"\n";}p=p->next;}
cout<<"保存数据成功!
\n";ofile.close();system("pause");system("cls");return;
(4)查询函数
voidFindTheBlogarticleById(tList*tListMedic)//根据文章编号查找文章
{
charid[BUFSIZE];
cout<<"\n请输入你要查找的文章编号:
";
cin>>id;//读取文章编号
boolflag=false;
cNode*p;
p=tListMedic->head->next;
while(p)
{
if(strcmp(p->data.ID,id)==0&&p->data.flag)
{
flag=true;
break;
}p=p->next;
}if(flag==false)cout<<"对不起,没有你所查找的文章!
\n";//如果找不到
else//如果找到了
{//显示屏幕
cout<<"\n找到了,该文章的信息是:
\n";
cout<<"\n\n文章编号:
"<<(p->data).ID<<"\t文章名:
"<<(p->data).Name<<"\n\t\t发布日期:
"<<(p->data).Time<<"\n\t\t类别:
"<<(p->data).Style;
cout<<"\n\t\t主要内容:
"<<(p->data).Function<<"\n\t\t有效期:
"<<(p->data).StayTime<<"\n\t\t推荐指数"<<(p->data).Recommendedindex;
}
cout<system("pause");
system("cls");
return;
}
(5)查找文章
voidFindTheBlogarticle(tList*tListMedic)//查找文章
{
system("cls");
while
(1)
{
cout<<"\n\n\n\n";
cout<<"1:
按文章编号查询\n\n";
cout<<"2:
按文章名查询\n\n";
cout<<"3:
按类别查询\n\n";
cout<<"4:
退出查询\n\n";
cout<<"你选择:
";
intchoose=0;
cin>>choose;
switch(choose)//根据用户选择
{
case1:
FindTheBlogarticleById(tListMedic);//按文章编号查询
break;
case2:
FindTheBlogarticleByName(tListMedic);//按文章名查询
break;
case3:
FindTheBlogarticleByStyle(tListMedic);//按类别查询
break;
case4:
system("cls");return;//退出查询
default:
break;
}
}
return;
}
(6)修改文章信息
voidModifyTheBlogarticle(tList*tListMedic)//修改文章信息
{
charid[BUFSIZE];
cout<<"\n请输入你要查找的文章编号:
";
cin>>id;//读取文章编号
boolflag=false;
cNode*p;
p=tListMedic->head->next;
while(p)
{
if(strcmp(p->data.ID,id)==0&&p->data.flag)
{
flag=true;
break;
}
p=p->next;
}
if(flag==false)cout<<"对不起,没有你所查找的文章!
\n";//如果找不到
else//如果找到了
{//显示屏幕
cout<<"找到了,该文章的原始信息是:
\n";
cout<<"\n\n文章编号:
"<<(p->data).ID<<"\t文章名:
"<<(p->data).Name<<"\n\t\t发布日期:
"<<(p->data).Time<<"\n\t\t类别:
"<<(p->data).Style;
cout<<"\n\t\t主要内容:
"<<(p->data).Function<<"\n\t\t有效期:
"<<(p->data).StayTime<<"\n\t\t推荐指数"<<(p->data).Recommendedindex;
cout<<"\n下面开始修改该文章的信息:
\n";
cBlogarticletempBlogarticle;//定义临时文章
cout<<"请输入文章文章编号:
";
cin>>tempBlogarticle.ID;//读入文章编号
cout<<"请输入文章文章名:
";
cin>>tempBlogarticle.Name;//读入文章名
cout<<"请输入发布日期:
";
cin>>tempBlogarticle.Time;//读入发布日期
cout<<"请输入文章类别:
";
cin>>tempBlogarticle.Style;//读入类别
cout<<"请输入文章主要内容:
";
cin>>tempBlogarticle.Function;//读入主要内容
cout<<"请输入文章有效期:
";
cin>>tempBlogarticle.StayTime;//读入有效期
cout<<"请输入推荐指数:
";
cin>>tempBlogarticle.Recommendedindex;//读入指数
tempBlogarticle.flag=true;
p->data=tempBlogarticle;
cout<<"修改成功!
";
}
cout<system("pause");
system("cls");
return;
}
(7)删除文章信息
voidDeleteTheBlogarticle(tList*tListMedic)//删除文章信息
{
charid[BUFSIZE];
cout<<"\n请输入你要查找的文章编号:
";
cin>>id;//读取文章编号
boolflag=false;
intcount=0;
cNode*p;
p=tListMedic->head->next;
while(p)
{if(strcmp(p->data.ID,id)==0&&p->data.flag)
{count++;
flag=true;
break;}
p=p->next}
if(flag==false)cout<<"对不起,没有你所查找的文章!
\n";//如果找不到
else//如果找到了
{count--;
cout<<"找到了,该文章的原始信息是:
\n";
cout<<"\n\n文章编号:
"<<(p->data).ID<<"\t文章名:
"<<(p->data).Name<<"\n\t\t发布日期:
"<<(p->data).Time<<"\n\t\t类别:
"<<(p->data).Style;cout<<"\n\t\t主要内容:
"<<(p->data).Function<<"\n\t\t有效期:
"<<(p->data).StayTime<<"\n\t\t推荐指数"<<(p->data).Recommendedindex;
cout<(p->data).flag=false;
cout<<"该文章的信息删除成功!
\n";}
cout<system("pause");
system("cls");
return;}
(8)主函数
intmain()
{tListtListMedic;
tListMedic.Create();//创建链表
ReadData(&tListMedic);
while
(1)
{cout<<"\n\n博客文章管理系统\n\n";
cout<<"-----------------------------\n\n";
cout<<"1:
文章信息添加\n\n";
cout<<"2:
文章信息显示\n\n";
cout<<"3:
文章信息保存\n\n";
cout<<"4:
文章信息删除\n\n";
cout<<"5:
文章信息修改\n\n";
cout<<"6:
文章信息查询\n\n";
cout<<"7:
退出系统\n\n";
cout<<"你选择:
";
intchoose=0;
scanf("%d",&choose);
switch(choose)//根据用户选择
{case1:
AddTheBlogarticle(&tListMedic);//文章基本信息录入break;
case2:
Display(&tListMedic);//文章基本信息显示break;
case3:
SaveData(&tListMedic);//文章基本信息保存break;
case4:
DeleteTheBlogarticle(&tListMedic);//文章基本信息删除break;
case5:
ModifyTheBlogarticle(&tListMedic);//文章基本信息修改break;
case6:
FindTheBlogarticle(&tListMedic);//文章基本信息查询break;
case7:
exit(0);//退出
default:
break;}
}
return0;
调试
编译成功后开始运行,信息录入后,不能在文档中正确可见,经Debug调试,发现,打开文件方式出现错误,改之,运行正确。
改动后的代码:
cout<<"请输入文章类别:
";
cin>>tempBlogarticle.Style;//读入类别
cout<<"请输入文章主要内容:
";
cin>>tempBlogarticle.Function;//读入主要内容
cout<<"请输入文章有效期:
";
cin>>tempBlogarticle.StayTime;//读入有效期
cout<<"请输入推荐指数:
";
cin>>tempBlogarticle.Recommendedindex;//改动之前打开方式为RecommendedIndex//就是大小写错误
tempBlogarticle.flag=true;
p->data=tempBlogarticle;
cout<<"修改成功!
";
四.总结
一、总结
经过这两周认真的学习后,我体会了很多,也学到很多东西。
利用设计科研项目管理系统的机会,我加强了对C++的认识,以前自己从来没清楚过的东西现在都有了一些基本的轮廓。
在这次课程设计中,我还懂得了程序开发的一些比较重要的步骤,比如需求分析、程序模块设计等。
对MicrosoftVisualC++6.0又有了更深入的认识。
面向对象程序设计作为一门软件设计的课程,具有极强的实践性,使我加强了灵活应用理论知识的能力及面向对象程序设计技能。
C++语言相对于C语言来说引入了两个大的新东西,一个就是面向对象(具体来将就是类),另外就是模板技术(模板编程或者叫泛型编程是进来非常流行的技术,在C#中虽然还没有对泛型编程的支持,但是相信在将来也一定会加入这一功能),模板是C++中比较复杂的部分,但是作为一个真正的C++程序员,这部分很重要。
尤其是对C++标准程序库的掌握尤为重要。
此次,应用程序的设计和创建,经历了平时在课堂中和考试中,决不会有的重重难题和问题。
而这些问题,又都是课本上很少提到的、更深一层的知识领域和应用领域。
这些问题,并不是我们平时只靠课本,就可以轻易解决的。
所以,锻炼了我们面对难题,自己思索,自己探索,自己查资料发现问题、解决问题的独断能力。
总之,我们学习和掌握的知识,只有通过实际应用,才能真正的理解和掌握,才能更好的去应用。
以前只是在理论上对C++有一些了解,通过这次课程设计我还学会编写一些小程序。
让我对编程产生了兴趣。
这次收获颇丰,相信会为自己以后的学习和工作带来很大的好处。
整体地评价这次课程设计,通过课程设计,既复习了以前的旧知识,又学到了一些新的知识;设计增强了我们用所学知识去解决具体问题的能力,进一步培养了我们独立思考问题和解决问题的能力。
特别是学会了在VisualC++集成开发环境中如何调试程序的方法。
老师和同学的帮助也是不可忽视的。
理论要在实践中被验证,从而去更好的指导实践。
我们要运用理论去帮助我们解决现实生活遇到的问题。