文档视界 最新最全的文档下载
当前位置:文档视界 › C++程序设计-实践报告

C++程序设计-实践报告

C++程序设计-实践报告
C++程序设计-实践报告

.

课程实践报告

设计题目: 程序设计(VC++)实践设计时间2013-1- 至2013-1- 学院(系): 计算机科学与工程学院

2013年1月

一.实践任务

选择题目,创新性题目可只选择1 题,仅选提高题应不少于3 题,仅选基础题应不少于6 题,也可组合选题,还可自行选择感兴趣的题目(须经指导老师审定)。对于提高题、创新题及游戏题可组成团队开发,但应制定详细的项目分工说明。

二.实验步骤及记录(题目,源程序代码及运行结果)

1.与学号对应的题(必做题):基础题12

题目:

建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串不

等长)。例如将字符串“abcde”交叉插入字符串“ABCDEFG”的结果为“aAbBcCdDeEFG”或“AaBbCcDdEeFG”。

具体要求如下:

(1)私有数据成员

char str1[60] :存放被插入的字符串。

char str2[40] :存放待插入的字符串。

char str3[100] :存放插入后的字符串。

(2)公有成员函数

STRING (char *s1, char *s2 ):构造函数,用s1 和s2 初始化str1 和str2。

void process():将str2 中的字符串插入到str1 中,存放到str3 中。

void print():输出插入后的字符串。

(3)在主程序中定义STRING 类的对象test 对该类进行测试。

源程序代码:

#include

#include

class STRING{

char str1[60];

char str2[40];

char str3[100];

public:

STRING(char *s1,char *s2){

strcpy(str1,s1);

strcpy(str2,s2);

}

void process(){

char *p1=str1,*p2=str2;

for(int i=0;*p2;i=i+2){

for(int k=strlen(str1);k>=i;k--){

str1[k+1]=str1[k];

}

*p1=*p2;

p1=p1+2;

p2++;

}

}

void print(){

strcpy(str3,str1);

cout<

}

};

void main(){

char s1[60]="ABCDEFG";

char s2[40]="abcde";

cout<<"原字符串:"<

cout<<"交叉插入后的字符串:";

STRING test(s1,s2);

test.process();

test.print();

}

运行结果:

2-6为选做题,其中2,3,4为基础题;5,6为提高题。

2.基础题4

题目:

建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。

具体要求如下:

(1)私有数据成员

int *array:一维整型数组。

int n:数组中元素的个数。

(2)公有成员函数

MOVE(int b[],int m):构造函数,初始化成员数据。

void exchange():输出平均值,并将数组中的元素按要求重新放置。void print():输出一维数组。

~MOVE():析构函数。

(3)在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。源程序代码:

#include

