c++课程设计总结

2024-05-02

c++课程设计总结(共6篇)

篇1:c++课程设计总结

课程设计总结

经过一个学期对《C++程序设计》的学习,我学习到了基本的理论知识,了解到了C++语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。在为期近两周的C++课程设计中,我体会颇多,学到了很多东西。我加强了对C++程序设计这门课程的认识,并且复习了自己以前学习到的知识。这些都使得我对计算机语言的学习有了更深入的认识!总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。像职工信息表这样的程序设计,经历了平时在课堂和考试中不会出现的问题和考验。而这些问题,这并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们挑战难题,学会用已掌握的知识去解决具体问题的能力,进一步培养了独立思考问题和解决问题的能力。特别是学会了在Visual C++中如何调试程序的方法。当然,老师的指导和同学的帮助也是不可忽视的,他们给了我许多提示和帮助,教会了我编译复杂程序的方法。

在老师和同学的帮助下,通过自己的努力,终于完成了这次职工信息表的简单课程设计。我经过这段时间的编程,对其中的艰辛,我是深有体会。从刚开始的选择程序、理解程序到后来的调试程序以及改进程序这个过程中,我遇到了各种各样的困难和挫折。但是我坚定信念,对自己充满了信心,想尽一切办法克服重重困难。

通过课程设计的训练,我进一步学习和掌握了对程序的设计和编写,从中体会到了面向对象程序设计的方便和巧妙。懂得了在进行编写一个程序之前,要有明确的目标和整体的设计思想。另外某些具体的细节内容也是相当的重要。这些宝贵的编程思想和从中摸索到的经验都是在编程的过程中获得的宝贵财富。这些经验对我以后的编程会有很大的帮助的,我要好好利用。

虽然这次课程设计是在参考程序的基础之上进行的,但是我觉得对自己是一个挑战和锻炼。我很欣慰自己能在程序中加入自己的想法和有关程序内容,也就是对它的程序改进了一番改进,并有创新。但是我感觉自己的创新还不够典型,总之还不是很满意。另外由于时间的紧迫和对知识的了解不够广泛,造成了系统中还存在许多不足,功能上还不够完善。以后我会继续努力,大胆创新,争取能编写出透射着自己思想的程序。这次课程设计让我充分认识到了自己的不足,认识到了动手能力的重要性。我会在以后的学习中更加努力锻炼自己,提高自己,让自己写出更好更完善的程序,为以后的编程打好基础!

总而言之,这次C++程序设计实践让我收获很大。

计算机科学与技术13-2班

2010年7月4日

篇2:c++课程设计总结

课程大纲:

一、教学目标和基本要求

本课程全面系统的学习面向对象程序设计的基本概念,基本语法和编程方法。正确理解掌握C++面向对象程序设计的基本特性:类,对象,继承与派生,多态,虚函数,模板,流类库等。遵循软件过程的各个环节进行系统分析、设计、实现、集成、测试,了解当前常用的软件开发工具(Visual C++),培养学生解决实际问题的能力。

二、组织方式

结合具体的实践项目,以分组的形式(4-5人一组)开展程序设计的上机实践。

三、考核方式及办法:

完成包括从概要设计、详细设计、代码编写、程序调试、运行在内的一系列程序设计及文档撰写,要求系统调试成功、可正常运行,文档规范完整。

四、时间安排:

期末考试前最后一次课学生PPT讲解。

五、实践教学中应注意的问题

1.组织管理的要求:4-5人一组,要求发挥团队合作精神,分工协助。2.对学生的要求:与小组同学分工合作,认真完成系统设计、编写代码、程序调试及文档撰写。3.学生采用PPT讲解。

C++语言课程设计任务书1 题目:学院教学信息管理系统

功能:学院教学信息管理系统,每一条记录包括一位教师的职工号、姓名、职称、性别、3门课程,教学效果综合评分。系统要求实现以下功能:

1、输入:输入每一位教师记录,将其信息写入文件中。

2、显示:显示每位教师记录。

3、排序:按职工号或教学效果综合评分进行排序,并显示。

4、查找:完成按姓名或课程查找教师的相关记录,并显示。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。

