c语言程序设计报告

  • 格式:doc
  • 大小:324.50 KB
  • 文档页数:27

C语言课程设计实验报告专业班级学号姓名指导教师C语言课程设计指导书一、目的与要求《C语言》是实践性很强的课程。

通过课程设计可以把课堂上讲的内容融会贯通,也只有通过上机实习才能真正学会设计程序、开发应用软件、开发系统软件等各项工作。

课堂授课和上机实习是这门课程必不可少的环节。

课程设计的目的与要求:1、通过课程设计掌握C语言的语法结构,准确的使用各种数据类型。

2、熟练的运用if、switch 、for、 while、 do_while、continue 、break等语句为经典的题目编写程序,为科研项目中的部分题目编写程序。

3、灵活的使用数组,处理一维数组、二维数组、指针;掌握各种排序的方法;理解递归调用的过程,使用递归的方法设计程序。

4、掌握“自顶向下,逐步细化”的模块化程序设计方法。

二、课程设计内容(二)选做题参考设计题目一:简单的职工管理系统1.问题描述对单位的职工进行管理,包括插入、删除、查找、排序等功能。

2.要求职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。

(1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。

(2)删除一名职工:从职工管理文件中删除一名职工对象。

(3)查询:从职工管理文件中查询符合某些条件的职工。

(4)修改:检索某个职工对象,对其某些属性进行修改。

(5)排序:按某种需要对职工对象文件进行排序。

3.实现提示职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。

(1)由键盘输入职工对象,以文件方式保存。

程序执行时先将文件读入内存。

(2)对职工对象中的"姓名"按字典顺序进行排序。

(3)对排序后的职工对象进行增、删、查询、修改、排序等操作。

4.选做内容将职工对象按散列法存储,并设计解决冲突的方法。

在此基础上实现增、删、查询、修改、排序等操作。

参考设计题目二:图书信息管理系统设计图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

试设计一图书信息管理系统,使之能提供以下功能:v系统以菜单方式工作v图书信息录入功能(图书信息用文件保存)--输入v图书信息浏览功能--输出v查询和排序功能:(至少一种查询方式)--算法l 按书名查询l 按作者名查询v图书信息的删除与修改(可选项)参考设计题目三:学生信息管理系统设计学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。

试设计一学生信息管理系统,使之能提供以下功能:系统以菜单方式工作学生信息录入功能(学生信息用文件保存)---输入学生信息浏览功能---输出查询、排序功能---算法按学号查询按姓名查询学生信息的删除与修改(可选项)参考设计题目四:学生选修课程系统设计假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。

试设计一选修课程系统,使之能提供以下功能:v系统以菜单方式工作v课程信息录入功能(课程信息用文件保存)--输入v课程信息浏览功能--输出v查询功能:(至少一种查询方式)--算法l按学分查询l按课程性质查询v学生选修课程(可选项)参考设计题目五:销售管理系统某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。

每个销售员都将当天出售的每种产品各写一张便条交上来。

每张便条包含内容:1)销售员的代号2)产品的代号3)这种产品的当天的销售额每位销售员每天可能上缴0-5张便条。

假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。

1)计算上个月每个人每种产品的销售额。

2)按销售额对销售员进行排序,输出排序结果(销售员代号)3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)4)输出统计报表销售统计报表产品代号销售之和销售员代号 1 2 3 4 51234每种产品之和总和三、课程设计检查要求:(1)每个人必须有程序运行结果;(2)每个人必须交《C语言课程设计报告》及电子版的程序设计设计报告格式:●设计目的●总体设计(程序设计组成框图、流程图)●详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)●调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施●源程序清单和执行结果:清单中应有足够的注释(3)设计要求●可自己选定一题目,但至少包含五个功能模块●模块化程序设计●锯齿型书写格式●必须上机调试通过四、课程设计打分标准:(1)、根据平时上机考勤;(2)、根据程序运行结果;(3)、根据《C语言课程设计报告》以上三项缺一不可,否则不能到得相应学分五、课程设计报告指导书格式要求:1、设计报告采用手写,要求书写公正,字迹清楚。

