C++课程设计(教务管理系统)
C++课程设计(教务管理系统)(精选8篇)
C++课程设计(教务管理系统) 第1篇
#include
void menu(University uni);//菜单函数声明
class Student//学生类 { public: string name;int age;string sex;int number;string major;
public: void disp_stu();
friend void file_in(University &uni);
friend void file_out(University uni);};void Student::disp_stu(){
}
class Institute//学院类 { public: string name;cout<<“学生姓名:”< public: void add_stu(); //添加学生 bool delete_stu(int i); // 删除学生 bool modefy_stu(int i); //修改学生信息 void disp_ins_1(); // 显示本院学生信息 friend void file_in(University &uni); friend void file_out(University uni);};void Institute::add_stu(){ } Student *p=new Student;cout<<“学生名字:”;cin>>(*p).name;cout<<“学生年龄:”;cin>>(*p).age;cout<<“学生性别:”;cin>>(*p).sex;cout<<“学生学号:”;cin>>(*p).number;cout<<“学生专业:”;cin>>(*p).major;head.Add(p);//在链表末尾增加一个节点 bool Institute::delete_stu(int i){ } head.Remove(i);//删除链表指定位置节点 return true;bool Institute::modefy_stu(int i){ Student *p=new Student;cout<<“学生名字:”;cin>>(*p).name;cout<<“学生年龄:”;cin>>(*p).age;cout<<“学生性别:”;cin>>(*p).sex;cout<<“学生学号:”;cin>>(*p).number;cout<<“学生专业:”;cin>>(*p).major;head.Remove(i);//删除链表指定位置节点 head.Insert(i,p);//在链表指定位置插入一个新节点 return true;} void Institute::disp_ins_1(){ } class University//学校类 { public: string name;int age;string addr;List void design_stu();//学生信息设置 int i;Node cout<<“学院名字:”< } cout<<“-------”<pData->disp_stu();q=q->pNext; void add_ins(); //添加学院 bool delete_ins(int n); // 删除学院 void design_cqut(); //设置学校信息 bool modefy_cqut(); //修改学校信息 void disp_cqut(); //显示学校信息 void design_ins(); //学院信息设置 bool modefy_ins(int n); //修改学院 void disp_ins(); //显示学院信息 void search_menu();void search_name(string n);//姓名 void search(string n);//性别//函数重载 void search(int n);//学号 bool search_age(int n);//年龄 friend void file_in(University &uni);};friend void file_out(University uni); void University::design_stu(){ int i,m,j;int n;cout<<“ ★★★★★★学生信息设置★★★★★★ ”< { disp_ins(); cout< cout<<“输入学生所在学院序号:”< cin>>m;system(“cls”);//清屏 head.pCurrent=head.pHead;//当前指针指向双向链表头指针 for(j=1;j { } } head.pCurrent=head.pCurrent->pNext;//当前指针指后移 cout<<“输入要添加的学生信息:”;head.pCurrent->pData->add_stu();cout<<“按任意键返回上一级菜单:”< disp_ins(); cout< cout<<“输入学生所在学院序号:”< cin>>m;system(“cls”);//清屏 head.pCurrent=head.pHead;//当前指针指向双向链表头指针 for(j=1;j { head.pCurrent=head.pCurrent->pNext;//当前指针指后移 } } head.pCurrent->pData->disp_ins_1();cout< { disp_ins(); cout< cout<<“输入学生所在学院序号:”< cin>>m;system(“cls”);//清屏 head.pCurrent=head.pHead;//当前指针指向双向链表头指针 for(j=1;j { } } head.pCurrent=head.pCurrent->pNext;//当前指针指后移 head.pCurrent->pData->disp_ins_1();cout< } cin>>n;head.pCurrent->pData->modefy_stu(n);cout<<“按任意键返回上一级菜单:”< void University::add_ins(){ } bool University::delete_ins(int n){ } bool University::modefy_ins(int n){ Institute *p=new Institute;cout<<“学院名字:”;cin>>(*p).name;head.Remove(n);//删除链表指定位置节点 head.Insert(n,p);//在指定位置插入节点信息 return true;head.Remove(n);//删除链表指定位置节点 return true;Institute *p=new Institute;cout<<“学院名字:”;cin>>(*p).name;head.Add(p);//在链表末尾增加一个节点 } void University::disp_ins(){ int i;Node for(i=1;i<=head.size;i++){ cout<pData->name< } void University::design_ins(){ int i;int j;cout<<“ ★★★★★★学院信息设置★★★★★★ ”< cout< { } disp_ins();cout<<“按任意键返回上一级菜单:”< disp_ins(); add_ins(); cout<<“按任意键返回上一级菜单:”< getch();system(“cls”);//清屏 design_ins(); break;} case 3: { } disp_ins();cout<<“输入删除学院序号:”;cin>>j;delete_ins(j);cout<<“按任意键返回上一级菜单:”< disp_ins();cout<<“输入修改学院序号:”;cin>>j;modefy_ins(j);cout<<“按任意键返回上一级菜单:”< } case 5:menu(*this);break;} } bool University::modefy_cqut(){ cout<<“学校名字:”;cin>>name;cout<<“创建年代:”;cin>>age;cout<<“学校地址:”;cin>>addr;return true;} void University::design_cqut(){ int i; University uni;cout<<“ ★★★★★★学校信息设置★★★★★★ cout< switch(i){ case 1: { disp_cqut(); cout<<”按任意键返回上一级菜单:“< getch();system(”cls“);//清屏 design_cqut(); break; } case 2: { modefy_cqut(); cout<<”按任意键返回上一级菜单:“< getch();system(”cls“);//清屏 design_cqut();break;”< } } } case 3:menu(uni);break; void University::disp_cqut(){ cout<<“学校有关信息为:”< } void University::search_name(string n){ int i,j,m=0;head.pCurrent=head.pHead;//当前指针指向学院节点头指针 for(i=0;i { if(n==head.pCurrent->pData->head.pCurrent->pData->name) { } head.pCurrent->pData->head.pCurrent->pData->disp_stu();m++;head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext;//学生当前指针后移 } bool University::search_age(int n){ int i,j,m=0;head.pCurrent=head.pHead;for(i=0;i } cout<<“有”< } head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pHead;for(j=0;j } head.pCurrent->pData->head.pCurrent->pData->disp_stu();m++;head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext;} head.pCurrent=head.pCurrent->pNext;} cout<<“有”< void University::search(string n){ } int i,j,m=0;head.pCurrent=head.pHead;for(i=0;i for(j=0;j if(n==head.pCurrent->pData->head.pCurrent->pData->sex){ head.pCurrent->pData->head.pCurrent->pData->disp_stu();} m++; head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext; } cout<<“有”< int i,j,m=0;head.pCurrent=head.pHead;for(i=0;i head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pHead; for(j=0;j { if(n==head.pCurrent->pData->head.pCurrent->pData->number) { head.pCurrent->pData->head.pCurrent->pData->disp_stu(); m++; } head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext; } head.pCurrent=head.pCurrent->pNext;} cout<<“有”< /****************************************信息查询菜***********************************************/ void University::search_menu(){ int i;cout<<“ ★★★★★信息查询显示★★★★★”< switch(i){ case 1: { 单 disp_ins(); cout<<“按任意键返回上一级菜单:”< { } head.pCurrent=head.pHead;//当前指针指向学院节点头指针 for(i=0;i } head.pCurrent->pData->disp_ins_1();head.pCurrent=head.pCurrent->pNext;cout<<“按任意键返回上一级菜单:”< } int j;disp_ins();cout<<“请输入学生所在学院序号:”;cin>>i;system(“cls”);//清屏 head.pCurrent=head.pHead;for(j=1;jpNext;head.pCurrent->pData->disp_ins_1();cout<<“按任意键返回上一级菜单:”< case 4: { string n;cout<<“输入要查询的姓名:”;cin>>n;system(“cls”);//清屏 search_name(n); } cout<<“按任意键返回上一级菜单:”< { } int n1;cout<<“输入要查询的年龄:”;cin>>n1;search_age(n1);cout<<“按任意键返回上一级菜单:”< system(“cls”);//清屏 case 6: { } string n;cout<<“输入要查询的性别:”;cin>>n;system(“cls”);//清屏 search(n);cout<<“按任意键返回上一级菜单:”< } int n;cout<<“输入要查询的学号:”;cin>>n;system(“cls”);//清屏 search(n);cout<<“按任意键返回上一级菜单:”< menu(*this); } } } break;/**********************************************************************/ { int i,j;ifstream inf(“cqutData.txt”,ios::in);inf>>uni.name;inf>>uni.age;inf>>uni.addr;inf>>uni.head.size;//学院个数 for(i=0;i 导出文件数据void file_in(University &uni) Node else uni.head.pEnd->pNext=m;//把节点m赋给下一个学院信息节点 m->pPrev=uni.head.pEnd;//节点m指向学院信息的尾节点 uni.head.pCurrent=uni.head.pEnd=m;//学院信息的尾节点始终指向m节点 inf>>uni.head.pCurrent->pData->head.size;//学生个数 for(j=0;j Student *q=new Student;inf>>q->name;inf>>q->age;inf>>q->sex;inf>>q->number;inf>>q->major; Node n->pPrev=uni.head.pCurrent->pData->head.pEnd; uni.head.pCurrent->pData->head.pCurrent=uni.head.pCurrent->pData->head.pEnd=n;//学生信息的尾节点始终指向n节点 } } } /************************************************************************************/ void file_out(University uni){ ofstream ouf(“cqutData.txt”,ios::out);int i,j;ouf< 导入文件数据ouf< uni.head.pCurrent=uni.head.pHead;//当前指针指向学院节点头指针 for(i=0;i ouf< ouf< uni.head.pCurrent->pData->head.pCurrent=uni.head.pCurrent->pData->head.pHead;//当前指针指向学生节点头指针 for(j=0;j ouf< uni.head.pCurrent->pData->head.pCurrent=uni.head.pCurrent->pData->head.pCurrent->pNext;//学生当前指针后移 } } } uni.head.pCurrent=uni.head.pCurrent->pNext;//学院当前指针后移 /************************退出系统菜单****************************/ void exit(University uni){ } int i;cout<<“是否保存修改内容:”< { } file_out(uni);exit(0);break;case 2:{exit(0);break;} case 3: { menu(uni);break;} case 4: { file_out(uni); } } menu(uni);break; /***************************************************************************************/ void menu(University uni){ system(“cls”);/*清屏*/ int i;cout< 主菜单 cout<<“★★★★★★★★★★★★★主菜单★★★★★★★★★★★★★”< cout< cout< cout< } int main(){ University u; } file_in(u);menu(u);return 0;switch(i){ case 1:uni.design_cqut();break;case 2:uni.design_ins();break;case 3:uni.design_stu();break; case 4:uni.search_menu();break; case 5:exit(uni);break;} 第1章 任务描述 本次C++实践课题为“超市管理系统”。要求功能有 A、添加商品信息,有商品编号、商品名、供应商代号、进货价、售出价、存货数等。进货:若商品已存在,只需修改存货数;若不存在,需增加新纪录。B、售出:输入商品编号,修改相应的存货数与销售额。C、查询:查询商品,销售额。 第2章 系统需求及主要功能 本系统为超市管理系统的设计与实现,可供超市管理者对超市商品信息的查询和修改,适用于各种小型超市,有效地提高了工作效率。若查询不符合实际情况,则会提示错误。Enter键确认。 本系统实现以下功能: (1)进入系统后提示适用方法,键入相应数字依次将商品代码(由阿拉伯数字组成)、商品名称、商品产地、商品单价以及库存量等商品信息存入并保存。 (2)键入商品名称,可将要求删除商品调出,并予以删除。 (3)键入相应数字选项,可修改超市商品的所有信息。 (4)键入相应数字选项,可查询需要查询的商品的所有信息。 (5)键入相应数字选项,可显示超市所有商品的所有信息。 (6)键入数字0退出系统。 第3章 系统概要 3.1主界面流程图 设计超市管理系统的主界面,主界面相应的现实有下列菜单:增加商品、删除商品、修改商品、查询商品、统计商品、显示商品、退出。 超市管理系统 商品类 超市类 查询商品 统计商品 修改商品 增加商品 删除商品 找到 是 否 开始 开始 3.1主界面流程图 3.2 超市管理模块设计 (1) 超市初始化模块 类名为Goods和Supermarket,分别定义了商品的名称,代码,产地,单价和库存数量,以及需要在链表里面寻找的指针。 (2)增加商品的函数模块 在文件中写入产品的信息,加入链表。 (3)删除商品的函数模块 删除结点已达到删除产品的目的。 (4)修改商品的函数模块 载入商品的全部数据,并且放入内存,并且可以重新写入修改。如果没有找到商品,则返回。 (5)统计商品的函数模块 统计结点数以记录商品的数量,载入所有商品的数量和单价计算商品的总价值。 (6)数据存储的函数模块 将链表的所有数据写入文件,然后关闭文件。 (7)数据读入的函数模块 打开文件,然后将文件中的数据写入内存以备用。 第4章 系统设计过程 4.1 主界面流程图 设计超市管理系统的主界面,主界面相应的现实有下列菜单:增加商品、删除商品、修改商品、查询商品、统计商品、显示商品、退出。 查询商品 超市管理系统 商品类 超市类 统计商品 修改商品 增加商品 删除商品 找到 是 否 开始 结束 4.1主界面流程图 4.2清除内存中的商品函数 在超市管理系统中,商品出售出去,库存中的商品信息必须清除。 类外定义一个函数clear,在函数中定义一个指针p,讲物品goods赋给p,为了使函数能够不断地清除内存中的数据,要使指针移动,首先将p->next赋予goods,然后删除p中的数据,清空p中的数据,然后将goods赋给p,依次循环,从而实现删除库存中的一个或多个商品。 流程图如图 开始 定义指针 goods赋值p给p 将p的next赋值给goods 删除p中的数据 goods赋值给p 是否有需要删除的商品 结束 YES NO 图4.2清除内存商品流程图 4.3增加商品信息 类外定义一个函数add,首先在函数中定义变量商品代码 num 和商品数量count,都为double类型,商品名name和产地address为char类型,价格price 为int类型,首先要求用户输入商品信息,依次输入商品的代码、商品名称、商品产地、商品单价,判断单价是否在0~65535之间,如果不在范围内重新输入直到在范围之内再继续向下面执行,输入商品库存量,库存在0~99999之间,如果超出范围重新输入,在范围之内继续执行,保存数据。 开始 定义变量 输入商品代码名称产地 输入商品价格 (0~65535) 输入商品库存 (0~99999) 保存 No No Yes Yes 图4.3 增加商品流程图 4.4删除商品信息的过程 (1)在Supermarket类下定义一个Delete函数作为删除商品信息的函数,然后定义商品名,输入商品信息。 (2)查找要删除的结点(节点中包含所有该商品的信息:商品代码、名称、产地、数量、单价),分别定义两个指针,原商品表信息指针p1和输入的商品信息指针p2,在p1循环的过程中比较输入的商品名与原有的商品名是否一致,如果一致则结束本次循环,否则p2指向p1,使得两指针同化,p1指针接着指向下一指针,这样依次向后查询。 (3)删除结点,如果找到要删除的结点则删除,在这个条件下,如果删除的结点是第一个结点,则继续将指针后移删除第一结点,如果删除的结点是后续结点,则将p2下一指针指向p1下一指针,则删除相应的后续结点。 输出的结果是:找到并删除或者sorry,未找到! 流程图如图4.5 查找要删除的结点 定义指针p1 p2 比较输入商品名和商品表已知商品名是否一致 是否找到结点 继续向后查找 p2=p1;p1=p1->next 是否为第一结点 找到则删除成功 查找后续结点 是 是 是 否 否 否 开始 结束 图4.5 删除商品流程图 4.5修改商品信息的过程 (1)定义各参数变量的类型,然后是输入要查找等待修改的商品名称 (2)查找要修改的结点,定义p1、p2指针,p1为指向goods商品表指针,p2为输入的商品指针,判断p1指针,如果输入的商品名和原有的商品名一致,则结束本次循环,否则,p1和p2指针同化,p1接着指向p1的下一指针。 (3)修改结点,若找到相应的要修改的结点,则p1指向Output函数,接着输出要修改的信息,利用Switch语句来调用相应的修改信息。 (4)创建新商品的结点,把原来要修改的结点删除并重新替换要创建的商品结点。如果找到等待修改的结点则修改,否则保持商品表信息不变。 流程图如图4.6 输入要查的商品名 查找要修改的结点 比较输入商品名和商品表已知商品名是否一致 是否找到第一结点 继续向后查找 p2=p1;p1=p1->next 继续查找后续结点 删除并替换 是 是 否 否 是 否 开始 结束 图4.6 修改商品流程图 4.6查询商品的过程: (1)在Supermarket类下定义一个Query函数作为查询商品信息的函数,输入商品名。 (2)查找要查询的结点(结点中包含所有该商品的信息:商品代码、名称、产地、数量、单价),定义一个原商品表信息指针p1,在p1循环的过程中比较 输入的商品名与原有的商品名是否一致,如果一致则结束本次循环,否则 p1指针接着指向下一指针,这样依次向后查询。 (3)查询结点,如果找到要查询的结点则输出:查询成功并输出其所有信息,若没有找到输出:sorry未找到! 流程图如图4.7 定义指针p1 比较输入商品名和商品表已知商品名是否一致 是否找到商品 继续向后查找 p1=p1->next 是 是 否 否 输入要查询商品的名字 开始 结束 图4.7查询商品流程图 4.7统计商品的过程 (1)是在Supermarket类下定义一个Add_up函数作为统计商品信息的函数,然后定义两个double型变量Amount和Value分别表示要求统计商品的总量和总价值,输入商品名字name。 (2)查找要统计的结点(结点中包含所有该商品的信息:商品代码、名称、产地、数量、单价),定义一个指针p1,原商品表信息指针p1,在p1循环的过程中比较输入的商品名与原有的商品名是否一致,如果一致则结束本次循环,p1指针接着指向下一指针,这样依次向后查询。没找到则输出:sorry,未找到! (3)统计商品,每当找到一个商品后就将Amount与p1所指count相加存入Amount,并将此时p1所指的count与price相乘再加上Value存入Value,循环查找相加,最后分别输出。 流程图如图4.8 开始 查找要统计的结点 定义指针p1 比较输入商品名和商品表已知商品名是否一致 是否找到结点 继续向后查找 p1=p1->next 是 是 否 否 否 Amount+=p1->count; Value+=p1->count*p1->price Value+=p1->count*p1->price 从 当前指针p1 输出 结束 图4.8 统计商品流程图 第4章 系统测试 打开软件后见到如图所示的界面正式进入超市管理系统 图5.1 系统主界面 该软件有增加商品、删除商品、修改商品、查询商品、统计商品、显示商品六大功能。 (1)增加商品 选择1 进入商品录入界面 图5.2 新增商品信息界面 依次录入商品代码、商品名称、商品产地、商品单价、商品的库存量并按Y保存。 (2)删除商品 图5.3 删除商品界面 首先输入商品的名称,然后选择是Y 或者N。 (3)修改商品 选择3 进入修改商品界面 图5.4 修改商品界面 输入商品的名称,系统会显示商品代码、名称、产地、价格、库存量,然后分别选择1 改商品代码、2改商品名称、3改商品产地、4改商品单价、5 改商品库存量、7改全部信息。 (4)查询商品 图5.5 查询商品界面 输入商品名称后,系统会显示你所查询的商品信息,有商品的代码、商品的名称、商品的产地、商品的单价和库存量等。 (5)统计商品 图5.6 统计商品界面 选择5后进入统计商品,输入商品名称后,会显示出商品的数量和总价值。 (6)显示所有商品 选择6后 系统会显示所有商品的信息 图5.7 显示所有商品信息界面 第6章 总 结 在xx老师的耐心指导下,本组成员结各人之长,集集体智慧,终于基本完成了超市管理系统的设计与实现。 在实训期间,各成员按时完成各自的分配任务,及时交付组长进行整理融合。整理完毕后进行调试发现有不少有待改善之处,如商品价格和商品库存量不能为负数,也不能高的离谱等。在李杰老师的严格要求下,最后还增加了一个显示栏,通过该显示函数的实现可对超市所有商品一目了然。本着认真学习,对自己负责的态度,本组成员共同努力,对该系统程序的不足之处尽力修改,尽量达到程序的健壮性等。 但是尽管本组成员都非常努力,但该程序仍有不足之处,如对于商品代码num和商品库存量count若输入英文字母,按回车键后屏幕便会闪烁不停,重新打开系统后前面所输入的商品信息不能保存,在保存商品时按Y以外的键也可保存等。 总之,在XX老师的悉心指导下,我们收获颇丰!不仅深刻掌握了课本知识,而且加强了团队意识,在以后各自的人生发展道路上抹下了浓重的一笔! 参考文献: [1]《C++面向对象程序设计》(第一版) 谭浩强 北京:清华大学出版社 2006年1月 [2]《C程序设计 》(第三版) 谭浩强 北京:清华大学出版社2005年7月 附 录 课程分工: XX:主界面的设计与实现,商品的显示,程序的整合。 XX:商品的删除,商品的修改。 XX:清除内存中商品的数据,增加商品,创建商品类节点。 XX:查询商品,统计商品数量与价值。 XX:数据存盘与装入。 随着计算机技术的迅猛发展, 很多新的、高效的软件开发技术应运而生。《C++程序设计》就是应潮流与需求而发展起来的一门优秀的程序设计语言, 它受到许多计算机专业人士及程序设计人员的青睐,在很多高等院校中《C++程序设计》都被列为计算机专业教学体系中的一门重要的主干课。但由于其使用的灵活性、抽象性、复杂性, 相对来说就成为一门难教又难学的课程。笔者根据自身教学经验和讲授中出现的问题, 在此进行分析探讨, 以期能进一步提高本课程的教学效果和教学质量。 1.《C++程序设计》教学特点 1.1《C++程序设计》优点 C++程序设计是近年来在国内外得到迅速推广和应用的一种计算机语言,它是在C语言的基础上扩充了面向对象机制而形成的一种OOP (Object-Oriented Programming) 面向对象程序设计。C++除继承了C的全部优点和功能外,还支持OOP。与其它程序设计语言相比, C++程序设计语言简洁、紧凑, 功能丰富, 表达能力强, 使用灵活方便, 目标程序效率高, 可移植性好, 适合编写各种软件, 尤其是系统软件[1]。 1.2《C++程序设计》教学目的 C++是一门高效实用的程序设计语言, 其教学目的是:通过理论和实践教学, 理解面向对象的概念, 树立OOP的思维, 学会采用面向对象的方法进行问题分析, 能够灵活运用面向对象思想建立模型, 并能够用OOP方法编程, 培养学生的动手和创新能力。教师在教学过程中以“让学生掌握面向对象程序设计的方法, 理解面向对象程序设计的灵魂”为教学原则, 让学生在掌握面向对象程序设计的基本概念、基本知识、基本思想的同时, 着重培养学生运用所学的知识去解决实际问题的能力[2]。 2. 课程存在的主要问题 2.1 学生学习兴趣不高 《C++程序设计》教学的目的是向学生介绍面向对象的程序设计方法, 使学生掌握面向对象的编程技术, 掌握软件开发的技巧。初接触C++课程时,很多学生感到新奇好玩。但C++程序设计是一门高度抽象的课程,具有繁多得数据类型和复杂灵活多变的语法结构,很多内容只可体会,很难言传,随着课程的不断深入,大量的规则、定义、要求和机械的格式出现,很容易使一部分学生产生枯燥无味的感觉,没有一定的毅力与恒心很难坚持下去。 2.2 实践教学环节重视不够 C++语言是一门实践性操作性非常强的计算机语言[3], 需要学生经常上机实验, 调试程序。但是很多学生上机目的不明确, 实验的内容不清楚, 只是照着书上的例题或课后习题输入程序, 满足于得出和书本上一样的运行结果, 并不真正理解程序。而且, 学生在程序调试过程中出现了的问题,只会被动地等待老师解决, 根本不会独立思考。 2.3 教师教学内容和方法单一 有些教师在授课时, 采用常规的顺序式、填鸭式的教学方法, 在教学过程中与学生之间几乎没有互动,因此学生学习的主动性没有得到充分发挥运用。对于基本概念只是讲解概念的定义, 缺乏联系实际, 造成很多学生对这门课程的理解,仅停留在一些死记硬背的术语上, 不能学以致用或解决实际问题。此外, 有些教师在讲解知识点时所选的例题大多是死板没有趣味的例题, 使很多学生感到C++语言枯燥、没有兴趣, 这严重影响了教学效果。 3.课程教学方法改革探讨 3.1 采用启发互动式教学 在C++程序设计课程中,有一些概念之间的差别和程序设计的步骤如果只通过教师讲述,学生虽然在字面上可以接受,但在理解深度上往往达不到令人满意的效果。如果能设计出一系列问题,让学生在解决问题的过程中自己去探究和体验,采用启发互动式教学,效果将大不相同。比如,在学习条件语句时,通过例子“谁做的好事”:四位同学中的一位做了好事,不留名,A说:不是我。B说:是C。C说:是D。D说:他胡说。已知三个同学说的是真话,一个同学说的是假话。现在要根据这些信息,找出做了好事的同学。成功引入了分支条件的概念。再比如,学习循环语句前[4],提问:一张普通的纸张对折了多少次后,纸张的厚度就能达到珠穆朗玛峰的高度 (8848米) 呢?普通纸张厚度约0.1mm,答案是只需要对折27次就可以实现题目要求。结果往往令多数学生觉得不可思议,这时再引入对循环语句的学习,并通过实例来解决该问题。由于同学们的兴趣提上来了,在讲解循环语法结构时,很轻易的就使学生掌握并留下了深刻的印象。 3.2 采用举一反三、循序渐进教学法 举一反三的教学方法,能引导学生在学习编程的过程中养成运用动态思维来解决问题,对培养学生的逻辑思维、抽象思维以及促进学生综合编程能力有非常重要的作用。在实际教学过程中,可通过在书本原有程序的基础上逐渐改变和增加条件的方法来提高学生的综合编程能力。例如在讲循环语句时,用例题求1+2+3++10的和,接着问求1*2*3**10的积呢?那么再求1+1/2+1/3++1/10的和呢?再加深问求1/2+2/3+3/5+5/8+8/13+,又该怎么求呢?在讲循环嵌套前,给出一个有趣的实际问题“案情分析”,某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:A、B至少有一人作案;A、E、F三人中至少有两人参与作案;A、D不可能是同案犯;B、C或同时作案,或与本案无关;C、D中有且仅有一人作案;如果D没有参与作案,则E也不可能参与作案。试编一程序,将作案人找出来。让学生带着问题去学新知识,有利于增强学习的积极性。另外,还可以故意设置一些错误的程序,设计一些陷阱,让大家自己去发现并把程序编写错了的地方改正过来,以提高他们的敏锐性和判断能力,激发他们学习的求知欲。 3.3 加强理论联系实际, 多上机实践操作 C++程序设计的实践性操作性特点决定了上机实践是教学过程中十分重要的部分, 如何加强上机实践, 提高实际操作的效果, 并以此进一步提高教学质量是值得广大计算机教师认真思考的问题。笔者认为可从以下几个方面来考虑:1.在课堂上给学生指定明确的上机操作题目, 让学生在课下进行充分的上机准备, 上机时做到目标明确、有的放矢;2.针对性地给学生一些趣味性的程序设计题目, 让学生能通过查阅资料、询问老师等各种方式将程序编写调试出来, 这可以深化课堂上学到的内容, 增强学生学以致用的能力, 同时让学生有一种学习的成就感;3.加强对学生进行实时指导, 要求每个学生都能对课堂上讲到的内容通过上机来理解掌握, 并随机抽查学生掌握情况,对上机过程中普遍存在的一些问题进行统一讲解。 3.4 采用多媒体辅助教学法 使用多媒体进行课堂教学, 可以给学生营造一个良好的程序设计环境。与传统教学方式相比, 多媒体教学具有形象生动、交互性好、信息量大、减少文字书写等显著特点。对课程中难以理解的抽象内容可以给予直观展示和动态模拟, 例如对大量的算法和结构流程的描述,通过计算机图形显示、动画模拟及文字说明等,营造一个全新的图文并茂、生动直观的教学环境,大大增加了教学信息量,提高了学习效率,有效地刺激和培养了学生的形象思维。对一些重要的结构流程和算法,通过实例动态演示和模拟程序的执行过程,既能辅助教师形象地讲授课程中的难点和重点, 又能激发学生学习的兴趣, 从而显著提高教学效果,对学生学习也可以起到事半功倍的作用。 4. 结束语 教学改革是教学活动的一个永恒主题, OOP教学在计算机专业教学中举足轻重。本文针对笔者在《C++程序设计》教学过程中出现的问题, 进行了思考和探索, 并将所提出的方法在教学活动中实施,这些措施可使学生强化对面向对象概念的理解,灵活运用面向对象思想建立模型, 学会采用面向对象的思维来分析问题, 并用OOP语言编程解决具体问题, 较好地激发了学生的兴趣, 调动了学生的学习积极性, 取得了显著的教学效果。 摘要:C++是一门高效实用的程序设计语言, 也是高等院校计算机专业教学体系中一门重要的主干课。作为一门难学又难教的课程, 本文就该课程教学中遇到的问题, 提出了改进措施和科学合理的解决方法, 着重强调教学方法在教学中的重要性, 使学生能更好地学习掌握。 关键词:C++,面向对象程序设计,教学方法,多媒体教学 参考文献 [1]王萍主编.C++面向对象程序设计[M].北京:清华大学出版社, 2002. [2]张海藩, 牟永敏主编.面向对象程序设计实用教程[M].北京:清华大学出版社, 2002. [3]莫露洁.《C++面向对象程序设计》课程教学探讨[J].科技信息, 2008 (24) . 关键词:C++程序设计教学方法教学内容教学手段 目前面向对象程序设计和分析方法是当前软件开发应用最广的方法,C++程序设计作为面向对象程序设计的具体的实现语言,其重要性可想而知。在目前计算机专业的高校毕业生在求职过程中,很多单位以C++作为一道初步的考核门槛。因此,C++程序设计的教学直接关系着高校计算机专业学生以后的就业竞争力,提高C++程序设计的教学效果对提高学生的就业能力作用可谓非常大。本文从教学方法、教学内容和教学手段这三方面有针对性的提出了改进思路。 1.教学方法的选取要和课程特点相结合 目前,高校计算机专业C++程序设计这门课程的开设方法主要有两种,第一种是先开设一个学期的C语言程序设计,再在下一学期开设C++面向对象的程序设计;第二种方法是直接开设C++程序设计这门课。 两种方法各有优缺点,第一种方法采取循序渐进的方法,学生在学习C++时相对比较轻松,因为C++中毕竟要用到C语言中的基本语法,而他们事先已经学过C语言程序设计。但缺点是C++程序设计和C语言程序设计主张的思想不同,C语言用的结构化的程序设计思想,而C++采用的是面向对象的程序设计思想[1],这样会导致学生以以前学习C语言的方法来学习C++程序设计;第二种方法可以让学生一开始就接受面向对象的程序设计思想,但缺点是学生入门比较难。 梧州学院计算机专业C++程序设计这门课程是排在大二的第一学期,也就是在刚学完C语言程序设计之后,这样有一个优点是可以使学生尽快的利用已学习的C语言基础来学习C++,因为C++程序设计中必须用到相关的C语言的基本语法知识,但缺点是会导致学生以以前学习C语言的方法来学习C++程序设计,因此,必须要让学生的思维从C语言学习中过渡到C++学习中来。荐于这样,在教学过程中可以采用这种方法:首先在正式讲解C++中的类之前,要求学生先利用以前学习过的C语言来编写一个较为复杂的程序,然后在在以后讲解C++的内容时,就以这个较为复杂的程序为例,以面向对象的思想对比以前用C语言编写的程序,从而可以使学生深入理解面向对象的程序设计方法比结构化程序设计方法的优越性,这样更能让学生理解到面向对象的程序设计思想的优点。 2.教学内容的组织要合理 C++程序设计课程要求学生掌握的是面向对象的程序设计思想和方法[2],对算法没有很高的要求,因此教学内容的组织也和其它程序设计语言有所区别。下面分课堂教学[3]和实验课教学两方面来研究一下。 2.1课堂教学方面 首先,要告诉学生C++程序设计这门课程学习的目标和要求。本课程主要要是讲解面向对象程序设计的三种特性,即封装性、继承性和多态性,要求学生在理解这三种特性的基础上能对其进行灵活运用,并且最终能运用面向对象的程序设计的思想和方法来分析问题和解决问题。因此在教学过程中,首先是要告诉学生这门课程学习的目标和要求是对面向对象程序设计的思想,而对算法没有什么要求。这一点针对梧州学院计算机专业的学生很重要,因为根据以前的教学经验了解到,梧州学院的在校生大多来自广西区,很多学生在高中时根本没有接触过计算机,逻辑分析能力比较差,因此很多学生对所学的第一门程序设计语言——C语言都还不是很熟悉,对C语言存在着心理阴影,因此首先从告诉他们学习C++程序设计对具体的逻辑分析要求不高,以解除学生的压力,只有这样才能在以后的教学过程中逐步激发学生的学习积极性。 另一方面,在C++程序设计课程教学过程中举例要有代表性和针对性。正是因为C++程序设计对具体的算法要求不高,因此对相关内容的讲解不可能用到那些短小而有趣的例程来讲解,这就给激发学生的兴趣带来了不利影响。实际上,几乎所有的C++程序设计的教材在讲解相关知识点时都是举一些简单而又很枯燥的例子,比如在讲封装性时,很多教材就直接以桌子、椅子等对象来说明怎样达到封装的效果,但根本体现不了封装带来的好处。针对这一特点,我总结的方法是首先在正式讲解C++程序设计前,让学生运用C语言编写一个较为复杂的程序,比如前面讲到的“学生成绩管理系统”,然后在讲解后面的封装时告诉学生哪些应该封装成一个类,应该怎样封装,封装之后有什么好处,再和以前的程序进行比较就可以让学生很直接就体会到面向对象的程序设计方法的优点。 2.2实验教学方面 C++程序设计作为一门程序设计语言,上机实验是必不可少的,而且是很重要的一个教学环节。实验课的目的是让学生把课堂上学习的C++程序设计方法具体的运用到实际的程序中,以加强学生对面向对象程序设计思想和方法的进一步的体会[4]。 首先,在C++程序设计实验课教学中,要改变传统的TC集成环境,而要用更加实用和方便的Visual C++开发环境。和C语言程序设计不同,C++程序设计不仅是要学习基本的语法,更重要的是学习面向对象的程序设计的思想和方法,比C语言程序设计有着更高的实用性,并且Visual C++开发环境对C++语法有着更好的支持,对多文件结构的程序更加容易组织,可以直接在窗口界面下直接操作,调式功能比TC集成环境操作更加简单,而功能更加强大;另外,Visual C++作为一个优秀的开发环境,学生越早接触越能够激起学生的编程兴趣,对学生以后掌握Visual C++开发环境有很大好处。 其次,在实验内容方面体现多层次、阶段性的特点。针对梧州学院计算机专业的学生,其中有一部分相对基础比较差,有一部分相对比较好,因此要做到因材施教,在实验内容方面就要有一个层次要求。实验内容分成基本部分和提高部分,基础比较差的只要完成基本部分,基础相对好的可以让他们完成提高部分;阶段性主要是和C++程序设计这门课程特点相关的,可以在实验课时要求学生完成一个比较复杂的程序作为课程设计,在学习到相关知识点时就完成相关的设计,到学期期末时,所有知识点学完了就正好可以完成整个设计,这样的好处是可以使学生在学习中直接运用所学到的方法开发具体的程序,使学生更快更牢的掌握对面向对象的程序设计方法。 3.教学手段采用多媒体技术和传统的黑板板书相结合的方式 在教学手段方面,主要采用多媒体技术和传统的黑板板书施教。现代教学手段充分利用计算机网络和多媒体技术,突出信息的形象性及感染力,使计算机具有综合处理文字、声音、图形、图像和视频信息的能力。多媒体教学使能把教学内容直观地显示出来,提高学生的注意力和学习兴趣,同时能加大课堂教学的信息量。另一方面,使用多媒体教学课件时,可以教师可以提前把教学资源按照自己熟悉的思路整理好,使教学内容规范有序。但使用多媒体教学由于没有板书的过程,学生在听课时可能没有太多的时间去思考,在上课过程中教师和学生的互动性也不好;而传统的黑板加粉笔法正好相反,其优点是注重抽象说理,学生可以感受到教师的思维过程,缺点是以“听”或“视”的单一通道方式传送信息,信息量少,进度较慢。因此C++程序设计这门课程建议采用多媒体技术和传统的黑板板书相结合的方式。目前,梧州学院教学综合楼大多数教室都配备了多媒体设备,在硬件上已经具备了多媒体教学的条件,另外,C++程序设计这门课程在教学过程中有很多内容需要即时演示给学生,主要采取多媒体教学为主,传统教学为辅的方式。 4.结束语 每门课程都有自身的特点,根据课程自身特点和各学校学生特点而采取相应的教学方法和手段,以及对课程教学内容的组织,是提高课程教学效果的一个较好的方法。 参考文献: [1] 刘玉英.《C++语言程序设计》教学中的几个关键问题[J].浙江万里学院学报.2004,17(2):169 [2] 谭浩强.C++面向对象程序设计[M].北京:清华大学出版社,2006 [3] 陈鸣,胡谷雨,周雷,等.计算机网络课程教学的思考与创新[J].高等教育研究学报,2008(2):66 [4] 李文军. 计算机专业实验教学改革的实践与探讨[J]. 实验室研究与探索,2007( 12) :45-47 1.分析程序的功能要求,划分程序功能模块。 2.画出系统流程图。 一、题目: 学生成绩管理分析系统 3.代码的编写。定义类和各个功能函数。 4.程序的功能调试。 二、目的与要求 5.完成系统总结报告以及使用说明书。 1.目的: 六、进度安排 1)巩固C++基础知识;此次课程设计时间为一周或两周,分四个阶段完成: 2)能够运用面向对象方法进行类的设计; 1.分析设计阶段。指导教师应积极引导学生自主学习和钻研问题,明确设计要 3)锻炼学生编程能力,解决实际问题的能力。求,找出实现方法,按照需求分析、总体设计、详细设计这几个步骤进行。2.编码调试阶段:根据设计分析方案设计类并编写代码,然后调试该代码,实 2.要求现课题要求的功能。3.总结报告阶段:总结设计工作,写出课程设计说明书,要求学生写出需求分析、基本要求: 总体设计、详细设计、编码、测试的步骤和内容。 1)按照软件开发流程进行开发 4.考核阶段。 2)类的设计合理;包括类的继承多态等; 3)模块划分清晰合理; 七、撰写课程设计报告或课程设计总结 4)实用性好。课程设计报告要求: 创新要求: 在基本要求达到后,可进行创新设计,比如系统用户功能控制,对管理员级和一总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步般级别的用户系统功能操作不同。骤和内容、课程设计总结、参考资料等,不符合以上要求者,则本次设计以不及格记。 三、信息描述 八、参考资料1.《C++程序设计》.郑莉.清华大学出版社 有关该系统基本信息的描述,如:学号、姓名、系别、班级和所选科目及各科成绩2.《C++编程思想》.Bruce Eckel [刘宗田].机械工业出版社等。3.《C++ Primer》中文版.Lippman[潘爱民].中国电力出版社出版4.《Effective C++中文版》Scott Meyers[侯捷].华中科技大学出版社 四、功能描述 1.学生基本信息及成绩所选科目成绩的录入修改和删除。 2.基本信息的查询(分系、班级;分科目)。 3.对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率); 4.对所开课程的成绩分析(求其平均成绩,最高分和最低分); 5.对学生考试成绩进行排名(单科按系别或班级进行排名,对每一个班级,同一 经过一个学期对《C++程序设计》的学习,我学习到了基本的理论知识,了解到了C++语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。在为期近两周的C++课程设计中,我体会颇多,学到了很多东西。我加强了对C++程序设计这门课程的认识,并且复习了自己以前学习到的知识。这些都使得我对计算机语言的学习有了更深入的认识!总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。像职工信息表这样的程序设计,经历了平时在课堂和考试中不会出现的问题和考验。而这些问题,这并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们挑战难题,学会用已掌握的知识去解决具体问题的能力,进一步培养了独立思考问题和解决问题的能力。特别是学会了在Visual C++中如何调试程序的方法。当然,老师的指导和同学的帮助也是不可忽视的,他们给了我许多提示和帮助,教会了我编译复杂程序的方法。 在老师和同学的帮助下,通过自己的努力,终于完成了这次职工信息表的简单课程设计。我经过这段时间的编程,对其中的艰辛,我是深有体会。从刚开始的选择程序、理解程序到后来的调试程序以及改进程序这个过程中,我遇到了各种各样的困难和挫折。但是我坚定信念,对自己充满了信心,想尽一切办法克服重重困难。 通过课程设计的训练,我进一步学习和掌握了对程序的设计和编写,从中体会到了面向对象程序设计的方便和巧妙。懂得了在进行编写一个程序之前,要有明确的目标和整体的设计思想。另外某些具体的细节内容也是相当的重要。这些宝贵的编程思想和从中摸索到的经验都是在编程的过程中获得的宝贵财富。这些经验对我以后的编程会有很大的帮助的,我要好好利用。 虽然这次课程设计是在参考程序的基础之上进行的,但是我觉得对自己是一个挑战和锻炼。我很欣慰自己能在程序中加入自己的想法和有关程序内容,也就是对它的程序改进了一番改进,并有创新。但是我感觉自己的创新还不够典型,总之还不是很满意。另外由于时间的紧迫和对知识的了解不够广泛,造成了系统中还存在许多不足,功能上还不够完善。以后我会继续努力,大胆创新,争取能编写出透射着自己思想的程序。这次课程设计让我充分认识到了自己的不足,认识到了动手能力的重要性。我会在以后的学习中更加努力锻炼自己,提高自己,让自己写出更好更完善的程序,为以后的编程打好基础! 总而言之,这次C++程序设计实践让我收获很大。 计算机科学与技术13-2班 设计题目: 学 院: 专业班级: 学生姓名: 学生学号: 指导教师: 计算机技术与科学 3班 樊冠男 40912140 马军亮 提交时间: 2011/1/12 成绩: 目录 C++课程设计报告 第一章 引言 C++课程设计报告 第二章 概要设计 C++课程设计报告 第三章 软件实现 C++课程设计报告 1 教学中存在的问题 1.1 难以选到合适的教材 C++由C语言发展而来,它在C语言的基础上进行功能扩充,主要增加了面向对象的机制。我校学生是在已学C语言的基础上来学习C++,那么教材中就不必再包括C程序设计的内容,而要重点介绍面向对象的编程思想、方法,C++面向对象编程技术[1]。但目前大部分C++教材都针对没有C语言基础的初学者,教材中接近一半的内容和C程序设计是重复的。 1.2 C语言基础不扎实,抽象思维能力差 虽然我校学习C++课程的学生,都已学习过C语言,但他们并没有为C++的学习打下坚实的C语言基础,对自定义数据类型、自定义函数、指针这些难点内容的掌握不够,没有编写自定义函数的习惯,在此基础上再来学习C++中的更多新知识,自然造成理解上的困难。也由于C++一般是开设在C语言之后,学生易受C语言编程模式的影响,思路很难改变。《C++面向对象程序设计》课程中的两个主要概念是“类”和“对象”,因此需要学生掌握的基本技能之一就是按照对象的特点进行数据抽象和功能抽象,而学生的思维停留在面向过程的程序设计,对编程中对象和类的抽象,对象和类的关系,理解不透彻。 1.3 实验教学的优势没有充分发挥,程序调试能力弱 现在的计算机机房都已连入Internet,教师在实验课上一般不禁用互联网,因为作为初学者,学生在程序调试过程中的问题层出不穷,再加上每次上机人数众多,教师不可能对每一位同学的问题都及时回答,开通互联网可以方便学生利用网络寻找答案。这样做对那些主动学习的学生是有利的,可以培养他们独立解决问题的能力,但却给那些被动学习的学生带来了负面影响,一旦他们的问题得不到及时解决,他们就开始利用网络看电影、听音乐、玩游戏,根本不会独立思考,上机作业则以相互拷贝的方式完成。“互联网”和“程序设计”二者谁对学生们的吸引力更大,这一点是不言而喻的。在网络技术越来越发达的今天,如何重新让机房、让实验课发挥其应有的作用是摆在每一位计算机教育工作者面前丞待解决的问题。 1.4 分析解决实际问题的能力差 课程学习完毕,大部分学生只会解决书本和试卷中的练习题,不会处理解决实际问题,不能动手编制较复杂的程序,难以实现从掌握语言到实际应用语言的转变。 2 C++教学改革的基本思路 2.1 采用多元化的教材课本+技术书+MSDN帮助+网络 “读课本明其理,看技术书知其用”。课本由于结构清晰、层次清楚,是学生系统学习必不可少的材料,因此首先要为学生选一本比较合适的教材。但教材由于离实际工作距离远,导致学生缺乏实际的动手能力,技术书正好可以弥补课本在这方面的不足。MSDN也不失为帮助学习C++的好助手。在网络技术飞速发展的今天,互联网也提供了很好的学习平台,学生可以在网上查阅C++方面的学习资料,还可以观看或下载教学视频,在各种网站论坛、博客上相互交流,等等。目前,我校相关教师也编写了更适合于我校学生的教材,并已开始创建适合于我校学生的以教师为主导、学生为主体的自主学习的交互式C++课程学习网站,从而有效拓展C++教学空间。 2.2 做好开课前的前导课程C的复习工作 针对学生C语言基础差的问题,在每个学期放假前,给下学期要开《C++面向对象程序设计》课的学生布置C语言课程设计作业,让他们利用暑假完成。课程设计题目有多个,都具有一定的综合性和较强的实用性,如学生成绩管理系统、图书借阅管理系统、通信录管理系统等。学生可自由选择自己感兴趣的题目,可独自完成,也可多人(2~5人)合作完成。要求学生写出自己所选题目的课程设计报告,在下学期开学后上交,成绩以10%的比例计入《C++面向对象程序设计》课的总成绩中。实验结果还是比较理想的。通过课程设计,同学们全面复习了所学的C语言知识,学会了如何查阅资料,学会了团队合作,自学能力,独立分析、解决实际问题的能力都有一定的提高。同时,课程设计的成功也让学生获得更大的自信心,C++教学效果明显提高。 2.3 重视第一堂课的教学 第一堂课的教学至关重要。在第一堂课上,首先要给学生分析该课程在专业知识领域中的地位和作用,让学生认知该课程的重要性。其次,“兴趣是最好的老师”,可以在第一堂课上给学生演示一些用C++语言实现的有趣而实用的案例,激发学生的学习兴趣,这是学好课程的关键一步。再者,要教给学生学习C++的方法,C++所涉及的内容繁多,教师不可能通过32学时(不同学校该学时数可能有所不同)的讲授涉及C++全部内容,只能精讲。在这种情况下,教给学生学习的方法更重要。另外,要让学生知道该课程的考核方式及成绩评定细则,这些直接影响学生学习的动机和兴趣。 2.4 综合利用各种教学手段 综合利用多媒体教学、板书教学、网络教学等多种教学手段,优化总体教学效果。课堂教学尽可能多用多媒体进行教学[2]。与板书教学相比,多媒体教学具有形象生动、图文声并茂、交互性好、信息量大等显著特点,对课程中难以理解的抽象内容,可以给予直观展示和动态模拟,起到事半功倍的效果。传统的“黑板+粉笔”的板书教学虽然不能适应可操作性极强的面向对象课程的教学,但是可以作为辅助手段,比如讲解算法的设计过程,由于讲解速度放慢,可以加深学生的印象。另外,网络教学也是对课堂教学的有益补充。可以利用网络进行学生与教师以及学生之间的交流,如E_mail邮箱、各大门户网站提供的免费博客系统,QQ群等,这一方面可使学生的问题能够得到及时解决,提高学习积极性,另一方面也使教师能及时获得教学效果的反馈信息,掌握学生的学习情况,并据此更好地把握教学进度。 2.5 合理运用各种教学方法 针对不同的教学内容,要灵活采用多种教学方法。常用的教学方法有:类比教学法、启发教学法、案例教学法、分步教学法、任务驱动教学法等[3,4]。在教学过程中要注重案例式教学,把知识点融入到实际的案例中去,不仅要根据每节课的内容贯穿一些有关的、具有代表性的零散案例,还可以将一个规模较大、典型、有实用价值而学生又熟悉其领域知识的核心案例贯穿于整个教学全过程,像“学生档案管理系统”、“学生成绩管理系统”、“图书借阅管理系统”等都是很好的可选案例。随着教学内容的逐步推进,案例系统被一步步完善,最后形成一个完整的实用系统。课程结束后,学生把该系统以课程设计报告的形式上交,成绩以10%的比例计入C++课程总成绩。实践证明,实用的案例教学法的教学效果良好,它可以刺激学生的学习兴趣和学习积极性,学生在整个学习过程中都积极投入到对核心案例的完善和调试实践中,学生的实践动手能力大大提高。 2.6 突出面向对象的编程思想,突出关键技术 在《C++面向对象程序设计》教学中,不要再泛泛介绍面向对象C++的语法框架,应注重算法和面向对象程序设计方法及技术的讲授,在寻找算法中不断培养学生的独立思考和创新能力,在面向对象的程序设计过程中体会面向对象的编程思想。 在教学过程中,要突出C++中实现软件复用的两大关键技术:继承、模板。要增加STL部分的教学内容,STL是ANSI/ISO C++标准中最新的一部分内容,它提供了一个可扩展的应用框架,高度体现了软件的可复用性。要让学生学会站在巨人的肩膀上进行编程。 2.7 加强上机指导,保证上机效果 程序设计课程本身实践性较强,为了保证上机质量,特进行以下尝试: 1)精心设计每一次上机内容,让学生每一次上机都有明确的上机目的。 2)每次上机任务提前布置给学生,并要求学生在上机之前认真思考,将思路描述成为C++代码写到实验报告纸上,这样就避免了上机课上学生一边想,一边输入代码现象的发生,提高了上机课效率。 3)针对学生在编译、链接程序过程中出现的警告和错误,教会学生使用程序调试工具。对于学生在调试中遇到的疑点和难点,及时给予必要的适当指导。 4)上机课结束,每名学生必须上交比较规范的纸质实验报告,其中除包括程序的源代码、输入数据、程序输出结果外,还应重点包含程序调试过程以及本次上机体会。 5)针对学生在上机课上出现的问题,在下次课堂教学一开始有针对性地进行讲解,以加深学生的印象。 通过以上举措,上机课效率大大提高,学生的程序调试能力大大增强。 3 结论 C++是当今面向对象软件开发的主流语言,也逐步成为高校程序设计课程的首选。针对我校《C++面向对象程序设计》教学中存在的问题,本文中进行了深入分析和思考,对提出的教改方案在我校07级计科、软件、信工、信管专业本科学生中进行了实施,效果良好较好地激发了学生的学习兴趣,调动了学生的学习积极性,增强了学生的学习自信心。但是,随着C++语言的发展,C++教学还会出现许多新的问题和矛盾,在今后的C++教学实践中,还应根据实际情况不断调整教学思路,提高教学水平。 摘要:C++是当今面向对象软件开发的主流语言,也是高校计算机及相关专业的一门重要基础课。针对我校《C++面向对象程序设计》教学中存在的问题,文中进行了深入分析和思考,从教学手段、教学方法、教学内容等多方面多环节入手,对课程教学进行了全方位的改革,教学质量和教学效果有了较大提高。 关键词:C++,面向对象程序设计,教学改革 参考文献 [1]谭浩强.C++面向对象程序设计[M].北京:清华大学出版社,2006. [2]陈华.浅谈C++语言的教学改革与课程实践[J].电脑知识与技术,20084(4):917-918. [3]白青海.C++程序设计教学方法探讨[J].内蒙古大学学报,2008,14(4):43-44.C++课程设计(教务管理系统) 第2篇
C++课程设计(教务管理系统) 第3篇
C++程序设计课程教学探讨 第4篇
C++课程设计(教务管理系统) 第5篇
c++课程设计总结 第6篇
C++课程设计实验报告 第7篇
C++课程设计(教务管理系统) 第8篇
C++课程设计(教务管理系统)
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。