2、建立一个文件,将每位教师的相关(教学)信息写入文件中并能显示于屏幕上。

3、完成排序(按职工号、姓名、职称等)、查找等功能。要求:

1、用C++语言实现程序设计;

2、利用结构体数组实现教师信息的数据结构设计;

3、系统的各个功能模块要求用函数实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划

第 1 页

《C++语言课程设计》题目

分。

2、实验总结报告:流程图、主要源程序代码、测试情况及调试中问题与解决方案、小结等。

C++语言课程设计任务书2 题目:酒店房间登记与计费管理系统

功能:

1、屏幕上出现一个界面,让操作员能够方便的选择所需要进行的操作,包括登记入住、查询房间的入住情况、查询当前费用、结账退房等操作。

2、对不同标准的房间实施不同的收费标准,也可以按天收费或按小时收费,可根据顾客需要在登记的入住的时候进行选择。

3、在结账退房时,根据入住的时间,计费方式和房间单价计算出总费用。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:建立房间列表,完成登记入住、查询房间入住情况功能。

3、进一步要求:完成计费和费用查询功能。要求:

1、用C++语言实现系统;

2、系统的各个功能模块要求用函数实现;

3、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码、测试情况及调试中问题与解决方案、小结等。

C++语言课程设计任务书3 题目:学生成绩管理系统

功能:学生成绩管理系统,每个学生是一个记录,包括学号,姓名,性别,3门课程成绩。系统

要求实现以下功能:

1、信息录入:录入学生成绩信息(包括学生学号、姓名、各门课程的成绩等);

2、信息查询:输入学号,查询学生各门课程的成绩,并显示。

3、排序:按各门课程的成绩平均分进行排序,并显示。

4、信息删除与修改——输入学号,删除该学生的成绩信息。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。

2、建立一个文件,将每位学生的信息写入文件中并能显示于屏幕上。

3、完成上述信息查询(学生学号、姓名等)、排序、信息删除与修改功能。要求:

1、用C++语言实现程序设计;

2、利用结构体数组实现学生信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码、测试情况及调试中问题与解决方案、小结等。

C++语言课程设计任务书4

第 2 页

《C++语言课程设计》题目

题目:职工档案管理系统设计

功能:职工档案管理系统设计,每个职工是一条记录,包括编号,姓名,性别,出生年月,所在

部门,职称,工资级别、电话等。系统可实现以下功能:

1、输入功能:输入每一位职工记录,将其信息存入文件中。

2、显示功能:完成全部职工记录的显示。

3、查找功能:完成按编号或姓名查找职工的相关记录,并显示。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。

2、建立一个文件,将每位职工的信息写入文件中并能显示于屏幕上。

3、完成上述查找(编号,姓名,性别等)、修改等功能。

4、进一步要求,修改记录设置密码操作。要求:

1、用C++语言实现程序设计;

2、利用结构体数组实现职工信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码、测试情况及调试中问题与解决方案、小结等。

C++语言课程设计任务书5 题目:学生管理系统设计

功能:学生管理系统设计,每个学生是一条记录,包括姓名、学号、性别、出生年月、专业、班级、家庭地址、宿舍号码等。系统要求实现以下功能:

1、输入功能:录入学生信息(包括学生学号、姓名、性别、出生年月、专业等);

2、显示功能:完成学生记录的显示。

3、查找功能:完成按学号或姓名查找学生的相关记录,并显示。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。

2、建立一个文件,将每位学生的信息写入文件中(人数利用宏定义设定)并能显示于屏幕上。

3、完成上述显示、查找(姓名,性别等)、修改等功能。

4、进一步要求,修改记录设置密码操作。要求:

1、用C++语言实现程序设计;

2、利用结构体数组实现学生信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码、测试情况及调试中问题与解决方案、小结等。

C++语言课程设计任务书6

题目:银行存取款管理设计

第 3 页

《C++语言课程设计》题目

功能:能够输入和查询客户存款取款记录。在客户文件中,每个客户是一条记录,包括编号、客户姓名、支取密码、客户地址、客户电话、账户总金额;在存取款文件中,每次存取款是一条记录,包括编号、日期、类别、存取数目、经办人。类别分为取款和存款两种。本系统能够输入客户存款或取款记录;根据客户姓名查询存款和取款记录。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;