class MOVE{

int *array;

public:

MOVE(int b[],int m){

n=m;

array=new int[m];

for(int i=0;i

array[i]=b[i];

}

void exchange(){

int b[10];

for(int k=0;k

b[k]=array[k];

for(int i=0;i

for(int j=i+1;j

if(b[j]>=b[i]){

int temp=b[i];

b[i]=b[j];

b[j]=temp;

}

int max=b[0],min=b[n-1];

for(int p=0;p

if(array[p]==max)array[p]=min;

else if(array[p]==min)array[p]=max;

}

}

void print(){

for(int i=0;i

cout<

cout<

}

~MOVE(){delete [n]array;}

};

void main(){

int a[10]={21,65,43,87,12,84,44,97,32,55};

cout<<"原数组:"<

for(int i=0;i<10;i++)

cout<

cout<

cout<<"交换最大值和最小值后的数组:"<

MOVE a1(a,10);

a1.exchange();

a1.print();

}

3.基础题16

题目:

定义一个方阵类CMatrix,并根据给定算法实现方阵的线性变换。方阵的变换形式为:

F=W*f T

f 为原始矩阵,f T 为原始矩阵的转置,w 为变换矩阵,这里设定为

10 0 1

0 1 1 0

0 1 1 0

10 0 1

具体要求如下:

(1)私有数据成员

int (*a)[4]:a 指向方阵数组。

int w[4][4]:w 为变换矩阵。

int m:m 表示方阵的行和列数。

(2)公有成员函数

CMatrix (int a[][4],int m) :用给定的参数a 和m 初始化数据成员a 和m;

对变换矩阵w 进行初始化,要求必须用循环实现。

void Transform () :根据上述变换算法,求出变换后的数组形式,存放在

原始数组。

void show( ) :在屏幕上显示数组元素。

l~ CMatrix () :释放动态分配的空间。

(3)在主程序中定义数组int arr[][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}作为原始数组。定义一个CMatrix 类对象test,用arr 初始化test,完成对该类的测试。源程序代码:

#include

class CMatrix{

int (*a)[4];

int w[4][4];

int m;

public:

CMatrix(int a[][4],int m){

this->m=m;

this->a=new int[this->m][4];

for(int i=0;im;i++)

for(int j=0;jm;j++)

this->a[i][j]=a[i][j];

for(i=0;i<4;i++){

for( int j=0;j<4;j++)

if(i+j==3||i==j)w[i][j]=1;

else w[i][j]=0;

}

}

void Transform(){

int b[4][4];

for(int i=0;i

for(int j=0;j

b[i][j]=a[j][i];

}

for(int p=0;p<4;p++){

for(int q=0;q<4;q++)

a[p][q]=w[p][0]*b[0][q]+w[p][1]*b[1][q]+w[p][2]*b[2][q]+w[p][3]*b[3][q];

}

}

void show(){

for(int i=0;i<4;i++){

for(int j=0;j<4;j++)

cout<

cout<

}

}

~CMatrix(){

delete [m]a;}

};

void main(){

int arr[][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};

cout<<"原始方阵:"<

for(int i=0;i<4;i++){

for(int j=0;j<4;j++)

cout<

cout<

}

cout<<"变换后的方阵:"<

CMatrix test(arr,4);

test.Transform();

test.show();

}

运行结果

4.基础题17

题目:

17.定义一个类SIN,求sin(x) = x /1- x3 / 3!+x5 / 5!-x7 / 7!+....+ (-1) n+1 x(2n-1) /(2n -1)! 具体要求如下:

(1)私有成员数据。

int x:输入公式中x 的值,求sin(x)。

int n:输入公式中n 的值。

(2)公有成员函数。

SIN(int x, int n ):构造函数,用于初始化x 和n 的值。

int power( int q):求q!的值。

l int mi( int m,int n):求m n的值。

l int fun( ):用于求SIN(X)的值。

l void show( ):输出求得的结果。

(3)在主程序中定义对象test,对该类进行测试

源程序代码:

#include

class SIN{

private: int x; int n;

public:

SIN(int x, int n){

this->x=x;

this->n=n;

}

int power(int q){

int s=1;

if(q<=1)return 1;

while(q>1){

s=s*q;

q--;

}

return s;

}

int mi(int m, int n){

int temp=1;

for(int i=1;i<=n;i++)

{

temp*=m;

}

return temp;

}

int fun(){

int result=0;

for(int i=0;i<=n;i++){

result+=mi(-1,i)*mi(x,2*i+1)/power(2*i+1);

}

return result;

}

void show(){

cout<<"sin("<

};

void main(){

int x, n;

cout<<"输入一个整数x"<

cin>>x;

cout<<"输入一个整数n"<

cin>>n;

SIN test(x,n);

test.show();

}

运行结果:

5.提高题9

题目:

设计一个程序通过虚函数求长方形的面积和长方体的表面积,具体要求如下:(1)定义长方形类Rectangle

保护的数据成员

int l,w; //表示长方形的长和宽

int s; //表示长方形的面积

公有的构造函数

Rectangle(int x,int y):初始化长方形的长和宽;

公有的虚函数

virtual void fun():求长方形的面积;

virtual void show():输出长方形的长、宽和面积。

(2)定义长方形类A 的公有派生类Cuboid,表示长方体类

私有的数据成员

int h; //表示长方体的高

公有的构造函数:

Cuboid(int x,int y,int z):初始化长方体的长、宽和高。

公有函数

void fun():求长方体的表面积;

void show():输出长方体的长、宽、高和表面积。

(3)在主函数中对定义的类进行测试,要求定义长方形对象a1(长为2,宽为3),

长方体对象b1(长、宽、高分别为2,3,4),通过基类的指针p 分别求长方形

的面积和长方体的表面积,输出数据成员,并体现运行的多态性。

源程序代码:

#include

class Rectangle{

protected:

int l,w;

int s;

public:

Rectangle(int x,int y){

l=x;

w=y;

}

virtual void fun(){

s=l*w;

}

virtual void show(){

cout<<"长方形的长为:"<

}

};

class Cuboid:public Rectangle{

int h;

public:

Cuboid(int x,int y,int z):Rectangle(x,y){

h=z;

}

void fun(){

s=2*(w*l+w*h+h*l);

}

void show(){

cout<<"长方体的长为:"<

}

};

void main(){

Rectangle *p;

Rectangle a1(2,3);

p=&a1;

p->fun();

p->show();

Cuboid b1(2,3,4);

p=&b1;

p->fun();

p->show();

}

运行结果:

6.提高题10

题目:

设计一个程序,查询2000 年1 月1 日(星期六)后的某天是星期几,具体要求如

下:

(1)定义函数int leap(int year):判断某年year 是否为润年。能够被400 整除,或

者能够被4 整除但不能衩100 整除的年份是润年。

(2)定义函数int f(int y,int m,int d,int *m1,int *m2):判断输入的日期是否合法,

其中y、m、d 分别表示年、月、日,m1 表示非润年每月的天数,m2 表示润

年每月的天数。

(3)定义类date,表示日期

私有数据成员

int year,month,day; //分别表示某年某月某日

公有成员函数:

date(int y,int m,int d):构造函数,用形参分别初始化数据成员;

int get_year():访问私有成员year;

int get_month():访问私有成员month;

int get_day():访问私有成员day;

void show():以指定格式输出数据成员。

(4)定义类week,判断某天是星期几

私有数据成员

date d1; //日期类的对象,表示某日

int m1[12];//存储非润年每月的天数31,28,31,30,31,30,31,31,30,31,30,31

int m2[12];//存储润年每月的天数31,29,31,30,31,30,31,31,30,31,30,31

int w;//表示用0 表示星期天,1 表示星期一,以此类推6 表示星期六

公有成员函数

week(int y,int m,int d,int *p1,int *p2):构造函数,用y,m,d 初始化日期,用

p1,p2 分别初始化m1,m2;

int days():计算d1 距2000 年1 月1 日的时间间隔(天数);

void fun():根据days()的计算结果判断d1 是星期几(求以0~6 表示w 的

值);

void print():输出判断结果。

(5)在主函数中对定义的类进行测试。从键盘输入一个日期,并检查输入数据的合法性,然后用输入的数据和表示每月天数的数组初始化week 类的对象w,

调用相关成员函数,输出判断结果。

程序运行结果如下:

请输入要查询的日期(年月日):2009 9 15

2009/9/15,是星期二。

源程序代码:

#include

int leap(int year){

if(year%400==0 || year%100!=0 && year%4==0)return 1;

else return 0;

}

int f(int y,int m,int d,int *m1,int *m2){

if((m==1||m==3||m==5||m==7||m==8||m==10||m==12)&&d>31)return 0;

else if((m==4||m==6||m==9||m==11)&&d>30)return 0;

else return 1;

while(leap(y))

if(m==2&&(d==28||d>=30))return 0;

else return 1;

while(!(leap(y)))

if(m==2&&(d==29||d>=30))return 0;

else return 1;

}

class date{

int year,month,day;

public:

date(int y,int m,int d){

year=y;

month=m;

day=d;

}

int get_year(){return year;}

int get_month(){return month;}

int get_day(){return day;}

void show(){

cout<

}

};

class week{

date d1;

int m1[12];

int m2[12];

int w;

public:

week(int y,int m,int d,int *p1,int *p2):d1(y,m,d){

for(int i=0;i<12;i++)

m1[i]=p1[i];

for(int j=0;j<12;j++)

m2[i]=p2[i];

w=0;

}

int days(){

int i,j, result = 0;

for(j=2000;j

result+=(leap(j)+365);

for(i=1;i

if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)result+=31;

else if(i==4||i==6||i==9||i==11)result+=30;

else if(i==2)result+=(28+leap(j));

}

result=result+d1.get_day()-1;

return result;

}

void fun(){

switch(days()%7){

case 0:w=6;break;

case 1:w=0;break;

case 2:w=1;break;

case 3:w=2;break;

case 4:w=3;break;

case 5:w=4;break;

case 6:w=5;break;

}

}

void print(){

switch(w){

case 6:cout<<"是星期六。";break;

case 0:cout<<"是星期天。";break;

case 1:cout<<"是星期一。";break;

case 2:cout<<"是星期二。";break;

case 3:cout<<"是星期三。";break;

case 4:cout<<"是星期四。";break;

case 5:cout<<"是星期五。";break;

}

}

};

void main(){

int m1[12]={31,28,31,30,31,30,31,31,30,31,30,31};

int m2[12]={31,29,31,30,31,30,31,31,30,31,30,31};

cout<<"请输入要查询的日期(年月日):";

int a,b,c;

cin>>a>>b>>c;

cout<

f(a,b,c,m1,m2);

week w(a,b,c,m1,m2);

date M(a,b,c);

M.show();

w.fun();

w.print();

}

运行结果:

三.实践小结

1.通过选择不同类型,不同难度层次的题目,有效地复习了一学期以来C++的学习容。

2.实践过程过个人思考及小组合作,对细节之处和难点进行了有效的分析,极提高了学习

效率。

3.通过对题目的分析和理解,我发现自己在字符串处理,指针等方面基础较好,而在虚函

数,友元函数等较琐碎的知识掌握得不太透彻,这是寒假期间我在准备等级考试所要留心的地方。

4.这次的课程实践在一定程度上是为即将到来的计算机二级考试打下良好的基础。

5.在最后一次的成果展示上,我发现自己的程序缺乏创新,追用性,却忽略了其潜在价值。

测绘程序设计实习报告

测量程序设计实习报告 姓名: XX 班级: XXXX 学号: XXXX 教师评语:

实验名称:使用C#开发环境建立测量程序框架 一、实验的目的与任务: (1)学会用C#窗体程序开发环境建立应用程序框架方法 (2)学会使用常见的Windows控件 (3)根据自身需要设计一个测量程序界面 二、实验的过程与步骤: 1、首先打开visual studio 2010,选择文件→新建→项目。在弹出的对话框中右栏一侧选择windows窗体应用。选择文件存放地址,输入项目名称,点击确定,完成。 2、拖动menuSctrip控件到主窗体,并且键入“文件”、“工具”两个选项,在“文件”下添加一个“打开”选项;在“工具”下添加“近似平差计算”、“高斯消元”两个选项。 3、选择项目→添加windows窗体,输入窗体名称“CLSJ”,点击确定。

4、在CLSJ窗体中拖入SplitContainer控件,将窗体分为左右两部分,调整大小。在拖入一个“TabControl”,新建选项卡。最后,加入“Button”、“TextBox”、“Label”控件。 5、用相同的方法,新建一个名为高斯消元的窗体,然后按照需要进行设计。 三、程序运行效果 四、本实验心得体会

这是第一次接触这种可视化开发编程,刚开始不是很熟悉,对于编程语言来说,在掌握一定语法之后,要多用,多结合实际进行一些简单编程,这样才能提高对一种编程语言的理解。 实验名称:导线计算程序设计及粗差探测 一、实验的目的与任务: (1) 掌握方位角计算的程序设计方法 (2) 掌握符合导线、闭合导线、支导线计算的程序设计方法 (3) 理解粗差探测的程序设计方法 二、实验的设计与开发步骤: 1、考虑到在测量时所用的角度均为度分秒,而在c#计算时只是别度分秒,因此先设计两个函数,可以将度分秒和弧度制进行转化。 2、其次先写一个point 类,包含x ,y 两个成员变量,然后在设计一个方位角函数,用两个point 类当作形参传递进去,根据方位角计算公式παk x y +??=arctan ,(根据象限角和方位角关系对k 进行调节)应该分为四种情况,但是考虑到分母不为0,因此应该在加一种情况,即导线与y 轴重合。 3、然后根据边长,根据方位角,公式 ααsin *cos *1212l y y l x x +=+=进行坐标推算。

C语言课程设计报告-游戏2048

东华理工大学C语言课程设计报告 学院:国际教育学院学院专业:电子信息工程 班级:1420606 学号:201420060638 姓名:钟天运

一、课程设计题目:游戏2048 二、课程设计要求: a)使用C语言编写2048这款游戏 b)能够正常运行,拥有游戏界面。 c)能正常进行游戏从开始到结束。 d)用户操作方便 三、设计思路: a)游戏介绍: i.2048是一款简单的数字类游戏,界面是一个 4*4的方形格子。每个格子里可以为空或者有 一个2^n的数值。 ii.用户可以输入4种指令,分别是:上下左右,游戏会根据用户的指定的方向,将格子中 的数值向对应方向进行移动,直至移动到最边 上的格子或者有其他数值占用,如果碰到等大 数值,将会进行合并。此外,成功移动后,会 在一个空格子随机生成一个2或者4 iii.游戏目标是合成2048这个数值或者更大的数值。 b)实现思路: i.可以使用二维数组来保存4*4格子中的数值 ii.指令,可以通过输入字符函数,读取用户

在键盘上的方向键,进行判断执行对应的代 码。 iii.游戏界面,可以使用简单的特殊制表符,来实现,并通过清屏函数来进行反复同位置打 印界面。 iv.需要判断游戏结束的函数,以及记录游戏分数和步骤的变量 v.当游戏结束时,能够询问用户是否重新开始。 vi.随机生成一个新数,可以调用随机函数,使用时间做种子。 c)实现难点: i.打印游戏界面,要实现灵活能根据棋盘数组里 面的数据灵活打印。 ii.执行操作时,数值的移动和合并。

