C语言课程设计报告类型3.docx

上传人:b****6 文档编号:6029898 上传时间:2023-01-03 格式:DOCX 页数:47 大小:224.26KB
下载 相关 举报
C语言课程设计报告类型3.docx_第1页
第1页 / 共47页
C语言课程设计报告类型3.docx_第2页
第2页 / 共47页
C语言课程设计报告类型3.docx_第3页
第3页 / 共47页
C语言课程设计报告类型3.docx_第4页
第4页 / 共47页
C语言课程设计报告类型3.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

C语言课程设计报告类型3.docx

《C语言课程设计报告类型3.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告类型3.docx(47页珍藏版)》请在冰豆网上搜索。

C语言课程设计报告类型3.docx

C语言课程设计报告类型3

 

C语言课程设计报告

ExperimentDesigningreporter

 

课程名称:

C语言课程设计

英文名称:

CProgramExperimentDesigning

专业:

学号:

姓名:

指导教师:

日期:

2010年7月12日 至2010年7月23日

 

学院

《C语言课程设计》报告

CProgramExperimentDesigning

课程编号:

01200308005学时:

40学时

适用专业:

软件工程专业授课单位:

软件学院

 

一、C语言课程设计目的及要求

目的:

根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。

要求:

1.熟悉TurboC的编程环境、主要菜单功能。

2.通过上机验证运算符、表达式、运算规则、函数使用。

3.熟练使用C语言的典型语句编写简单程序。

4.调试典型例题或习题。

5.提高上机编程能力

二、实验类型

设计类型

三、实验学时

40学时

四、实验设备

微型计算机、WINDOWSXP以上版本的操作系统、TurboC2.0软件一套

五、C语言课程参考教材:

[1]黄明等.C语言程序设计辅导教材.大连理工大学出版社,2006

[2]李瑞等.C程序设计基础,清华大学出版社,2008

[3]谭浩强.C语言程序设计(第二版).北京:

高等教育出版社,2002

 

课程设计(报告)任务书

任务及要求:

1.设计(研究)内容和要求

研究内容:

1、输入实型数a、b、c,要求按由大到小的顺序输出(函数参数要用指针)。

2、编写一个通用的子函数,将一个一维数组进行逆序存储(第一个元素与最后一个元素值互换,依次类推.....)。

3、编写一个通用的求n×n阶矩阵的对角线元素之和。

4、编写程序,输入10个员工的编号、姓名、基本工资、职务工资,求出“基本工资+职务工资”最少的职工(要求用子函数完成),并输出该职工记录。

5、有5个学生4门课,编写程序算出4门课的总成绩,并按总成绩进行排序,然后打印出成绩表。

