程序设计基础课程设计报告书Word文档格式.docx
- 文档编号:1362025
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:13
- 大小:20.01KB
程序设计基础课程设计报告书Word文档格式.docx
《程序设计基础课程设计报告书Word文档格式.docx》由会员分享,可在线阅读,更多相关《程序设计基础课程设计报告书Word文档格式.docx(13页珍藏版)》请在冰点文库上搜索。
9.参考文献9
1.课程设计计划
(根据自己的实际情况来写)
序号
起始日期
工作内容
1
5月24日~5月31日
在网上查找资料并写出大概的代码
2
6月1日~6月7日
修改代码,让程序能运行出来
3
6月8日~6月10日
完善代码,找出小错误,让代码更完美简洁
4
6月11日~6月14日
总结分析,吸取经验
2.前言
(主要叙述本课题的意义、研究范围及要求达到的技术参数;
简述本课题应解决的主要问题。
)
1.进一步掌握和利用C语言进行课程设计的能力
2.进一步理解和运用结构化程序设计的思想和方法
3.初步掌握开发一个小型实用系统的基本方法
4.学会调试一个较长程序的基本方法
5.学会利用流程图和N-S图表示算法
6.掌握书写程序设计开发文当的能力
3.需求分析
(主要内容包括本课程设计题目、课程设计任务、课程设计思想、软硬件运行环境及开发工具。
1、编写完成相应题目的程序
2、编写课程设计报告,课程设计报告应该包含以下6部分
1)需求分析:
包括设计题目、设计要求以及系统功能需求分析
2)总体设计:
包括系统总体设计框架和系统功能模块图
3)详细设计:
包括主要功能模块的算法设计思路以及对应的工作流程图
4)调试分析过程描述:
包括测试数据、测试输出结果以及对程序测试过程中存在问题进行思考(主要问题的出错现象、出错原因、解决方法及其效果等,相应效果截图)
5)总结:
课程设计完成了哪些主要功能,是否有扩展功能?
还有哪些地方需要改进?
课程设计的学习与体会?
有哪些合理化建议?
6)在实验室建立程序运行环境,并在指导教师的监督下,独立解决问题,运行程序和回答教师的提问。
4.概要设计
(主要叙述本课题设计的流程图(各功能模块)、主要的数据结构、主要函数功能介绍、函数间的调用关系等,附main()函数源代码或伪代码。
//程序名称:
模拟时钟程序
//编译环境:
VisualC++6.0,Easyx库
#include<
windows.h>
conio.h>
math.h>
#include"
graphics.h"
#definePI3.1415926
intmain(void)
{
/*函数原型声明*/
voidDralDial();
//画表盘函数
voidDrawDecoration();
//化装饰的函数
voidDrawHand(inthour,intminute,intsecond);
//画指针的函数
initgraph(600,600);
//初始化600×
600的绘图窗口(就是类似于ps中的画布大小)
setbkcolor(RGB(153,204,255));
//设置背景色
cleardevice();
//清空屏幕?
?
DrawDecoration();
//画装饰(网状线条)
DralDial();
//画表盘(圆)
//刻名字(roman)
setcolor(RED);
setfont(32,0,"
华文新魏"
);
outtextxy(260,130,"
Roman"
//在指定的位置输出一字符串
setwritemode(R2_XORPEN);
//设置异或绘图方式
SYSTEMTIMEt;
//定义变量保存当前时间
while(!
kbhit())//kbhit用来检测键盘是否有按键,有则返回1,没有则返回0.所以while(!
kbhit()).就是没有按键的时候进行循环
{
GetLocalTime(&
t);
//获取当前时间(计算机的时间)
DrawHand(t.wHour,t.wMinute,t.wSecond);
//画表针
Sleep(1000);
//让函数滞留一秒
//擦表针
}
closegraph();
//关闭绘图窗口
return0;
}
/*画表盘*/
voidDralDial()//定义DralDial()函数
inti;
intx1,y1,x2,y2,x3,y3,x4,y4,x5,y5;
//表心坐标系坐标
charrome[][3]={"
12"
"
1"
"
2"
3"
4"
5"
6"
7"
8"
9"
10"
11"
};
//表盘数字
//画四个圆
setcolor(LIGHTGRAY);
circle(300,300,250);
//前两个数值确定坐标后一个数值是圆的半径
circle(300,300,30);
circle(300,300,260);
circle(300,300,270);
for(i=0;
i<
59;
i++)
//画60条短线
setcolor(LIGHTGRAY);
x1=(int)(300+(sin(i*PI/30)*250));
y1=(int)(300-(cos(i*PI/30)*250));
x2=(int)(300+(sin(i*PI/30)*260));
y2=(int)(300-(cos(i*PI/30)*260));
line(x1,y1,x2,y2);
//画12个三角形
setfillstyle(GREEN);
//设置填充图样和颜色函数
if(i%5==0)//每12个间隔画一个图形
{
x3=(int)(x1+sin((i+5)*PI/30)*12);
y3=(int)(y1-cos((i+5)*PI/30)*12);
x4=(int)(x1+sin((i-5)*PI/30)*12);
y4=(int)(y1-cos((i-5)*PI/30)*12);
x5=(int)(290+(sin((i-0.2)*PI/30)*220));
y5=(int)(290-(cos((i-0.2)*PI/30)*220));
inttriangle[6]={x1,y1,x3,y3,x4,y4};
//三角形三顶点坐标
setcolor(YELLOW);
//三角形的颜色
fillpoly(3,triangle);
//画并填充一个多边形的函数
//写表盘数字
setcolor(RED);
//颜色
setfont(24,0,"
黑体"
//字体
outtextxy(x5,y5,rome[i/5]);
//字符的位置
}
//画装饰(网状线)
voidDrawDecoration()//定义DrawDecoration()函数
doublei;
intx1,y1,x2,y2;
//极坐标系,画函数图像
setcolor(RGB(250,225,222));
10*PI;
i+=0.4)
x1=(int)(300+(250*sin(2.4*i)));
y1=(int)(300-(250*cos(2.4*i)));
x2=(int)(300+(250*sin(2.4*(i+1))));
y2=(int)(300-(250*cos(2.4*(i+1))));
//画指针
voidDrawHand(inthour,intminute,intsecond)
intxhour,yhour,xminute,yminute,xsecond,ysecond;
//表心坐标系指针坐标
xhour=(int)(130*sin(hour*PI/6+minute*PI/360+second*PI/1800));
yhour=(int)(130*cos(hour*PI/6+minute*PI/360+second*PI/1800));
xminute=(int)(145*sin(minute*PI/30+second*PI/1800));
yminute=(int)(145*cos(minute*PI/30+second*PI/1800));
xsecond=(int)(200*sin(second*PI/30));
ysecond=(int)(200*cos(second*PI/30));
//画时针
setlinestyle(PS_SOLID,10);
//线的样式
//线的颜色
line(300+xhour,300-yhour,300-xhour/6,300+yhour/6);
//线的位置
//画分针
setlinestyle(PS_SOLID,7);
setcolor(RGB(222,158,107));
line(300+xminute,300-yminute,300-xminute/4,300+yminute/4);
//画秒针
setlinestyle(PS_SOLID,3);
line(300+xsecond,300-ysecond,300-xsecond/3,300+ysecond/3);
5.详细设计
(主要内容:
自己所负责的模块数据流程图、主要技术源代码以及注释、用户界面及用户使用手册等)
首先,先画出个钟的大致轮廓。
从输出数字到画出外轮廓,到标出短线到画出时针、分针、秒针。
这个轮廓就已经完成了。
然后,为了更加这个钟的实用性。
就通过获取系统时间来结合实际意义,这是最简单,最好的方法。
从应用上,它显示的是实际的时间,增强了可用性;
从编程上,不用再复杂地再编一个更时间一样的函数来,减少程序的篇幅、复杂性和编程者的工作量。
接着顺带利用时间的变量名来画时针,分针,秒针。
最后,为了让时针,分针,秒针让观察者看起来是连续的变化,即形象地模拟真实的机械钟表那样运动,就用函数让时针,分针,秒针跟着时间一齐走动。
1.画出钟表的轮廓:
1)钟表的外轮廓
circle(320,240,189);
circle(320,240,180);
2)画出钟内的短线
x1=180*sin(i*6*pi/180)+320;
y1=180*cos(i*6*pi/180)+240;
x2=(180-l)*sin(i*6*pi/180)+320;
y2=(180-l)*cos(i*6*pi/180)+240;
line(x1,y1,x2,y2);
3)画出时针、分针、秒针
d(120,n,30);
d(140,m,6);
d(160,s,6);
2.获取系统时间:
getdate(d);
gettime(t);
3.时间和声音的表达:
1)时间
时针
d(120,h,30);
h=t[0].ti_hour;
d(120,h,30);
分针
m=t[0].ti_min;
d(140,m,6);
秒针
s=t[0].ti_sec;
d(160,s,6);
2)声音
delay()
sound()
6.技术难点与分析
本课题在设计过程中所遇到的技术难点及解决方法。
在这次模拟时钟转动程序设计中,我遇到了很多困难,通过查资料,向同学、师兄、老师请教,才一一得到解决。
比如刚开始无法运行,后来查资料知道是因为C++无法运行图形库。
后来在同学和老师的帮助下,找到了解决方法。
下载easyX,问题就得到了解决。
还有过程中的许多小错误,比如遗漏分号,等等。
是我认识到作为程序员一定要细心认真。
C语言的设计必须结合实际,充分考虑界面友好等人性化设置,这就要求我们要多观察,敢创新。
另外上机实验是必不可少的,理论的东西学得再好,不结合实验区验证始终只能停留在理论阶段。
7.心得体会
(主要对本课题开发过程进行归纳和总结,还应包括所得结果与已有结果的比较和本课题尚存在的问题,以及进一步开发的见解与建议。
感谢对本课程设计完成过程中曾直接给予帮助的人员)
我发现平时自学到的知识太少了,“书到用时方恨少”,今后我要把更多时间用在基础学习上,利用课余时间多看课外书籍,拓宽知识面。
通过此次实战演练,我还学到很重要的一点,就是要虚心请教他人,个人的力量总是有限的,只有发挥众人的智慧才能把任务完成的更好,这在今后的工作中也是相当重要的。
8.致谢
(以简短的文字对在设计研究和设计报告撰写过程中曾直接给予帮助的人员表示自己的谢意)
感谢刘波同学和老师对我们的帮助~~~
9.参考文献
(在课程设计过程中曾参考或引用过的书籍、文献以及网络资源列表)
[1]谭浩强.C程序设计(第三版)[M]北京:
清华大学出版社,2005年9月
[2]谭浩强.C程序设计题解与上机指导(第三版)[M]北京:
清华大学出版社,2005年7月
[3]夏宝岚张慕蓉夏耘.程序设计教程(第二版)[M],上海:
华东理工出版社,2003.1
[4]陈锦昌赵明秀.C语言计算机绘图教程(第一版)[M],广州:
华南理工大学出版社,1998.9
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 基础 课程设计 报告书