四、流程图

五、C语言源代码 // 游戏2048.c #include "windows.h" #include "time.h" #include "stdio.h" #include "conio.h" #include "string.h" //宏定义常量方向键值 //const int LEFT = 75, UP = 72, RIGHT = 77, DOWN = 80; #define LEFT 75 #define UP 72 #define RIGHT 77 #define DOWN 80 const char error_str[] = "您上次输入的指令无法识别,请重新输入。"; struct board { int place[4][4]; long int stepn; long int num; //存储游戏分数 long int time; int dtk; //direction key 记录方向键,及操作方向 int over; int zeronum; }; //该函数为游戏运行函数,当只是玩游戏的时候。进入该函数,游戏控制函数。int main() { //place数组为棋盘,其中为零代表空,-1代表不能合并的牌,其他2的倍数值为本身含义,初始化为全0。 struct board board1, board_backup; int newgame(struct board *, int), show(struct board *), operate(struct board *); char str[100] = "首次运行游戏"; //用于记录系统返回给用户的信息,例如:上一步执行向左合并,按键有误等 newgame(&board1, 0); //调用函数为新局初始化,第二个

程序设计报告模板

北京化工大学计算机科学与技术专业2014程序设计实训报告 题目:个人记账软件 专业:计算机科学与技术 班级:计科1305 指导教师:江志英

