华 北 水 利 水 电 学 院
课 程 设 计
报告书
20##——20##学年
第一学期
环 节 名 称: C语言课程设计
学生专业班级: 2010统计学
指 导 教 师: 张贞贞、闫雒恒、皇甫中民、
院 系 :数学与信息科学学院
学 生 姓 名: 李晨光
学 生 学 号: 201015110
课 程 设 计 任 务 书
注:此套表填写一式三份,于课程设计前一周分别交至教学督导团、教务科、教研室
课 程 设 计 计 划 书
注:指导教师在课程设计期间每天指导时间不少于2小时。
教学院长、教学主任: 教研室主任:
填表人: 张贞贞闫雒恒 填表时间: 20## 年 12 月15日
一、 必做题
1. 有3个学生,各学4门课,计算总平均分数,并查找有一门以上课程不及格的学生,打印输出他们的全部课程成绩。(通过函数调用完成)
C程序如下:
#include <stdio.h>
#include <math.h>
#define M 3
#define N 4
void Line(char c,int a ) //输出打印头文件
{ int i;
for(i=1;i<=a;i++)
printf("%c",c);
printf("\n");
}
void fun(float a[M][N]) //定义学生成绩处理的fun函数
{ int i,j;
float sum,A[M];
float ave=0.0;
for(i=0;i<M;i++)
{ sum=0.0;
for(j=0;j<N;j++)
sum+=a[i][j];
A[i]=sum/N; //计算每个学生的平均成绩
}
for(i=0;i<M;i++)
ave+=A[i]/M; //计算总平均成绩并输出
Line('-',60);
printf(" Total of scores' average : %6.2f\n",ave);
Line('-',60);
printf(" The failed student:\n\n ");
for(i=0;i<M;i++) //输出有一门以上成绩不及格学生学号
for(j=0;j<N;j++)
if(a[i][j]<60)
{ printf(" Test failed student ID: No. %d.\n",i+1);
break;
};
Line('-',60);
printf(" Output all sutdents' score : \n\n");//输出所有学生成绩
printf(" ID \t class1\t class2\t class3\t class4\t Average\n");
for(i=0;i<M;i++)
{ printf(" No.%d",i+1); //输出学生学号
for(j=0;j<N;j++)
printf("\t %6.2f",a[i][j]);
printf("\t %6.2f \n",A[i]);
}
Line('-',60);
}
void main()
{ int i,j,flag=0;
float a[M][N];
Line('-',60);
printf(" Input 3 students with each 4 scors:\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("Input Error !!!\n");
flag=1;
break;
printf("\n");
}
}
if(flag==0)
fun(a); //调用fun函数输出处理后学生成绩
}
程序运行结果如下所示:
图1
2.将一组字符串按字典顺序输出。(通过函数调用完成)
C程序如下:
#include<stdio.h>
#include<string.h>
#define M 5
#define N 20
void Line(char c,int a ) //输出打印头文件
{ int i;
for(i=1;i<=a;i++)
printf("%c",c);
printf("\n");
}
void sort(char s[M][N],char str[N]) //定义字典排序sort函数
{ int i,j;
for(i=0;i<M-1;i++)
for(j=i+1;j<M;j++)
if(strcmp(s[i],s[j])>0) //不同字符串字典排序
{ strcpy(str,s[i]);
strcpy(s[i],s[j]);
strcpy(s[j],str);
}
for(i=0;i<M;i++)
printf(" %s ",s[i]);
}
void main()
{ int i;
char a[M][N],arr[N];
Line('-',60);
printf(" Input English string array:\n\n"); //提示输入字符串
for(i=0;i<M;i++)
scanf(" %s",a[i]);
printf("\n");
Line('-',60);
printf(" Output the old string array:\n\n"); //提示输出字符串
for(i=0;i<M;i++)
printf(" %s ",a[i]);
printf("\n");
Line('-',60);
printf(" Output the sorted string array:\n\n");//提示输出排序后的字符串
sort(a,arr);
printf("\n");
Line('-',60);
printf("\n");
}
程序运行结果如下:
图2
3.输入一行字符,要求完成:
(1)每个单词中的第一个字母改成大写字母(如果原来已是大写字母则不变)。
(2)全变成大写字母
(3)全变成小写字母
要求:以函数的形式实现,在main函数中调用,要支持输入
编写C程序如下:
#include<stdio.h>
#include<string.h>
#define M 50
void Line(char c,int a ) //输出打印头文件
{ int i;
for(i=1;i<=a;i++)
printf("%c",c);
printf("\n");
}
void change1(char a[M]) //定义一个函数change1
{ int i;
if(a[0]>='a'&&a[0]<='z')
{ a[0]=a[0]-32;
for(i=1;i<M-1;i++)
{ if(a[i]==' '&&(a[i+1]>='a'&&a[i+1]<='z'))
a[i+1]=a[i+1]-32; }
}
else if(a[0]>='A'&&a[0]<='Z') //将字符串中各单词的首个小写字母变为大写
{ for(i=1;i<M-1;i++)
if(a[i]==' '&&(a[i+1]>='a'&&a[i+1]<='z'))
a[i+1]=a[i+1]-32;
}
else
printf("The first character is a blank");
Line('-',70);
printf(" Output first char_uppercase: ");
puts(a);
printf("\n");
}
void change2(char a[M]) //定义一个函数change2
{ int i;
for(i=0;i<M;i++)
if(a[i]>='a'&&a[i]<='z')
a[i]=a[i]-32; //将字符串中所有小写字母变为大写字母
Line('-',70);
printf(" Output English uppercase: ");
puts(a);
printf("\n");
}
void change3(char a[M]) //定义一个函数change3
{ int i;
for(i=0;i<M;i++) //将字符串中所有大写字母变为小写字母
{ if(a[i]>='A'&&a[i]<='Z')
a[i]=a[i]+32;
}
Line('-',70);
printf(" Output English letters: ");
puts(a);
printf("\n");
Line('-',70);
printf("\n");
}
void main()
{ int i,l,flag=0;
char a[M];
Line('-',70);
printf("\n Input English string: "); //提示输入英文字符串
gets(a);
printf("\n");
Line('-',70);
printf(" Output the old string: ");
puts(a);
printf("\n");
l=strlen(a);
for(i=0;i<l;i++)
if(a[i]=='\0')
{ flag=1;
break;
}
for(i=0;i<l;i++) //检查输入字符是否为英文字符或空格
if((a[i]<'A'&&a[i]!=' ')||(a[i]>'Z'&&a[i]<'a')||(a[i]>'z'))
{ printf(" Input Error !!!\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()函数,实现信息保存功能,将新建或读取的文件,在退出程序后进行保存。
三、详细设计
四、编写代码
五、调试总结
第二篇:C语言课程设计论文要求
C语言课程设计论文要求
目录(顶部居中、小二号黑体加粗)(***目录为自动生成***)
论文(设计)题目(居中、小二号黑体加粗)
(空一行)
【内容摘要】(空二格,五号楷体加粗)内容(五号楷体,150-300字)
(空一行)
【关键词】 (空二格,五号楷体加粗)关键词内容(五号楷体、每两个关键词之间空一格,一般3—5个)
(内容摘要是对文章内容的简要概述,一般字数为150至300字;关键词应是文章的关键概念、词组,一般在3至5个,最多不超过8个。 “内容摘要”起首空两格,项目名称用5号楷体加粗,内容用5号楷体,1.5倍行距;“关键词”另起一行,起首空两格,项目名称用5号楷体加粗,内容用5号楷体,词间空一格。)
正文内容:除一、二、三级标题外,文字统一用小4号宋体,每段起首空两格,回行顶格,1.5倍行距;
正文文中标题:
一级标题:标题序号为“一、”,用4号黑体加粗,独占行,末尾不加标点;
二级标题:标题序号为“(一)”,用小4号黑体加粗,独占行,末尾不加标点;
三级标题:标题序号为“1、”,用小4号黑体加粗,若独占行,则末尾不加标点,若不独占行,标题后面须加句号;
四级标题:标题序号为“(1)”,用小4号宋体,其余要求与三级标题相同;
五级标题:标题序号为“①”,用小4号宋体,其余要求与三级标题相同。
注意:每级标题的下一级标题应各自连续编号。
(空一行)
一、(一级标题)(四号黑体加粗)独占行,末尾不加标点
(一)(二级标题)(小四号黑体加粗)独占行,末尾不加标点
1、(三级标题)(小四号黑体加粗)
(1)(四级标题)小四号宋体
(正文内容用小四号宋体、下同)
二、(一级标题)(四号黑体加粗)独占行,末尾不加标点
┋
(空一行)
结语(四号黑体加粗)(根据需要)
结语具体内容(用小四号宋体)
二、打印与装订
毕业论文(设计)统一用A4纸打印,行距1.5倍,页边距上、下、左、右均2.5厘米(设计论文全文应连续页码,从目录开始编写页码,目录为I、II样式,正文1、2、3样式)及左侧装订。装订内容及顺序包括:1、封面;2、目录;3、正文。