1 / 31

C 语言综合编程训练

C 语言综合编程训练. C 程序. 源程序 1. ……. 源程序 2. ……. 源程序 n. 预编译命令. 函数 1. ……. 函数 n. 说明部分. 执行部分. C 程序组成. 开发方法 : 自上向下,逐步细化,模块化设计,结构化编码. 五 子 棋 游 戏 程 序. 一个综合实例的分析. 五 子 棋 游 戏 程 序. 一个综合实例的分析. 一般来说 , 开发一个软件要经过以下步骤 :. 确定软件的功能. 定义核心数据结构. 对整个软件进行功能模块划分. 编写程序实现各功能模块. 对源程序进行编译和调试 , 形成软件产品.

clio-moreno
Download Presentation

C 语言综合编程训练

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C语言综合编程训练

  2. C程序 源程序1 …… 源程序2 …… 源程序n 预编译命令 函数1 …… 函数n 说明部分 执行部分 C程序组成 开发方法: 自上向下,逐步细化,模块化设计,结构化编码

  3. 五 子 棋 游 戏 程 序 一个综合实例的分析

  4. 五 子 棋 游 戏 程 序 一个综合实例的分析 一般来说,开发一个软件要经过以下步骤: 确定软件的功能 定义核心数据结构 对整个软件进行功能模块划分 编写程序实现各功能模块 对源程序进行编译和调试,形成软件产品 查看源程序

  5. 功 能 分 析 五子棋棋盘 两位玩家交替行棋 五子相连判定赢棋 查看源程序

  6. 定义核心数据结构 定义char gChessBoard[19][19];表示棋盘 棋盘上每个交叉点有三种状态 当前光标位置表示 struct point { int x; int y; }; 查看源程序

  7. 画棋盘 • 显示提示信息 • 棋盘置空 接收,处理用户输入,直至: • 分出胜负 • 按退出键 • 判断落子键有效性 • 更新数组与棋盘显示 • 判断是否走成五子相连 • 更新全局变量gCursor • 移动光标至新位置 程序的模块划分 查看源程序

  8. 程 序 的 编 制 细 节 定义核心数据结构 初始化 接收按键 移动光标 落子与判定胜负 main()函数 程序中用到的库函数介绍 查看源程序

  9. 程 序 的 编 制 细 节 程序中用到的库函数 bioskey textmode clrscr putch cputs gotoxy textcolor delay sound 与nosound

  10. 用 户 手 册 查看源程序

  11. 设计任务 • 系统以菜单方式工作(文本菜单或图形菜单) • 输入数据模块,数据用文件保存 • 输出数据模块,数据用文件保存 • 基本算法运用模块(排序、查找、插入、比较算法中至少包含一种) • 系统进入画面(静态或动画) • 系统其它功能实现(任选)

  12. 参考设计题目一:职工信息管理系统设计 职工信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能: • 系统以菜单方式工作 • 职工信息录入功能(职工信息用文件保存)--输入 • 职工信息浏览功能 --输出 • 查询或排序功能:(至少一种查询方式) --算法 • 按工资查询 • 按学历查询等 • 系统进入画面(静态或动画) • 职工信息删除、修改功能(任选项)

  13. 参考设计题目二:飞机订票系统设计 假定民航机场共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额。试设计一民航订票系统,使之能提供下列服务: • 系统以菜单方式工作 • 航班信息录入功能(航班信息用文件保存)--输入 • 航班信息浏览功能--输出 • 查询航线:(至少一种查询方式)--算法 • 按航班号查询 • 按终点站查询 • 系统进入画面(静态或动画) • 承办订票和退票业务(可选项)

  14. 参考设计题目三:学生选修课程系统设计 假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供以下功能: • 系统以菜单方式工作 • 课程信息录入功能(课程信息用文件保存)--输入 • 课程信息浏览功能--输出 • 查询功能:(至少一种查询方式)--算法 • 按学分查询 • 按课程性质查询 • 系统进入画面(静态或动画) • 学生选修课程(可选项)

  15. 参考设计题目四:图书信息管理系统设计 图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能: • 系统以菜单方式工作 • 图书信息录入功能(图书信息用文件保存)--输入 • 图书信息浏览功能--输出 • 查询或排序功能:(至少一种查询方式)--算法 • 按书名查询 • 按作者名查询 • 系统进入画面(静态或动画) • 图书信息的删除与修改(可选项)

  16. 设计要求与设计报告 • 设计要求 • 可自己选定题目,但至少包含五个功能模块 • 模块化程序设计 • 锯齿型书写格式 • 必须上机调试通过 • 实习报告 • 语言简练,条理清楚,图表规范 • 程序设计组成框图、流程图 • 模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等) • 调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施 • 源程序清单和执行结果(软盘):清单中应有足够的注释

  17. 适配器 图形 控制器 显示 存储器 显示 控制器 CRT 主机 • 参考书:C高级实用程序设计 王士元 清华大学出版社 图形设计 • 1 显示系统 • 显示器:CRT(阴极射线管)与控制电路组成 • 适配器(图形卡):CPU与显示器的接口,由寄存器组、存储器和控制电路组成 将要显示的字符和图形以数字形式存储在卡上的视频RAM中, 再转换成视频模拟信号传送给相应的显示器

  18. 显示模式 • 文本模式:显示缓冲区中存放显示字符的代码(ASCII码或汉字机内码),及字符的属性,显示屏幕按字符分成若干行、列,如80列25行 • 图形模式:显示缓冲区中存放显示屏幕上每点(象素)的颜色或灰度值,显示屏幕按象素分成若干行、列,如640480 一般开机后的模式都是80 ×25的文本模式

  19. 适配器 模式 分辨率 颜色数 标识符 2 1 0 1 0 1 2 3 0 4 320 200 640 200 640 350 320 200 320 200 640 350 640 480 320 200 640 200 640 200 4 4 16 16 4 16 2 16 16 4 CGAC0 CGAHI CGAC1 CGAC2 CGAC3 VGAMED VGAL0 EGAHI EGAL0 VGAHI CGA (彩色图形 适配器) EGA (增强图形 适配器) (0,0) x (20,50) (0,0) VGA (视频图形 阵列) (0,0) (400,150) y (639,479) 分辨率:640  480 • 2 Turbo C绘图 • Turbo C支持的适配器和图形模式 • 图形库文件与图形头文件 graphics.lib与graphics.h • 图形显示的坐标与象素

  20. 使用图形方式时先进行图形系统初始化, 检测或设置指定的图形模式 • 图形系统的初始化 • 图形系统初始化函数 • void initgraph(int *driver,int *mode,char *pathtodriver) • 其中; • driver——显示适配器驱动程序的枚举变量 • mode——图形模式(模式号或模式标识符) • pathtodriver——适配器驱动程序的寻找路径,“”表示在当前目录下(*.BGI) • enum graphics_driver{DETECT,CGA,MCGA,EGA,EGA64,………,VGA,PC3270}; • DETECT——自动检测所用显示适配器的类型,将相应的驱动程序装入,并将其最高显示模式作为当前显示模式 

  21. #include <graphics.h> main() { int driver=VGA; int mode=VGAHI; initgraph(&driver,&mode, “”); ………. closegraph(); } 将指定模式的驱动程序 (*.GBI) 从当前路径下调入内存 关闭图形系统回到文本模式 initgraph(&driver,&mode, “d:\\tc\\bgi”); #include <graphics.h> main() { int driver=DETECT,mode; initgraph(&driver,&mode, “”); ………. closegraph(); }

  22. 图形程序的独立运行问题 为使图形方式的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);

  23. 清屏和恢复显示方式函数 • void cleardevice(void); • void closegraph(void); • 基本图形函数 • 画点:putpixel() getpixel() • 坐标移动:moveto() moverel() getx() gety() • 画线:line() lineto() linerel() • 画矩形和条形图:rectangle() bar() • 椭圆、圆、圆弧和扇形:ellipse() circle() arc() pieslice() • 颜色控制函数 • 设调色板:setpalette() • 设背景色:setbkcolor() • 设绘图色:setcolor()   关闭图形系统回到文本模式   

  24. 颜色值 颜色值 颜色名 颜色 颜色名 颜色 深灰 黑 0 8 DARKGRAY BLACK 淡蓝 蓝 9 1 LIGHTBLUE BLUE 淡绿 绿 10 2 LIGHTGREEN GREEN 淡青 青 11 3 LIGHTCYAN CYAN 淡红 红 12 4 LIGHTRED RED 淡洋红 洋红 13 5 LIGHTMAGENTA MAGENTA 棕 黄 14 6 YELLOW BROWN 浅灰 白 15 7 LIGHTGRAY WHITE

  25. • 设定线型函数: setlinestyle() • 填充函数 • 设定填充模式:setfillstyle() • 常用函数:bar3d() sector() fillellipse() fillpoly() • 屏幕操作函数 • 屏幕图象存储与显示: getimage() putimage() imagesize() • 视口函数 • setviewport() • clearviewport()     • 图形方式下的文本输出 • 文本输出:outtext() outtextxy() • 定义文本字型:settextstyle()

  26. (1,1) (80,25) 文本的屏幕输出 • #include <conio.h> • 屏幕坐标

  27. 方式 方式名 行列和颜色 0 BW40 40 25 黑白 1 C40 40 25 彩色 2 BW80 80 25 黑白 3 C80 80 25 彩色 7 MONO 80 25 单色 上一次的显示方式 -1 LASTMODE • 文本方式控制函数 • void textmode(int newmode); • Turbo C支持5种文本显示方式

  28. 加亮 R G B I R G B BLINK 闪烁 背景色 字符色 • 文本方式下颜色控制函数 • 文本颜色 textcolor() • 文本背景 textbackground() • 文本属性 textattr() • 字符显示亮度控制函数 • highvideo() • lowvideo() • normvideo()

  29. 窗口设置与文本输出函数 • window() • cprintf() • cputs() • putch() • 清屏与光标操作函数 • clrscr() • clreol() • delline() • gotoxy() wherex() wherey() • 屏幕文本移动与存取函数 • movetext() • gettext() • puttext()

  30. 菜单及其设计要点 • 菜单作用:由若干任务项组成的画面(界面),选择一项按键确定后,即执行相应的功能 • 菜单显示方式:文本方式菜单与图形方式菜单 • 菜单种类:固定式菜单、弹出式菜单,下拉式菜单 optmenu.c popdown.c text_men.c menu_s.c menu_gra.c plane_e.c

  31. 菜单设计要点: • 菜单窗口图象的存储与显示 新的窗口出现时,会覆盖原窗口的区域 可事先保存要覆盖的区域,新窗口消失后,再恢复原区域的显示 • 图形方式:getimage() putimage() imagesize() malloc() • 文本方式:gettext() puttext() • 菜单窗口和菜单项的生成 生成背景图象,在指定位置显示菜单项文字 • 光条的生成 光条的产生及光条在光标键的控制下而移动(保存与再现) • 键识别 当按下菜单上的选项(如:功能键或光标移动键)时,根据键值转入相应的功能处理 • 菜单的连接 • 功能执行 小程序可以嵌入在菜单中,大程序做成功能模块,根据键码直接调用

More Related