2、建立一个文件,输入客户的必要信息,能对文件进行显示、输入、修订、删除等。

3、进一步要求:完成客户姓名查询存款和取款记录,并能得到每次帐户总金额。要求:

1、用C++语言实现系统;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码、测试情况及调试中问题与解决方案、小结等。

C++语言课程设计任务书7 题目:院职工工资管理系统设计

功能:院职工工资管理系统应包含职工的全部信息。每个职工是一条记录,包括姓名、性别、出生年月、年龄、婚姻状况、家庭住址、职称、工资级别情况等。本系统重点进行工资管理,系统登陆后可计算职工工资总额和平均工资,可按工资进行排序,并能够找出工资级别相同的职工名单。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;

2、建立一个文件,将每位职工的信息写入文件中并能显示于屏幕上。

3、计算职工工资总额和平均工资,可按工资进行排序,并能够找出工资级别相同的职工名单。

要求:

1、用C++语言实现程序设计;

2、利用结构体数组实现职工信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码、测试情况及调试中问题与解决方案、小结等。

C++语言课程设计任务书8 题目:通讯录管理系统

功能:录入联系人信息(包括姓名、电话号码、地址、备注等);通讯录管理系统要求实现以下功能:

1、输入每一位联系人记录,将其信息存入文件中。

2、查询所有联系人的信息,并按可选的自定义规则进行排序;

3、记录修改,将修改的记录信息保存于文件中。分步实施:

第 4 页

《C++语言课程设计》题目

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。

2、建立一个文件,将每条记录信息写入文件中并能显示于屏幕上。

3、完成上述查询(姓名、电话号码等)、信息删除与修改功能。

4、进一步要求,修改记录设置密码操作。要求:

1、用C++语言实现程序设计;

2、利用结构体数组实现联系人信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码、测试情况及调试中问题与解决方案、小结等。

C++语言课程设计任务书9

题目:计算机辅助教学(CAI)软件开发:教小学生学算术。

功能:可做个位数,十位数的加,减,乘和除,减法不能得负数,除法要除尽,屏幕上随机出现两个数,提示小学生给出答案,答错了要提示重新输入,直到答对为止。要统计给分,且累计,够一定分数后可进级,即从个位进到十位。同样,也可降级。

