1、1,“C语言课程设计”,班级:电气信息10级19、20、21、24、25、26、27 日期:14周-19周(详见各班的时间安排表) 地点:民主楼136,2,“C语言课程设计”,学时安排(共计40学时):,课程设计上课、选题、了解设计任务(2学时); 查资料、整体方案设计(4学时) 程序设计、调试与验收(26学时) 写报告(8学时),3,“C语言课程设计”任务书,课程设计要求及注意事项,自觉遵守实验室各项规章制度。 上机前应预习并编写好上机程序,否则不允许进机房。 程序设计任务完成后, 由老师验收并评分;,4,“C语言课程设计”任务书,成绩评定,每天考勤记录(占20%) 程序设计任务完成后, 由
2、老师验收并评定的成绩(占50%) 设计报告(占30%),5,“C语言课程设计”任务书,参考书,UCDOS中文操作系统 C语言程序设计 C语言程序设计与上机操作 C语言设计界面大全 C高级实用程序设计,6,“C语言课程设计”任务书,课程设计的目的用要求,提高同学们独立完成程序设计、编写、调试、测试应用程序及编写文档的能力 学习并掌握UCDOS特殊显示功能中的文字显示,并运用到C语言程序设计中。,7,“C语言课程设计”任务书,课程设计的目的用要求,利用Turbo C环境,独立完成一个管理系统,通过调试实现系统所有的功能; 编写设计说明书,内容包括:课程设计的目的、意义;设计任务;总体设计方案;软件
3、设计(各功能模块的流程图及详细的文字说明);软件系统的使用说明;收获、体会等;参考文献。内容不得少于设计说明书专用纸20页,书写要整洁、规范,装订成册。,8,“C语言课程设计”任务书,模块化程序设计,一个简单程序的功能可以分为三个部分, 即数据输入部分、运算处理部分、结果输出部分, 也就是将问题分成了三个模块, 对于较为复杂问题的大型程序开发应采取“自顶向下, 逐步细化和模块化”设计方法, 模块化程序设计是结构化程序设计方法在开发大型程序中的应用。,9,“C语言课程设计”任务书,模块化程序设计,所谓“自顶向下, 逐步逐块求精求细”就是在对于给定问题进行透彻的了解和详细的分析基础上,把问题分解成
4、若干个按顺序执行的逻辑部分,叫做“模块”,每个子任务如果仍很复杂,还可以再分解为若干个子任务,如此逐层分解。,10,“C语言课程设计”任务书,模块化程序设计,当一个程序的规模比较庞大,采用 “菜单”技术能方便的管理程序的各个功能。具体做法是:程序首先把各功能说明及相应代号以菜单形式显示在屏幕上,然后由用户在键盘上输入所选的功能代号,程序自动转去调用相应的功能模块进行处理。,11,“C语言课程设计”任务书,课程设计内容,职工档案管理系统(学号:15) 通讯录管理系统(学号:610) 图书馆理系统(学号:1115) 职工工资管理系统(学号:1620) 学籍管理系统(学号:2125) 教学设备管理系
5、统(学号: 26号以后),12,“C语言课程设计”任务书,管理系统功能(以学籍管理系统为例),输入记录:将每一个学生的姓名、学号以及数学、物理、化学、英语、政治课程的成绩作为一个记录。该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。 显示记录:根据用户提供的记录或者根据学生姓名显示一个或几个学生的各门功课的成绩和平均成绩。,13,“C语言课程设计”任务书,管理系统功能(以学籍管理系统为例),修改记录:可以对数据文件的任意记录的数据进行修改,并在修改前后对记录内容进行显示。 删除记录:可删除数据文件中的任一记录, 并且还能恢复被删除的记录。,14,“C语言课程设计”任务书,管理系统功
6、能(以学籍管理系统为例),统计: (A)计算各门课程全班平均成绩及总成绩, (B) 统计其课程全班得:100分、 9099分、8089分、7079分、6069分、59分以下学生人数及全班总人数的百分比。(C)按字符表格形式打印全部学生的平均成绩。(包括各课总的平均成绩) 。 保存和打开文件功能。,15,“C语言课程设计”任务书,管理系统功能(以学籍管理系统为例),各功能可用多个源文件分开调试,并通过工程文件或文件包含的形式组全。程序运行结果如下表所示:(至少8条记录),成 绩 表,16,“C语言课程设计”任务书,UCDOS特显功能,UCDOS的特殊显示功能,是指在屏幕上按行显示1616点阵汉字
7、和字符之外,还可以显示各种不同大小, 不同字体的矢量或曲线汉字及字符, 以及在屏幕上画点、线、矩形和圆等,甚至于使用特殊功能演奏背景音乐,保存并再现图象等,从而以图形方式丰富了软件画面,增强了屏幕显示效果。,17,“C语言课程设计”任务书,UCDOS特显功能,特殊显示控制命令中的格式如下:在C语言环境下,printf(“16”);例如:显示高450320点的“汉字”(选用3#字库,前景色为灰色,背景色为蓝色)。调用如下:printf(“16450,320=3(7)1汉字“);,18,图形设计,1 显示系统 显示器:CRT(阴极射线管)与控制电路组成 适配器(图形卡):CPU与显示器的接口,由寄
8、存器组、存储器和控制电路组成,将要显示的字符和图形以数字形式存储在卡上的视频RAM中, 再转换成视频模拟信号传送给相应的显示器,19,显示模式 文本模式:显示缓冲区中存放显示字符的代码(ASCII码或汉字机内码),及字符的属性,显示屏幕按字符分成若干行、列,如80列25行 图形模式:显示缓冲区中存放显示屏幕上每点(象素)的颜色或灰度值,显示屏幕按象素分成若干行、列,如640480,一般开机后的模式都是80 25的文本模式,20,2 Turbo C绘图 Turbo C支持的适配器和图形模式,21,2 Turbo C绘图 Turbo C支持的适配器和图形模式 图形库文件与图形头文件图形显示的坐标与
9、象素,graphics.lib与graphics.h,22,图形系统的初始化 图形系统初始化函数 void initgraph(int *driver,int *mode,char *pathtodriver) 其中; driver显示适配器驱动程序的枚举变量 mode图形模式(模式号或模式标识符) pathtodriver适配器驱动程序的寻找路径,“ ”表示在当前目录下(*.BGI) enum graphics_driverDETECT,CGA,MCGA,EGA,EGA64,VGA,PC3270; DETECT自动检测所用显示适配器的类型,将相应的驱动程序装入,并将其最高显示模式作为当前显示
10、模式,使用图形方式时先进行图形系统初始化, 检测或设置指定的图形模式,23,#include main() int driver=VGA;int mode=VGAHI;initgraph( ,将指定模式的驱动程序 (*.GBI) 从当前路径下调入内存,关闭图形系统回到文本模式,24,清屏和恢复显示方式函数 void cleardevice(void); void closegraph(void); 基本图形函数 画点:putpixel() getpixel() 坐标移动:moveto() moverel() getx() gety() 画线:line() lineto() linerel()
11、画矩形和条形图:rectangle() bar() 椭圆、圆、圆弧和扇形:ellipse() circle() arc() pieslice() 颜色控制函数 设调色板:setpalette() 设背景色:setbkcolor() 设绘图色:setcolor(),关闭图形系统回到文本模式,25,26,文本的屏幕输出,#include 屏幕坐标,27,文本方式控制函数 void textmode(int newmode); Turbo C支持5种文本显示方式,28,窗口设置与文本输出函数 window() cprintf() cputs() putch() 清屏与光标操作函数 clrscr()
12、clreol() delline() gotoxy() wherex() wherey() 屏幕文本移动与存取函数 movetext() gettext() puttext(),29,附文字显示命令一览表1,30,文字显示命令实例,printf(“16-100|200D希望“);将显示文字坐标值于(x,y)=(100,200),并显示4848点阵宋体字“希望”。,31,附特殊显示字型表2,32,附特殊显示字型表3,33,程序结构,头文件说明; 定义结构类型; 定义全局变量; 定义、编写记录(数据)输入函数; 定义、编写记录(数据)显示函数; 定义、编写记录(数据)修改函数; 定义、编写记录(数
13、据)查找函数; 定义、编写记录(数据)删除函数; 定义、编写记录(数据)恢复函数; 定义、编写记录(数据)添加函数; 定义、编写记录(数据)统计函数; 定义、编写数据文件保存函数; 定义、编写打开数据文件函数;,34,主函数结构,main() char i;int drive=DETECT,mode;initgraph( / 等待击键,35,主函数结构,for( ; ;) /循环执行功能菜单 cleardevice();setbkcolor(9);printf(“16-80|145,36=4(2)9* * * *菜单* * * *“);printf(“16-100|5048,48=3(7)9a
14、输入“);printf(“16-400|5048,48=3(7)9b显示“);printf(“16-100|11048,48=3(7)9c修改“);printf(“16-400|11048,48=3(7)9d查找“);printf(“16-100|17048,48=3(7)9e删除“);printf(“16-400|17048,48=3(7)9f恢复“);printf(“16-100|23048,48=3(7)9g添加“);printf(“16-400|23048,48=3(7)9h统计“);,36,主函数结构,printf(“16-100|29048,48=3(7)9i保存“); print
15、f(“16-400|29048,48=3(7)9j打开“); printf(“16-100|35048,48=3(7)9k退出“); printf(“16-350|40024,24=3(7)4请选择a至j“); i=getch(); if(i=k) break; else switch(i) casea:调用记录输入函数;break;caseb: 调用记录显示函数;break;casec: 调用记录修改函数;break;cased: 调用记录查找函数;break;,37,主函数结构,casee: 调用记录删除函数;break;casef: 调用记录恢复函数;break;caseg: 调用记录添加函数; break;caseh: 调用记录统计函数;break;casei: 调用数据保存函数;break;casej: 调用数据文件打开函数; break; ,