Post on 14-Mar-2016
description
C 语言综合编程训练
C程序组成CC 程序程序
源程序源程序 11 源程序源程序 22 源程序源程序 nn………… …………
预编译命令预编译命令 函数函数 11 函数函数 nn…………
说明部分说明部分 执行部分执行部分开发方法 : 自上向下,逐步细化,模块化设计,结构化编码
五 子 棋 游 戏 程 序一个综合实例的分析
五 子 棋 游 戏 程 序一个综合实例的分析
一般来说 , 开发一个软件要经过以下步骤 :
确定软件的功能定义核心数据结构对整个软件进行功能模块划分编写程序实现各功能模块
对源程序进行编译和调试 , 形成软件产品
查看源程序C Source file
功 能 分 析
五子棋棋盘两位玩家交替行棋五子相连判定赢棋
查看源程序C Source file
定义核心数据结构定义 char gChessBoard[19][19]; 表示棋盘棋盘上每个交叉点有三种状态当前光标位置表示
查看源程序C Source file
struct point{ int x; int y;};
程序的模块划分
查看源程序C Source file
•画棋盘•显示提示信息•棋盘置空接收 , 处理用户输入 , 直至 :•分出胜负•按退出键
•判断落子键有效性•更新数组与棋盘显示•判断是否走成五子相连
•更新全局变量 gCursor•移动光标至新位置
程 序 的 编 制 细 节
查看源程序C Source file
定义核心数据结构初始化接收按键移动光标落子与判定胜负main() 函数程序中用到的库函数介绍
C Source file
C Source file
C Source file
C Source file
C Source file
C Source file
bioskey
程 序 的 编 制 细 节程序中用到的库函数
textmode
clrscr
putch
cputs
gotoxy
textcolor
delay
sound 与 nosound
C Source file
C Source file
C Source file
C Source file
C Source file
C Source file
C Source file
C Source file
C Source file
设计任务系统以菜单方式工作(文本菜单或图形菜单)输入数据模块,数据用文件保存输出数据模块,数据用文件保存基本算法运用模块(排序、查找、插入、比较算法中至少包含一种)系统进入画面 ( 静态或动画 )系统其它功能实现(任选)
参考设计题目一:职工信息管理系统设计职工信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能:系统以菜单方式工作职工信息录入功能 ( 职工信息用文件保存 ) --输入职工信息浏览功能 --输出查询或排序功能: ( 至少一种查询方式 ) --算法
按工资查询按学历查询等
系统进入画面 ( 静态或动画 )职工信息删除、修改功能 ( 任选项 )
参考设计题目二:飞机订票系统设计假定民航机场共有 n 个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额。试设计一民航订票系统,使之能提供下列服务:系统以菜单方式工作航班信息录入功能 ( 航班信息用文件保存 ) --输入航班信息浏览功能--输出查询航线: ( 至少一种查询方式 ) --算法
按航班号查询按终点站查询
系统进入画面 ( 静态或动画 )承办订票和退票业务 ( 可选项 )
参考设计题目三:学生选修课程系统设计假定有 n 门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于 60 )自由选课。试设计一选修课程系统,使之能提供以下功能:系统以菜单方式工作课程信息录入功能 ( 课程信息用文件保存 ) --输入课程信息浏览功能--输出查询功能: ( 至少一种查询方式 ) --算法
按学分查询按课程性质查询
系统进入画面 ( 静态或动画 )学生选修课程 ( 可选项 )
参考设计题目四:图书信息管理系统设计图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:系统以菜单方式工作图书信息录入功能 ( 图书信息用文件保存 ) --输入图书信息浏览功能--输出查询或排序功能: ( 至少一种查询方式 ) --算法
按书名查询按作者名查询
系统进入画面 ( 静态或动画 )图书信息的删除与修改 ( 可选项 )
设计要求与设计报告设计要求
可自己选定题目 , 但至少包含五个功能模块模块化程序设计锯齿型书写格式必须上机调试通过
实习报告语言简练,条理清楚,图表规范程序设计组成框图、流程图模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施源程序清单和执行结果(软盘):清单中应有足够的注释
图形设计§ 1 显示系统
显示器: CRT (阴极射线管)与控制电路组成适配器(图形卡): CPU 与显示器的接口,由寄存器组、存储器和控制电路组成
主机 图形控制器 显示存储器 显示控制器适配器
CRT
参考书: C 高级实用程序设计 王士元 清华大学出版社
将要显示的字符和图形以数字形式存储在卡上的视频 RAM 中,再转换成视频模拟信号传送给相应的显示器
显示模式文本模式:显示缓冲区中存放显示字符的代码( AS
CII码或汉字机内码),及字符的属性,显示屏幕按字符分成若干行、列,如 80 列 25 行图形模式:显示缓冲区中存放显示屏幕上每点(象素)的颜色或灰度值,显示屏幕按象素分成若干行、列,如 640480
一般开机后的模式都是 80 ×25 的文本模式
§ 2 Turbo C绘图Turbo C支持的适配器和图形模式
x
y
(0,0)
分辨率 :640 480
(0,0)
(0,0)(20,50)
(639,479)
(400,150)
图形库文件与图形头文件 graphics.lib 与 graphics.h图形显示的坐标与象素
适配器 模式 分辨率 颜色数 标识符CGA(彩色图形适配器)
EGA(增强图形适配器)VGA(视频图形阵列)
0 320 200 4 CGAC0
4 640 200 2 CGAHI
1 320 200 4 CGAC12 320 200 4 CGAC23 320 200 4 CGAC3
0 640 200 16 EGAL01 640 350 16 EGAHI
0 640 200 16 VGAL01 640 350 16 VGAMED2 640 480 16 VGAHI
图形系统的初始化图形系统初始化函数
void initgraph(int *driver,int *mode,char *pathtodriver)其中;
driver—— 显示适配器驱动程序的枚举变量mode—— 图形模式(模式号或模式标识符)pathtodriver——适配器驱动程序的寻找路径,“”表示在当前目录下 (*.BGI)
enum graphics_driver{DETECT,CGA,MCGA,EGA,EGA64,………,VGA,PC3270};
DETECT—— 自动检测所用显示适配器的类型,将相应的驱动程序装入,并将其最高显示模式作为当前显示模式
使用图形方式时先进行图形系统初始化,检测或设置指定的图形模式
#include <graphics.h>main(){ int driver=DETECT , mode; initgraph(&driver,&mode, “”); ………. closegraph();}
initgraph(&driver,&mode, “d:\\tc\\bgi”);
#include <graphics.h>main(){ int driver=VGA; int mode=VGAHI; initgraph(&driver,&mode, “”); ………. closegraph();}
将指定模式的驱动程序 (*.GBI)从当前路径下调入内存
关闭图形系统回到文本模式
图形程序的独立运行问题为使图形方式的 C源程序能够脱离 TC环境下运行,应对EGAVGA 显示器的驱动程序 .BGI 转换成 .OBJ 文件 : C:\TC\BGIOBJ EGAVGA然后 ,将 EGAVGA.OBJ 与 GRAPHICS.LIB 进行连接 : C:\TC\TLIB LIB\GRAPHICS.LIB+EGAVGA.OBJ程序中 ,initgraph() 调用前要用 registerbgidriver()进行登记 : registerbgidriver(EGAVGA_driver);
清屏和恢复显示方式函数void cleardevice(void);void closegraph(void);
基本图形函数画点: putpixel() getpixel()坐标移动: moveto() moverel() getx() gety()画线: line() lineto() linerel()画矩形和条形图: rectangle() bar()椭圆、圆、圆弧和扇形: ellipse() circle() arc() piesl
ice()颜色控制函数
设调色板: setpalette()设背景色: setbkcolor()设绘图色: setcolor()
关闭图形系统回到文本模式
颜色值 颜色名 颜色 颜色值 颜色名 颜色0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BLACK
BLUE
GREEN
CYAN
RED
MAGENTA
BROWN
LIGHTGRAY
DARKGRAY
LIGHTBLUE
LIGHTGREEN
LIGHTCYAN
LIGHTRED
LIGHTMAGENTA
YELLOW
WHITE
黑蓝绿青红
洋红棕
浅灰
深灰淡蓝淡绿淡青淡红
淡洋红黄白
设定线型函数 : setlinestyle()填充函数
设定填充模式: setfillstyle() 常用函数: bar3d() sector() fillellipse() fillpoly()
屏幕操作函数屏幕图象存储与显示: getimage() putimage() image
size()视口函数
setviewport()clearviewport()
图形方式下的文本输出文本输出: outtext() outtextxy()定义文本字型: settextstyle()
文本的屏幕输出#include <conio.h>屏幕坐标
( 1,1 )
(80,25)
文本方式控制函数void textmode(int newmode);Turbo C支持 5 种文本显示方式
方式 方式名 行列和颜色0 BW40 40 25 黑白1 C40 40 25 彩色2 BW80 80 25 黑白3 C80 80 25 彩色7 MONO 80 25 单色-1 LASTMODE 上一次的显示方式
文本方式下颜色控制函数文本颜色 textcolor()文本背景 textbackground()文本属性 textattr()
BLINK R G B I R G B
背景色 字符色闪烁加亮
字符显示亮度控制函数highvideo()lowvideo()normvideo()
窗口设置与文本输出函数window()cprintf()cputs()putch()
清屏与光标操作函数clrscr()clreol()delline()gotoxy() wherex() wherey()
屏幕文本移动与存取函数movetext()gettext()puttext()
菜单及其设计要点菜单作用:由若干任务项组成的画面(界面),选择一项按键确定后,即执行相应的功能菜单显示方式:文本方式菜单与图形方式菜单菜单种类:固定式菜单、弹出式菜单,下拉式菜单
optmenu.cpopdown.ctext_men.c
menu_s.cmenu_gra.cplane_e.c
菜单设计要点:菜单窗口图象的存储与显示新的窗口出现时,会覆盖原窗口的区域可事先保存要覆盖的区域,新窗口消失后,再恢复原区域的显示
图形方式: getimage() putimage() imagesize() malloc()文本方式: gettext() puttext()
菜单窗口和菜单项的生成生成背景图象,在指定位置显示菜单项文字
光条的生成光条的产生及光条在光标键的控制下而移动(保存与再现)键识别当按下菜单上的选项(如:功能键或光标移动键)时,根据键值转入相应的功能处理菜单的连接功能执行小程序可以嵌入在菜单中,大程序做成功能模块,根据键码直接调用