2014程序设计实训任务书

目录 2014程序设计实训任务书...................................... 错误!未定义书签。目录..................................................... 错误!未定义书签。第一章需求分析.............................................. 错误!未定义书签。 引言............................................... 错误!未定义书签。 任务概述........................................... 错误!未定义书签。 数据描述........................................... 错误!未定义书签。 功能需求........................................... 错误!未定义书签。 运行需求........................................... 错误!未定义书签。 任务计划........................................... 错误!未定义书签。第二章概要设计.............................................. 错误!未定义书签。 总体设计........................................... 错误!未定义书签。 面向对象设计....................................... 错误!未定义书签。 运行界面设计....................................... 错误!未定义书签。第三章详细设计.............................................. 错误!未定义书签。 ........................................................ 错误!未定义书签。第四章测试分析............................................. 错误!未定义书签。第五章用户手册(可选)..................................... 错误!未定义书签。第六章课程设计总结.......................................... 错误!未定义书签。附录:程序代码(仅电子版需要、纸质版不需要)................. 错误!未定义书签。

程序设计基础实验报告

《程序设计基础》 实验报告 专业班级: 姓名: 学号:

实验一 面向过程的简单程序设计 1.实验目的要求 (1) 使用C++语言编写简单的计算机程序,掌握C++程序从编辑、编译到运行的全过程, 初步了解C++程序的特点。 (2) 掌握C++语言的数据类型(包括对各种数据类型变量的定义、初始化、赋值等)、运 算符和表达式的使用。 (3) 掌握赋值语句的使用。 (4) 掌握数据的输入输出方法。 2.实验内容 (1)设计简单程序,分别计算下列表达式,式中变量由键盘输入,输出表达式的值。 <1> d c b a x -++ <2> 11 11+++x x <3> sinX+cosX+tan -1 X <4> e x+y +e x-y <5> log 10(1+21x +) <6> 22b a -+??b a - (其中??a 表示取不大于a 的最大整数)。 <1> #include using namespace std; int main() { float x,a,b,c,d,e; cin>>x>>a>>b>>c>>d; e=x+(a+b)/(c-d); cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=sqrt(1+1/(x+1/(x+1)));

cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=sin(x)+cos(x)+1/tan(x); cout< #include #include using namespace std; int main() { double x,y,z; cin>>x>>y; z=exp(x+y)+exp(x-y); cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=log(1+sqrt(1+x*x)); cout< #include #include using namespace std; int main()

C程序设计实践报告

C程序设计实践报告文件编码(008-TTIG-UTITD-GKBTT-PUUTI-WYTUI-8256)

课程实践报告 设计题目: 程序设计(VC++)实践 设计时间2013-1- 至2013-1- 学院(系): 计算机科学与工程学院 2013年1月 一.实践任务 选择题目,创新性题目可只选择1 题,仅选提高题应不少于3 题,仅选基础题应不少于6 题,也可组合选题,还可自行选择感兴趣的题目(须经指导老师审定)。对于提高题、创新题及游戏题可组成团队开发,但应制定详细的项目分工说明。二.实验步骤及记录(题目,源程序代码及运行结果) 1.与学号对应的题(必做题):基础题 12 题目: 建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串不 等长)。例如将字符串“abcde”交叉插入字符串“ABCDEFG”的结果为“aAbBcCdDeEFG”或“AaBbCcDdEeFG”。 具体要求如下: (1)私有数据成员 char str1[60] :存放被插入的字符串。 char str2[40] :存放待插入的字符串。 char str3[100] :存放插入后的字符串。 (2)公有成员函数 STRING (char *s1, char *s2 ):构造函数,用s1 和s2 初始化str1 和str2。

void process():将str2 中的字符串插入到str1 中,存放到str3 中。void print():输出插入后的字符串。 (3)在主程序中定义STRING 类的对象test 对该类进行测试。 源程序代码: #include<> #include<> class STRING{ char str1[60]; char str2[40]; char str3[100]; public: STRING(char *s1,char *s2){ strcpy(str1,s1); strcpy(str2,s2); } void process(){ char *p1=str1,*p2=str2; for(int i=0;*p2;i=i+2){ for(int k=strlen(str1);k>=i;k--){ str1[k+1]=str1[k]; } *p1=*p2; p1=p1+2;

c语言课程设计报告学生成绩信息管理系统源代码

