1、博客文章管理系统 一. 需求分析 本次课程设计需要实现的是——博客文章管理系统。 经过初步研究调查,博客文章项目多种多样,有小说、散文、诗歌等。各项研究的人员也是不同的,各项文章投入的内容各有差异。所以初步设定文章的属性有编号、文章名和文章类别等等。 文章项目被不断的研究出来,所以系统需要实现录入与删除功能。 读者对文章研究项目需要进行选择,系统必须相应的实现查询与排序的功能。 最后,文章项目被确定以后,系统需要把数据从内存中写入硬盘,实现输入输出功能。 系统简单流程: 开始 退出 删除 显示 保存 修改 查询 添加 项目选
2、择 博客文章管理系统: 1.理顺和规范文章信息的查询和数据保存。 2.提供集成的信息系统,实现业务数据和资料的共享。 3.由于数据的处理由系统自动完成,准确性与及时性大大提高,分析手段更加规范和多样,不但减轻了工作强度,还将促进博客管理人员从繁琐的事务处理中解放出来,用更多的时间研究文章的分类和更高效的管理,研究并运用现代管理方法改进博客文章信息管理,促进现代管理方法在文章管理中的广泛应用。 博客文章系统各功能模块 :1、登记入录函数;2、输出显示函数;3、保存数据函数;4、删除函数;5修改函数;6、查询函数(内分:按编号查询、
3、按发布日期查询、按文章名查询、退出查询);7退出函数 二. 系统设计和实现 a)系统研究项目类 系统研究项目类中,ID是文章编号,Name是文章名称,Time是发布日期等等。研究项目整个类中包含一个输出函数。所有数据成员与函数成员均为公有类型。 class cBlogarticle + ID[BUFSIZE]:char// 文章编号 + Name[BUFSIZE]:char//文章名称 + Time[BUFSIZE]:char//发布日期 + Function[BUFSIZE]:char//主要内容 +StayTime :int//有
4、效期 +Recommendedindex:double//推荐指数 + flay :bool//标志 + cBlogarticle()//构造函数初始化 b)设定的界面 博客文章管理系统 ———————————————————————————— 1:文章信息添加 2:文章信息显示 3:文章信息保存
5、 4:文章信息删除
5:文章信息修改
6:文章信息查询
7:退 出 系 统
你选择
c)关键代码的分析
(1) 读取数据库
void ReadData(tList
6、file) { cerr << "读取时打开文件出错!" << endl; } cBlogarticle Blogarticle; 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);
7、 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(b
8、uf,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"
9、
ifile.close();//关闭文件
return;}
void Display(tList
10、Style;
cout<<"\n\t\t主要内容:"<<(p->data).Function<<"\n\t\t有效期:"<<(p->data).StayTime<<"\n\t\t推荐指数"<<(p->data).Recommendedindex;}
p=p->next;}
cout<
11、cle.Name;//读入文章名 cout<<"请输入文章发布日期:"; cin>>tempBlogarticle.Time;//读入发布日期 cout<<"请输入文章类别:"; cin>>tempBlogarticle.Style;//读入类别 cout<<"请输入文章主要内容:"; cin>>tempBlogarticle.Function;//读入主要内容 cout<<"请输入文章有效期:"; cin>>tempBlogarticle.StayTime;//读入有效期 cout<<"请输入推荐指数"; cin>>tempBlogarticle.Re
12、commendedindex;//读入指数
tempBlogarticle.flag=true;
tListMedic->Insert(tempBlogarticle);
cout<<"添加成功!\n";
system("pause");
system("cls");
}
(3) 保存数据
void SaveData(tList
13、ile)
{
cerr << "保存时打开文件出错!" << endl;
}
cNode
14、e<<"\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) 查询函数
void FindTheBlogarticleById(tList
15、
char id[BUFSIZE];
cout<<"\n请输入你要查找的文章编号:";
cin>>id;//读取文章编号
bool flag=false;
cNode
16、//如果找不到 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).Recommende
17、dindex;
}
cout<
18、 cout<<" 3:按类别查询\n\n"; cout<<" 4:退出查询\n\n"; cout<<"你选择:"; int choose=0; cin>>choose; switch(choose)//根据用户选择 { case 1:FindTheBlogarticleById(tListMedic);//按文章编号查询 break; case 2:FindTheBlogarticleByName(tListMedic);//按文章名查询 break;
19、
case 3:FindTheBlogarticleByStyle(tListMedic); //按类别查询
break;
case 4:system("cls");return;//退出查询
default:break;
}
}
return;
}
(6)修改文章信息
void ModifyTheBlogarticle(tList
20、flag=false;
cNode
21、 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"; cBlogarticle tempBlog
22、article; //定义临时文章 cout<<"请输入文章文章编号:"; cin>>tempBlogarticle.ID;//读入文章编号 cout<<"请输入文章文章名:"; cin>>tempBlogarticle.Name;//读入文章名 cout<<"请输入发布日期:"; cin>>tempBlogarticle.Time;//读入发布日期 cout<<"请输入文章类别:"; cin>>tempBlogarticle.Style;//读入类别 cout<<"请输入文章主要内容:"; cin>>tempBlogarticle.
23、Function;//读入主要内容
cout<<"请输入文章有效期:";
cin>>tempBlogarticle.StayTime;//读入有效期
cout<<"请输入推荐指数:";
cin>>tempBlogarticle.Recommendedindex;//读入指数
tempBlogarticle.flag=true;
p->data=tempBlogarticle;
cout<<"修改成功!";
}
cout< 24、删除文章信息
void DeleteTheBlogarticle(tList 25、unt++;
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\ 26、t主要内容:"<<(p->data).Function<<"\n\t\t有效期:"<<(p->data).StayTime<<"\n\t\t推荐指数"<<(p->data).Recommendedindex;
cout< 27、dic.Create(); //创建链表
ReadData(&tListMedic);
while(1)
{ cout<<"\n\n 博 客 文 章 管 理 系 统 \n\n";
cout<<" -----------------------------\n\n";
cout<<" 1:文章信息添加\n\n";
cout<<" 2:文章信息显示\n\n";
cout<<" 3:文章信息保存\n\ 28、n";
cout<<" 4:文章信息删除\n\n";
cout<<" 5:文章信息修改\n\n";
cout<<" 6:文章信息查询\n\n";
cout<<" 7:退 出 系 统 \n\n";
cout<<"你选择:";
int choose=0;
scanf("%d",&choose);
switch(choose)//根据用户选择
{case 1:AddTheBlogarticle(&tListMed 29、ic);//文章基本信息录入break;
case 2:Display(&tListMedic);//文章基本信息显示break;
case 3:SaveData(&tListMedic); //文章基本信息保存break;
case 4:DeleteTheBlogarticle(&tListMedic);//文章基本信息删除break;
case 5:ModifyTheBlogarticle(&tListMedic);//文章基本信息修改break;
case 6:FindTheBlogarticle(&tListMedic);//文章基本信息查询break;
30、
case 7:exit(0);//退出
default:break;}
}
return 0;
调试
编译成功后开始运行,信息录入后,不能在文档中正确可见,经Debug调试,发现,打开文件方式出现错误,改之,运行正确。
改动后的代码:
cout<<"请输入文章类别:";
cin>>tempBlogarticle.Style;//读入类别
cout<<"请输入文章主要内容:";
cin>>tempBlogarticle.Function;//读入主要内容
cout<<"请输入文章有效期:";
cin>>tempBlog 31、article.StayTime;//读入有效期
cout<<"请输入推荐指数:";
cin>>tempBlogarticle.Recommendedindex;//改动之前打开方式为RecommendedIndex//就是大小写错误
tempBlogarticle.flag=true;
p->data=tempBlogarticle;
cout<<"修改成功!";
四.总结
一、 总结
经过这两周认真的学习后,我体会了很多,也学到很多东西。利用设计科研项目管理系统的机会,我加强了对C++的认识,以前自己从来没清楚过的东西现在都有了一些 32、基本的轮廓。
在这次课程设计中,我还懂得了程序开发的一些比较重要的步骤,比如需求分析、程序模块设计等。对Microsoft Visual C++ 6.0又有了更深入的认识。面向对象程序设计作为一门软件设计的课程,具有极强的实践性,使我加强了灵活应用理论知识的能力及面向对象程序设计技能。C++语言相对于C语言来说引入了两个大的新东西,一个就是面向对象(具体来将就是类),另外就是模板技术(模板编程或者叫泛型编程是进来非常流行的技术,在C#中虽然还没有对泛型编程的支持,但是相信在将来也一定会加入这一功能),模板是C++中比较复杂的部分,但是作为一个真正的C++程序员,这部分很重要。尤其是对C++ 33、标准程序库的掌握尤为重要。
此次,应用程序的设计和创建,经历了平时在课堂中和考试中,决不会有的重重难题和问题。而这些问题,又都是课本上很少提到的、更深一层的知识领域和应用领域。这些问题,并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们面对难题,自己思索,自己探索,自己查资料发现问题、解决问题的独断能力。
总之,我们学习和掌握的知识,只有通过实际应用,才能真正的理解和掌握,才 能更好的去应用。以前只是在理论上对C++有一些了解,通过这次课程设计我还学会编写一些小程序。让我对编程产生了兴趣。这次收获颇丰,相信会为自己以后的学习和工作带来很大的好处。整体地评价这次课程设计,通过课程设计,既复习了以前的旧知识,又学到了一些新的知识;设计增强了我们用所学知识去解决具体问题的能力,进一步培养了我们独立思考问题和解决问题的能力。特别是学会了在Visual C++ 集成开发环境中如何调试程序的方法。老师和同学的帮助也是不可忽视的。
理论要在实践中被验证,从而去更好的指导实践。我们要运用理论去帮助我们解决现实生活遇到的问题。






