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

C语言课程设计论文
华北水利水电学院
课程设计
报告书
2012——2013学年
第一学期
环节名称:
C语言课程设计
学生专业班级:
2010统计学
指导教师:
张贞贞、闫雒恒、皇甫中民、
院系:
数学与信息科学学院
学生姓名:
李晨光
学生学号:
201015110
课程设计任务书
课程设计名称
C语言课程设计
专业班级
(学生人数)
统计学2010150-2010152
69人
指导教师
张贞贞、闫雒恒、
皇甫中民
本学期承担相应课程教学任务情况
2011级高级语言程序设计
课程设计目的及任务
通过课程设计培养学生综合运用已学过的理论知识与技能去分析和解决问题的能力,掌握计算机程序设计常用方法与过程,并重点锻炼学生调试程序的能力。
课程设计要求
1、搜索、阅读相关文献和资料;
2、除必做题外,选择下述题目中的1-2个,设计算法,实现代码;
1)需求分析通过对用户需求进行调查分析,写出需求分析文档。
2)总体设计根据需求分析文档,初步提出问题解决方案,以及软件系统的体系结构和数据结构的设计方案,并写出书面文档总体设计说明书。
3)详细设计根据总体设计说明书,在总体设计的基础上,对系统进行详细设计,以便下一步进行程序编码工作。
4)编写代码。
5)调试运行分析结果
课程设计目标
本课程设计是《高级语言程序设计》课程的组成之一,也是它的继续和延伸。
进一步加深C语言中结构体、指针、内存分配、文件等内容的理解,从课程设计的过程中理解结构化设计的精髓,领悟程序调试的内涵。
采用研究型学习方法,完成一个管理类型的小型软件。
在课程设计前期安排学习面向对象编程、软件工程、VC开发环境有关知识,以自学和上机实验为主。
开设本课程的目的是使学生通过参加小型软件的开发过程,进一步掌握面向对象的程序设计方法,使学生具有团队协作精神,并培养学生的创新能力和创新意识。
参考文献
及资料
1、《C语言程序设计》谭浩强主编第二版或第三版清华大学出版社
2、国外网站,等
3、苏小红《C语言大学实用教程》电子工业出版社
4、金保华《C语言程序设计实验指导与习题解答》科学出版社
5、杨彩霞《C语言程序设计实验指导与习题解答》中国铁道出版社
注:
此套表填写一式三份,于课程设计前一周分别交至教学督导团、教务科、教研室
课程设计计划书
周次
日期
设计内容
具体要求
设计教室
指导时间段
19
周二
2013.1.8
布置任务
讲授相关内容
构思解题方案
10:
00-12:
00龙计算中心
19
周三
2013.1.9
需求分析
写出需求分析文档
10:
00-12:
00龙计算中心
19
周四
2013.1.10
总体设计
详细设计
写出书面文档总体设计说明书
画出各模块流程图
10:
00-12:
00龙计算中心
19
周五
2013.1.11
编写代码
用C语言在VC环境下编写代码
10:
00-12:
00龙计算中心
20
周一
2013.1.14
单元测试
设计测试方案及用例并进行测试
10:
00-12:
00龙计算中心
20
周二
2013.1.15
程序设计与调试
通过分析测试结果,排除错误
10:
00-12:
00龙计算中心
20
周三
2013.1.16
程序集成与调试,最终测试
完善结果,编写技术文档
10:
00-12:
00龙计算中心
20
周四
2013.1.17
提交课程设计报告
完成并提交课程设计报告
10:
00-12:
00龙计算中心
注:
指导教师在课程设计期间每天指导时间不少于2小时。
教学院长、教学主任:
教研室主任:
填表人:
张贞贞闫雒恒填表时间:
2012年12月15日
一、必做题
1.有3个学生,各学4门课,计算总平均分数,并查找有一门以上课程不及格的学生,打印输出他们的全部课程成绩。
(通过函数调用完成)
C程序如下:
#include
#include
#defineM3
#defineN4
voidLine(charc,inta)//输出打印头文件
{inti;
for(i=1;i<=a;i++)
printf("%c",c);
printf("\n");
}
voidfun(floata[M][N])//定义学生成绩处理的fun函数
{inti,j;
floatsum,A[M];
floatave=0.0;
for(i=0;i{sum=0.0;
for(j=0;jsum+=a[i][j];
A[i]=sum/N;//计算每个学生的平均成绩
}
for(i=0;iave+=A[i]/M;//计算总平均成绩并输出
Line('-',60);
printf("Totalofscores'average:
%6.2f\n",ave);
Line('-',60);
printf("Thefailedstudent:
\n\n");
for(i=0;ifor(j=0;jif(a[i][j]<60)
{printf("TestfailedstudentID:
No.%d.\n",i+1);
break;
};
Line('-',60);
printf("Outputallsutdents'score:
\n\n");//输出所有学生成绩
printf("ID\tclass1\tclass2\tclass3\tclass4\tAverage\n");
for(i=0;i{printf("No.%d",i+1);//输出学生学号
for(j=0;jprintf("\t%6.2f",a[i][j]);
printf("\t%6.2f\n",A[i]);
}
Line('-',60);
}
voidmain()
{inti,j,flag=0;
floata[M][N];
Line('-',60);
printf("Input3studentswitheach4scors:
\n\n");//提示输入成绩
for(i=0;i<3&&flag==0;i++)
for(j=0;j<4;j++)//运用双重FOR循环输入学生成绩
{scanf("%f",&a[i][j]);
if((a[i][j]<0)||(a[i][j]>100))//检验输入成绩是否有误
{printf("InputError!
!
!
\n");
flag=1;
break;
printf("\n");
}
}
if(flag==0)
fun(a);//调用fun函数输出处理后学生成绩
}
程序运行结果如下所示:
图1
2.将一组字符串按字典顺序输出。
(通过函数调用完成)
C程序如下:
#include
#include
#defineM5
#defineN20
voidLine(charc,inta)//输出打印头文件
{inti;
for(i=1;i<=a;i++)
printf("%c",c);
printf("\n");
}
voidsort(chars[M][N],charstr[N])//定义字典排序sort函数
{inti,j;
for(i=0;ifor(j=i+1;jif(strcmp(s[i],s[j])>0)//不同字符串字典排序
{strcpy(str,s[i]);
strcpy(s[i],s[j]);
strcpy(s[j],str);
}
for(i=0;iprintf("%s",s[i]);
}
voidmain()
{inti;
chara[M][N],arr[N];
Line('-',60);
printf("InputEnglishstringarray:
\n\n");//提示输入字符串
for(i=0;iscanf("%s",a[i]);
printf("\n");
Line('-',60);
printf("Outputtheoldstringarray:
\n\n");//提示输出字符串
for(i=0;iprintf("%s",a[i]);
printf("\n");
Line('-',60);
printf("Outputthesortedstringarray:
\n\n");//提示输出排序后的字符串
sort(a,arr);
printf("\n");
Line('-',60);
printf("\n");
}
程序运行结果如下:
图2
3.输入一行字符,要求完成:
(1)每个单词中的第一个字母改成大写字母(如果原来已是大写字母则不变)。
(2)全变成大写字母
(3)全变成小写字母
要求:
以函数的形式实现,在main函数中调用,要支持输入
编写C程序如下:
#include
#include
#defineM50
voidLine(charc,inta)//输出打印头文件
{inti;
for(i=1;i<=a;i++)
printf("%c",c);
printf("\n");
}
voidchange1(chara[M])//定义一个函数change1
{inti;
if(a[0]>='a'&&a[0]<='z')
{a[0]=a[0]-32;
for(i=1;i{if(a[i]==''&&(a[i+1]>='a'&&a[i+1]<='z'))
a[i+1]=a[i+1]-32;}
}
elseif(a[0]>='A'&&a[0]<='Z')//将字符串中各单词的首个小写字母变为大写
{for(i=1;iif(a[i]==''&&(a[i+1]>='a'&&a[i+1]<='z'))
a[i+1]=a[i+1]-32;
}
else
printf("Thefirstcharacterisablank");
Line('-',70);
printf("Outputfirstchar_uppercase:
");
puts(a);
printf("\n");
}
voidchange2(chara[M])//定义一个函数change2
{inti;
for(i=0;iif(a[i]>='a'&&a[i]<='z')
a[i]=a[i]-32;//将字符串中所有小写字母变为大写字母
Line('-',70);
printf("OutputEnglishuppercase:
");
puts(a);
printf("\n");
}
voidchange3(chara[M])//定义一个函数change3
{inti;
for(i=0;i{if(a[i]>='A'&&a[i]<='Z')
a[i]=a[i]+32;
}
Line('-',70);
printf("OutputEnglishletters:
");
puts(a);
printf("\n");
Line('-',70);
printf("\n");
}
voidmain()
{inti,l,flag=0;
chara[M];
Line('-',70);
printf("\nInputEnglishstring:
");//提示输入英文字符串
gets(a);
printf("\n");
Line('-',70);
printf("Outputtheoldstring:
");
puts(a);
printf("\n");
l=strlen(a);
for(i=0;iif(a[i]=='\0')
{flag=1;
break;
}
for(i=0;iif((a[i]<'A'&&a[i]!
='')||(a[i]>'Z'&&a[i]<'a')||(a[i]>'z'))
{printf("InputError!
!
!
\n");
flag=1;
break;
}
if(flag==0)
{change1(a);
change2(a);
change3(a);
}
}
程序运行结果如下:
图3
通讯录管理系统
2、个人通讯录管理系统
一、需求分析
设计一个通讯录管理系统,以实现以下功能:
(1)信息添加功能
(2)信息查询功能
(3)信息修改功能
(4)信息删除功能
(5)信息排序功能
(6)信息浏览功能
(7)读取数据文件
(8)新建数据文件
需求说明:
(1)通讯录中的每一个信息包括姓名(规定字节数为15个)、电话(规定字节数为15个)和工作单位(最大字节数为30个)等信息。
(2)录入的信息要求存入文件,并可以通过读取数据文件进行查询、修改、删除和浏览等基本操作。
(3)对通讯录中的信息要求分别按照序号和姓名两种方式进行查询,并返回符合条件的信息。
(4)对通讯录中的信息修改应逐个进行,一个信息记录的修改不应该影响其他的信息记录。
(5)对通讯录中的信息要求分别按照序号和姓名两种方式进行删除,并保存删除后的信息。
(6)对通讯录中的信息要求分别按照序号和姓名两种方式进行排序,并返回排序后的信息。
(7)所设计的通讯系统要求以菜单方式工作,为用户提供清晰的使用提示,根据用户的选择进行各种处理。
二、总体设计
(1)设计主控制菜单程序(menu()函数),实现菜单选择模块。
①输出功能菜单(包括新建、读取文件、添加、查询、修改、删除、浏览、排序等)。
②按提示信息选择功能菜单,并输出返回值。
(2)设计New()函数,实现新建数据文件功能。
(3)设计Load()函数,实现文件读取功能,若文件不存在,则返回New(),进入新建数据文件。
(4)设计Add()函数,实现信息添加功能,分别录入序号、姓名、电话和工作单位。
若序号已存在,则重新输入。
(5)设计Qur()函数,实现信息查询功能,通过设计提示菜单,实现按序号和姓名两种方式查询。
(6)设计Modify()函数,实现信息修改功能,在修改前,首先显示所有信息,然后通过序号实现修改。
(7)设计Del()函数,实现信息删除功能,通过设计提示菜单,实现序号和姓名两种方式进行删除。
(8)设计Sort()函数,实现信息排序功能,通过设计提示菜单,实现按序号和姓名两种方式进行排序。
(9)设计Disp()函数,实现信息浏览功能。
(10)设计Save()函数,实现信息保存功能,将新建或读取的文件,在退出程序后进行保存。
三、详细设计
四、编写代码
五、调试总结