实验报告 一、问题陈述及其需求分析 (一)问题陈述 学生信息管理系统是对学生信息的基本管理,其中包括以下及模块: (1)增加一个学生的信息(需输入要增加学生的所有信息); (2)统计本班学生总人数及男女生人数。 (3)分别按照学号查找学生的信息;若找到则输出该学生全部信息,否则输出查找不到的提示信息。 (4)按学号对所有学生信息排序,并输出结果; (5)删除一个学生的信息(需指定要删除学生的学号);同时显示删除后的结果。( 二) 功能需求分析 学生信息管理系统设计 学生信息包括:学号,姓名,性别,出生年月,电话 使之提供以下功能: 1、系统以菜单方式工作 2、建立链表并显示 3、插入新的学生信息 4、删除某学号的学生信息 5、查找某学号的学生信息 6、对学生信息排序 7、统计学生人数 8、输出学生信息 二总体设计 (一)模块 依据程序的数据结构,描述该程序的层次结构,如下图:

1、建立链表并显示 void createlist(struct stucode **r); 2、插入新的学生信息 void insert(struct stucode **r); 3、删除某学号的学生信息 void del(struct stucode **r); 4、查找某学号的学生信息 void search1(struct stucode *r); 5、对学生信息排序 void sort(struct stucode **r); 6、统计学生人数 void search2(struct stucode *r); 7、输出学生信息 void out(struct stucode *r); 1 建立链表并显示 2 添加学生信息 3 删除学生信息 息 4 按学号查找学生信 5 对学生信息排序 6统计学生人数 7输出学员信息 8 学生信息写入文件 0退出 main() 菜单函数

Java程序设计-实验报告1-模板 (1)

实验报告 课程名称Java程序设计 实验项目实验一类和对象 系别_________计算机_________ 专业/班级_______计算机类/1402______ 姓名_____李馨雪________ 实验日期______2015.10.10______ 成绩_______________________ 指导教师

一、实验题目:实验一类和对象 二、实验内容: (1)用类描述计算机中CPU的速度和硬盘的容量。要求Java应用程序有4个类,名字分别是PC、CPU、HardDisk和Test,其中Test是主类。 1)PC类与CPU类和HardDisk类关联的UML图如图所示。 其中,CPU类要求getSpeed()返回speed的值,setSpeed(int m)方法 将参数m的值赋值给speed。 HardDisk类要求getAmount()返回amount的值,setAmount(int m)方 法将参数m的值赋值给amount。 PC类要求setCPU(CPU c)将参数c的值赋值给cpu,要求setHardDisk (HardDisk h)方法将参数h的值赋值给HD,要求show()方法能显示 cpu的速度和硬盘的容量。 2)主类Test的要求 main()方法中创建一个CPU对象cpu,其speed设置为2200; main()方法中创建一个HardDisk对象disk,其amount设置为200; main()方法中创建一个PC对象pc, pc调用setCPU方法,实参是cpu;调用setHardDisk方法,实参是 disk;调用show方法。 (2)设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,要求如下: 1)编写接口Animal,有2个抽象方法cry()和getAnimaName(); 2)编写模拟器类Simulator,该类有一个playSound(Animal animal)方法,其形参是Animal类型,可以调用实现Animal接口的类所重写的cry()方法播放具体动物的声音,调用重写方法显示动物种类的名称; 3)编写实现Animal接口的Dog类和Cat类。具体的UML图如下所示:4)编写主类Application,其main方法中至少包含如下代码: Simulator si=new Simulator();

大学程序设计基础实验报告 (2)

**大学程序设计基础实验报告 实验名称:实验三分支结构 实验目的: 1、掌握IF-ELSE语句使用。 2、掌握ELSE-IF语句使用。 3、熟悉SWITCH语句使用。 实验内容: 在本地电脑中新建一个文件夹,用于存放C程序,文件夹的名字要求是“学号姓名-实验序号”,如E:\ 1920115555张三-03。启动C-Free,完成如下各题。 1、编程题:输入参数a,b,c,求一元二次方程ax2+bx+c=0的根(①a、b、c都为0,②a 和b为0,c不为0,③a为0,b不为0,c任意,④a不为0,且a、b、c满足b2-4ac ≥0,⑤a不为0,且a、b、c满足b2-4ac<0)。 2、编程题:输入职工的月薪salary,计算并输出应缴纳的个人所得税tax。tax=rate * (salary –850),rate的计算方式如下: 当salary <= 850,则rate = 0; 当850 < salary <= 1350,则rate = 5%; 当1350 < salary <= 2850,则rate = 10%; 当2850 < salary <= 5850,则rate = 15%; 当salary > 5850,则rate = 20%;。 3、编程题:根据输入的3个边长a、b、c,判断它们是否能构成三角形,若能构成三 角形,则进一步判断此三角形是哪种类型的三角形(等边三角形、等腰三角形、直角三角形和一般三角形。等腰直角算作等腰)。 4、编程题:输入一个形式如“操作数运算符操作数”的表达式,对2个整数进行乘、 除或求余运算。【请分别用if语句和switch语句实现此题功能】 上交作业的方法: 1.将程序代码及注释和运行程序的窗口复制到实验结果下方对应的题号上,并把这 次实验上机操作中遇到的问题及解决方法、心得等填好完成实验报告。 2.保存以上所有按要求已调试通过,并形成.c(或.cpp)和.exe文件到以自己的“学 号姓名-03”命名的文件夹中,并将以自己的“学号姓名”命名的文件夹压缩后上 交到ftp://10.172.250.252:1161中的“作业上传”文件夹下的“报告上交02”文件 夹下的子文件夹“源文件压缩上交”中,同时把以“学号姓名-03”命名的word 文档上交到“报告上交03”文件夹下的另一子文件夹“word文件上交”中。 特别提醒:每次上传的文件名一定要是“学号姓名-实验序号. doc”(如1720115555张

Windows程序设计实践报告

