精品文档
《计算机专业程序设计》课程设计任务书
程序设计课程设计是计算机科学与技术专业教学实践环节中一项重要内容,该课程设计旨在:提高和加强学生的计算机应用与软件开发能力;培养学生独立分析问题、解决问题、查阅资料以及自学能力,学习和掌握C++程序设计方法以及上机调试技巧,为今后其它专业课程的学习打下良好的程序设计基础。
本次课程设计是以学生独立思考解决问题为主,教师指导为辅,结合上机操作,完成指定的任务,作出设计报告。
一、课程设计题目、结构及要求
第一部分 基础练习(必须全部完成)
(一) 数组
1. 一数组中已存放了10个有序的整数,现由键盘输入一个整数,将此数插入到该数组中,使数组仍然是有序的。
算法提示:
假设数组是由小到大的顺序来排列的:
1) 先要确定插入的新数x在数组中的位置,即确定m在数组中的下标 2) 用x去跟数组中的元素逐个比较,数组中的某个元素满足a[k]>m,则k为m的下标
3) 将数组从a[k]开始的所有元素向后面移动一个位置
4) 从最后一个元素开始移动,即执行循环: for(m=9;m>k;m--) a[m+1]=a[m] 5) 将m插入数组中a[k]=m
2. 输入20个整数存入数组中,输出其中的偶数及偶数之和。
(二) 函数
3. 用函数实现求result =1+(1+2)+(1+2+3)+……+(1+2+3+……+n)的值,n的值由键盘输入。
算法提示:
精品文档
精品文档
1) 根据题目要求,需要调用函数lj来求1+2+3+……+n的和 2) 把对函数lj的调用放在循环结构中,循环变量i做为实参 3) 形参变量x得到i的值,再被调函数中求出每次的累加和 4) 循环变量i的取值为(i=1;i<=n;i++)
5) 将调用函数求得的值累加到l中,即result=result+lj(i)
4. 输出50—100间的所有素数,其中判断一个数是否为素数用函数完成。 算法提示:
1) 输出50至100间的素数,所以函数的调用应放在循环中 2) 被调函数ss中,要判断m是否为素数 3) 若是素数,则返回值t1=1,否则t1=0
4) 主函数中若返回值为1,证明是素数,则输出 数组与函数
(三) 指针
5. 由键盘输入10个数,找出它们的最大值、最小值并求出平均值。(要求用指针实现)
6. 从键盘输入两个字符串,将它们合并成一个新的字符串。 算法提示:
1)合并字符串就是将一个字符串接到另一个字符串的末尾 2)定义指针变量p,指向数组a,即p=a
3)让指针p移动至数组a的末尾,可利用一个循环结构来实现,循环体语句为空,即for(p=a;*p!='\\0'; p++)
4)定义指针变量q,指向数组b的首部,即q=b 5)将q指向的元素放到p指向的数组,即*p=*q 6)连接好字符串后,在末尾加上’\\0’,即*p='\\0'
(四) 数组、函数与指针
7. 编写函数f(char *s1,char *s2),将字符串s2连接到字符串s1的后面。 算法提示:
将s2中的字符依次存到从s1的’\\0’开始的位置。要求s1必须要有足够的空间放下s2中的所有字符。
(五) 类与对象
精品文档
精品文档
8. 构建一个类score,其中用私有数据成员number表示学号,computer、english、average分别表示计算机成绩、英语成绩和平均分数。公有成员函数inscore()用于输入学号和各科成绩,以及计算平均分数;成员函数showscore() 用来输出成绩。
要求在主程序定义stu1为score类的对象,stu2为指向score类对象的指针,由它们 分别调用成员函数inscore()和showscore()来实现输入、计算和输出功能。
9. 设计一个学生成绩管理系统,能输入学生的学号、姓名和成绩等数据,能按成绩从高到低进行排序,并能将排序的结果输出。
算法提示:
1) 设计一个学生类student,包含三个私有数据成员,即学号sno、姓名sname和成员 score
2) 在学生类student中再设计三个公有成员函数 setdata、display和getscore,分 别用于完成输入学生信息、输出学生信息、返回某个学生成绩的功能
3) 定义一个manage类,它有一个student类型的私有数据成员s[num],其中num表示 学生人数
4) 在manage类中分别定义三个公有成员函数input、output、sort,分别用于完成输 入、输出和排序功能。
(六) 继承与派生
10. 设计一个图书借阅管理系统。每本书有书号、书名和作者姓名属性,读者有借书证号、读者姓名和每位读者最多能够借阅的图书数量属性。(要求使用类的继承和派生知识点实现)
算法提示:
由于图书和读者都具有编号和名称两个属性,所以可以定义一个能够对编号和名称进行管理的类object,然后在object类的基础上派生出图书类book和读者类reader。
(七)虚函数与多态
11. 定义一个抽象类Shape,在其中说明一个纯虚函数area()作为一个接口,用来计算圆形、三角形、正方形和长方形的面积。
要求由抽象类派生出圆形、三角形、正方形和长方形4个派生类。在各派生
精品文档
精品文档
类中分别实现求各个图形的面积。
(八) 模板
12. 用函数模板的方式设计可以对某种数据类型的数组中的数据用选择法进行从大到小排序,然后用整型数据和字符型数据进行验证。
(九) 文件
13. 编写一个程序,统计data.txt文件的行数,并将所有行前加上行号后写到data1.txt文件中。 算法提示: 行与行之间以回车符分隔,而getline()函数以回车符作为终止符。因此,可以采用getline()函数读取每一行,再用一个变量i计算行数。
第二部分 小型软件的开发
本课程设计提供的设计题目,不是用一个独立的例子涵盖这些知识点,而是按层次逐步深入。为了使学生理解它们之间如何相互配合,设计要求使用接近实际需要的方式编程。
(一) 基本要求
1.使用类和对象设计程序
设计类就是根据数据封装的要求,抽象出合适的类。换言之,就是如何选择数据成员和成员函数。这部分的任务就是根据测试程序及其输出结果,设计一个满足要求的类。这各类涉及到类的构造函数和析构函数,并要求使用多种方法实现本课程设计。
2.使用菜单
菜单是应用程序的界面。控制语句用来改变程序的执行顺序,是实现结构化程序设计的基础。这部分的任务是设计一个含有多个菜单项并且比较使用的菜单,通过菜单选择不同的功能。文件操作是非常有用而重要的技术,需要多多练习。编制实用程序都离不开文件存取,这方面应该给与足够的重视。要求使用类实现这些菜单项,并熟悉多文件菜单编程和面向对象程序设计的思想。
3.通过组合和派生构成新的类
这部分的设计任务是使用组合和派生构成新的类。可以通过包含及派生两种
精品文档
精品文档
方法实现。目的是使学生掌握在不同的实现方法中,如何设计相应的构造函数和拷贝构造函数,进一步理解程序如何调用它们及析构函数的执行顺序。
4.函数的设计
函数进一步扩充程序,完善功能。
(二) 课程设计题目
题目1: 学生成绩统计管理系统
系统至少包括:学生基本信息:如学号、姓名、性别、班级等;学生各科课程的成绩:语文成绩,数学成绩,外语成绩,数据库成绩等。 功能要求 :
1、各种基本数据的录入。如:学生基本信息学生、各科课程的成绩 2、各种基本数据的修改。即:允许对以及录入的数据重新进行编辑、修改。 3、各种基本数据的插入。如:在学生选修课程基本信息中插入一条新信息等。 4、各种基本数据的删除。如:假设某同学转学或出国深造,删除该生的相关信息;
5、基于各种数据的查询。如:查询某班学生信息,查询某学生的成绩等。 6、基于各种基本数据的统计计算。如:A统计每个学生各门功课的平均成绩,并按平均成绩从高到低的次序排名输出每个学生各门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的考试成绩、平时成绩、综合成绩);B统计并输出各班各门功课的平均成绩和总平均成绩;列出不及格学生清单(学号、姓名、不及格的课程和成绩)。 7、退出系统
题目2: 学生档案管理系统
系统中的学生属性:学号,姓名,性别,出生日期,所在院系,班级名,
宿舍号码、电话号码等。其中出生日期可以使用结构体。 功能要求:
1、主菜单设计:按基本要求进行。
2、记录输入:对每个学生的学号、姓名、性别、出生日期、所在院系、班级名,电话, 进行输入并存储在数据文件中。
精品文档