VC课程设计教学和任务12131_vc课程设计教学和任务
VC课程设计教学和任务12131由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“vc课程设计教学和任务”。
VC++ 课程设计指导书
江苏科技大学南徐学院电子信息系
2012年6月
《计算机程序设计(vc++)课程设计》课程设计指导书
一. 课程设计教学和任务
《计算机程序设计(vc++)课程设计》是实践性教学环节,是学生必修的一门计算机实践课程。
本课程设计的目的是通过综合性程序设计训练,使学生进一步巩固对计算机程序设计语言(vc++)基本语法,基本算法的理解,加深对面向对象程序设计的理解与应用,并使学生养成模块化,结构化程序设计的良好风格,以及一定的程序组织能力,掌握基本程序设计的方法和技巧,为学习后续课程和实际编程打下良好的基础。
本课程设计的重点要求学生掌握基本程序设计理念和方法,培养学生基本程序设计的应用和开发能力。二. 课程设计要求与内容
1.本课程设计要求
(1)学生必须完成本指导书中所有的小综合设计题,并且完成大综合设计题中的任意一题(具体题目由任课教师指定)。要求:对主要变量及函数要加注释,以说明其功能。
(2)每个学生必须完成课程设计报告一篇。(报告格式见附录)2.课程设计的内容
本课程设计内容包括两个部分:小综合设计题和大综合设计题。
====================================== 附:课程设计报告格式一、二、课程设计目的 课程设计内容
1、小综合题
2、大综合题
三、课程设计体会及建议
小综合设计题
1.二维数组元素旋转
以下程序将N×N阶矩阵向左旋转90°,得到一个新的N×N阶矩阵。例如:原矩阵为:
向左旋转90°后的矩阵为:2.找回文数
判断一个字符串是否文回文,是指正向拼写和反向拼写都一样的字符串。例如,“madam”是回文。假定字符串中只出现字母,且不区分字母的大小写,即“A”和“a”被视为同一字母,其余类似。如“Madam”是回文。而“Sir”不是回文。函数plain(char*s)判断一个字符串是回文时,若是回文,函数返回1,否则,返回0.在主函数中,当判断一个字符串是回文时,输出Yes,否则输出No。
3.二维数组的操作运算
定义一个N×N的二维数组a,将该二维数组中周边元素的值全部置为2,其他元素全部置为0。例如,当n为8时生成并输出的矩阵为
定义类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,按要求生成并输出数组元素的值。
4.删除序列中相同的数
定义一个字符串类STR,从左到右对字符串中每个字符删除其后所有相同的字符,只留下第一次出现的那一个。例如,若字符串为“cocoon”,删除重复出现的字符后,其结果是字符串“con”。
具体要求如下:(1)私有数据成员。
●char *s1:指向原字符串,存放字符串的空间需动态分配。
●char *s2:指向结果字符串,存放字符串的空间需动态分配。(2)公有成员函数
●STR(char *str:构造函数,用str初始化s1,动态分配s1和s2指向的空间。
●void delsame():删除重复出现的字符。
●void show():输出原字符串和结果字符串。
●~STR():析构函数,释放动态分配的存储空间。
在主函数中定义一个STR类的对象test,用字符串“cocoon”初始化test,通过test调用成员函数完成删除工作,输出删除前后的两个字符串。
5.求任意数降序数
对任意一个各位数字不完全相同的四位数(如4133),将各位上的数字从小到大排列得到一个升序数(1334),再将各位上的数字从小到大排列得到一个降序数(4331)。用大数(降序数)减去小数(升序数)得到一个新的四位数(2997=4331-1334)。若相减后不足四位,则高位上补零,称此过程为一次变换。将新的四位数按上述方法再变换一次,又得到一个四位数。有断言,经过多次变换,最后一定会得到一个固定的数6174。以下程序试图验证这个断言。
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.实现点对象之间的各种运算。
设计一个点类Point,Point类提供了6个运算符重载函数(参加程序中的代码和注释),以实现相应的运算。具体要求如下:(1)私有数据成员 int x,y;
// x,y分别表示横坐标和纵坐标。Point();//构造函数,初始化x,y的值为0。Point(int i,int j);
// //置x、y坐标。
Point(Point &);//利用完成拷贝的构造函数,给x、y赋值。~Point(){};
//析构函数,无操作。int getx();
//取x坐标。int gety();
//取y坐标。void disp();//输出x、y的值。void offset(int,int);// 提供对点的偏移。
void offset(Point);// 重载,偏移量用Point类对象表示。bool operator==(Point);// 运算符重载,判断两个对象是否相同。bool operator!=(Point);// 运算符重载,判断两个对象是否不相同。void operator+=(Point);// 运算符重载,将两个点对象相加。void operator-=(Point);// 运算符重载,将两个点对象相减。
Point operator+(Point);// 运算符重 载,相加并将结果放在左操作数中。Point operator-(Point);// 运算符重载,相减并将结果放在左操作数中。(3)编写一个程序测试该类,测试数据及要求如下:
点类:p1(2,3),p2(3,4),p3(p2)完成的运算有:
以p3为主要测试对象,首先输出p3坐标值,置p3偏移量(10,10),p2==p3;p2!=p3;p3+=p1;p3-=p2;p3=p1+p3;p3=p1-p2;每完成一次运算,要将结果进行输出。程序正确执行的结果如下:
1:(3,4)2:(13,14)3:0(2)公有成员函数
4:1 5:(15,17)6:(12,13)7:(14,16)8:(11,12)8.定义一个描述学生通讯录的类,并进行测试。
定义一个描述学生通讯录的类COMMU,数据成员包括:姓名、学校、电话号码和邮编;成员函数包括:输出各个数据成员的值,分别设置和获取各个数据成员的值。
分析:由于姓名、学校和电话号码的数据长度是可变的,可使用动态的数据结构。邮编的长度是固定的,可定义一个字符数组来存放邮编。将数据成员均定义为私有的。用一个成员函数输出所有的成员数据,用四个成员函数分别设置姓名、单位、电话号码和邮编,再用四个成员函数分别获取姓名、单位、电话号码和邮编。主函数完成简单的测试工作。具体要求如下:(1)私有数据成员
char *pName;//
char *pSchool;
char *pNum;
char
Box[10];(2)公有成员函数
void Print(void);
//输出数据成员
//释放数据成员占用的void Init(char *,char *,char *,char *);
//完成初始化
void FreeSpace(void);空间
void SetName(char *name);void SetScool(char *unit);void SetNum(char *num);void SetBox(char *mailnum);char *GetName(void);char *GetScool(void);char *GetNum(void);char *GetBox(void);
//置姓名
//学校名称 //置电话号码 //置邮编 //取姓名 //取学校 //取电话号码 //取邮编
//单位 //电话号码 //邮编
(3)在主函数中完成对该类测试,定义两个对象c1和c2,分别两个对象的成员进行初始化、值设置并输出测试结果。
9.打印日历。
根据所输入的年份打印该年的日历。主要功能函数如下: void printmonth(int);//打印每个月的日历
void printhead(int);
//打印日历每个月的头,并将打印位置移到该月第一天的星期几处
int firstday(int);
//计算第一天是星期几 int daysofmonth(int);//该月有多少天 int isleap(int);
//判断是否是闰年
需定义两个全局变量year和weekday,分别存放年份 和 每个月的第一天是星期几
10.集合的操作
定义一个求两个集合的交集的类DataSet。并在主函数中用两个字符串进行测试。具体要求如下:
1)私有数据成员:
char *p1, *p2;指向存放两个原始数据集合的指针。
char *p;指向复制出来的两个集合的交集数据的指针。
2)公有成员函数:
DataSet(char a[ ], char b[ ]): 构造函数,提供原始数组,同时也要根据两个数组中较大的一个初始化指针p所指向的内存。
void fun(): 功能函数,求交集。要求交集中无重复字符。
void print(): 输出函数,输出原始数据及结果。
~DataSet(): 析构函数,实现必要的功能。
大综合设计题
设计题目一:学生成绩管理系统
1.系统概要
该系统完成学生信息的输入,插入,删除一个学生信息,修改,查找学生信息,计算学生的总分,并能按学生的总分排序。
2.基本功能要求
(1)按顺序输入若干个学生信息
(2)插入一个学生信息(先输入插入位置,再输入学生信息)(3)删除一个学生信息(先删除插入位置,再删除学生信息)(4)修改已知学号的学生信息(按学号来找)(5)查找已知学号的学生信息(按姓名来找)(6)统计一个学生的总分成绩(7)按总分从高到低输出学生成绩表(8)显示所有学生的信息(9)退出。
3.各功能模块的程序流程图。(学生完成)
4.完整的源程序代码。(学生设计完成)
设计题目二:通讯录管理系统
1.系统概要
该系统的功能是实现通讯录管理。
2.基本功能要求
(1)输入姓名、单位、电话号码(2)显示上述内容(3)按姓名查找后显示(4)删除有关记录(5)增加记录(6)保存修改后的文件
(7)显示修改后的文件
3.各功能模块的程序流程图。(学生完成)
4.完整的源程序代码。(学生设计完成)
设计题目三:小型特殊计算器
1.系统概要
本程序的功能是实现一个特殊的计算器,可以实现复数、有理数、矩阵和集合的特殊计算。程序可以实现复数、有理数的加、减、乘、除,可以实现矩阵的加法、减法和乘法运算,也可以实现集合的求交集、并集、子集的运算。注:可任选两种运算。
2.基本功能要求
(1)功能选择可以用菜单来实现 例如:请选择您的计算内容:
1.复数计算 2.有理数计算 3.矩阵计算 4.集合计算 0.退出
用户通过输入不同的数字进入不同的菜单。次级菜单主要显示本程序的功能,主要的功能有加法、减法、乘法和除法以及集合的求交集、求并集、求子集。(2)运行时给出明确的提示信息。
比如,输入一个什么类型的数据。根据用户的输入计算输出结果。由于数据类型比较多,可以一次输入第一个复数的实部,第一个复数的虚部,再输入第二个复数的实部、虚部。矩阵运算需要先输入矩阵的行数和列数,然后依次输出矩阵的第一行第一列的元素、第一行第二列的元素等等,依次类推。有理数运算需要一次输入有理数的分子、分母。集合运算需要输入集合的元素个数,然后依次输入集合中的每一个元素。
3.各功能模块的程序流程图。(学生完成)
4.完整的源程序代码。(学生设计完成)