2、采用B5白色稿纸。

按给定封面装订(封面要求打印或复印)。

课程设计报告内容:一、设计目的1、通过课程设计掌握C语言的语法结构,准确的使用各种数据类型。

2、熟练的运用if、switch 、for、while、do_while、continue 、break等语句为经典的题目编写程序,为科研项目中的部分题目编写程序。

3、灵活的使用数组,处理一维数组、二维数组、指针;掌握各种排序的方法;理解递归调用的过程,使用递归的方法设计程序。

掌握“自顶向下,逐步细化”的模块化程序设计方法4、通过使用c语言程序设计,巩固和掌握C语言的一些基本概念和基本理论,提高实际动手能力,并通过实现编写程序,加强对C语言的运用,加深对C语言的理解和掌握。

二、实验设计1、输入某年某月某日,判断这一天是这一年的第几天。

解;#include <stdio.h>//主函数。

int fun(int year,int month,int day);//被调用函数的声明。

void main(){int year,month,day;printf("请按照提示分别输入年、月、日\n");printf("year = ");scanf("%d",&year);printf("month = ");scanf("%d",&month);printf("day = ");scanf("%d",&day);fun(year,month,day);//调用fun 方法。

}int fun(int year,int month,int day){int s=0;inta[2][12]={0,31,59,90,120,151,181,212,243,273,303,334,0,3 1,60,91,121,152,182,212,244,274,305,335};if(month<=0||month>12||day<=0||day>31)//判断输入的月和日是否正确,若不正确直接跳出方法。

{printf("您输入有误,请确认您输入的年月日无误后重新查询!");return 0;}else if ((year%400==0)||(year%4==0&&year%100!=0))//若果是闰年则调用该函数。

{s=a[1][month-1]+day;printf("%d 年%d 月%d日是%d 年得第%d 天。

\n",year,month,day,year,s);}else//如果非闰年调用该函数。

{s=a[0][month-1]+day;printf("%d 年%d 月%d日是%d 年得第%d 天。

\n",year,month,day,year,s);}return 0;}输入年按月日判断该年是平年还是闰年该年是闰年该年是平年实行闰年前几个月相加实行平年年前几个月相加加上第几日输出是第几天2、输出一个国际象棋棋盘(8行8列方格,并且黑白相间)。

解:#include<stdio.h>int main(){int i,j;for(i=1;i<=8;i++)if(i%2==1){for(j=0;j<=3;j++)printf("■□");printf("\n");}else{for(j=0;j<=3;j++)printf("□■");printf("\n");}return 0;}i=1输出字符型数组{□■□■□■□■}换行及并输出{■□■□■□■□}判断i<=4?i++结束并输出3、任意输入三个实数,打印其最大值,最小值,平均值,要求用函数及指针作函数实参,指针变量作形参的方法实现。

解:#include<stdio.h>double MAX(double *x,double * y,double *z);double MIN(double *x,double * y,double *z);//函数预定义double max,min,ave; //定义全局变量int main(){double a,b,c;double *p1,*p2,*p3;printf("Please input a,b,c:"); //输出提示"请输入a,b,c" scanf("%lf,%lf,%lf",&a,&b,&c); //输入a,b,cp1=&a;p2=&b;p3=&c;//指针赋值MAX(p1,p2,p3);//运行函数MAXMIN(p1,p2,p3);//运行函数MINave=(a+b+c)/3;//求平均值printf("max = %lf\n",max); //输出最大值printf("min = %lf\n",min); //输出最小值printf("ave = %lf\n",ave); //输出平均值}double MAX(double *x,double * y,double *z){max = *x;if(*y>max) max = *y;if(*z>max) max = *z;return (max);}double MIN(double *x,double * y,double *z){min=*x;if(*y<min) min = *y;if(*z<min) min = *z;return (min);4、通过指针数组P和一维数组a构成一个3*2的二维数组;并为a数组赋初值2,4,6,8。