~ Windows程序设计 实践报告 ; BY:08级空间信息与数字技术 60020 马腾

目录 任务一:Windows消息循环机制及API程序设计实践 (3) 一、实践目的 (3) 二、任务概述 (3) 三、windows消息循环 (3) 四、学习收获 (3) 任务二:基于MFC的对话框程序设计 (4) 一、任务概述 (4) 二、MFC消息映射 (4) 三、计算器程序的设计思路 (4) 四、遇到困难及解决 (5) 五、关键代码 (5) 六、运行情况 (6) 七、收获 (6) 任务三:基于MFC的单文档绘图程序设计 (7) 一、任务概述 (7) 二、模块设计及封装 (7) 三、设计的优点 (8) 四、程序风格 (8) 五、运行情况 (8) 六、使用方式 (9) 七、困难及解决 (12)

任务一:Windows消息循环机制及API程序设计实践 一、实践目的 通过实践充分理解Windows的消息循环机制,了解Windows的API函数族的分类及大致功能,并在此基础上了解基本Windows API方式开发的窗口程序的基本过程。任何框架开发环境归根结底都是对Windows API函数的封装与调用。在利用一个框架环境开发Windows程序的过程中,应该明白所使用的框架模块调用了Windows API中的那些功能函数。 二、任务概述 用visual C++开发一个Win32窗口程序,并实现如下功能: 实现菜单功能; 点击某两个菜单可在主窗口中显示或清除文字(文字内容不做要求); 点击某个菜单可弹出一个自定义的对话框(对话框中的元素不做要求), 单击对话框中的“确定”或“取消”按钮,可结束对话框。 三、windows消息循环 Windows多进程的窗口图形操作系统与DOS操作系统最大的区别就是:DOS 采用顺序执行的过程,而Windows采用事件的消息驱动。 用户进行的鼠标操作,键盘输入等操作和各个应用程序之间,应用程序和系统之间的操作都作为一个事件,产生消息,进入到指定的消息队列中,等待取出进行处理。这打破了顺序执行,而采用事件驱动的形式。 四、学习收获 1.了解了Windows的消息循环机制 2.了解了一个窗口程序的生存的始末,从窗口类的定义,注册窗口类,创建窗口,到程序运行的消息循环的主函数。 3.了解了句柄的概念,每个菜单项,窗口都有一个句柄作为自己的标示,作为消息的一部分,告诉系统处理哪个窗口,菜单项的消息。 4.了解了一些简单的API:CheckMenuItem,DialogBox等。 5.了解了消息分类,处理消息的函数里,将消息分为了WM_COMMAND、WM_PAINT

c语言课程设计报告

C语言程序设计B 课程设计报告 设计题目:学生成绩管理系统年级班级: 学号: 姓名: 指导教师: 2020 年 6 月 18 日

目录 一、设计目的 (3) 二、课程设计内容和要求 (4) 三、总体设计 (5) 四、主要步骤 (12) 五、功能实现 (13) 六、功能测试 (64) 七、评价程序 (83) 八、课程设计体会 (84)

一、设计目的 程序设计能力是当代理工类大学生的必备能力,当学生学习了C语言之后,编程能力远远不能达到开发实际应用程序的要求,特备是对其中的指针、结构体、链表和文件部分的理解和应用都比较弱。 程序设计的目的是通过对面向过程的学习,将C语言的主要知识点进行综合,针对提高学生C语言程序设计能力,强化编写较大的应用软件能力,熟练运用已掌握的知识解决实际需要解决的问题,以达到更加熟知指针、链表、结构体、文件读取、标准库的使用。 主要目的为以下几点: 1、熟练掌握面向过程(结构化)程序设计基本知识; 2、综合运用所学知识解决实际问题; 3、受到面向过程(结构化)程序设计的基本训练; 4、体会面向过程(结构化)开发程序的过程。

二、课程设计内容和要求 1.课程设计内容: 学生通过使用C语言进行编写算法,开发学生成绩管理系统,以实现对学生成绩的管理。 2.课程设计要求 1)具有菜单,可以在菜单上进行选择; 2)能实现学生数据录入、修改、删除、查询; 3)能实现数据排序; 4)有数据输出功能; 5)有数据读取与存储功能; 6)一个学生的数据(称为:每条记录)包含姓名、学号、语文、数 学、英语、总分、名次等信息; 7)以结构方式存储每条记录; 8)多条记录以链表方式存储到内存; 9)随时可将全部数据存储到磁盘文件中,方便下次从磁盘读取数据。

程序设计实践报告模板

面向对象程序设计实践(Project 2) 报告 题目: 专业软件工程(NIIT) 学生姓名 班级学号 指导教师杨健 指导单位计算机学院/软件学院 日期

评分细则 评分项优秀良好中等差遵守机房规章制度 上机时的表现 学习态度 程序准备情况 程序设计能力 团队合作精神 课题功能实现情况 算法设计合理性 用户界面设计 报告书写认真程度 内容详实程度 文字表达熟练程度 回答问题准确度 简短 评语教师签名: 年月日 评 分 等 级 备 注 评分等级有五种:优秀、良好、中等、及格、不及格

