资源描述
博客文章管理系统
一. 需求分析
本次课程设计需要实现的是——博客文章管理系统。
经过初步研究调查,博客文章项目多种多样,有小说、散文、诗歌等。各项研究的人员也是不同的,各项文章投入的内容各有差异。所以初步设定文章的属性有编号、文章名和文章类别等等。
文章项目被不断的研究出来,所以系统需要实现录入与删除功能。
读者对文章研究项目需要进行选择,系统必须相应的实现查询与排序的功能。
最后,文章项目被确定以后,系统需要把数据从内存中写入硬盘,实现输入输出功能。
系统简单流程:
开始
退出
删除
显示
保存
修改
查询
添加
项目选择
博客文章管理系统:
1.理顺和规范文章信息的查询和数据保存。
2.提供集成的信息系统,实现业务数据和资料的共享。
3.由于数据的处理由系统自动完成,准确性与及时性大大提高,分析手段更加规范和多样,不但减轻了工作强度,还将促进博客管理人员从繁琐的事务处理中解放出来,用更多的时间研究文章的分类和更高效的管理,研究并运用现代管理方法改进博客文章信息管理,促进现代管理方法在文章管理中的广泛应用。
博客文章系统各功能模块 :1、登记入录函数;2、输出显示函数;3、保存数据函数;4、删除函数;5修改函数;6、查询函数(内分:按编号查询、按发布日期查询、按文章名查询、退出查询);7退出函数
二. 系统设计和实现
a)系统研究项目类
系统研究项目类中,ID是文章编号,Name是文章名称,Time是发布日期等等。研究项目整个类中包含一个输出函数。所有数据成员与函数成员均为公有类型。
class cBlogarticle
+ 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) 读取数据库
void ReadData(tList<cBlogarticle> *tListMedic)//读取数据库
{
char buf[BUFSIZE];
ifstream ifile("Blogarticle.txt",ios_base::in); //创建一个输出文件流对象
if (!ifile)
{
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);
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;}
void Display(tList<cBlogarticle> *tListMedic) //显示链表
{ cNode<cBlogarticle> *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<<endl;
system("pause");system("cls");return;
}
(2)添加文章函数
void AddTheBlogarticle(tList<cBlogarticle> *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) 保存数据
void SaveData(tList<cBlogarticle> *tListMedic)//保存数据
{
int i=0;
ofstream ofile("Blogarticle.txt",ios_base::out); //创建一个输入文件流对象
if (!ofile)
{
cerr << "保存时打开文件出错!" << endl;
}
cNode<cBlogarticle> *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) 查询函数
void FindTheBlogarticleById(tList<cBlogarticle> *tListMedic)//根据文章编号查找文章
{
char id[BUFSIZE];
cout<<"\n请输入你要查找的文章编号:";
cin>>id;//读取文章编号
bool flag=false;
cNode<cBlogarticle> *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<<endl;
system("pause");
system("cls");
return;
}
(5) 查找文章
void FindTheBlogarticle(tList<cBlogarticle> *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<<"你选择:";
int choose=0;
cin>>choose;
switch(choose)//根据用户选择
{
case 1:FindTheBlogarticleById(tListMedic);//按文章编号查询
break;
case 2:FindTheBlogarticleByName(tListMedic);//按文章名查询
break;
case 3:FindTheBlogarticleByStyle(tListMedic); //按类别查询
break;
case 4:system("cls");return;//退出查询
default:break;
}
}
return;
}
(6)修改文章信息
void ModifyTheBlogarticle(tList<cBlogarticle> *tListMedic)//修改文章信息
{
char id[BUFSIZE];
cout<<"\n请输入你要查找的文章编号:";
cin>>id;//读取文章编号
bool flag=false;
cNode<cBlogarticle> *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";
cBlogarticle tempBlogarticle; //定义临时文章
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<<endl;
system("pause");
system("cls");
return;
}
(7)删除文章信息
void DeleteTheBlogarticle(tList<cBlogarticle> *tListMedic)//删除文章信息
{
char id[BUFSIZE];
cout<<"\n请输入你要查找的文章编号:";
cin>>id;//读取文章编号
bool flag=false;
int count=0;
cNode<cBlogarticle> *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<<endl;
(p->data).flag=false;
cout<<"该文章的信息删除成功!\n";}
cout<<endl;
system("pause");
system("cls");
return;}
(8)主函数
int main()
{ tList<cBlogarticle> tListMedic;
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<<"你选择:";
int choose=0;
scanf("%d",&choose);
switch(choose)//根据用户选择
{case 1:AddTheBlogarticle(&tListMedic);//文章基本信息录入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;
case 7:exit(0);//退出
default:break;}
}
return 0;
调试
编译成功后开始运行,信息录入后,不能在文档中正确可见,经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++的认识,以前自己从来没清楚过的东西现在都有了一些基本的轮廓。
在这次课程设计中,我还懂得了程序开发的一些比较重要的步骤,比如需求分析、程序模块设计等。对Microsoft Visual C++ 6.0又有了更深入的认识。面向对象程序设计作为一门软件设计的课程,具有极强的实践性,使我加强了灵活应用理论知识的能力及面向对象程序设计技能。C++语言相对于C语言来说引入了两个大的新东西,一个就是面向对象(具体来将就是类),另外就是模板技术(模板编程或者叫泛型编程是进来非常流行的技术,在C#中虽然还没有对泛型编程的支持,但是相信在将来也一定会加入这一功能),模板是C++中比较复杂的部分,但是作为一个真正的C++程序员,这部分很重要。尤其是对C++标准程序库的掌握尤为重要。
此次,应用程序的设计和创建,经历了平时在课堂中和考试中,决不会有的重重难题和问题。而这些问题,又都是课本上很少提到的、更深一层的知识领域和应用领域。这些问题,并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们面对难题,自己思索,自己探索,自己查资料发现问题、解决问题的独断能力。
总之,我们学习和掌握的知识,只有通过实际应用,才能真正的理解和掌握,才 能更好的去应用。以前只是在理论上对C++有一些了解,通过这次课程设计我还学会编写一些小程序。让我对编程产生了兴趣。这次收获颇丰,相信会为自己以后的学习和工作带来很大的好处。整体地评价这次课程设计,通过课程设计,既复习了以前的旧知识,又学到了一些新的知识;设计增强了我们用所学知识去解决具体问题的能力,进一步培养了我们独立思考问题和解决问题的能力。特别是学会了在Visual C++ 集成开发环境中如何调试程序的方法。老师和同学的帮助也是不可忽视的。
理论要在实践中被验证,从而去更好的指导实践。我们要运用理论去帮助我们解决现实生活遇到的问题。目 录
1 总 论 1
1.1 项目概况 1
1.2 建设单位概况 3
1.3 项目提出的理由与过程 3
1.4 可行性研究报告编制依据 4
1.5 可行性研究报告编制原则 4
1.6 可行性研究范围 5
1.7 结论与建议 6
2 项目建设背景和必要性 9
2.1 项目区基本状况 9
2.2 项目背景 11
2.3 项目建设的必要性 11
3 市场分析 14
3.1 物流园区的发展概况 14
3.2 市场供求现状 16
3.3 目标市场定位 17
3.4 市场竞争力分析 17
4 项目选址和建设条件 19
4.1 选址原则 19
4.2 项目选址 19
4.3 场址所在位置现状 19
4.4 建设条件 20
5 主要功能和建设规模 22
5.1 主要功能 22
5.2 建设规模及内容 26
6 工程建设方案 27
6.1 设计依据 27
6.2 物流空间布局的要求 27
6.3 空间布局原则 28
6.4 总体布局 29
6.5 工程建设方案 30
6.6 给水工程 33
6.7 排水工程 35
6.8 电力工程 38
6.9 供热工程 46
6.10 电讯工程 47
7 工艺技术和设备方案 51
7.1 物流技术方案 51
7.2 制冷工艺技术方案 67
8 节能方案分析 73
8.1 节能依据 73
8.2 能耗指标分析 73
8.3 主要耗能指标计算 74
8.4 节能措施和节能效果分析 76
9 环境影响评价 83
9.1 设计依据 83
9.2 环境影响评价应坚持的原则 83
9.3 项目位置环境现状 84
9.4 项目建设与运营对环境的影响 84
9.5 项目建设期环境保护措施 84
9.6 项目运行期环境保护措施 86
10 安全与消防 87
10.1 安全措施 87
10.2 消防 88
11 组织机构和人力资源配置 92
11.1 施工组织机构 92
11.2 基建项目部的主要职责 92
11.3 运营管理 93
11.4 人员来源、要求及培训 94
12 工程进度安排 96
12.1 建设工期 96
12.2 工程实施进度安排 96
13 投资估算与资金筹措 98
13.1 投资估算 98
投资估算包括建设项目的全部工程,主要内容有:主体建筑工程、道路硬化工程、绿化工程、其他费用及基本预备费。 98
13.2 资金筹措 99
14 财务评价 102
14.1 评价依据及方法 102
14.2 基础数据与参数选取 102
14.3 营业收入及总成本费用估算 103
14.4 利润总额估算 105
14.5 盈亏平衡分析 105
14.6 财务评价 106
15 综合效益评价 107
16 招投标管理 108
16.1 编制依据 108
16.2 招标原则 108
16.3 招标方案 109
16.4 评标要点 110
17 结论及建议 111
17.1 结论 111
17.2 建议 112
展开阅读全文