欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言课程设计报告模版(电子版.doc

    • 资源ID:78743268       资源大小:893KB        全文页数:19页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言课程设计报告模版(电子版.doc

    C语言课程设计报告Experiment Designing reporter课程名称 : C语言课程设计英文名称 : C Program Experiment Designing 专 业 :交通工程软件工程082学 号 : 姓 名 :王琛指导教师 : 邱占芝日 期: 2009年6月8日至2009年6月19日大连交通大学软件学院C语言课程设计报告C Program Experiment Designing 课程编号: 学时: 40学时适用专业:软件工程专业 授课单位:软件学院一、 C语言课程设计目的及要求目的:根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。要求:1 熟悉Turbo C 的编程环境、主要菜单功能。2 通过上机验证运算符、表达式、运算规则、函数使用。3 熟练使用C语言的典型语句编写简单程序。4 调试典型例题或习题。5 提高上机编程能力二、 实验类型设计类型三、 实验学时40学时四、 实验设备微型计算机、WINDOWS98以上版本的操作系统、Turbo C2.0 软件一套五、 C语言课程参考教材:1C语言程序设计 清华大学出版社 李瑞等主编2.谭浩强.C语言程序设计(第三版).北京:高等教育出版社,2002课程设计(报告)任务书任务及要求:1. 设计(研究)内容和要求研究内容: 任务和要求:(1)学习C语言基础知识,掌握C语言编程和程序调试的基本技能。(2)对指导教师下达的题目进行系统分析。(3)根据分析结果完成系统设计。(4)编程:在计算机上实现题目的代码实现。(5)完成对该系统的测试和调试。(6)提交课程设计报告。(7)指标:要求完成课程设计报告3千字以上(约二、三十页).完成若干综合性程序设计题目,每个综合设计题目的语句行数的和在300行语句以上.2.原始依据了解C语言的基础知识,有一定的语言编程基础,能够熟练运用C语言进行程序设计。通过用C语言完成的题目,提高用C语言解决实际问题的能力。3.参考文献1 黄明等. C语言程序设计辅导教材.大连理工大学出版社,20062 李瑞等.C语言程序设计.清华大学出版社,20083 谭浩强.C语言程序设计(第二版).北京:高等教育出版社,2002 2009年6月8日目录C语言课程设计报告1要求:21 黄明等. C语言程序设计辅导教材.大连理工大学出版社,200631投票选举11.1 设计说明11.2 程序运行截图11.3源程序代码22输出学生成绩32.1 功能说明32.2 设计说明32.3 程序运行截图32.4 源程序代码43输出成绩列表43.1功能说明43.2设计说明43.3程序运行截图53.4源程序代码64贪食蛇74.1 需求分析74.2 总体设计84.3 详细设计与实现94.4 程序运行截图114.5 参考程序131投票选举1.1 设计说明(1).设计一个结构体变量存放候选人(包括:姓名、所得票数) (2).通过循环语句的嵌套,完成对候选人的投票及候选人票数的增加 (3)输出候选人及其得票数。1.2 程序运行截图(将程序执行图,粘贴在此)1.3源程序代码#include"string.h"struct person char name20; int count; leader5="liang",0,"wei",0,"long",0,"chen",0,"chao",0;main() int i,j; char select20; for(i=0;i<=15;i+) printf("%dtPlease input your result:",i+1); scanf("%s",select); for(j=0;j<5;j+) if(strcmp(leaderj.name,select)=0) leaderj.count+; printf("The resultn"); for(j=0;j<5;j+) printf("%st%dn",leaderj.name,leaderj.count); getch();2输出学生成绩 2.1 功能说明输出学生的平均成绩,总成绩。2.2 设计说明(1)定义结构体存放学生的姓名、年龄,成绩。(2)从键盘输入5门课成绩,使用循环语句。(3)输出该学生的成绩,平均值,总分。2.3 程序运行截图(将程序执行图,粘贴在此)2.4 源程序代码main() struct student char name10; int age; float score5,ave,total; stu; int i; stu.ave=0,stu.total=0; clrscr(); printf("please input stu's name and age and score:"); scanf("%s%d",&stu.name,&stu.age); for(i=0;i<5;i+) scanf("%f",&stu.scorei); stu.ave+=stu.scorei/5.0; printf("the result isn"); printf("%s%4dn",stu.name,stu.age); for(i=0;i<5;i+) printf("%7.1f",stu.scorei); printf("average=%7.1fn",stu.ave); for(i=0;i<5;i+) stu.total+=stu.scorei; printf("total=%fn",stu.total);3输出成绩列表3.1功能说明打印5个学生4门课成绩列表。3.2设计说明(1)定义main函数并实现对各个子函数的引用,同时定义结构体数组包含:学号、姓名、性别、各分数、总成绩。总成绩初始值为0.(2)子函数中 sum用于计算总成绩;子函数sort 根据总成绩进行由大到小的排序,采用选择排序法;子函数输出成绩列表。(3)三个子函数都采用结构指针作为参数,函数调用时,形参指针都指向主函数结构数组的地0个元素。3.3程序运行截图3.4源程序代码#include "stdio.h"struct student int num; char name20; char sex; float s4; float sum;void main() void sum(struct student *,int); void sort(struct student *,int); void print(struct student *,int); struct student a8=1,"wang li",'f',66.,76.,83.,61.,0., 2,"wang lin",'m',69.,74.,63.,91.,0., 3,"liu hua",'m',86.,76.,93.,68.,0., 4,"zhang jun",'m',66.,66.,83.,61.,0., 5,"xu hua",'f',65.,76.,93.,68.,0., 6,"yang mi",'f',95.,96.,93.,98.,0., 7,"hao lin",'m',85.,56.,93.,88.,0., 8,"xu xing",'f',95.,70.,93.,84.,0.,; clrscr(); sum(a,8); sort(a,8); print(a,8);void sum(struct student *p,int n) int i,j; float d ; for(i=0;i<n;i+) d=0.0; for(j=0;j<4;j+) d+=p->sj; p->sum=d; p+; void sort(struct student *p,int n) struct student t; int i,j,k; for(i=0;i<n-1;i+) k=1; for(j=j+1;j<n;j+) if(p+k)->sum<(p+j)->sum)k=j; if(k!=i) t=*(p+i);*(p+i)=*(p+k);*(p+k)=t; void print(struct student *p,int n) int i,j; for(i=0;i<n;i+) printf("%-10d%-10s%5c%10.1f%5.1f%5.1f%5.1f%10.1fn",p->num,p->name,p->sex,p->s0,p->s1,p->s2,p->s3,p->sum); p+; 4贪食蛇本程序实现的主要技巧在于C程序二维数组的应用。目的在于提高编程的水平,提高实际动手能力,制作出的游戏程序还可以娱乐课余生活。4.1 需求分析需求分析是软件开发中最重要的环节,它直接影响着项目的成功与失败。通过对用户需求进行调查分析,写出需求分析的文档。需求分析的文档可以作为项目设计的基本要求,也可以作为系统分析员进行系统分析和测试人员进行软件测试的手册。1需求概述设计一个贪吃蛇游戏,使之能提供以下功能:(1)游戏初始界面。(2)游戏执行功能。(3)得分输出功能。(4)游戏结束功能。2需求说明(1)游戏初始界面能够给出合适大小和颜色的游戏运行界面,方便用户很好地玩游戏。(2)游戏执行功能能够实现蛇的前进、后退、吃到食物和碰到障碍物的操作(3)游戏中的得分能够输出。(4)结束游戏。4.2 总体设计根据需求分析的文档可以,初步提出问题的解决方案,以及软件系统的体系结构和数据结构的设计方案,并写出总体设计说明书,为详细设计做准备。1功能模贪吃蛇游戏 游戏执行游戏结束游戏执行分数输出图形结束图1-1系统模块图说明:(1)游戏界面现实游戏中蛇、食物和障碍物的信息,是用户使用该游戏的接口。(2)游戏执行模块是具体用户玩该游戏的操作过程。(3)分数输出模块输出游戏结束时所得的分数。(4)游戏结束模块显示游戏结束信息。(5)图形结束模块按任意键关闭图形系统2数据结构本系统中主要的数据结构就是蛇、食物、障碍物的信息设置。4.3 详细设计与实现程序关键在于表示蛇的图形及蛇的移动。用一个小矩形块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,当按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇。在DOS环境下,边框表示墙,红色矩形表示蛇,白色小方块表示障碍物,绿色小方块表示食物。定义三个结构体:蛇、食物和障碍物。1 数据结构将一个学生当作一个结点,这个结点的类型为结构体,结构体中的域表示学生的属性,每个结点除了存放属性外,还存放结点之间的关系,即存放指向后继结点的指针。所以定义表结点的结构如下:#define N 150struct Food int x; /*事物的横坐标*/ int y; /*事物的纵坐标*/ int yes; /*判断是否要出现事物的变量*/food;struct barrier int x; /*障碍物的横坐标*/ int y; /*障碍物的纵坐标*/ int bar; /*判断是否要出现障碍物的变量*/barrier;struct Snake int xN; int yN; int node; /*蛇的节数*/ int direction; /*蛇移动方向*/ int life; /*蛇的生命,0活着,1死亡*/snake;2各个功能模块的设计与实现 表示蛇、食物和障碍物的矩形块设计为10×10个像素单位,食物和障碍物的基本数据域为它所出现的位置,用x、y坐标表示,则矩形块用函数 rectangle(x,y,x+10,y+10)或rectangle(x,y,x+10,y-10)可以实现。由于每次只出现一个食物障碍物,所以设定yes表示是否要出现食物。蛇的一节身体为一个矩形块,表示矩形块只需起点坐标x、y。身体不断增长,用数组存放每节坐标,最大设定为N=150,node表示当前节数。用变量direction存储蛇的移动方向,用变量life存储蛇的生命,一旦life=1,表示蛇死,游戏结束;此外,随着障碍物的出现,会加大游戏难度。程序中使用以下几个函数: drawk画界面; gameplay游戏函数; prscore输出分数; gameover游戏结束; close图形结束。1)游戏界面 游戏界面使用drawk函数来实现,界面是一个封闭的围墙,用两个循环语句分别在水平和垂直方向输出连续的宽度和高度均为10单位的矩形方块,围城密闭图形,表示围墙,函数setlinestyle(solid_line,0,thick_width)设置线形宽度3为像素。如果设置为3像素的围墙线,蛇贴墙走时,就会摩擦掉围墙线,使线变细,图形变得不好看,如果不想这种情况发生,将线形宽度设置为1像素即可。 2)游戏执行 游戏执行使用gameplay函数实现。每次移动时从最后一节开始到倒数第二节,将前一节坐标赋给后一节坐标,移动后把最后一节用背景色覆盖,然后蛇头按方向键更改位置。 事物的出现要确保它的位置在10的倍数位置上,蛇吃到食物的判断是蛇头坐标和食物坐标相同。 算法如下: 设置初始值。食物要设置随机数发生器。初始时,蛇只有蛇头,设定一个开始方向。 循环执行,按Esc键退出。 没按键时循环执行。 若没有食物,随机出现食物。有食物,显示食物,蛇移动身体,根据蛇的方向改变坐标,并判断蛇是否撞到墙或自己,是则蛇死,调用结束函数gameover,结束本游戏。若蛇吃到食物,蛇身体长一节,数组元素增加一个,身体节数,分数都改变。在新位置画出蛇。如果有按键,识别键值。按Esc键结束游戏,按键为方向键,则根据该键改变代表蛇方向的变量direction的值,相反方向键无效。输出分数输出分数使用prscore函数实现,在指定位置用sprintf将整数转为字符串,用outtextxy输出,bar函数的用处是覆盖原来的值。游戏结束游戏结束使用gameover函数实现,清屏,输出分数,显示游戏结束信息。close图形结束显示游戏结束信息画面时,按任意键关闭图形系统,程序结束。4.4 程序运行截图4.5 参考程序#define N 200#include <graphics.h>#include <stdlib.h>#include <dos.h>#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bint i,key;int score=0;/*得分*/int gamespeed=40000;/*游戏速度自己调整*/struct Food int x;/*食物的横坐标*/ int y;/*食物的纵坐标*/ int yes;/*判断是否要出现食物的变量*/food;/*食物的结构体*/struct Snake int xN; int yN; int node;/*蛇的节数*/ int direction;/*蛇移动方向*/ int life;/* 蛇的生命,0活着,1死亡*/snake;void Init(void);/*图形驱动*/void Close(void);/*图形结束*/void DrawK(void);/*开始画面*/void GameOver(void);/*结束游戏*/void GamePlay(void);/*玩游戏具体过程*/void PrScore(void);/*输出成绩*/*主函数*/void main(void) Init();/*图形驱动*/ DrawK();/*开始画面*/ GamePlay();/*玩游戏具体过程*/ Close();/*图形结束*/*图形驱动*/void Init(void) int gd=DETECT,gm; initgraph(&gd,&gm,"C:Win-TCprojects"); cleardevice();/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/void DrawK(void)/*setbkcolor(LIGHTGREEN);*/ setcolor(11); setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/ for(i=50;i<=600;i+=10)/*画围墙*/ rectangle(i,40,i+10,49); /*上边*/ rectangle(i,451,i+10,460);/*下边*/ for(i=40;i<=450;i+=10) rectangle(50,i,59,i+10); /*左边*/ rectangle(601,i,610,i+10);/*右边*/ /*玩游戏具体过程*/void GamePlay(void) randomize();/*随机数发生器*/ food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/ snake.life=0;/*活着*/ snake.direction=1;/*方向往右*/ snake.x0=100;snake.y0=100;/*蛇头*/ snake.x1=110;snake.y1=100; snake.node=2;/*节数*/ PrScore();/*输出得分*/ while(1)/*可以重复玩游戏,压ESC键结束*/ while(!kbhit()/*在没有按键的情况下,蛇自己移动身体*/ if(food.yes=1)/*需要出现新食物*/ food.x=rand()%400+60; food.y=rand()%350+60; while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/ food.x+; while(food.y%10!=0) food.y+; food.yes=0;/*画面上有食物了*/ if(food.yes=0)/*画面上有食物了就要显示*/ setcolor(GREEN); rectangle(food.x,food.y,food.x+10,food.y-10); for(i=snake.node-1;i>0;i-)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/ snake.xi=snake.xi-1; snake.yi=snake.yi-1; /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/ switch(snake.direction) case 1:snake.x0+=10;break; case 2: snake.x0-=10;break; case 3: snake.y0-=10;break; case 4: snake.y0+=10;break; for(i=3;i<snake.node;i+)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/ if(snake.xi=snake.x0&&snake.yi=snake.y0) GameOver();/*显示失败*/ snake.life=1; break; if(snake.x0<55|snake.x0>595|snake.y0<55| snake.y0>455)/*蛇是否撞到墙壁*/ GameOver();/*本次游戏结束*/ snake.life=1; /*蛇死*/ if(snake.life=1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/ break; if(snake.x0=food.x&&snake.y0=food.y)/*吃到食物以后*/ setcolor(0);/*把画面上的食物东西去掉*/ rectangle(food.x,food.y,food.x+10,food.y-10); snake.xsnake.node=-20;snake.ysnake.node=-20; /*新的一节先放在看不见的位置,下次循环就取前一节的位置*/ snake.node+;/*蛇的身体长一节*/ food.yes=1;/*画面上需要出现新的食物*/ score+=10; PrScore();/*输出新得分*/ setcolor(4);/*画出蛇*/ for(i=0;i<snake.node;i+) rectangle(snake.xi,snake.yi,snake.xi+10, snake.yi-10); delay(gamespeed); setcolor(0);/*用黑色去除蛇的的最后一节*/ rectangle(snake.xsnake.node-1,snake.ysnake.node-1, snake.xsnake.node-1+10,snake.ysnake.node-1-10); /*endwhile(!kbhit)*/ if(snake.life=1)/*如果蛇死就跳出循环*/ break; key=bioskey(0);/*接收按键*/ if(key=ESC)/*按ESC键退出*/ break; else if(key=UP&&snake.direction!=4)/*判断是否往相反的方向移动*/ snake.direction=3; else if(key=RIGHT&&snake.direction!=2) snake.direction=1; else if(key=LEFT&&snake.direction!=1) snake.direction=2; else if(key=DOWN&&snake.direction!=3) snake.direction=4; /*endwhile(1)*/*游戏结束*/void GameOver(void) cleardevice(); PrScore(); setcolor(RED); settextstyle(0,0,4); outtextxy(200,200,"GAME OVER"); getch();/*输出成绩*/void PrScore(void) char str10; setfillstyle(SOLID_FILL,YELLOW); bar(50,15,220,35); setcolor(6); settextstyle(0,0,2); sprintf(str,"score:%d",score); outtextxy(55,20,str);/*图形结束*/void Close(void) getch(); closegraph();

    注意事项

    本文(C语言课程设计报告模版(电子版.doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开