VC课程设计教学和任务_vc课程设计教学和任务
VC课程设计教学和任务由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“vc课程设计教学和任务”。
VC++ 课程设计指导书
江苏科技大学南徐学院电子信息系
2011年9月
《计算机程序设计(vc++)课程设计》课程设计指导书
一. 课程设计教学和任务
《计算机程序设计(vc++)课程设计》是实践性教学环节,是学生必修的一门计算机实践课程。
本课程设计的目的是通过综合性程序设计训练,使学生进一步巩固对计算机程序设计语言(vc++)基本语法,基本算法的理解,加深对面向对象程序设计的理解与应用,并使学生养成模块化,结构化程序设计的良好风格,以及一定的程序组织能力,掌握基本程序设计的方法和技巧,为学习后续课程和实际编程打下良好的基础。
本课程设计的重点要求学生掌握基本程序设计理念和方法,培养学生基本程序设计的应用和开发能力。二. 课程设计要求与内容
1.本课程设计要求
(1)学生必须完成本指导书中所有的小综合设计题,并且完成大综合设计题中的任意一题(具体题目由任课教师指定)。要求:对主要变量及函数要加注释,以说明其功能。
(2)每个学生必须完成课程设计报告一篇。(报告格式见附录)2.课程设计的内容
本课程设计内容包括两个部分:小综合设计题和大综合设计题。
====================================== 附:课程设计报告格式一、二、课程设计目的 课程设计内容
1、小综合题
2、大综合题
三、课程设计体会及建议
小综合设计题
1.二维数组的操作运算
定义一个n×n的二维数组a,将该二维数组中周边元素的值全部置为2,其他元素全部置为0。
例如: 当n为8时生成并输出的矩阵为:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0定义类MAT,具体要求如下:
(1)私有数据成员
int n;二维数组的阶数
int *p;将二维数组以一维数组方式存储,p是起始指针。
(2)公有成员函数
MAT(int n1);初始化n,并动态申请数组空间,令p指向该空间。
void create();给数组赋值。
void print();按矩阵方式输出二维数组。
~ MAT();析构函数,释放动态数组空间。
(3)在主函数中完成对该类的测试。键盘输入二维数组的阶数n(如8或6),定义一个MAT类的对象m,用n初始化m,按要求生成并输出数组的值。
2.链表
建立一条无序链表,结点名为node,用一个函数实现将这条链表构成一条新的逆序链表,即将链表头当链表尾,链表尾当链表头。输出这两条链表上各个节点的值。
3.字符串处理
将字符串中指定的英语单词(字母子串)进行单数变复数的处理,单词之间用非字母分隔。为了简化编程,将单词的单数变复数的规则是:直接在单词后加s。例如单词student的复数为students。例如,有下列字符串:
We are student, you are student, too.指定单词student,将字符串中所有的student修改为students。处理后的字符串为:
We are students, you are students, too.试建立一个类Modistr,完成以上工作。具体要求如下:
(1)私有数据成员
char *str;存放指定的字符串;
(2)公有成员函数
Modistr(char *s);构造函数,动态申请字符串空间,用s所指向的串初
始化str;
void print();输出字符串str;
void modify(char *wordp);将wordp所指向的单词转换为复数。
~Modistr();析构函数
(3)在主函数中完成对该类的测试。定义类Modistr的对象mys,用字符串“We are student, you are student, too.”初始化mys,调用函数modify(char *)完成将单词“student”单数变复数的处理。
输出变换前和变换后的字符串。
提示:判断一个字符ch是否为字母,可用系统库函数isalpha(ch)。该函数的功能是:若ch是字母,返回真,否则返回假。使用该函数必须包含头文件ctype.h。
4.素数问题
建立一个类PRIME,求指定范围内的所有素数(质数)。具体要求如下:
(1)私有数据成员
int data[200];依次存放指定范围内的所有素数。
int min,max;存放待求素数的数值范围的下限和上限。
int num;存放min与max之间的素数个数。
(2)公有成员函数
构造函数PRIME(int n1, int n2);用n1和n2初始化待求素数的范围 min、max及num(值为0)。
void proce();求指定范围内的所有素数,把它们存放在数组data中。求素数的算法必须是:首先将min与max之间的所有奇数依次放入数组data中,然后依次判断data中的每一个元素是否为素数。
若不是素数,则将其值赋为0。最后,数组data中不为0的元素均为素数。将不为0的元素值集中连续存放到数组的前面,同时统计素数个数。
void print();输出求出的所有素数,同时输出素数个数。
(3)在主程序中对该类进行测试。
定义一个PRIME类的对象test,并用待求素数范围min =10, max=200初始化test。通过test调用成员函数求出10至200之间的所有素数,并输出结果。[提示] 素数的定义是“只能被1和它本身整除的正整数”,素数也称为质数。
5.信号系统问题
定义一个类为形状,由它公有派生出正方体、球体和圆柱体。利用虚函数的多态性形式完成计算正方体、球体和圆柱体的体积。具体要求如下:(1)基类: shape 保护数据成员:double a,b;
公有构造函数:shape(double,double); 公有纯虚函数:double volume();(2)派生类
正方体、球体和圆柱体的类名分别为cube,sphere,cylinder, 各派生类均需要定义公有的构造函数以及求体积的虚函数double volume()。(3)派生类为球体时,a为半径,b为0。
派生类为正方体时,a表示边长,b为0。
派生类为圆柱体时,a为圆柱体的边长,b为圆柱体的高。
(4)设计一个完整的程序,分别计算正方体、球体和圆柱体的体积并输出结果。
测试数据如下:
形状类指针变量:p、球体对象:C(0.8)、正方体对象:S(3.2)和圆柱体类对象:R(4.1,5)。用指针p分别指向派生类对象。
输出结果为:
球体的体积是2.14357
正方体的体积是32.768
长方体的体积是263.917 提示:球体的体积公式=4/3*π*半径*半径*半径(其中π取常数3.14)
正方体的体积=棱长×棱长×棱长
圆柱的体积=底面积×高
6.求两个日期之间相差的天数。
设计一个日期类Date,包括日期的年份、月份和日号,编写一个友元函数,求两个日期之间相差的天数。具体要求如下:(1)私有数据成员
int year, month, day;
(2)公有成员函数
Date(int y,int m,int d);//构造函数,初始化日期。void disp();//输出日期。
friend int count day(Date &d,int);// 使用二维数组存放各月天数,第一行对应非闰年,第二行对应闰年。
friend int leap(int year);
//判断是否闰年,是返回1,否则返回0。friend int subs(Date &d1,Date &d2);
//求两个日期之间相差的天数。
(3)在主函数中完成对该类测试,定义两个对象d1(2000,1,1)和d2(2002,10,1),调用subs函数。程序正确的运行结果是: 2000.1.1与2002.10.1之间有1002天
7.身份证。
已知旧身份证号码共15位,其中第7~12位是以2位年份+2位月份+两位日期组成,而新身份证号码共18位,其中第7~14位是以4位年份+2位月份+两位日期组成。试定义一个类ID,根据居民的出生日期检查其身份证号是否正确。
具体要求如下: 1)私有成员:
char s[19] : 存放身份证号。
int yy, mm, dd : 分别存放居民出生日期的年(4位)、月(10~12月两位,其余1 位)、日(两位)。
2)公有成员:
ID(char str[]):构造函数。
int val(char *p): 将数字字符串p转换为相应的十进制数,如“123”转换为数值123,“08”转换为数值8;
int fun(): 根据出生日期检验身份证号是否正确,如果正确,函数值为1,否则为0。
必须使用如下算法:先分别取出身份证中的表示年份、月份、日期的子字符串,然后利用上述int val(char *p)函数转换为数值,再与出生日期的相应成员数据比较。
void print(): 输出所有成员数据。
3)在主函数中输入两个身份证号(一个18位:***910,另一个15位***),分别用这两个身份证号生成类ID的对象,在主函数中通过成员函数fun确定身份证号是否正确并输出相应的信息(身份证号、出生日期、检验结果)。
8.9×9乘法口诀表。
定义一个类MUL,生成如下的9×9乘法口诀表,要求口诀表存储在动态数组中,并输出到屏幕上。运行结果如下: 1 23456
7
8
9
具体要求如下:(1)私有数据成员
nt(*a)[9];a是一个行指针变量,其指向的数组空间是动态生成的,用于存放口诀表。口诀表存放在二维数组的左下三角形中。
(2)公有成员函数
MUL();构造函数,动态生成数组空间。void proce();生成乘法口诀表。void print();输出乘法口诀表。
~MUL();析构函数,释放动态数组空间。
(3)在主函数中完成对该类的测试。定义一个MUL类的对象a,通过a调用成员函数求出并输出乘法口诀表。
9.字符串分类。
输入一个字符串,串内有数字和非数字字符。
例如:
ABC2345
345rrf678
jfkld945
将其中连续的数字作为一个整数,依次存放到另一个整型数组b中。如对于上面的输入,将2345存放到b[0]、345放入b[1]………
统计出字符串中的整数个数,并输出这些整数。要求:
(1)在主函数中完成输入和输出工作。
(2)设计一个函数,把指向字符串的指针和指向整数的指针作为函数的参数,并完成从字符串中依次提取出整数的工作。
10.数组元素排序
将含有12个元素的数组作如下处理:先将所有数据按其在数组中的次序分成4等分,然后以每一组数据为单位按其平均值从小到大排序。例如,原数组为:{5,6,7,1,2,3,7,8,9,2,3,5 }处理后的数组为:{1,2,3,2,3,5,5,6,7,7,8,9}试定义一个类DATA完成上述功能,具体要求如下:
(1)私有数据成员int a[12], b[12];数组a用以存放原始数据,数组b用以存放处理后的数据。
(2)公有成员函数DATA(int x[], int n);构造函数。用参数x初始化a,将b的所有元素初始化为0,n为数组x的元素个数。
void convert(int x[4][3]);将a中的数据进行分组,并转换为二维数组x,其中每一组依次为数组x的一行。
void sort();按每组的平均值实现分段排序,并将排序后的数据存放到数据成员b中。
算法要求:利用函数convert()将a转换为二维数组,再求二维数组每一行的平均值,然后根据该平均值从小到大对该二维数组进行行排序,并将结果按题意转换为一维数组存放到b中。
void print();输出a和b的所有元素。
(3)在主函数中利用给定的数组生成类DATA的对象test,并对该类进行测试。假设给定数组为{5, 6, 7, 1, 2, 3, 7, 8, 9, 2, 3, 5}。输入/输出示例:
处理前的数组:5 6 7 1 2 3 7 8 9 2 3 5
处理后的数组:1 2 3 2 3 5 5 6 7 7 8 9
大综合设计题
设计题目一:学生学籍成绩管理系统
每个学生的信息包括:姓名、学号、性别、和学生的成绩信息 如:英语、数学、程序设计及体育成绩等各门课的成绩,要求程序能自动增加一门或是几门课的成绩,同时可以删除课程。
从键盘输入数据,然后,完成如下处理:
1.对学生姓名或学号进行查询,显示其信息,求出其总成绩、平均成绩、平均基点,并且显不在全班的学成绩排名。2.对所有学生,按班级计算平均。
设计题目二:通讯录管理系统
1.系统概要
该系统的功能是实现通讯录管理。2.基本功能要求
(1)输入姓名、单位、电话号码(2)显示上述内容(3)按姓名查找后显示(4)删除有关记录(5)增加记录
(6)保存修改后的文件(7)显示修改后的文件
3.各功能模块的程序流程图。(学生完成)4.完整的源程序代码。(学生设计完成)
设计题目三:小型特殊计算器
1.系统概要
本程序的功能是实现一个特殊的计算器,可以实现复数、有理数、矩阵和集合的特殊计算。程序可以实现复数、有理数的加、减、乘、除,可以实现矩阵的加法、减法和乘法运算,也可以实现集合的求交集、并集、子集的运算。注:可任选两种运算。
2.基本功能要求
(1)功能选择可以用菜单来实现 例如:请选择您的计算内容: 1.复数计算 2.有理数计算 3.矩阵计算 4.集合计算 0.退出
用户通过输入不同的数字进入不同的菜单。次级菜单主要显示本程序的功能,主要的功能有加法、减法、乘法和除法以及集合的求交集、求并集、求子集。(2)运行时给出明确的提示信息。
比如,输入一个什么类型的数据。根据用户的输入计算输出结果。由于数据类型比较多,可以一次输入第一个复数的实部,第一个复数的虚部,再输入第二个复数的实部、虚部。矩阵运算需要先输入矩阵的行数和列数,然后依次输出矩阵的第一行第一列的元素、第一行第二列的元素等等,依次类推。有理数运算需要一次输入有理数的分子、分母。集合运算需要输入集合的元素个数,然后依次输入集合中的每一个元素。
3.各功能模块的程序流程图。(学生完成)4.完整的源程序代码。(学生设计完成)
设计题目四:选修课小系统
1.系统概要
通过这一款选修课小系统,学生可以登入学生端进行选课及其他的操作,管理者通过登入管理端可以进行对选修课系统的数据的管理和维护。在学生端主要设置了3个基本功能:学生选课、学生情况、选课情况等;在管理端主要设置了9个基本功能:增加/删除学生、增加/删除课程、更改学分、填写成绩、学生情况、选课情况、保存数据等。这些功能基本上能满足选课的基本要求。此程序可以初步体现课程设计的目标。2.基本功能要求
用VC++编写一个界面美观流畅学生选课系统。学生有名字,学生最多可学五门课程,学生实际学的门数,可以给定学生的名字,可以得到学生的名字,可以得到学生给定课程的成绩,可以得到学生所学课程的平均成绩,可以给学生增加一门课(同时在该课程中增加一个学生)。课程最多有30个学生,课程有实际学生
数,课程有实际学生名单,课程有学分数,课程有每个学生成绩,课程可以得到学分数,课程可以设置学分数,课程可以得到班平均成绩,课程可以得到某个学生成绩。
3.各功能模块的程序流程图。(学生完成)4.完整的源程序代码。(学生设计完成)
设计题目五:学生成绩管理系统
系统上采用VC++为开发环境,这个编译器功能完善,使用方便。课程设计《学生成绩管理系统》,它的主要功能是对学生的成绩进行修改和管理。
系统功能要求:(1)界面
************************************ 学生成绩管理系统
************************************ ************************************ ** 1--输入数据 ** ** 2-查询成绩 ** ** 3--修改成绩 ** ** 4--输出所有学生成绩 ** ** 5--统计及格和优秀人数 ** ** 6--退出系统 ** *************************************(2)功能
程序的主要功能是输入学生姓名、成绩,学号自动生成,并可以对学生的成绩按学号和姓名进行查询。该系统具有存贮学生数据,按学号、姓名查询,按需要修改学生成绩,列出学生成绩和统计功能。
VC++ 课程设计指导书江苏科技大学南徐学院电子信息系2012年6月《计算机程序设计(vc++)课程设计》课程设计指导书一. 课程设计教学和任务《计算机程序设计(vc++)课程设计》是实践......
VC++课程设计题目 B090110-12(2012-04-23 – 2012-05-19)前言:本课程设计分成自测题和综合题两部分。两部分都列入验收。练习题:共11道。内容覆盖主要基本技术:基本的开发环境(......
编号:河北工业大学计算机软件技术基础(VC)2007年课程设计报告学院 班级 姓名 __ 学号 ____ 成绩 __ ____一、题目:查找满足特定条件的三位数(27)二、设计思路1、总体设计 1)分析程......
C++ 课 程 设 计 实 验 报 告学号 姓名院系专业 能源与环境工程 热能与动力工程一、课题名称《教学事务管理系统》二、问题陈述使用面向对象设计的系统分析和设计,设计出适当......
砌体结构课程设计一、设计资料某五层砖混结构办公楼其平面、剖面如图。图中梁L-1截面为bc× hc=200×550mm2,梁端伸入墙内240mm,一层纵墙为370mm,2~5层纵墙厚240mm,横墙厚均为2......
