c++课程设计.docx
《c++课程设计.docx》由会员分享,可在线阅读,更多相关《c++课程设计.docx(11页珍藏版)》请在冰豆网上搜索。
c++课程设计
福建农林大学计算机与信息学院
计算机类
课程设计报告
课程名称:
面向对象程序设计课程设计
课程设计题目:
项目管理
姓名:
xxx
系:
计算机与信息学院
专业:
计算机科学与应用(专升本)
年级:
2010
学号:
xxxxxxxxxxxxx
指导教师:
xxxx
职称:
讲师
2011年5月25日
福建农林大学计算机与信息学院计算机类
课程设计结果评定
评语:
评分项目
分值
得分
①课程设计报告符合规范
10
②类层次结构图和类图合理
30
③主要技术路线正确
30
④设计报告条理清晰,重点突出
20
⑤有一定的创新性,难易程度
10
成绩:
指导教师签字:
任务下达日期:
2011年3月7日
评定日期:
2011年6月日
目录
1设计目的4
2设计要求4
3设计方案4
4设计内容5
4.1算法描述5
4.2算法流程图5
4.3调试过程6
4.4程序代码8
5总结11
6参考文献12
项目管理
1设计目的
《面向对象程序设计课程设计》是计算机科学与技术专业和软件工程专业集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。
其目的在于加深对面向对象程序设计中基础理论和基本知识的理解,培养学生的实践能力,促进理论与实践的结合。
通过课程设计,让学生能够熟练进行面向对象编程,建立对象模型,降低软件的复杂性,改善软件的重用性和维护性,提高软件的生产效率,全面掌握面向对象编程技术。
2设计要求
1、掌握使用一种面向对象程序设计语言如BorlandC++或VisualC++等。
2、培养调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。
3、通过课程设计,要求学生在指导教师的指导下,独立完成实习课题的全部内容,包括:
(1)通过调查研究和上机实习,收集和调查有关技术资料。
(2)掌握设计课题的基本步骤和方法。
(3)根据课题的要求进行上机实验调试。
4、课程设计完成后,提交课程设计报告。
3设计方案
1、系统特点
(1)项目信息的初始化。
(2)项目信息的添加、修改、删除、查找。
(3)项目信息的输出。
(4)将项目信息保存为文件。
(5)在项目信息中按项目编号、项目名称、项目等级排序。
2、分工
我们小组设计的是小型项目管理系统,我负责的模块是重载插入符、提取符以及对信息进行添加、修改、删除、查找操作后进行文件保存的方法和读取保存后的文件的方法。
4设计内容
4.1算法描述
当程序运行遇到插入符“<<”时调用ostream&operator<<(ostream&os,constProject_gl&project_gl)重载函数对项目对象信息输出,内容有(项目编号,项目名称,项目等级,项目经理)。
当程序运行遇到提取符“>>”时调用istream&operator>>(istream&is,Project_gl&project_gl)函数将逐个输入项目编号,项目名称,项目等级,项目经理信息。
对项目信息的保存和读取的方法是文件流的操作:
保存为文件的方法boolProject_gl:
:
SaveInfo()首先对链表是否为空进行判断,为空则返回到信息输入的函数,不为空则以输出方式打开文件Project.txt文件,流类用ofstream。
用while循环来从链表的第一个节点开始逐个将信息写到文件中,一条记录写完用换行来标志。
直到指向的节点为空时循环结束,输出保存成功,关闭文件。
对文件读取的方法是voidProject_gl:
:
ShuruInfo(),新建个Project类型的链表节点,以输入方式打开文件,流类应用为ifstream,首先也是判断Project.txt文件是否为空,为空的话输出失败返回到主函数,否则就逐一读取文件里的数据。
最后关闭文件。
4.2算法流程图
保存文件函数的流程图如下:
图表1
4.3调试过程
a.运行程序,没有Project.txt文件输出文件打开失败,浏览信息为空。
图表2
b.输入两条记录,退出时保存数据,成功操作。
图表3
c.检查输入的信息不保存时正常
图表4
d.检查输入的信息保存后能否正常输出
图表5
打开文件,提示成功。
图表6
4.4程序代码
重载“<<”
ostream&operator<<(ostream&os,constProject_gl&project_gl)
{
os<<"项目编号:
"<"<<<"\t项目等级:
"<"<returnos;
}
重载“>>”
istream&operator>>(istream&is,Project_gl&project_gl)
{
Project*s;
door1:
cout<<"项目编号:
";
is>>project_gl.xm_no;
if(project_gl.xm_no=="0")returnis;//项目编号输入0结束输入
for(s=Project_gl:
:
head;s!
=NULL;s=s->next)
{
if(project_gl.xm_no>"999"||project_gl.xm_no<"0")
{cout<<"项目编号输入有误"<else
if(project_gl.xm_no==s->project_gl.xm_no)
{project_gl.xm_no="";cout<<"项目编号已存在!
请重新输入!
"<}
cout<<"项目名称(请输入字母、数字,否则出现乱码):
";
is>>project_gl.xm_name;
door:
cout<<"项目等级(1~5):
";
is>>project_gl.xm_level;
if(project_gl.xm_level>"5"||project_gl.xm_level<"0")
{cout<<"项目编号输入有误"<cout<<"项目经理(最好输入字母,数字):
";
is>>project_gl.xm_manager;
returnis;
}
从文件中读取信息
voidProject_gl:
:
ShuruInfo()
{
Project*p=newProject;
ifstreaminput;
//input.open("Project.dat",ios:
:
in|ios:
:
binary);//打开文件
input.open("Project.txt");//打开文件
if(!
input)
{
cout<<"文件打开失败!
"<return;
}
while(input)
{
cout<project_gl;
input.read((char*)&p->project_gl,sizeof(p->project_gl));
}
input.close();//关闭文件
cout<<"读取成功!
"<system("pause");
Project_gl:
:
ShowInfo();
}
保存信息到文件中
boolProject_gl:
:
SaveInfo()
{
charflag;
cout<<"是否要保存?
(Y/N)"<cin>>flag;
if(flag!
='Y'&&flag!
='y')
{
cout<<"保存失败!
"<returnfalse;
}
if(!
head)
{
cout<<"当前没有信息!
请添加信息!
"<TianjiaInfo();
}
Project*p=Project_gl:
:
head->next;
ofstreamoutput;
//ofstreamoutput("Project.txt");
output.open("Project.txt",ios:
:
out|ios:
:
app|ios:
:
binary);
if(!
output)
{
cout<<"文件打开失败!
"<returnfalse;
}
while(p)
{
output<project_gl.xm_no<<"\t"<project_gl.xm_name<<"\t"<project_gl.xm_level
<<"\t"<project_gl.xm_manager<output.write((char*)&p->project_gl,sizeof(p->project_gl));
p=p->next;
}
cout<<"信息保存成功!
"<output.close();
system("pause");
//关闭文件
returntrue;
}
5总结
最初学习课本上的内容是,觉得自己都掌握了相关知识,都会理解,应该能轻松编写出程序代码,可是当真正独立用运这些知识去实现程序功能时,才发现实际编程还是有相当的难度。
通过这次面向对象课程设计的学习和程序代码的编写,学习掌握了插入符和提取符重载以及I/O流中文件流操作等的程序实现,对文件打开方式、文件读写的相关问题有了比较深刻的理解。
体会很深刻,刚开始的一段时间基本都是通过上网或者去图书馆查找资料,看是否有类似的题目和实例,找了很多,可都是一大堆或者一整个完整的复杂的系统,对我来说太复杂看不懂,我是写io流中文件保存和读取的函数,致使后来脑子完全没有了概念,后来经过和我们组长叶世海还有其他组员一起讨论才慢慢游点儿思绪,最后根据书本上的知识点,经过认真修改调试,才终于把我负责的任务完成,再经过我们组的所有成员一起努力才把整个小系统完成。
回头想想,其实我们编写的程序都不是非常难的,每个小模块的实现,都可以用之前学习过的知识来完成,只是太久没有拿起来用而有淡忘,所以平时一定要认真学习、认真温习学过的知识,说不定哪天就派得上用场了。
还有心理因素也是很重要的,不要一看到题目就呆住,觉得这么复杂的程序我写不出来,要有信心,再复杂的程序也都可以慢慢分析化简到一个个简单而容易实现的小模块,这是我这次课程设计最重要的体会。
还有印象深刻的是在编写程序代码过程中一定要细心,由于输入大意而导致的一些程序的功能上出问题,花费大量的精力和时间来排错,结果却是自己不细心造成的,给自己造成的麻烦那还好,如果要是在开发大型程序上会因为你个人的一点疏忽,会造成整个团队的工作量大大增加,所以我们要养成仔细认真的好习惯。
不管是对以后的生活中还是工作都会有所帮助的。
课程设计考验的是我们的学习态度,独立思考问题,和解决问题的能力,经过这次的顺利完成,我的收获真的很大。
6参考文献
[1]马石安、魏文平.面向对象程序设计教程。
清华大学出版社2009
[2]马石安、魏文平.面向对象程序设计教程题解与课程设计指导。
清华大学出版社2010