Title(Here,please write the name of your Project) (题目格式:宋体,3号,加粗,居中对齐) 一、D escription and Requirement(格式:Times New Roman,4号,加粗, 两端对齐) (正文格式:宋体(中文) Times New Roman(英文),小4号,不加粗,两端对齐, 1.5倍行距) 二、Requirement Analysis(格式:Times New Roman,4号,加粗,两端对齐) 在该部分中叙述系统的功能,由此得到相应的模块,并分析需要什么的数据,由此可以指导数据库的设计。 (正文格式:宋体(中文)Times New Roman(英文),小4号,不加粗,两端对齐,1.5倍行距) 三、High level design(格式:Times New Roman,4号,加粗,两端对齐) 在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义,如果用面向对象的方法,应该给出类中成员变量和成员函数原型声明),数据库设计的说明(给出数据库的结构,包括有哪些表,每个表有什么字段,分别存储什么样的数据) (正文格式:宋体(中文)Times New Roman(英文),小4号,不加粗,两端对齐, 1.5倍行距) 四、Low level design格式:Times New Roman,4号,加粗,两端对齐) 各个算法实现的源程序(可以是一组源程序,每个功能模块采用不同的函数实现),源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。 注意:不要粘贴全部程序,只要把关键算法的程序粘贴过来就可以了。 (正文格式:宋体(中文)Times New Roman(英文),小4号,不加粗,两端对齐, 1.5倍行距) 五、Tested data and result analysis(格式:Times New Roman,4号,加粗,

C语言课程设计报告-模板

C语言课程设计报告 班级:16 物联网 一、题目说明 (1)读取输入信息,能正确进行数字运算

(2)拥有记忆功能,可查询最近几次计算结果并继续进行数字运算。 二、基本功能实现 (1)能实现两个数之间的加减,乘,除,乘方,开方等运算。 (2)实现记忆功能,可保留近十位结果,可用#键查看。(3)*键作为清0键,清除当前屏幕上的值为0表示重新开三、设计流程(可以画流程图,可以直接写说明)

四、代码 #include #include #include #include double yunsuan(double a, char operate, double b); //处理数值之间的运算void PutRes(double array[], double res, int *i); //保存该次运算结果 int main() { char str[40]; double a = 0; double b = 0; double res = 0; double history[10] = {0,0,0}; char opt; int i = 0; printf("欢迎进入计算功能(eg: 1 \n+ 1 ; '#':查询历史结果; 'q':退出程序)·\n"); while(1){

fgets(str,40,stdin); //将从键盘的一整行标准输入保存在字符串str中 if(sscanf(str,"%lf", &a) == 1){ //将str以长浮点型的格式放入a中,如果返回值为1,说明输入的是数值, scanf("%c %lf", &opt, &b); //获取操作符的值和另外一个操作数的值 res = yunsuan(a,opt,b); //调用yunsuan()函数计算,并将结果给res printf("%lf %c %lf = %lf\n\n",a, opt, b, res); PutRes(history, res, &i); //调用函数PutRes()将本次结果保存到数组history中(i用引用传递) // printf("%d\n", i); }else if(sscanf(str,"%c",&opt) == 1){ //将str以字符型的格式放入opt中,如果返回值为1,说明输入的是字符 if(opt == '#'){ //如果opt为‘#’,则显示history 中的数值 int j = 0; for(j = 0; j < i; ++j){ //i为history中存放的数值个数 printf(" %lf ", history[j]); } printf("\n");

实验报告模板-《C程序设计实践 》

大型程序设计实验报告 课程名称C程序设计实践实验日期2011年月日至2011年月日 学生姓名所在班级学号 实验名称 实验地点同组人员 1. 问题描述 实现图书管理系统 如何让实现如下功能: 1.新进图书及基本信息输入 2.图书基本信息查询 3. 对撤销图书信息的删除 4 办理借书手续 5 办理还书手续 2. 问题分析 根据题目要求,需要建立图书管理系统结构体,分别需要建立读者结构体,图书结构体。 该程序主要涉及到C语言中的文件和链表 图书信息应该存放在文件中,所以提供文件的输入输出等操作;并且程序需具有实现图书信息浏览,查找,修改等功能,并进行借入借出服务;另外还提供接盘是选择菜单来实现功能选择 3. 系统设计 系统应该包括以下模块:信息输入,图书查找,信息删除,图书借出,图书归还 3.1 总体设计 1系统功能的文字概述: 图书管理系统主要功能是用户的设定,读者管理,数据的录入与查询,数据的修改和删除等 2 系统的总体结构图

3主要模块的控制流程图 主函数 ( 1. 系统功能的文字概述;2.系统的总体结构图;3. 主要模块的控制流程图)3.2 界面设计 3.3 系统主要流程设计 (文字描述加流程图) 3.4 主要数据结构设计 /*--------- 数据结构的定义------------*/ struct reader {

/*姓名,学生学号/教师工号,性别,所在学院,角色*/ char name[9]; char num[11]; char sex[3]; char college[21]; char role[2]; struct reader *next; } *readersHead=NULL, *readersTail=NULL, *reader_p; struct book{ /*书名,作者,出版社,价格,ISBN号和类别*/ char book_name[41]; char author_name[21]; char publish[15]; float price; char ISBN[18]; char b_type[9]; struct book *next; } *booksHead=NULL, *booksTail=NULL, *book_p; struct borrow_info{ /*借者编号,借书日期,图书ISBN号*/ char borrower_num[11]; char borrow_date[15]; char ISBN[18]; struct borrow_info *next; } *biHead=NULL, *biTail=NULL, *bi_p; /*--------- 数据结构的定义完毕------------*/ 3.4.1 系统数据结构概述 主要有读者数据结构,用以读者信息的记录 图书数据结构用以图书信息的记录 还有已借图书数据结构用以对已借图书的统计和记录(主要用了哪些数据结构,各自的用途)

C语言程序设计基础实验报告6【VIP专享】

实验6 数组 一、实验目的 1、掌握一维数组和二维数组的定义、赋值和输入输出的方法; 2、掌握字符数组和字符串函数的使用; 3、掌握与数组有关的算法(特别是排序算法)。 二、实验内容和步骤 编程序并上机调试运行。 1、以下给定程序MODI1.C的功能是: 求一维数组a中所有元素的平均值, 结果保留两位小数。例如,当一维数组a中的元素为:10, 4, 2, 7, 3, 12, 5, 34, 5, 9时,程序的输出应为:The aver is: 9.10 程序中有两处错误,错误都在提示行:/***********found***********/的下面一行。请改正程序中的错误, 使它能得出正确的结果。 注意:程序中的其它地方请不要随意改动,不得增行或删行,也不得更改程序的结构! #include #include void main() { int a[10]={10,4,2,7,3,12,5,34,5,9}, i; /************found************/ /************found************/ s = a[0]; for ( i=1; i<10; i++) s += a[i]; aver = s / i; printf("The aver is: %.2f\n", aver); } 2、以下给定程序MODI1.C的功能是:求二维数组a中的最小值。 例如,当二维数组a中的元素为: 4 2 34 7 3 12 5 6 5 程序的输出应为:The min is: 2 。 程序中有两处错误,错误都在提示行:/***********found***********/的下面一行。请改正程序中的错误, 使它能得出正确的结果。 注意:程序中的其它地方请不要随意改动,不得增行或删行,也不得更改程序的结构! #include #include void main() { int a[3][3]={4,2,34,7,3,12,5,6,5}, i, j, min; clrscr();

c语言程序设计实践报告

中南大学 C语言程序设计实践报告 题目通讯录程序设计 学生姓名 指导教师 学院 专业班级 完成时间

一、任务描述 通讯录程序设计 设计一个实用的小型通讯录程序,具有添加,查询和删除功能。由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。电话号码可由字符和数字组成。 实现功能:(1)系统以菜单方式工作 (2)信息录入功能 (3)信息浏览功能 (4)信息查询功能 (5)信息修改功能 (6)系统退出功能 二、算法描述 设计一个实用的的小型通讯录程序必须具备系统以菜单方式工作、信息录入、信息浏览、信息查询、信息修改、系统退出功能,那么就需要这样的函数来实现。因此,我需要自定义这样的函数来解决问题,当然还会调用库函数。在定义函数的过程中会用到选择结构、循环结构等基本语句,以及对结构体数组的定义等。 三、程序设计 /******头文件(.h)***********/ #include "stdio.h" /*I/O函数*/ #include "stdlib.h" /*标准库函数*/ #include "string.h"/*字符串函数*/ #include "ctype.h" /*字符操作函数*/ #define M 50 /*定义常数表示记录数*/ typedef struct /*定义数据结构*/ { char NAME[20]; /*姓名*/ char EMAIL[30]; /*邮箱*/

char TELE1[10]; /*电话*/ char TELE2[10]; /*电话*/ char HOMETOWN[30]; /*籍贯*/ }DATA; /******以下是函数原型*******/ int enter(DATA t[]); /*输入记录*/ int add(DATA t[],int n); /*添加记录*/ int change(DATA t[],int n); /*修改记录*/ int deleter(DATA t[],int n); /*删除记录*/ void list(DATA t[],int n); /*显示记录*/ void search(DATA t[],int n); /*按姓名查找显示记录*/ void qseek(DATA t[],int n); /*快速查找记录*/ void print(DATA temp); /*显示单条记录*/ int find(DATA t[],int n,char *s) ; /*查找函数*/ int menu_select(); /*主菜单函数*/ /******主函数开始*******/ main() { int i; DATA d[M]; /*定义结构体数组*/ int length; /*保存记录长度*/ system("cls"); for(;;)/*无限循环*/ { switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/ { case 1:length=enter(d);break;/*输入记录*/ case 2:length=add(d,length); break; /*添加记录*/ case 3:length=deleter(d,length);break; /*删除记录*/ case 4:list(d,length);break; /*显示全部记录*/

c语言课程设计报告书

课程设计报告书 所属课程:c语言 项目:库函数模拟系统 指导老师:邹姝稚 班级:软件1401 姓名:江闯 学号:141403107 分数:

1.任务描述: 本系统开发的代码模拟了下列库函数的功能: (1).模拟gets和puts的功能:能接收一个字符串,将其写入ASCII文件,并且可以读出显示。 (2).在不使用字符串库函数的条件下,编程实现字符串的拷贝,连接,求长,倒置功能。 (3).字符串加密功能:将一段明文建立到一个ASCII文件中,按加密的算法加密后写入密文文件,最终实现将明文和密文文件都显示出来。 (4).编程实现字符串与对应数字的相互转换功能。 2.总体设计: 模块调用图: 图1

函数调用图: 图2 函数功能: (1)函数gp( ):模拟gets和puts的功能 (2)函数kaobei( ):实现字符串的拷贝 (3)函数lianjie( ):实现字符串的连接 (4)函数qiuchang( ):实现字符串的求长 (5)函数daozhi( ):实现字符串的倒置 (6)函数jiami( ):实现字符串的加密功能,最后将明文和密文文件都显示出来 (7)函数zhuanhuan1( ):将数字字符串转换为对应的数字 (8)函数zhuanhuan2( ):将数字转换为对应的数字字符串 3.详细设计: (1).模仿gets和puts功能: gets和puts功能与scanf和printf函数的功能相似,但是也不是完全相同,本系统模拟功能的程序总共运用了两次函数调用技术,模拟gets运用了一次,模拟puts运用了一次。 (2)..字符串的拷贝功能: 字符串的拷贝功能程序设计源于strcpy的功能,其中运用了字符串数组和指针的相关技术,还运用了一组while语句,实现语句的循环,从而将一个字符串拷贝到一个空数组中。

C语言程序设计实验报告优秀范文

C语言程序设计实验报告优秀范文 实验名称计算出1000以内10个最大素数之和 实验目的 1、熟练掌握if、if…else、if…else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。 2、熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。 3、掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。 实验内容 计算并输出1000以内最大的10个素数以及它们的和。 要求: 在程序内部加必要的注释。 由于偶数不是素数,可以不考虑对偶数的处理。 虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。 输出形式为:素数1+素数2+素数3+…+素数10=总和值。 算法描述流程图 main函数: 判断素数: 源程序 #include #include int sushu(int n)/* 判断素数的函数*/ { int t,i; t=sqrt(n); for(i=2;i if(n%i==0)/* 如果不是素数,返回0 */ return 0; return n;/* 如果是素数,返回该数*/ } void main { int i,j=0,n,m=0,a[1000],x; /*clrscr;*/ printf("please input a number form 1 to 1000:"); scanf("%d",&x); if(x==2)/* x=2时的处理*/ printf("%dn",x); else if(x printf("error!n");

相关文档
相关文档 最新文档