课程设计报告书之课外小组之河北联合大学.docx
《课程设计报告书之课外小组之河北联合大学.docx》由会员分享,可在线阅读,更多相关《课程设计报告书之课外小组之河北联合大学.docx(23页珍藏版)》请在冰点文库上搜索。
课程设计报告书之课外小组之河北联合大学
河北联合大学
2012-2013第2学期
《软件设计基础-C++》
课程设计报告
设计名称:
课外小组
姓名
学号
专业班级
学院
设计时间
设计地点
指导教师评语:
教师评定:
自评成绩:
指导教师签字:
年月日
目录
1.课程设计目的
2.课程设计任务与要求
3.课程设计说明书
4.课程设计成果
5.程序调试过程
6.设计问题的不足和改进方案
7.课程设计心得
8.参考文献
1.课程设计目的
《软件设计基础-C++》课程设计是这门课程的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C++的知识点,又接近工程实际需要。
目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C++这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。
2.课程设计任务与要求:
要求:
本次课程设计利用《软件设计基础-C++》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。
要求:
1、对系统进行功能需求分析
2、设计合理的数据结构和系统框架
3、编程简练,程序功能齐全,能正确运行
4、说明书、流程图要清楚
5、课题完成后必须按要求提交课程设计报告
任务:
1.问题描述:
实现学号,姓名,性别,爱好等内容的输入和输出(显示在屏幕上)实现存储兴趣小组的信息(以文本文件形式),并且可以根据姓名或爱好查询,也就是输入姓名可以显示该同学的兴趣等信息。
2.问题的解决方案:
最好将学生设计成一个类,兴趣做成一个类。
(建议采用链表实现)采用面向对象的程序设计方法实现。
四、主要技术问题的描述:
(1)建立学生类、兴趣类、兴趣类型类
(2)学生、兴趣、兴趣类型信息的初始化
(3)学生、兴趣、兴趣类型信息的添加、修改、删除、查找
(4)学生兴趣信息的输出
(5)将学生兴趣信息保存为文件
3.课程设计说明书
概要设计
通过Main函数将这五个模块联系起来。
而while控制循环语句则实现了五个模块的多次使用。
模块说明:
在我设计的程序中一共包括了六个模块,分别是:
添加学生兴趣信息、修改学生兴趣信息、删除学生兴趣信息、查询学生兴趣信息、显示学生兴趣信息、退出系统模块。
这六个模块中都是独立分开作为子函数的。
通过Main函数将这六个模块联系起来。
而while控制循环语句则实现了六个模块的多次使用。
模块结构图:
详细设计
总体流程图:
各功能模块流程图:
保存和显示比较简单,此处不附流程图
4.课程设计成果
程序源代码
#include
#include
#include
#include
//学生类
classStudent{
public:
Student(intstu_no1=-1,char*name1="",char*sex1="");//构造函数
~Student();//析构函数
intstu_no;
char*name;//成员
char*sex;
};
Student:
:
Student(intstu_no1,char*name1,char*sex1)//构造函数的实现
{
stu_no=stu_no1;
name=newchar[strlen(name1)+1];//先申请name1长度+1的内存再把name1的内容拷贝到name中
strcpy(name,name1);
sex=newchar[strlen(sex1)+1];//先申请sex1长度+1的内存再把name1的内容拷贝到name中
strcpy(sex,sex1);
}
Student:
:
~Student()
{
delete[]name;
delete[]sex;
}
//兴趣类
classIntrest:
publicStudent{//派生类
public:
Intrest(intstu_no1,char*name1,char*sex1,intnum1=-1,char*style1="");//构造函数
~Intrest();//析构函数
intnum;//新的成员
char*style;
};
Intrest:
:
Intrest(intstu_no1,char*name1,char*sex1,intnum1,
char*style1):
Student(stu_no1,name1,sex1)
{
num=num1;
style=newchar[strlen(style1)+1];
strcpy(style,style1);
}
Intrest:
:
~Intrest()
{
delete[]style;
}
//兴趣类型类
classKind:
publicIntrest{
public:
Kind(intstu_no1=-1,char*name1="",char*sex1="",
intnum1=-1,char*style1=""):
Intrest(stu_no1,name1,sex1,num1,style1)
{}
voidinsert();//添加函数
voidmodify();//修改函数
voiddel();//删除函数
voidshow();//查询函数
voidsetstu(intstu_no1)
{
stu_no=stu_no1;
}
voidsetname(char*name1)
{
name=newchar[strlen(name1)+1];
strcpy(name,name1);
}
voidsetsex(char*sex1)
{
sex=newchar[strlen(sex1)+1];
strcpy(sex,sex1);
}
voidsetnum(intnum1)
{
num=num1;
}
voidsetstyle(char*style1)
{
style=newchar[strlen(style1)+1];
strcpy(style,style1);
}
staticintcount;
}stu[100];
intKind:
:
count=0;
voidKind:
:
insert()//添加函数的实现
{
cout<<"学生学号:
"<cin>>stu_no;
cout<<"学生姓名:
"<cin>>name;
cout<<"学生性别:
"<cin>>sex;
cout<<"兴趣编号:
"<cin>>num;
cout<<"兴趣类型:
"<cin>>style;
count++;
}
voidKind:
:
modify()//修改函数的实现
{
cout<<"+++++请选择要进行的修改:
"<cout<<"1...修改学号"<cout<<"2...修改姓名"<cout<<"3...修改性别"<cout<<"4...修改编号"<cout<<"5...修改类型"<cout<<"其它数字键..退出"<inta;
cin>>a;
switch(a)//switch函数选择
{
case1:
cout<<"输入新的学号:
"<cin>>stu_no;
break;
case2:
cout<<"输入新的姓名:
"<cin>>name;
break;
case3:
cout<<"输入新的性别:
"<cin>>sex;
break;
case4:
cout<<"输入新的编号:
"<cin>>num;
break;
case5:
cout<<"输入新的类型:
"<cin>>style;
break;
default:
return;
}
}
voidKind:
:
del()//删除函数的实现
{
stu_no=-1;
name="";
sex="";
num=-1;
style="";
count--;
}
voidsearch()//查询函数的实现
{
cout<<"输入要查询的学生的学号:
"<intr,o=1;
cin>>r;
for(inti=0;i:
count;i++)//for语句和if语句结合找到想要查询的信息
{
if(stu[i].stu_no==r)
{
cout<:
left)<:
left)<:
left)<<:
left)<:
left)<:
left)\
<stu[i].show();
o=0;
}
}
if(o==1)//用if函数可以考虑到没有此学号的情况
cout<<"没有该学号,查询失败"<}
voidKind:
:
show()
{
cout<:
left)<<:
left)<<:
left)<<:
left)<<:
left)<<:
left)\
<}
voidpri()//保存函数
{
ofstreamfout("学生兴趣小组管理.txt");//用ofstreamfout打开或者创建学生兴趣小组.txt
if(!
fout)//如果打开失败
{
cout<<"cannotopenoutputfile"<}
fout<:
left)<:
left)<:
left)<<:
left)<:
left)<:
left)\
<for(inti=0;i:
count;i++)
{
fout<:
left)<<:
left)<<:
left)<<:
left)<<:
left)<<:
left)\
<}
fout.close();
cout<<"保存成功!
"<return;
}
voidmenu()
{
cout<<"===========学生兴趣小组管理============"<cout<<"1---添加学生兴趣信息"<cout<<"2---修改学生兴趣信息"<cout<<"3---删除学生兴趣信息"<cout<<"4---查询学生兴趣信息"<cout<<"5---显示学生兴趣信息"<cout<<"6---保存数据!
!
!
"<cout<<"其它数字键------退出"<}
voidmain()
{
for(;;)
{
menu();
cout<<"请选择您要进行的处理:
"<inti;
cin>>i;
switch(i)//switch函数选择所需要的命令
{
case1:
cout<<"请输入要添加的学生的人数:
"<inti,n;
cin>>n;
for(i=0;i{
stu[Kind:
:
count].insert();//当for循环结束时,Kind:
:
count的数值和n相等
}
if(n==0)//当输入人数为0和不为0时的情况
cout<<"无输入!
!
!
"<else
cout<<"输入完毕!
!
!
"<break;
case2:
cout<<"输入要修改的学生的学号:
"<intp;
cin>>p;
for(i=0;i:
count;i++)
{
if(stu[i].stu_no==p)
{
stu[i].modify();//调用
cout<<"修改成功!
!
!
"<}
}
break;
case3:
cout<<"输入要删除的学生的学号:
"<intq;
cin>>q;
for(i=0;i:
count;i++)
{
if(stu[i].stu_no==q)
{
stu[i].del();//调用
}
}
for(;i:
count;i++)//for循环
{Kindtemp;//创建一个对象
temp=stu[i];
stu[i]=stu[i+1];
stu[i+1]=stu[i];
}
break;
case4:
search();
break;
case5:
cout<:
left)<:
left)<:
left)<<:
left)<:
left)<:
left)\
<for(i=0;i:
count;i++)
stu[i].show();
break;
case6:
pri();
break;
default:
return;
}
}
}
5.程序调试过程
1.编译,检查是否有语法错误,如果有,则点击错处,就会在程序中指出,根据提示进行修改。
没有的话进行链接,如此时出现错误很有可能是算法的错误,如若没有,则运行程序。
2.运行,根据提示输入课外兴趣小组的成员学号,姓名,性别,兴趣类型和编号等。
然后进行添加,修改,删除和查询。
3.有些编码没有很好定义,造成运行错误。
6.设计问题的不足和改进方案
1.在编写过程中,if函数和while函数的区别不清。
2.如果能够把人员姓名和性别,兴趣的类别都用汉字显示会更好。
3.没有一个更为简洁的方案
★改进方案
还没有找到办法。
7.课程设计心得
(1)培养我们综合利用C++语言进行程序设计的能力。
(2)提高我们建立程序文档、归纳总结的能力。
(3)提高我们自学能力。
更好的利用图书馆资料解答问题。
(4)知道要积极的去对待自己的任务。
遇到困难不再是等待别人来找自己。
给自己解决。
而要自己积极的去找别人解决
(5)写实验报告让我明白不只是单单能够把程序运行结束就可以,还要求我们能明白每一步的意义。
深化我们学习c++的课程内容
经过两周的课程设计,我认识到把课堂上老师讲的知识运用到实际操作中的重要性。
我这次课程设计的题目是课外兴趣习小组,在开始阶段,根本无从下手,后来通过查阅一些相关资料和老师的耐心讲解,最终成功完成整个程序的设计。
通过这次课设我对C++语言中的类的定义、对象等知识有了进一步的理解,对流程图的画法更加熟练,对程序的开发思路有了一定的理解,我想这在以后的学习和工作中都会有帮助的,更使我意识到了学习C++语言的重要性。
8.参考文献
1.杨学明,刘加海,,余建军,面向对象的程序设计c++实训教程,北京:
科学出版社,2003
2.宗大华,c语言程序设计教程北京:
人民邮电出版社,2004
3.谭浩强,c程序设计北京:
清华大学出版社,2005
4.陈文宇,张松梅编著,C++语言教程,电子科技大学出版社,2004
5.张凯主编,付兴宏主审,VC++程序设计,大连理工大学出版社,2002