c++课程设计报告论文
c++课程设计报告论文
计算机专业C与C++程序设计研究论文
摘要 :首先介绍了目前高校计算机学院C族语言相关程序设计课程的建设状况。然后从C族语言的相互衍生关系出发,提出了在高校计算机课程体系中去除C语言的基础课程,将其综合成一门C++程序设计课程来供学生学习,并对课程内容、参考教材和课时安排上给出了自己的建议。
关键词 :C语言;C++语言;程序设计
高校的C族语言教学总是按照先学C语言,再学C++的顺序进行,这种学习顺序随着C++标准的不断升级改革后变得越来越不适用。早期的C++属于多面性语言,即可以像C一样进行模块化的面向过程的编程设计,也可以像Java一样进行抽象的面向对象程序设计。那时的教学者考虑的是学生应当从较为便于理解的面向过程的编程思路入门学习C语言编程,然后在熟练了面向过程的编程方式后再从C语言延伸到C++,转而学习面向对象的程序设计。可是随着面向对象的程序设计在应用市场上占领了绝对的主导地位后,再让学生从面向过程着手就等于是浪费学习时间。加上C++和C两门语言的初级语法思想是完全一致的,开设两门课程浪费了学时,也耽误后续更重要的核心课程的学习。
1程序设计语言C与C++的比较
1.1C与C++的共性。一般简要的介绍是把C++当作C的加强版,这种认知当然是错误的,C++语言的设计者在设计之初为了保障自家语言会受到开发者的关注,所以兼容了的C的语法,这就自然使得C++可以使用C的编程方式进行程序设计,所以也导致了很多人对这两种语言的关系产生了错误的认知。同时由于C语言本身设定上的优越性,所以C++在进行自我定义的时候也沿用了C语言很多优良的性质。基础数据结构一致,C与C++的基础数据类型都是以变量和常量作为基本属性划分,类型上有字符型、整型、长整型、单精度浮点型和双精度浮点型,不过C++额外增设了布尔型。复合型数据结构上也都同时具有数组、多维数组、结构体、枚举类型和共同体,但是C++增设了字符串类型以替代C语言中的字符数组,功能上更加强大,也更加便捷。在语法方面,声明、赋值、循环、选择的结构和实现都是一致的,并且C++虽然提倡使用类和对象的概念去设计程序结构,可也同样支持函数体结构的程序设计结构。并且C语言中函数的赋值都是间接调用,在使用C语言函数时总是会在指针上出现各种纰漏,但是C++的函数体可以使用引用参数,这就使得C++的函数体比之C的更加好用。总的说来就是,C++标准下用户可以完全使用C语法进行编程而不会出现任何BUG,同时C++自身的优越设定和标准使得其设计能力比C要强大数倍,是目前市场上大型程序开发的首选语言。
1.2C与C++的不同。上一节介绍了C++和C的.基础语法上的区别,这些区别都是C++的作者在C的基础之上修订而来的结果,是为了让C++标准下得面向过程的程序设计比之单纯的C更加便捷方便。但是C++的诞生伊始,就是一门向上使用面对对象的程序设计思想的高级编程语言。它的封装性、继承性、多态性和对象唯一性才是C++成为强大高级语言的重要原因,这些特性都是C语言不可能拥有的。所以C能够实现的程序,C++能够实现并且实现的更为方便,C不能实现的程序,C++同样可以实现。
1.3C++的特色。承接上一节,C++和C之间最大的不同,也是C++自身最值得夸耀的特性,就是面向对象程序设计思想。这种思想使得C++语言设计出来的程序,变成了类和对象的有机结合,这种结合的代码比之面向过程的函数体架构的代码更加易读,共同开发起来容易上手,后续的维护者也不用费更多的脑筋去理解前人的代码含义。而类和对象的设计思路,使得开发者合作时相互之间的工作变的更为独立,双方之间只需要知道对方所写的类实现的功能和包含的数据就行。这种特性我们称之为良好的封装性,开发者之间不需要去知道对方的代码是如何实现,甚至在此之上还可以保证良好的代码健壮性。因为类的引入,更先进的作用域机制也被引入进来,类的书写者往往会将自己类中的数据进行严格的作用域限定,防止其他合作者擅自去修改和使用自己类中的数据。合作者想要知道类中的数据或者使用类中的数据,只能通过类的书写者定义的带有检查机制的方法才行。这样会使得很多人合作开发的大型项目的稳定性和安全性比之用C语言开发时再上一个台阶。同时类的概念中还有一个先进的设定就是继承性,并且由这个继承性还延伸出了接口的概念。有了可以继承的接口和类,那么开发者在对程序进行迭代的瀑布开发流程时,就可以很好的使用自己曾经开发的源代码,或者借用其他项目的源代码,因为只要学会科学的使用继承机制,就不仅仅是节约程序员的代码时间,也减少了程序员在回顾曾经代码时发生的错误和歧义。而与继承机制配合使用的是多态性,曾经C语言中定义的函数,其灵活度非常差,特定的函数只能满足特定程序定义的需求,想要重用曾经的源代码是几乎不可能的事情。我们刚才提到的继承机制使得C++开发者复用源代码成为了一种习惯,但是复用时不可避免的修改问题又摆到了台面上,多态机制顺应而生了。多态机制使得类不仅可以继承其他类,将父类的数据和方法都在本类体中自如的使用,同时还可以用本类中新的定义和代码去覆盖父类中的数据定义和方法。这就让程序员变的更加自由,想用父类的数据和方法时就去继承,但是不想全部使用时就加上多态机制去覆盖。这样代码之间的重复利用率变得十分客观,节约了大量的开发时间和开发成本。
2程序设计语言C与C++开设建议
C++课程的内容应当如下安排:第一部分,教授C++的基础语法,让学生可以编写出在DOS命令行下输入输出的程序,了解编程的基本概念和思想。并且这时应当同时进行C和C++的双向语法教学,为日后学生进入高年级后的方向选择打下基础。此部分使用半个学期最为适宜,并且此时并不灌输学生何为面向对象何为面向过程,而主在让学生使用基础语法进行最基本的编程探索。第二部分,在学生有了基础编程知识后,将数据结构的内容放入课程中去,用半学期的时间教授学生用C++实现的各类常见数据结构。并且结合实际开发项目中的代码作为阅读补充,让学生明白数据结构的知识对程序开发的意义,然后将简化后的小项目作为课堂的主要内容,用实际的代码让学生去理解那些枯燥的数学定理和概念。而且在实现数据结构的过程中,必然会面对一些更为高级的C++语法和概念。总的来说,用大一上的一个学期让学生对于基础编程有了良好的认知和深入,是十分值得和有效的。第三部分,在学生有了数据结构的基础和C++的基本语法掌握后,应当面对一些实际的开发项目和问题。当然实际的问题还是需要老师进行简化,其主要目的是让学生掌握C++的高级特性和实际软件开发的过程与思路,并且想学生传授基础的算法。这一部分较为困难,应当使用一个学期让学生慢慢的掌握和熟悉。第四部分,在学生算是对C++语言和数据结构与算法都有了基础的入门后,再进行课堂教学意义就不大了,应当再大二上学期开设一门课程设计实验课,让学生完成几个难度从小到大的项目,循序渐进的掌握基本的实际开发技巧和思维。
参考文献
[1]罗莉.计算机程序设计的多应用型开发与实现[J].产业与科技论坛,2015(14):54-55.
[2]邓薇,何锫,钱俊彦,等.深度优先的多基因表达式程序设计[J].模式识别与人工智能,2013(9):819-828.
[3]宛西原,汪霞.非计算机本科专业计算机程序设计课程的改革思考[J].计算机工程与科学,2014(z1):56-59.
c++程序设计实习报告怎么写
C/C++程序设计
课程设计报告[注意:文件名的格式为:
学号_中文姓名_版本_时间.doc
不符合文件名要求的实验报告为不合格报告!
如:学号为200800800999的李一同学上交的第一版的文件名为:
200800800999_姓名_
注意:
(1)连字符是下划线
(2)日期的格式为YYYYMMDD
(3)上传的文件必须是Word2003版的,不可以是其他类型或Word其他版本的文件。文件后缀名不可以是“.”
本文中所有批注内容,在课程设计报告上交时必须删除!!!]
专 业:
班 级: 班
学 号:
姓 名:
版本号:
时 间:2010-xx-xx
目 录
1 概述 2
1.1 目的 2
1.2 计划 2
2 课程设计过程及结果 2
2.1 编程环境及工具 2
2.2 排序与简单分析 2
2.3 综合设计 2
2.3.1 功能实现 2
2.3.2 程序异常处理 2
2.3.3 特色功能 2
3 课程设计总结 2
3.1 课程设计计划执行情况 2
3.2 我理解的C++ 3
3.3 改进设想 3
附录 关键代码 3
原创声明:本课程设计报告及相应的软件程序的全部内容均为本人独立完成,如有抄袭,愿承担相应后果。[完全独立完成(参考API及与同学讨论是可以的,需要自己一点一点录入并调试代码、编写报告)的同学,仅声明此一句即可。删除下面的非原创说明。
本文中所有批注内容,在课程设计报告上交时必须删除!!!]
非原创说明:[非独立完成的同学,上传上面的原创声明,并详细描述自己所做部分和拷贝同学部分。
本文中所有批注内容,在课程设计报告上交时必须删除!!!]
本课程设计本人完成的内容包括:
1、
2、
3、
拷贝同学的内容包括:
1、
2、
3、
本人独立完成部分约占总工作量的百分比为:___________
声明人:_______________________
学 号:_______________________
概述
目的
计划
课程设计过程及结果
编程环境及工具
排序与简单分析
综合设计
功能实现
文件读入
数据录入
信息显示
……[可自行扩展标题,以将实验报告材料组织得有条理为目标
本文中所有批注内容,在课程设计报告上交时需删除!!!]
程序异常处理
特色功能
课程设计总结
课程设计计划执行情况
我理解的C++
改进设想
附录 关键代码
怎样写Visual C++课程设计报告--学生通讯系统
为什么每个学校的课程设计报告都差不多呢。。。好像上来问的都是差不多的内容
高手榜满写下c++课程设计
把学生信息保存为 然后用下面的代码就可以实现了。你们的大作业怎么跟我们的几乎完全一样- -
#include <iostream>
using std::cin;
using std::cout;
using std::cerr;
using std::endl;
using std::ios;
#include <fstream>
using std::ofstream;
using std::ifstream;
using std::fstream;
#include <string>
using std::string;
#include <iomanip>
using std::setw;
int enterChoice();
void searchGrade(string names[],string ID[],int Chinese[],int Math[],int Eng[],int row);
void changeGrade(string names[],string ID[],int Chinese[],int Math[],int Eng[],int row);
void deleteGrade(string names[],string ID[],int Chinese[],int Math[],int Eng[],int& row);
void addGrade(string names[],string ID[],int Chinese[],int Math[],int Eng[],int& row);
int getRow(ifstream& inp);
void getID(ifstream& inp,string names[],string ID[],int Chinese[],int Math[],int Eng[]);
void countGrade(string names[],string ID[],int Chinese[],int Math[],int Eng[],int row);
void saveResult(string names[],string ID[],int Chinese[],int Math[],int Eng[],int row);
void showGrade(string names[],string ID[],int Chinese[],int Math[],int Eng[],int row);
void averGrade(int Chinese[],int Math[],int Eng[],int row);
int main()
{
ifstream infile("");
if(!infile){
cerr<<"文件打开错误,不存在."<<endl;
exit (1);}
int row=getRow(infile);
();//确定目前的学生数为row
ifstream infile2("");
//最多提供60个学生的成绩管理.根据目前合理的课程班人数确定.可根据需要进行更改.
string names[60]; //学生姓名
string ID[60]; //学生学号
int Chinese[60]; //语文成绩
int Math[60]; //数学成绩
int Eng[60]; //英语成绩
getID(infile2,names,ID,Chinese,Math,Eng);//从文件中读入学生资料.
();
int part; //其值代表了用户所选模块.
//系统的主菜单.用户选择将要进行的操作.
while(part!=4){
cout<<"\n **欢迎进入学生信息管理系统**"<<endl
<<"------------------------------------"<<endl
<<" 请选择您要进行的操作"<<endl
<<" 1-学生成绩信息维护"<<endl
<<" 2-学生成绩信息查询"<<endl
<<" 3-学生成绩统计"<<endl
<<" 4-退出系统"<<endl
<<"------------------------------------"<<endl;
cin>>part;
if (part==1){
int choice; //用户在信息维护模块所选择的执行功能.
while((choice=enterChoice())!=4){
switch(choice){
case 1:
addGrade(names,ID,Chinese,Math,Eng,row);
break;
case 2:
deleteGrade(names,ID,Chinese,Math,Eng,row);
break;
case 3:
changeGrade(names,ID,Chinese,Math,Eng,row);
break;
default:
cerr<<"您的选择不正确"<<endl;
break;
}
}
}
if (part==2){
cout<<"请选择:"<<endl
<<"1-按学号或姓名查询"<<endl
<<"2-查看所有学生信息"<<endl;
int allOrPart;
cin>>allOrPart;
if (allOrPart==1)
searchGrade(names,ID,Chinese,Math,Eng,row);
if (allOrPart==2)
showGrade(names,ID,Chinese,Math,Eng,row);
}
if (part==3){
cout<<"请选择:"<<endl
<<"1-查询单科目某一分数段的学生分布情况"<<endl
<<"2-计算单科平均分数"<<endl;
int averOrPart;
cin>>averOrPart;
if (averOrPart==2)
averGrade(Chinese,Math,Eng,row);
if (averOrPart==1)
countGrade(names,ID,Chinese,Math,Eng,row);
}
}
return 0;
}
//此函数用于获取当前系统中存储获的学生信息条数.
int getRow(ifstream& inp)
{
int row=0;
string a,name,ID;
int mark;
inp>>a>>a>>a>>a>>a; //跳过第一行的目录结构.
while(inp){
inp>>name>>ID>>mark>>mark>>mark;
row++;
}
return row-1;
}
//此函数用于从文本文档中读取数据到内存以备用户在终端进行操作.
void getID(ifstream& inp,string names[],string ID[],int Chinese[],int Math[],int Eng[])
{
string a;
inp>>a>>a>>a>>a>>a; //跳过第一行的目录结构.
int i=0;
while(inp){
inp>>names[i]>>ID[i]>>Chinese[i]>>Math[i]>>Eng[i];
i++;
}
}
//此函数实现学生成绩信息维护模块的子菜单.
int enterChoice()
{
cout<<"\n 请输入您要进行的操作"<<endl
<<" | 1-增加学生信息 |"<<endl
<<" | 2-删除学生信息 |"<<endl
<<" | 3-修改学生信息 |"<<endl
<<" | 4-返回上层 |"<<endl;
int choice;
cin>>choice;
return choice;
}
//此函数为用户提供学生成绩的查询功能,使用学生姓名或学号均可.
void searchGrade(string names[],string ID[],int Chinese[],int Math[],int Eng[],int row)
{
string searchGoal;
cout<<"\n请输入学生学号或姓名"<<endl;
cin>>searchGoal;
bool found;
for (int j=0;j<row;j++){
if (names[j]==searchGoal||ID[j]==searchGoal){
cout<<"查询结果"<<endl
<<"姓名 学号 语文 数学 英语"<<endl
<<setw(6)<<names[j]<<setw(6)<<ID[j]<<setw(6)<<Chinese[j]<<setw(6)<<Math[j]<<setw(6)<<Eng[j]<<endl;
found=true;
break;
}
}
if (found!=true)
cout<<"所查找的学生成绩不存在"<<endl;
}
//此函数可删除系统中存储的学生信息记录.
void deleteGrade(string names[],string ID[],int Chinese[],int Math[],int Eng[],int& row)
{
cout<<"\n请输入要删除信息的学生姓名或学号"<<endl;
string delName;
cin>>delName;
bool found;
for (int j=0;j<row;j++){
if (names[j]==delName||ID[j]==delName){
found=true;
names[j]="\0";
ID[j]="\0";
Chinese[j]=-1;
Math[j]=-1;
Eng[j]=-1;
saveResult(names,ID,Chinese,Math,Eng,row);
cout<<"该生信息已成功删除"<<endl;
}
}
if (found!=true)
cout<<"要删除的学生信息不存在"<<endl;
}
//此函数可向文本文件中写入新的学生信息.
void addGrade(string names[],string ID[],int Chinese[],int Math[],int Eng[],int& row)
{
string newID;
cout<<"\n请先输入学生学号:"<<endl;//学生可能存在重名现象,但是他们的学号是唯一的
//因此通过学号来判断要增加的学生信息是否重复.
cin>>newID;
bool exist;
for (int j=0;j<row;j++)
if(newID==ID[j]){
cout<<"该学生信息已存在"<<endl;
exist=true;
break;}
if (exist!=true){
cout<<"\n请再输入学生姓名和三科成绩,中间以空格键分开"<<endl;
ID[row]=newID;
cin>>names[row]>>Chinese[row]>>Math[row]>>Eng[row];
row++;
saveResult(names,ID,Chinese,Math,Eng,row);
cout<<"学生信息增加成功"<<endl;
}
}
//此函数可更改学生的各项信息.
void changeGrade(string names[],string ID[],int Chinese[],int Math[],int Eng[],int row)
{
string changeGoal;
cout<<"\n请输入要更改信息的学生姓名或学号:";
cin>>changeGoal;
bool found;
int changeNum;//用户的修改内容选项
for (int j=0;j<row;j++){
if (names[j]==changeGoal||ID[j]==changeGoal){
found=true;
cout<<"该学生原始信息为:"<<endl
<<"姓名 学号 语文 数学 英语"<<endl
<<setw(6)<<names[j]<<setw(6)<<ID[j]
<<setw(6)<<Chinese[j]<<setw(6)<<Math[j]
<<setw(6)<<Eng[j]<<endl
<<"请选择:"<<endl
<<"1-修改学生姓名"<<endl
<<"2-修改学生学号"<<endl
<<"3-修改语文成绩"<<endl
<<"4-修改数学成绩"<<endl
<<"5-修改英语成绩"<<endl;
cin>>changeNum;
cout<<"请输入修改后的内容:";
switch(changeNum){
case 1:
cin>>names[j];
break;
case 2:
cin>>ID[j];
break;
case 3:
cin>>Chinese[j];
break;
case 4:
cin>>Math[j];
break;
case 5:
cin>>Eng[j];
break;
}
saveResult(names,ID,Chinese,Math,Eng,row);
cout<<"\n修改成功!"<<endl
<<"修改后的学生信息为:"<<endl
<<"姓名 学号 语文 数学 英语"<<endl
<<setw(6)<<names[j]<<setw(6)<<ID[j]
<<setw(6)<<Chinese[j]<<setw(6)<<Math[j]
<<setw(6)<<Eng[j]<<endl;
}
}
if (found!=true)
cout<<"要修改的学生信息不存在"<<endl;
}
//此函数可统计某一科目再某个分数段上的学生分布,包括学生的姓名,学号,成绩,以及在这个分数段上的学生人数.
void countGrade(string names[],string ID[],int Chinese[],int Math[],int Eng[],int row)
{
string subject;
int low,high;
int countResult=0;
cout<<"\n请输入要查询的课程名和分数段,中间用空格分开,如:英语 60 70"<<endl;
cin>>subject>>low>>high;
cout<<subject<<"成绩在"<<low<<"-"<<high<<"分数段的学生为:"<<endl;
for (int i=0;i<row;i++){
if (subject=="语文"&&Chinese[i]>=low&&Chinese[i]<=high){
countResult++;
cout<<setw(7)<<names[i]<<setw(7)<<"学号"
<<setw(5)<<ID[i]<<setw(7)<<"分数"
<<setw(7)<<Chinese[i]<<endl;
}
if (subject=="数学"&&Math[i]>=low&&Math[i]<=high){
countResult++;
cout<<setw(7)<<names[i]<<setw(7)<<"学号"
<<setw(5)<<ID[i]<<setw(7)<<"分数"
<<setw(7)<<Math[i]<<endl;
}
if (subject=="英语"&&Eng[i]>=low&&Eng[i]<=high){
countResult++;
cout<<setw(7)<<names[i]<<setw(7)<<"学号"
<<setw(5)<<ID[i]<<setw(7)<<"分数"
<<setw(7)<<Eng[i]<<endl;
}
}
cout<<"\n共"<<countResult<<"人"<<endl;
}
//此函数可将内存中的学生信息数据变动保存到文本文件中.
void saveResult(string names[],string ID[],int Chinese[],int Math[],int Eng[],int row)
{
ofstream outfile("");
outfile<<" 姓名 学号 语文 数学 英语"<<endl;
for (int n=0;n<row;n++){
if (names[n]!="\0")
outfile<<setw(7)<<names[n]<<setw(6)<<ID[n]
<<setw(7)<<Chinese[n]<<setw(7)<<Math[n]
<<setw(7)<<Eng[n]<<endl;
}
}
//显示目前系统中记录的所有的学生信息.
void showGrade(string names[],string ID[],int Chinese[],int Math[],int Eng[],int row)
{
for (int n=0;n<row;n++){
if (names[n]!="\0")
cout<<setw(7)<<names[n]<<setw(6)<<ID[n]
<<setw(7)<<Chinese[n]<<setw(7)<<Math[n]
<<setw(7)<<Eng[n]<<endl;
}
}
//计算单科平均分数
void averGrade(int Chinese[],int Math[],int Eng[],int row)
{
cout<<"请选择所要计算平均分数的科目:"<<endl
<<"1-语文"<<endl
<<"2-数学"<<endl
<<"3-英语"<<endl;
int subject;
cin>>subject;
int sum=0;
for (int n=0;n<row;n++){
if (Eng[n]!=-1)
{
if (subject==1)
sum+=Chinese[n];
if (subject==2)
sum+=Math[n];
if (subject==3)
sum+=Eng[n];
}
else row=row-1;
}
double averGrade;
averGrade=static_cast<double>(sum)/static_cast<double>(row);
cout<<"该科目的平均成绩为:"<<averGrade<<endl;
}
c++课程设计报告的摘要怎么写?
你可以参考下,这是以前写一个设计报告的时候别人告诉我的。
摘要要精练,写这篇报告中的主要内容,包括设计什么,用了什么方法和工具,怎么设计的,最后的结果。大约100-200字。不要大话空话太多。
关键词3-5个,不少于3个,不多于5个,关键词一定要能反映报告的核心内容。
宋体5号
中英文摘要若能打印在一页就打印在一页
上一篇:中外医学研究杂志社官网
下一篇:现代城市轨道交通杂志社