(rand(),#include)分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成基本要求:能答对个位数的加法和减法,并有统计功能,即一次答对的成功率为

90%上后可晋级,做十位数的加减;

3、进一步要求:完成乘法和除法的学习,也有晋级功能。要求:

1、用C++语言实现程序设计;

2、系统的各个功能模块要求用函数的形式实现;

3、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码、测试情况及调试中问题与解决方案、小结等。

C++语言课程设计任务书10

题目:学生考勤系统设计

功能:学生考勤系统应包含各班学生的全部信息。每个学生是一条记录,包括姓名、性别、学号、出勤情况等。本系统可模拟考勤过程,记录考勤结果,并能够在课程结束后按照设定的考勤评分标准自动给出每个学生的考勤分数。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;

2、建立一个文件,将每条记录信息写入文件中并能显示于屏幕上

3、完成上述添加(出勤情况)、查找(学号,姓名,性别等)、修改等功能。

4、进一步要求:自动给出每个学生的考勤分数 要求:

1、用C++语言实现程序设计;

第 5 页

《C++语言课程设计》题目

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码、测试情况及调试中问题与解决方案、小结等。

C++语言课程设计任务书11 题目:学生选修课程系统设计

功能:假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息。试设计一选修课程系统。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;

2、建立一个文件,将每条记录信息写入文件中并能显示于屏幕上

3、完成上述添加、查找(课程编号、课程名称、课程性质等)、修改等功能。

4、进一步要求:学生选修课程(可选项)要求:

1、用C++语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码、测试情况及调试中问题与解决方案、小结等。

C++语言课程设计任务书12

题目:商品订购系统设计。

功能:屏幕上出现一个界面,让顾客或输入商品名称,或商品型号,或选择列表进而输入商品编号都可以,如查到所选商品,则列出商品编号、商品名称、商品型号、商品价格、商品产地、库存数量和已订购数量;然后给出选购流程:所选商品编号—列出对应商品的信息—要求顾客输入邮寄地址信息—确认订购,是否继续选购其它商品,列出所有选订商品,再次确认订购。建立两个文件,分别存放商品信息与订购信息。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:建立一个小系统,包括10种产品能供顾客选择。

3、进一步要求:完成全部功能的系统。要求:

1、用C++语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

第 6 页

《C++语言课程设计》题目

2、实验总结报告:流程图、主要源程序代码、测试情况及调试中问题与解决方案、小结等。

C++语言课程设计任务书13 题目:设备管理系统设计

功能:设备管理系统应包含各种设备的全部信息,每台设备为一条记录(同一时间同一部门购买的若干台相同设备可作为1条记录),包括设备号、设备名称、领用人、所属部门、数量、购买时间、价格等。能够显示和统计各种设备的信息。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、建立一个文件,将每条记录信息写入文件中并能显示于屏幕上

3、能对文件进行补充、修订、删除,能统计所有设备的总价值。

4、进一步要求:完成设备按种类、按所属部门进行统计。

要求:

1、用C++语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码、测试情况及调试中问题与解决方案、小结等。

C++语言课程设计任务书14

题目:学生计算机机房管理系统设计

功能:该计算机房共有100台计算机,分为20排,每排50台。管理系统应包含每台计算机一周内的使用全部信息,包括计算机序号、配置、位置、状态、使用情况的历史记录(包括使用者姓名、学号、使用时间段)等。本系统可以模拟学生上机和离开的登记过程,查询机房计算机的使用情况。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、建立一个文件,将相关的信息写入文件中并能显示于屏幕上;

3、能实现学生上机的登记过程模拟;

4、进一步要求:查询机房计算机的使用情况。要求:

1、用C++语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码、测试情况及调试中问题与解决方案、小结等。

第 7 页

《C++语言课程设计》题目

C++语言课程设计任务书15 题目:商店销售管理系统。

功能:屏幕上出现一个界面,让售货员输入商品编号或者商品名称,可以进货,进货后商品库存同时增加。顾客买走商品后,售货员输入商品编号或者商品名称,可以生成销售清单,统计本次销售总的价钱,同时库存数量相应减少。完成前面的基本功能后,还可以完成增加新的商品或删除不需要的商品的功能,以及每天销售统计功能等。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、建立一个文件,将相关的信息写入文件中并能显示于屏幕上;

3、能按商品编号进货和销售;

4、进一步要求:完成增加新的商品或删除不需要的商品的功能,以及每天销售统计

功能等。

要求:

1、用C++语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码、测试情况及调试中问题与解决方案、小结等。

C++语言课程设计任务书16

题目:计算机辅助教学(CAI)软件开发:教小学生学英语。

功能:屏幕上随机出现一个汉语单词,英语单词,汉语词组,英语词组或一短句提示小学生给出相应答案,答错了要提示要求重新输入,直到答对为止。要统计给分,且累计,够一定分数后可进级,即从单词到词组,从词组到短句。同样,也可降级。起步阶段可各选30个,软件可扩充,即扩大词库的容量。

(rand(),#include 结构体、文件或数组)分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:能教单词,并有统计功能,即一次答对的成功率为90%以上后可晋级;

3、进一步要求:完成词组和短语的问答,也有晋级功能。要求:

1、用C++语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码、测试情况及调试中问题与解决方案、小结等。

C++语言课程设计任务书17

第 8 页

《C++语言课程设计》题目

题目:飞机订票系统设计

功能:本飞机共有80个坐位,分20排,每排4个位子。编号为A,B,C,D。如10D表示10排D座。A和D靠窗,19到20排为吸烟区。本系统可让乘客自己选座号和区域,直到乘客满意为止,无法满足的话,只能改乘另一个航班。定上票的乘客需给出姓名和身份证号,最后要打印出乘客清单。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:建立一个小系统,包括5排座位,两个区域,能供乘客选择;

3、进一步要求:完成全部功能的系统。要求:

1、用C++语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码、测试情况及调试中问题与解决方案、小结等。

C++语言课程设计任务书18

题目:高速公路计费系统设计

功能:在某高速公路出口收费处,对三种类型的车辆计费,大型车每公里0。5元,中型车每公里0.4元,小型车每公里0.3元,来车验条,乘公里数即得该收的款项。在交班时要统计出总数。分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:建立一个只有三个入口的计费系统,并能进行统计计算,打印出报表;

3、进一步要求:完成任意多个入口的通用系统。要求:

1、用C++语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:流程图、主要源程序代码、测试情况及调试中问题与解决方案、小结等。

篇3:c++课程设计总结

关键词:C++,教学

面向对象程序设计方法是现在计算机开发的主要技术, C++语言是一种应用较广的面向对象的程序设计语言, 它提供了类、模板、函数重载和运算符重载设计等功能, 充分支持抽象、继承和多态等面向对象程序设计的特征, 十分方便大型软件的开发[1]。现在C++程序设计是很多高校计算机专业的必修课, 但是由于该课程的抽象性和复杂性, 相对来说就是一门难学难教的课程。因此, 在C++语言的教学过程中, 采用合理的教学方法, 对于提高教学质量至关重要。下面谈谈我的一些经验和体会, 以供大家参考与讨论。

1 目前存在的问题

目前在C++的课程教学过程当中, 主要存在以下几点问题: (1) 学习目的不明确, 积极性不高。C++课程教学的目的是让学生掌握面向对象的程序设计方法, 理解面向对象程序设计的思想, 为后续的计算机课程打下坚实的基础。而经过调查发现, 很多同学都不知道该课程的学习目的, 甚至有些同学只是为了通过最后的考试。 (2) 对面向对象程序设计思想理解困难, 特别是有些学校先开设了C语言程序设计, C语言是采用面向过程的程序设计思想, C++是在C语言的基础上演变而来的, 是对C语言的扩展, C++提供了许多特性, 目的是对C语言进行改进。但更重要的, 它还提供了面向对象编程能力。面向过程和面向对象是两种不同的编程思想, 两者之间有着本质的区别, 很多同学习惯于面向过程的编程思想, 对面向对象的编程思想不能很快掌握。 (3) 实践环节重视不够, 动手能力较弱。C++是培养学生的动手编程能力的课程, 需要安排安排适量的实验课时, 但是很多同学在上课是直接运行书上的程序, 而不深刻思考程序运行的过程, 在遇到问题时, 总是举手问老师, 缺乏独立调试程序的能力。

2 改进方法

2.1 采用启发、引导的教学方法

《C++程序设计》本身是一门非常灵活的课程, 任何问题都没有唯一的答案, 也没有最好的答案。因此, 老师在课堂上可以先给出一种程序解答方法, 然后留出一些时间让学生思考, 还有没有其他更好的程序设计方法和思路, 甚至可以当堂让学生上来现场操作实现, 对于一些比较好的想法和思路, 给予大力表扬, 这样既能鼓励学生积极思考, 又能活跃课堂气氛, 可以收到较好的课堂效果。比如在讲判断一个数n是不是素数的问题时, 我们可以先从最传统、最容易理解的思路入手, 看看n能不能被2到n-1中的任何一个数整除, 接着我们可以在这个地方稍微停顿一下, 让学生思考一下能不能对这个算法做一下改进, 这时, 有的学生可能会提出把除数的范围缩小到2到n/2, 最后再缩小到2到n, 利用这种方法会比老师直接给出用n去除以2到n中数的方法让学生印象更加深刻。这样不仅可以巩固学习成果, 提高解决问题的能力, 也可以丰富课堂内容, 起到教学相长的效果。

2.2 有选择地运用多媒体教学

以前由于教学条件的限制, 教师上课时只能采用传统的黑板教学, 在黑板上面写出程序代码, 说出运行结果, 这样很难让学生对程序运行的过程、函数的调用、参数的传递、变量值的变化认识清楚, 将多媒体教学引入课堂后, 可以在课堂上利用教师机现场演示, 利用VC++的设置断点, 单步跟踪等方法, 一步步演示, 这样学生一看就清楚了。例如在给学生讲数组的时候, 通过下标的方式来访问数组元素, C语言规定, 数组元素的下标是从0到n-1 (n是数组的长度) , 但很多学生在写程序的时候, 往往忽略这一点, 在访问数组元素的时候使用n, 出现下标越界的错误, 这时, 老师便可以在VC的调试环境中, 结合变量的地址或指针的概念, 给学生解释越界出现的原因, 这样才能让学生理解深刻。又例如, 在讲“冒泡”排序算法时, 教师可以用多媒体课件给学生演示排序的经过, 既形象又生动。因此, 在《C++程序设计》课程教学过程中, 将传统的教学方法和现代多媒体教学相结合, 将大大提高学生的综合思维能力, 达到最佳的教学效果。

2.3 强化实验环节

《C++程序设计》是一门实践性很强的课程, 如果只是单纯地在课堂教学, 而没有实验教学, 仍然只是纸上谈兵, 无法真正让学生掌握知识的应用。所以实验环节是整个学习过程中不可缺少的一个重要组成部分。只有让学生动手编写程序, 运行出来结果, 学生才会有成就感, 才会对这门课产生兴趣。但是, 教材上面的题目往往比较注重语法的训练, 而离实际应用较远, 所以, 大部分学生在完成书上题目时比较顺利, 可是一遇到利用C++语言来解决实际问题时, 便束手无策, 无从下手了。这一点可以从大三、大四的学生做课程设计时的被动、吃力体现出来。所以, 为了锻炼学生解决较大型复杂问题的能力, 老师在安排实验课内容时, 可以布置一个大题目作为长期任务, 再按不同功能模块分解开来, 形成一个个短期任务。每次实验课要求学生完成其中一个或几个简单的功能模块, 这样, 每次实验课就好像一条铁链上的一个个铁环, 紧密联系。以“学生信息管理系统”为例, 把这个系统作为一个长期任务, 然后把这个系统划分为若干个小的模块。比如输入输出学生信息、添加学生信息、修改学生信息、查询学生信息等模块。这样, 当学生完成每一个功能模块后, 便发现原来自己实现的是一个复杂的程序。通过这种方法, 一方面可以大大降低学生对大型复杂程序的惧怕心理, 另一方面也可以培养学生结构化程序设计方法的思想。

2.4 综合考核法

目前, 大部分课程最后的考核方式都是通过考试进行的。但是这种方式不适用于《C++程序设计》, 这是由课程本身的特点决定的。一方面, 该课程包含了课内实验, 比如我院在对计算机系的学生开设该课程时, 课时的分配是36+20, 即36学时的理论课和20学时的实验课, 可以看到实验课占了很大的比例, 也应该在最后的考核范围内;另一方面, C语言是一门实践操作性很强的课程, 光通过选择题、填空题不能真正检验出学生的学习水平, 而应该把考核的重点放在程序的编写和调试上。

所以, 建议本课程最后采用综合考核的方式。考试的方式分为笔试和上机考试。理论考试主要考核学生对理论知识的掌握程度, 上机考试则主要考核学生的动手能力。。最后的总评成绩中还应该包含学生的实验课成绩, 以及课堂表现成绩。这种考核方式增加了对学生学习过程的测评, 这种方法不但能更客观地反映学生的学习情况, 同时也能促进学生自主学习, 起到很好的教学效果。

3 结语

以上是作者在近几年的C++课程教学过程中总结出来的几点教学经验, 通过上述方法, 在实际的教学过程中取得了良好的教学效果。

参考文献

篇4:C++程序设计课程教学探讨

关键词: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

篇5:C++课程设计(教务管理系统)

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 head;//封装学院信息 public:

void design_stu();//学生信息设置 int i;Node *q;q=head.pHead;//q指向学生节点双向链表头指针

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<<“

★★★★★★学生信息设置★★★★★★

”<>i;system(“cls”);//清屏 switch(i){ case 1:

{

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<>n;head.pCurrent->pData->delete_stu(n);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 *q;q=head.pHead;//q指向学院节点双向链表头指针

for(i=1;i<=head.size;i++){

cout<pData->name<pData->head.size<

}

void University::design_ins(){

int i;int j;cout<<“

★★★★★★学院信息设置★★★★★★

”<pNext;

cout<>i;system(“cls”);//清屏 switch(i){ case 1:

{

} 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<>i;system(”cls“);//清屏

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;ipData->head.pCurrent=head.pCurrent->pData->head.pHead;//当前指cout<<“学校名字:”<for(j=0;jpData->head.size;j++)

{

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;ipNext;//学院当前指针后移

} cout<<“有”<

}

head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pHead;for(j=0;jpData->head.size;j++){ if(n==(head.pCurrent->pData->head.pCurrent->pData->age)){

} 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;ipData->head.pCurrent=head.pCurrent->pData->head.pHead;

for(j=0;jpData->head.size;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<<“有”<pNext;void University::search(int n){

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;jpData->head.size;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<<“

★★★★★信息查询显示★★★★★”<>i;system(“cls”);//清屏

switch(i){ case 1: {

disp_ins();

cout<<“按任意键返回上一级菜单:”<design_ins();break;} case 2:

{

} head.pCurrent=head.pHead;//当前指针指向学院节点头指针 for(i=0;i

} head.pCurrent->pData->disp_ins_1();head.pCurrent=head.pCurrent->pNext;cout<<“按任意键返回上一级菜单:”<search_menu();break;case 3: {

} int j;disp_ins();cout<<“请输入学生所在学院序号:”;cin>>i;system(“cls”);//清屏 head.pCurrent=head.pHead;for(j=1;jpNext;head.pCurrent->pData->disp_ins_1();cout<<“按任意键返回上一级菜单:”<search_menu();break;

case 4:

{

string n;cout<<“输入要查询的姓名:”;cin>>n;system(“cls”);//清屏 search_name(n);

} cout<<“按任意键返回上一级菜单:”<search_menu();break;case 5:

{

} int n1;cout<<“输入要查询的年龄:”;cin>>n1;search_age(n1);cout<<“按任意键返回上一级菜单:”<search_menu();break;

system(“cls”);//清屏

case 6: {

} string n;cout<<“输入要查询的性别:”;cin>>n;system(“cls”);//清屏 search(n);cout<<“按任意键返回上一级菜单:”<search_menu();break;case 7: {

} int n;cout<<“输入要查询的学号:”;cin>>n;system(“cls”);//清屏 search(n);cout<<“按任意键返回上一级菜单:”<search_menu();break;case 8: {

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>p->name;

导出文件数据void file_in(University &uni)

Node *m=new Node;//建立学院信息节点 m->pData=p;//把输入的学院信息节点赋给建立的学院信息节点 m->pNext=0;if(i==0)uni.head.pHead=m;//把节点m赋给学院信息节点

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;jpData->head.size;j++){

Student *q=new Student;inf>>q->name;inf>>q->age;inf>>q->sex;inf>>q->number;inf>>q->major;

Node *n=new Node;n->pData=q;n->pNext=0;if(j==0)uni.head.pCurrent->pData->head.pHead=n;else uni.head.pCurrent->pData->head.pEnd->pNext=n;

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<pData->name<

ouf<pData->head.size<

uni.head.pCurrent->pData->head.pCurrent=uni.head.pCurrent->pData->head.pHead;//当前指针指向学生节点头指针

for(j=0;jpData->head.size;j++){

ouf<pData->head.pCurrent->pData->name<pData->head.pCurrent->pData->age<pData->head.pCurrent->pData->sex<pData->head.pCurrent->pData->number<pData->head.pCurrent->pData->major<

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<<“是否保存修改内容:”<>i;system(“cls”);//清屏 switch(i){ case 1:

{

} 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<>i;system(“cls”);//清屏

}

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;

篇6:c++超市管理系统课程设计报告

第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:数据存盘与装入。

上一篇:淘宝网开店提高浏览量和成交量的几种简单有效方法下一篇:【孙明】(体质调查分析)【2011】