6、用户由键盘输入一个文件名,然后输出一串字符(用#结束输入),存放到此文件并将字符的个数写到文件尾部。

7、有5个学生,每个学生有三门课的成绩。

从键盘输入以上数据(包括学生号、姓名号、三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存在磁盘文件stud中。

8、学生成绩管理系统。

任务和要求:

(1).学习C语言基础知识,掌握C语言编程和程序调试的基本技能。

(2).对指导教师下达的题目进行系统分析。

(3).根据分析结果完成系统设计。

(4).编程:

在计算机上实现题目的代码实现。

(5).完成对该系统的测试和调试。

(6).提交课程设计报告。

(7).指标:

要求完成课程设计报告3千字以上(约二、三十页).

完成若干综合性程序设计题目,每个综合设计题目的语句行数的和在300行语句以上.

2.原始依据

了解C语言的基础知识,有一定的语言编程基础,能够熟练运用C语言进行程序设计。

通过用C语言完成的题目,提高用C语言解决实际问题的能力。

3.参考文献

[1]黄明等.C语言程序设计辅导教材.大连理工大学出版社,2006

[2]马靖善等.C语言程序设计.清华大学出版社,2005

[3]谭浩强.C语言程序设计(第二版).北京:

高等教育出版社,2002

 

                   2010年7月12日

[说明:

学生打印稿不能出现,字体要求等说明文字]

1按大小排序输出

1.1系统分析

输入实型数a、b、c,要求按由大到小的顺序输出(函数参数要用指针)。

1.2设计说明

1、子函数,交换两个地址的数值

函数名:

swap()

返回值:

参数:

float*x、float*y,含义:

指针(指向数值)

处理流程:

Step1:

定义变量z,作为交换时的暂存变量。

Step2:

将数值*x赋给z

Step3:

将数值*y赋给*x

Step4:

将数值z赋给*y

2、主函数main():

从键盘上输入a、b、c三个数,然后进行判断三个变量中数值的大小关系。

调用子函数swap()交换,使最终结果为a>b>c。

最后输出a、b、c。

1.3程序运行截图

 

1.4源程序代码

#include"stdio.h"

voidswap(float*x,float*y)

{

floatz;

z=*x;

*x=*y;

*y=z;

}

voidmain()

{

floata,b,c;

scanf("%f%f%f",&a,&b,&c);

if(a

swap(&a,&b);

if(a

swap(&a,&c);

if(b

swap(&b,&c);

printf("Afterswap:

a=%f,b=%f,c=%f\n",a,b,c);

}

2逆序存储

2.1功能说明

编写一个通用的子函数,将一个一维数组进行逆序存储(第一个元素与最后一个元素值互换,依次类推.....)。

2.2设计说明

1、子函数:

(1)子函数1,交换x[i]与x[n-i-1]的数值

函数名:

afterward()

返回值:

参数:

float*x,,含义:

数组首地址;intn,含义:

数组元素个数。

处理流程:

Step1:

定义变量z,作为交换时的暂存变量;定义变量i,循环时使用。

Step2:

在for循环时交换x[i]与x[n-i-1]的数值。

(2)子函数2,输出数值

函数名:

printarray()

返回值:

参数:

float*x,,含义:

数组首地址;intn,含义:

数组元素个数

处理流程:

Step1:

定义变量i,循环时使用。

Step2:

在循环时输出数值。

2、主函数main()

从键盘上输入10个数,给一维数组x[n]赋初值。

调用afterward()交换x[i]与x[n-i-1]的数值。

再调用printarray(),输出交换后数值。

2.3程序运行截图

 

2.4源程序代码

#include"stdio.h"

voidafterward(float*x,intn)

{

floatz;

inti;

for(i=0;i

{

z=*(x+i);

*(x+i)=*(x+n-1-i);

*(x+n-1-i)=z;

}

}

voidprintarray(float*x,intn)

{

inti;

for(i=0;i

{

printf("%f",x[i]);

}

printf("\n");

}

main()

{

floata[10]={1.,2.,3.,4.,5.,6.,7.,8.,9.,10.};

afterward(a,10);

printarray(a,10);

}

3n×n阶矩阵的对角线元素之和

3.1功能说明

编写一个通用的求n×n阶矩阵的对角线元素之和。

3.2设计说明

1、N的定义:

#defineN4

2、子函数,将对角线上的数值相加。

函数名:

corner()

返回值:

sum,对角线上数值之和。

参数:

int*x,含义:

数组首地址;intn,含义:

数组行列数。

处理流程:

Step1:

定义变量sun,存放对角线上数值之和的数值;定义变量i,循环时使用。

Step2:

在for循环时将行列数相等的数组数值加到变量sun中。

Step3:

判断另一条对角线上的数是否加重复,即是否为奇数矩阵的对角线中心。

Step4:

若为奇数矩阵的对角线中心数,则不加入sun,若不是奇数矩阵的对角线中心数,则加入sun中。

3、主函数main()

定义二维数组a[N],给二维数组a[N]赋初值1~16(如下图)。

定义sum,再调用corner()计算对角线上的数值,将值赋给sum,输出数值sum。

3.3程序运行截图

3.4源程序代码

#defineN4

#include"stdio.h"

intcorner(int*x,intn)

{

inti,sum=0;

for(i=0;i

{

sum=sum+*(x+i);

if(x+i!

=x+n-1-i)

{

sum+=*(x+n-i-1);

}

x=x+n;

}

returnsum;

}

voidmain()

{

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

intsum;

sum=corner(*a,4);

printf("%d\n",sum);

}

4职工信息管理

4.1系统分析

编写程序,输入10个员工的编号、姓名、基本工资、职务工资,求出“基本工资+职务工资”最少的职工(要求用子函数完成),并输出该职工记录。

4.2设计说明

1、结构体employee的定义:

intnum,员工编号

charname[20],员工姓名

floatjbgz,员工基本工资

floatzwgz,员工职务工资

floatsum,工资总和=基本工资+职务工资

2、子函数:

子函数

(1):

函数名:

sum()

返回值:

参数:

structemployee*p,含义:

员工信息;intn,含义:

数组元素个数。

处理流程:

Step1:

定义i,循环时使用。

Step2:

在for循环的同时,将jbgz与zwgz的和赋值给sum。

子函数

(2):

函数名:

find()

返回值:

参数:

structemployee*p,含义:

员工信息;intn,含义:

数组元素个数。

处理流程:

Step1:

定义i,循环时使用。

Step2:

在for循环的同时,判断选出sum最小的员工。

Step3:

输出员工的基本信息。

3、主函数main()

首先进行函数的声明,定义员工的基本信息(举例为五个员工,信息如下图),调用函数sum()和find(),输出结果。

4.3程序运行截图

 

4.4源程序代码

#include"stdio.h"

structemployee

{

intnum;

charname[20];

floatjbgz;

floatzwgz;

floatsum;

};

voidmain()

{

voidsum(structemployee*,int);

voidfind(structemployee*,int);

structemployeea[10]={11,"wangLi",660.,760.,0.,

13,"wangLin",690.,740.,0.,

16,"LiuHua",860.,760.,0.,

14,"ZhangJun",660.,660.,0.,

22,"XuXia",650.,760.,0.};

sum(a,5);

find(a,5);

}

voidsum(structemployee*p,intn)

{

inti;

for(i=0;i

{

p->sum=p->jbgz+p->zwgz;

p++;

}

}

voidfind(structemployee*p,intn)

{

structemployee*pmax=p;

inti;

for(i=1;i

if((p+i)->sum>pmax->sum)pmax=p+i;

printf("Theperson'sinformation:

\nnumber=%d,\nname=%s,\nbasicsalary=%.2f,\njobsalary=%.2f,\ntotal=%.2f\n",pmax->num,pmax->name,pmax->jbgz,pmax->zwgz,pmax->sum);

}

5学生成绩处理

5.1系统分析

有5个学生4门课,编写程序算出4门课的总成绩,并按总成绩进行排序,然后打印出成绩表。

5.2设计说明

1、结构体student的定义:

intnum,学生学号

charname[20],学生姓名

charsex,学生性别

floats[4],学生四门课的成绩

floatsum,学生成绩总和

2、子函数:

子函数

(1):

函数名:

sum()

返回值:

参数:

structstudent*p,含义:

学生信息;intn,含义:

结构体个数。

处理流程:

Step1:

定义i、j,循环时使用。

定义变量d。

Step2:

在for循环的同时,将各成绩之和的和赋值给d,在将d的数值赋给sum。

子函数

(2):

函数名:

sort()

返回值:

参数:

structstudent*p,含义:

学生信息;intn,含义:

结构体个数。

处理流程:

Step1:

定义i、j,循环时使用。

定义变量k。

Step2:

在for循环的同时,按sum数值由小到大排列学生信息。

子函数(3):

函数名:

print()

返回值:

参数:

structstudent*p,含义:

学生信息;intn,含义:

结构体个数。

处理流程:

Step1:

定义i,循环时使用。

Step2:

在for循环的同时,将排列好的学生信息输出。

3、主函数main()

首先进行函数的声明,定义学生的基本信息(举例为五个学生,信息如下图),调用函数sum()、sort()和print(),输出结果。

5.3程序运行截图

5.4源程序代码

#include"stdio.h"

structstudent

{

intnum;

charname[20];

charsex;

floats[4];

floatsum;

};

voidmain()

{

voidsum(structstudent*,int);

voidsort(structstudent*,int);

voidprint(structstudent*,int);

structstudenta[5]={11,"wangli",'f',66.,76.,83.,61.,0.,13,"wanglin",'m',69.,74.,63.,91.,0.,16,"liuhua",'m',86.,76.,93.,61.,0.,14,"zhangjun",'m',66.,66.,83.,61.,0.,22,"xuxia",'f',65.,76.,93.,68.,0.,};

sum(a,5);

sort(a,5);

print(a,5);

}

voidsum(structstudent*p,intn)

{

inti,j;

floatd;

for(i=0;i

{

d=0.0;

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

d+=p->s[j];

p->sum=d;

p++;

}

}

voidsort(structstudent*p,intn)

{

structstudentt;

inti,j,k;

for(i=0;i

{

k=i;

for(j=i+1;j

if((p+k)->sum<(p+j)->sum)k=j;

if(k!

=i)

{t=*(p+i);*(p+i)=*(p+k);*(p+k)=t;}

}

}

voidprint(structstudent*p,intn)

{

inti;

for(i=0;i

{printf("%-10d%-10s%5c%10.1f%5.1f%5.1f%5.1f%10.1f\n",p->num,p->name,p->sex,p->s[0],p->s[1],p->s[2],p->s[3],p->sum);

p++;

}

}

6文件处理

6.1系统分析

用户由键盘输入一个文件名,然后输出一串字符(用#结束输入),存放到此文件并将字符的个数写到文件尾部。

6.2设计说明

1、主函数main()

定义文件fp,字符(串)变量ch,fname[32],定义整型变量count。

输入文件名(若不存在,则退出程序),输入字符串(以‘#’结束)。

程序将文件中的字符数统计后写入文件尾部。

6.3程序运行截图

 

6.4源程序代码

#include"stdio.h"

main()

{

FILE*fp;

charch,fname[32];

intcount=0;

printf("Inputthefilename:

");

scanf("%s",fname);

if((fp=fopen(fname,"w+"))==NULL)

{

printf("Can'topenfile:

%s\n",fname);

exit(0);

}

printf("Enterdata:

\n");

while((ch=getchar())!

='#')

{

fputc(ch,fp);

count++;

}

fprintf(fp,"\n%d\n",count);

fclose(fp);

}

7成绩存储

7.1系统分析

有5个学生,每个学生有三门课的成绩。

从键盘输入以上数据(包括学生号、姓名号、三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存在磁盘文件stud中。

7.2设计说明

1、结构体student的定义:

charname[10];学生姓名

ints[3];三门课的成绩

floatave;各科平均分

2、主函数main()

定义文件fp,结构体studentst[5],变量i,打开文件stud(若不存在,则退出程序),输入学生信息,并计算平均分。

然后将原有数据和计算出的平均分数存在磁盘文件stud中。

7.3程序运行截图

7.4源程序代码

#include"stdio.h"

structstudent

{

charname[10];

ints[3];

floatave;

};

main()

{

FILE*fp;

inti;

structstudentst[5];

if((fp=fopen("stud","w"))==NULL)

{

printf("cannotopenfile\n");

exit(0);

}

for(i=0;i<5;i++)

{

printf("number%dinputnameand3scores:

\n",i+1);

scanf("%s%d%d%d",&st[i].name,&st[i].s[0],&st[i].s[1],&st[i].s[2]);

st[i].ave=(st[i].s[0]+st[i].s[1]+st[i].s[2])/3.0;

fprintf(fp,"%s%d%d%d\n",

st[i].name,st[i].s[0],st[i].s[1],st[i].s[2]);

}

fclose(fp);

}

8图书馆借阅管理系统

8.1系统分析

建立图书馆借阅管理系统,采用计算机对图书馆进行图书管理、会员管理、工作人员信息查询和图书馆反馈信息的查询。

8.2设计说明

1.进入系统(如图1)

2.功能说明:

1)图书管理功能

(1)增加图书:

将新进的图书添加到图书库中,便于管理!

通过bookadd函数实现;用户需按ALT+B组合键,选择Book功能菜单,待下拉菜单弹出之后,用户调整方向键,选择Add选项,按回车键进入图书添加功能,窗口中会显示Pleaseinputthebooknum的提示话语,用户输入书号即可;(如图2、图3)

(2)删除图书:

删除丢失或废弃的图书。

通过bookdel函数实现;用户需按ALT+B组合键,选择Book功能菜单,待下拉菜单弹出之后,用户调整方向键,选择Del选项,按回车键进入图书删除功能,窗口中会显示Pleaseinputthebookname的提示话语,输入书名,点击回车,所要删除的图书即可删除;(如图4)

(3)查询图书:

对已经加入到图书库中的图书进行查询(书号,书名,书的价钱等),

通过bookconsult函数实现;用户需按ALT+B组合键,选择Book功能菜单,待下拉菜单弹出之后,用户调整方向键,选择Consult选项,按回车键进入图书查询功能,窗口中会显示Pleaseinputthebookname的提示话语,用户输入书名,系统会显示图书的编号,书名,价钱及借阅情况等;(如图4)

(4)图书的借阅:

对于借阅的图书进行记录,便于管理,通过bookborrow函数实现;用户需按ALT+B组合键,选择Book功能菜单,待下拉菜单弹出之后,用户调整方向键,选择Borrow选项,按回车键进入图书借阅功能,窗口中会显示Pleaseinputthemembername的提示话语,输入会员名即可,若是非会员,窗口则显示Youarenotmember,pleaseregister!

的提示话语;(如图5)

(5)图书的归还:

对于借出图书后的归还进行记录,并将图书返回书库。

通过Bookreturn函数实现;用户需按ALT+B组合键,选择Book功能菜单,待下拉菜单弹出之后,用户调整方向键,选择Return选项,按回车键进入图书归还功能,窗口中会显示Pleaseinputthebookname的提示话语,输入书名即可,若是非书库中的书,窗口会显示ReturnFail!

的提示话语。

(如图6)

2)会员管理功能

(1)添加会员:

添加已经办理好会员手续的人资料,便于管理!

通过memberadd函数实现;用户需按ALT+M组合键,选择Member功能菜单,待下拉菜单弹出之后,用户调整方向键,选择Add选项,按回车键进入会员添加功能,窗口中会显示Pleaseinputnewmembername的提示话语,输入姓名即可,然后用户输入会员的性别和年龄,按回车键添加成功;(如图7)

(2)删除会员:

对退出会员的人进行删除。

通过memberdel函数实现;用户需按ALT+M组合键,选择Member功能菜单,待下拉菜单弹出之后,用户调整方向键,选择Del选项,按回车键进入会员删除功能,窗口中会显示P

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1