C语言课程设计指导书Word文档下载推荐.doc
《C语言课程设计指导书Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《C语言课程设计指导书Word文档下载推荐.doc(32页珍藏版)》请在冰豆网上搜索。
数组、指针和结构的使用技术是编程的核心技术,也是程序设计人员必备的知识,因此本课程设计特意加强这方面的训练。
本课程设计共选择了六个设计课题,不使用一个独立的课题涵盖所有知识点,而是按层次逐步深入。
这些课题及其简要说明如下:
1、使用数组和指针统计成绩
数组和指针是C语言的重要概念,数组与指针之间的关系又容易混淆。
另外,字符串数组的使用方法与普通的数值型数组的用法也有所不同,它们与指针之间的关系也较特殊。
该课题围绕以上问题展开,同时有意拓宽字符串数组的用途,引入多维字符串数组及数组指针。
为了适应不同层次学生的需要,将它们分为几个不同的设计要求,以便灵活取舍。
2、统计工资
该课程设计要求设计一个公司职员的数据结构,并使用结构指针数组存储职员信息,统计公司员工工资总额和平均工资,目的是深入了解函数参数类型和结构之间的关系。
3、职工档案及简明信息生成
该课程设计涉及到的知识点是结构数组及其指针的关系,尤其是结构数组的读取问题。
因为要求使用菜单选择各项功能,这又涉及到函数类型及其参数传递问题。
为了编制满足该课程设计要求的函数,需要进一步深入理解函数的性质。
4、链表信息管理
该课程设计的重点集中在链表,包括创建链表,使用链表存储结构信息,增加链表结点及删除链表结点等基本操作。
5、简单通信录程序
该课程设计可在链表程序的基础上,增加检索与排序,并且能够打开指定文件或修改指定文件,还可将多个文件组成一个文件。
6、学籍管理程序
该课程设计是设计一个实用的小型学生成绩管理程序,要求不用链表,而用数组来设计。
它具有排序和检索等功能,并且能够对指定文件操作,还可将多个文件组成一个文件。
第一章使用数组和指针统计成绩
1.1设计题目
本课程设计主要练习数组和指针的使用。
假定给定班级各科考试平均成绩的原始资料如下:
数学:
75
物理:
80
外语:
83
政治:
85
体育:
86
人数:
30
要求统计出全班学期总平均成绩以及得分最低的科目和该科目的成绩。
要求的输出结果如下:
全班各科平均成绩如下:
则统计结果如下:
平均成绩:
81
最低分科目的成绩:
最低分数的科目:
数学
1.2设计要求
对存放原始数据的要求如下:
(1)使用整型数组a存放数学、物理、外语、政治、体育、人数、平均成绩、最低分数科目的成绩。
(2)使用字符串数组name存放数学、物理、外语、政治、体育、最低分数的科目。
(3)使用字符串数组MeanLow存放人数、平均成绩、最低分数科目的成绩、最低分数的科目。
实现本设计功能的方法很多,在此给出3种难易程度不同的要求,以便加深对数组和指针知识的理解。
1、使用数组实现
使用数组和指针数组实现。
2、使用分配的内存实现
要求将数组a的内容存入到分配的内存中,使用指针实现对内存内容的存取和计算。
3、将数组内容全部存入内存
为字符分配内存,并将字符数组的内容存入所分配的内存中,使用指针来实现。
第二章统计工资
2.1设计题目
本课程设计要求设计一个公司职员的数据结构,并使用结构指针数组存储职员信息,统计公司员工工资总额和平均工资。
2.2设计要求
设计要求实现如下功能:
(1)使用结构指针数组设计一个公司职员的数据结构,使用下述的结构定义:
typedefstructemployee{
intage;
char*name;
doublesalary;
}*PEMP;
(2)在主函数里构造一个指针数组company,用来存放职工信息。
(3)设计一个update函数,用来给company赋值。
函数update(company,id,age,name,salary)的四个参数为:
company:
结构指针数组
id:
company的下标
age:
年龄,整数类型
salary:
薪水,实数
(4)设计一个readin函数,直接采用调用update函数的方式进行赋值。
例如:
update(company,2,30,“LIMING”,3000.0);
(5)编写total函数对工资求和。
这个函数应该能对全体职工和某一年龄段的职工的工资求和。
(6)编写mean函数求平均工资。
这个函数应该能对全体职工和大于某一年龄段的职工的工资求和并计算相应的平均值。
2.3算法分析
为了简单起见,假设在主函数main中定义结构数组指针如下:
PEMPcompany[num];
下面说明几个函数的设计问题:
(1)readin函数
数组company属于main函数,它是不可见的,所以必须作为readin函数的参数。
因为参数传递是传地址的方式,所以不需要返回值。
以数据为例,这个函数的定义和使用方法如下:
voidreading(company)
PEMPcompany[];
{
update(company,2,23,“张文”,3000.0);
update(company,1,33,“王微”,2400.0);
update(company,2,23,“李小”,3055.0);
}
(2)total函数
它也必须以数组company作为参数,而且要返回工资总额。
可将它的原型设计为:
doubletotal(PEMP*);
total函数应该允许输入年龄范围,如果年龄不合理,应该允许重新输入。
对输入数据进行判别,确保无误再进行计算。
for(;
;
)
printf(“输入年龄范围”);
scanf(“%d%d”,&
age1,&
age2)
if(age1>
i=age1;
age1=age2;
age2=i;
}
if((age1>
=0)&
&
(age2<
=100)&
(age2>
age1))
break;
(3)mean函数
mean函数也必须以数组company作为参数,而且要返回平均工资。
将它的函数原型设计为:
doublemean(PEMP*);
mean函数应该允许输入年龄范围。
对输入字符进行判别,确保无误再进行计算,注意允许大小写。
printf(“求某一年龄段以上的职工的平均工资\n”);
printf(“默认是全体职工的平均工资,要改变计算方式请输入Y/y\n”);
getchar();
ch=getchar();
if(ch==’Y’||ch=’y’)
printf(“age:
”);
scanf(“%d”,&
age);
(4)申请内存
在update函数中,需要申请内存空间。
PEMPemp
If((emp=(PEMP)malloc(sizeof(structemployee)))==NULL)return;
注意emp是指针,所以要使用sizeof(structemployee)。
第三章职工档案及简明信息生成
3.1设计题目
本设计要求使用头文件和菜单,并组成一个工程文件,对职工的档案进行管理并生成职工的简明信息。
3.2设计要求
(1)建立wkrs职工数据结构,结构含有姓名、序号、性别和年龄信息。
(2)建立一个结构数组,以便存储10个职工信息。
(3)设计一个readin函数,以便采用问答式输入10个职工的信息。
(4)编写一个display函数,要求使用结构指针作为参数,用来输出结构数组的内容。
(5)建立wks职工简明数据结构,结构中只含有姓名和年龄信息。
(6)编制一个srt函数,根据wks结构建立的职工情况,把职工姓名和年龄信息抽出来,另外建一个只含职工姓名和年龄的wkshort结构的数组。
(7)编制一个delwk函数,可以从简明数据结构中删去指定的职工数据。
如果数组中没有要删去的职工,则输出没有这个职工的信息;
如果将内容全部删去,应该给出内容已空的提示信息。
(8)将上述函数编制在一个文件里,共用一个头文件。
(9)用一个简单的菜单提供上述操作。
菜单信息为:
1、输入数据
2、显示原始数据
3、制作简明数据
4、删除简明数据
5、结束退出
PleaseInput1-5:
3.3算法分析
1、结构数组
根据要求,可以定义它们各自的数据结构及其结构数组如下:
structwkrs
charnum[10];
charname[10];
charsex[3];
}wk[10];
structwkr
}wkshort[10];
因为直接定义它们各自的结构数组,所以各个函数可以直接对这些数组进行操作。
2、函数类型
如上所述,因为直接定义了结构数组,所以以下函数均不需要参数,也不需要返回值。
voidreading();
voiddisp();
voiddelwk();
voidsrt();
intmenu_select();
3、结构指针
显示数据的display函数,本身不需要使用结构指针,但题目要求使用结构指针实现,所以其原型可以设计为:
voiddisplay(structwkrs*);
它的程序代码如下:
voiddisplay(structwkrs*p)
char*c[4]={“序号”,“姓名”,“性别”,“年龄”};
inti;
p=wk;
printf(“\n%8s\t%8s\t%6s\t%4s\n”,c[0],c[1],c[2],c[3]);
for(i=0;
i<
10;
i++,p++)
printf(“\n%8s\t%8s\t%6s\t%4d\n”,p->
num,p->
name,p->
sex,p->
printf(“\n”);
与普通数组一样,结构数组名即结构数组的首地址。
结构作为参数传递时,也是传值方式。
如果要修改普通的结构数据,必须使用传址方式。
下面的disp函数可