当前位置:舍宁秘书网 > 专题范文 > 公文范文 > 2023年《高级语言程序设计》课程设计大纲4篇

2023年《高级语言程序设计》课程设计大纲4篇

时间:2024-07-16 09:00:03 来源:网友投稿

《高级语言程序设计》课程设计大纲《C语言程序设计教程课程设计》计划类别:课程设计适用于三年制专科计算机应用专业学分:1周数:1一、设计目的与要求《高级语言程下面是小编为大家整理的《高级语言程序设计》课程设计大纲4篇,供大家参考。

《高级语言程序设计》课程设计大纲4篇

《高级语言程序设计》课程设计大纲篇1

《C语言程序设计教程课程设计》计划 类别:课程设计

适用于三年制专科计算机应用专业 学分:1 周数:1

一、设计目的与要求

《高级语言程序设计课程设计》是《高级语言程序设计》课程的实践环节,其教学目的是通过一些中小规模程序的编程,使学生对c语言程序设计的基本规则与方法有比较全面的理解和认识,熟练掌握高级语言程序设计技术,为以后学习更高层次的程序设计和软件开发奠定坚实基础。

通过本课程设计,应达到下列基本要求: 能够结合c语言来理解程序设计的基本概念;

掌握用c语言解决问题的基本方法和步骤,能够熟练地使用c语言编写中小型应用程序; 熟练掌握c语言编程规则,掌握函数的应用方法和编写; 熟练掌握面向过程程序设计方法; 掌握结构化程序设计思想和方法; 培养和提高学生的程序调试能力;

培养学生查阅手册、图表和文献资料的能力; 培养学生撰写报告文档的能力。

二、课程设计题目

每个题目的限选人数根据班级总人数平均后确定,但要求同一题目的学生独立完成设计题目,以下10个题目任选其一。1。职工信息管理系统设计 1.1问题描述

试设计一职工信息管理系统,职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)1.2基本要求

1.系统以菜单方式工作(2.职工信息录入功能(3.职工信息浏览功能(4.查询和排序功能:(至少一种查询方式)--算法(((1)按工资查询((2)按学历查询等

5.职工信息删除、修改功能(任选项)(2.图书信息管理系统设计 1.1问题描述

试设计一图书信息管理系统,图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。1.2基本要求

1.系统以菜单方式工作(2.。图书信息录入功能(3.。图书信息浏览功能(4.。查询和排序功能:(至少一种查询方式)--算法(((1)按书名查询((2)按作者名查询

5.。图书信息的删除与修改(3。学生信息管理系统设计 3.1问题描述

试设计一学生信息管理系统,学生信息包括:学号、姓名、年龄、性别、出生年月、地址、电话、E-mail等。3.2基本要求

1.。系统以菜单方式工作 2.。学生信息录入功能 3.。学生信息浏览功能 4.。查询、排序功能(1)按学号查询(2)按姓名查询

5.。学生信息的删除与修改 4。学生选修课程系统设计 4.1问题描述

试设计一选修课程系统,假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。4.2基本要求

1.系统以菜单方式工作(2.课程信息录入功能(3.课程信息浏览功能(4.查询功能:(至少一种查询方式)--算法((1)按学分查询((2)按课程性质查询(5.学生选修课程(可选项)(5。销售管理系统 5.1问题描述

某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:(1)销售员的代号,(2)产品的代号。(3)这种产品的当天的销售额。每位销售员每天可能上缴0-5张便条。假设,收集到了上个月的所有便条,5.2基本要求

编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。1.计算上个月每个人每种产品的销售额。

2.按销售额对销售员进行排序,输出排序结果(销售员代号)

3.统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)4.输出统计报表

销售统计报表能反映出:销售员代号 产品代号 销售之和 每种产品之和 总和 6.学生成绩管理 6.1问题描述 对学生成绩进行管理,学生信息如下: 现有学生成绩信息,内容如下 姓名学号语文数学英语

张明明

01

李成友

02

张辉灿

03

王露

04

陈东明

05

„。.。.。.。… 6.2基本要求

实现学生信息管理,软件的入口界面应包括如下几个方面: 1.系统以菜单方式工作

2.学生信息数据能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息

3.查询时可实现按姓名查询、按学号查询

4.成绩统计:输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。

5.能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)6.学生可自动增加新功能模块(视情况可另外加分)7.学生成绩管理 7.1问题描述

学生成绩进行管理,学生信息包括:学号、姓名、班级、课程

1、课程

2、课程

3、课程

4、学期。

7.2基本要求

1.系统以菜单方式工作

2.能按学期、按班级完成对学生成绩的录入、修改

3.能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序 4.能查询学生成绩,不及格科目及学生名单

5.统计每门课100~85分、84~70、69~60分以上不及格的人数

6.从键盘上输入一个姓名或学号,能够查找是否是该班成员,若是,要求输出该生的全部信息

7.可以对任一学生的成绩、学号进行修改

8.可增添和删除任一学号学生的信息,增添和删除后仍能按学号排序 9.能按班级输出学生的成绩单 8.通讯录管理 8.1问题描述

设一个通信录由以下几项数据信息构成:

数据项类型

姓名字符串 地址字符串 邮政编码字符串 电话号码字符串 8.2基本要求 1.主要功能:

(1)能建立、查询、修改和增删学生通讯录(2)能够按多种方式进行查询 2.要求:界面友好,易于操作 9.图书管理系统 9.1问题描述

图书信息管理系统设计,图书信息包括:登录号、书名、作者名、存在状态、分类号、出版单位、出版时间、价格、借书人姓名、性别、学号等。信息描述: 9.2基本要求

1.系统以菜单方式工作 2.新进图书基本信息 3.图书信息浏览功能

4.图书基本信息的查询和排序功能:(至少一种查询方式)--算法 按书名查、按作者名查询

5.对撤消图书信息的删除删除与修改(可选项)(6. 为借书人办理注册

7.办理借书手续(非注册会员不能借书)8.办理还书手续

10.设计一个简单计算器 10.1问题描述

模拟windows操作系统中的计算器,能进行加减乘除等计算。10.2基本要求

1.显示计算器界面

2.当用户输入一个算式后,计算器显示计算结果,同时屏幕项部显示:continue? 如果用户此时按Y键,则继续输入下一个算式,否则,程序终止 3.可以多次响应用户的计算请求 11.。图书借还管理系统 11.1问题描述

对借还图书进行管理,图书被借阅,应记录借阅信息,同时图书的存库数量相应减少。还书时,应将图书数量相应增加,同时删除图书借阅信息。图书基本信息应包括:图书名称、图书编号、单价、作者、存库数量。借书人信息应包括姓名、性别、学号等。11.2基本要求

1.新进图书基本信息的输入 2.图书基本信息的查询 3.对撤消图书信息的删除 4.为借书人办理注册

5.办理借书手续(非注册会员不能借书)6.办理还书手续

12.用户登录程序设计 12.1问题描述

做一个密码验证程序,密码验证只有三次机会。12.2基本要求 1.有登录界面,用户输入密码时以*代替输出,用户登录成功后可以修改密码。2.可以有多个用户登录。

3.初次登录的密码有管理员设置。13.车票管理程序设计 13.1问题描述

一车站每天有n个发车班次,每个班次都有一班次号(1、2、3„n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如 班次发车时间起点站终点站行车时间额定载量已定票人数

8:00

郫县广汉

2

6:30

郫县成都

0.5

13.2基本要求

1.录入班次信息,可不定时地增加班次数据。

2.浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。

3.查询路线:可按班次号查询 ,可按终点站查询。4.售票和退票功能。

A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数。

B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数。5.至少采用文本菜单界面(如果能采用图形菜单界面更好)。

三、进度安排

第1天:分析所选题目,查阅相关资料,写出需求分析,确定系统功能,划分模块;设计算法、数据结构;

第2-3天:编制代码并调试; 第4天:检查学生程序;

第5天:提交源程序清单和课程设计报告,进行答辩。

四、设计方式

1.对于每个题目,应完成算法设计和简单的应用程序设计。

a)算法设计包括解题思路,模块划分和模块代码实现方法。附传统的流程图或N-S图。b)应用程序设计包括:编辑录入源程序;反复调试、排错、运行;借用软件工程的一些方法和技巧对程序进行测试。

2.编程量以满足基本要求即可,但必须调试通过,运行结果准确。3.设计完成后,需要写成一份课程设计报告(A4纸打印出来),体现课程设计所做工作。4.结果形式:提交调试无误的源程序代码,课程设计报告一份。

五、成绩评定标准

学生成绩以优、良、中、及格和不及格5个等级评定。1.学生编写的实际软件和运行结果,占总成绩40% 2.设计报告,占总成绩40% 3.教师提问,占总成绩10% 4.出勤,占总成绩10%

六、课程设计报告要求

按照软件工程及应用程序系统设计步骤详细叙述课程设计题目的完成过程。课程设计报告的格式要求: 封面

洛阳理工学院C语言课程设计报告 题目 院系 班级 姓名 指导老师 年月日

2.课程设计内容:

(1)问题描述:描述要求编程解决的问题。(本课题具有哪些功能,做了哪些工作、用了哪些方法技巧,实现结果如何)

(2)基本要求:给出程序要达到的具体的要求

(3)所设计的应用程序运行所需要的软件、硬件支持环境。(4)算法分析(设计思路),描述解决相应问题算法的设计思想。

(5)功能模块划分,每个模块对应的函数、每个函数功能及参数设计情况说明。(6)系统流程图

(7)实现步骤(要求有详细的文字表述):

如安装 VC;熟悉课题;查找资料;需求分析;设计框图;录入程序;

语法排错;逻辑排错;程序测试;程序运行;数据记录;写课题设计报告等。(8)源程序完整代码以及原始数据、测试数据、输入数据及其运行结果记录。(9)简要总结及自我评价。

(10)源程序:给出所有源程序清单,要求程序有充分的注释语句,至少要注释每个函数参数的含义和函数返回值的含义。(11)参考文献 参考文献书写模板:

[1] ***。C程序设计(第三版)。北京:清华大学出版社,2005 [2] ***.C程序设计题解与上机指导(第三版).北京:清华大学出版社,2005 [3] ***主编。C语言程序设计实验与实训指导及题解。北京: 高等教育出版社,2005 [4] ***。C语言程序设计。北京:清华大学出版社,2008 [5] 王静, 武春岭编著.C语言程序设计基础习题集.北京:中国水利水电出版社,2008 [6] 黄维通,马力妮等编著。C语言程序设计习题解析与应用案例分析。北京: 清华大学出版社,2004

七、实习时间、地点及班级人数

时间:从2010年6月21日至6月25日,共五天时间。地点:洛阳理工学院西区实验楼B计算机房 人数:Z090551一个班40人

《高级语言程序设计》课程设计大纲篇2

《高级语言程序设计》课程设计任务书

一、课程设计的目的

高级语言程序设计是本科工科类各专业的重要基础课,课程以影响深远的、传统的、面向过程的优秀编程语言C语言为基础,学习程序设计的基本概念和方法,通过本门课程学习,应使同学掌握高级语言的基本原理,熟练掌握程序设计的基础知识、基本概念;掌握程序设计的思想和编程技巧。

课程设计是在学生已经具备了使用C语言编写简单的应用程序的能力,为使学生对C语言有更全面的理解,进一步提高运用C语言编程解决实际问题的能力,通过提出算法、指定输入输出来设计一个解决方案。经过该实践环节,培养学生的探索精神和创新能力。通过答辩训练学生的综合表达能力。

二、课程设计教学的基本内容和要求

1、课程设计教学基本内容

高级语言课程设计不仅是对程序设计能力的综合锻炼,更是对团队合作、软件开发与项目管理过程的训练。因此,课程设计根据题目的难度由小组合作完成,每个小组1-4人。整个课程设计分为以下几个阶段进行:选题与开题、系统设计、系统编码实现、系统测试、撰写课程设计报告、系统评价与验收。

(1)选题与开题:题目可来自教师指定的参考题目,也可自由选题,特别是鼓励有创新性的题目或是在已知题目的基础上进行创新。

(2)系统设计:系统设计的任务是对所确定的题目从问题需求、数据结构、程序结构、难点及关键技术等方面进行分析,形成的系统设计方案,并进行详细的分工。

(3)系统编码实现:小组成员根据初步的系统设计方案,对系统编程实现。(4)系统测试:在各程序模块编码完成并集成后,就可以开始对整个系统进行测试。(5)撰写课程设计报告:完成文档整理,按照要求完成课程设计报告。(6)系统评价与验收:通过小组答辩的形式对程序的功能进行评价与验收。

2、课程设计教学的要求

参加本课程设计的学生,应当认真完成本课程设计的全部过程。并以最终课程设计成果来证明其独立完成各种实际任务的能力。从而反映出理解和运用本课程知识的水平和能力。具体如下:

(1)数据组织方面尽量使用到:数组、链表、结构体、文件;(2)程序结构方面做到函数调用,尽量采用指针运算;(3)代码编写规范,形成良好的编程习惯;

(4)程序须有一定的健壮性和必要的提示信息,考虑问题的多种可能和边界数据。(5)课设完成须进行答辩,提交课设报告电子稿、装订的打印稿。课设报告内容包括以下几个方面:

 程序的总体设计和算法分析。 程序流程图、函数说明  源程序代码清单  测试数据和测试过程记录  遇到的问题及解决方法分析  课程设计小结

三、课程设计的进度安排

系统整体设计和详细设计

1天 系统编码实现

1天 系统测试

1天 撰写课程设计报告

1天 演示软件和答辩

1天

四、课程设计的考核

评价是检测学生理解问题和解决问题能力的一个重要手段,教师将根据学生提交的课程设计报告,严格检查以下各项任务完成情况:

1、设计文档中要求项目是否齐全。

2、程序中运行时的屏幕提示信息是否准确:

如果在程序执行期间有足够的指导信息显示在屏幕上显示,这些用户文档可以是很简要的,也许只限于解释如何装入并运行程序。

3、问题和或任务的陈述(描述问题,而且问题是合理原始的、应当包括输入、输出及其预期范围)是否正确。

问题的解决方案采取由顶向下设计的形式,在适当的地方使用伪代码,把整个解决方案划分成若干模块。

5、程序完成后的代码应当加以注解。最少应清楚指出每一个模块。

6、用于检查程序的测试数据,或者对一个控制程序给出测试的例程。测试应考虑探索通过程序的几条路径,在合适的地方选择打印输出来。

7、程序的技术文档:必须包含函数的原型说明和所用变量的全体清单

8、程序顺利运行,结果正确;测试程序是否工作且满足设计指标并评价其效率。

五、指导书、参考资料

《C程序设计》 谭浩强编 清华大学出版社

《C程序设计思想与方法》 尹宝林编著 机械工业出版社

六、其他

《高级语言程序设计》课程设计大纲篇3

《高级语言程序设计》课程设计教学大纲

课程名称:高级语言程序设计课程设计

课程总学时:32 适用专业:广播电视工程、电子信息工程、电子科学与技术

课程类别:必修

一、课程设计任务与目的

《高级语言程序设计》课程是一门实践性较强的课程,课程设计环节是课程学习的重要组成,是课程教学的必经步骤。目的是培养学生实际操作技能和解决实际问题的能力。要求学生掌握C语言设计、调试、运行方法,获得用C语言解题的实际体会,加深对C语言的理解,得到C程序设计方法和技巧的训练,掌握C程序设计的全过程。通过课程设计的教学,使学生巩固和深化已学的理论知识,加强综合应用能力,训练学生掌握分析问题、解决问题的方法,培养较强的动手能力和一定的设计和调试能力。

二、课程设计基本内容与要求

鉴于课程设计的性质、要求和具体内容,对课程设计提出如下要求;

1、关于课题及选题

在课程设计任务书中列出了多个设计课题,每个课题都有相应的要求或说明。参加课程设计的学生首先要了解设计的任务,仔细思考各题的设计要求,然后根据自已的基础和能力情况从中选择一题。一般来说,选择课题应以在规定的时间内能完成,并能得到应有的锻炼为原则。

若学生对任务书中课题以外的相关课题较感兴趣,希望选作课程设计的课题时,应征得指导教师的认可,并写出明确的设计要求和说明。

2、关于设计的总要求

在设计时,要严格按照题意要求独立进行设计,不能随意更改。若确因条件所限,必须要改变课题要求时,应在征得指导教师同意的前提下进行。

3、验收

在课程设计完成后应由指导教师当场运行、验收,只有在验收合格后才能算设计部分的结束。

4、设计报告

课程设计结束后要写出课程设计报告,以作为整个课程设计评分的书面依据和存档材料。设计报告一般要以固定规格的纸张书写并装订,字迹及图形要清楚、工整(电子文档尤佳)。内容及要求如下:

(1)设计任务、要求及所用软件环境或工具。

(2)问题模型化描述以及求解算法的简要描述。

(3)设计的模块构成、各模块的简要说明、流程图、调用关系表。

(4)所设计软件的组成(程序文件和数据文件)及使用说明。

(5)设计总结和体会。

(6)验收情况。

三、课程设计设备与材料

计算机;Visual C++6.0或C-Free3.5或Turbo C++3.0软件。

四、考核方式与评分办法

1、学生按照实习计划和大纲完成实习教学任务,考试合格取得相应学分。

2、学生实习考核内容与成绩比例:实习态度与实习纪律占20%、业务能力与水平占40%、答辩与验收情况占20%,实习报告占20%。

3、无故不参加实习或实习全过程缺勤在三分之一及以上者,实习成绩视为不及格。

4、学生实习成绩按优秀、良好、中等、及格和不及格五级评定,原则上呈正态分布,严格控制优秀比例,一般优秀率不大于20%。

五、课程设计参考书

1、潭浩强.C语言程序设计.清华大学出版社.2000

2、廖湖声等.C语言程序设计案例教程.人民邮电出版社.2003

3、张仁杰 王风茂.《C语言程序设计实训教程》中国电力出版社.2004

执笔人:裘姝平

教研室:电子信息工程教研室 编制日期: 2008 年 9月

《高级语言程序设计》课程设计大纲篇4

汇编语言程序设计课程设计指导书

一、课程设计的目的

本课程设计是《汇编语言程序设计》课程的后继教学环节,其宗旨是使学生通过对一个较大型的、综合性的应用程序进行阅读、修改、添加功能等工作,对汇编语言程序设计有更进一步的认识,提高编程技巧和阅读理解复杂程序的能力。

二、课程设计的任务要求

根据所给的“Reader.asm”应用程序框架,在此基础上修改和添加功能。1.基本任务: 

   认真阅读“Reader.asm”源程序,理解程序每一条指令在程序中的作用; 用→、←键在窗口内左右移动文本;

用PgDn,PgUp键上下快速移动文本(每次移半帧); 设计专用键放大、缩小窗口,改变窗口位置。

2、扩展任务:   对文本内的Tab字符(ASCII码09H)进行处理:遇到Tab键,下一个字符显示在下一个表站开始处(每个6个字符一个表站);

设置状态行,显示当前文件名、文本位置(仿垂直滚动条)。

3、自行设计的其它任务:

三、课程设计报告的内容

1、课程设计题目名称、班级号、学号、学生姓名和课程设计起止日期(封面);

2、上海应用技术学院课程设计任务书(下发)3.课程设计目的和要求;

4、课程设计任务内容; 5.详细设计说明; 6.软件使用说明; 7.课程设计总结;

8、附录:1 参考文献 2 程序清单(电子版)。

四、课程设计详细设计说明及其它要求

1.2.3.4.5.6.分析原“Reader.asm”程序结构:每个模块说明,较大模块程序流程图; 对你已经实现的功能做详细的说明,并附上流程图及部分程序清单; 自己对该“文件阅读器”的进一步设想;

对于有设想但最终未实现的功能的大致编程思路的阐述; 论述在设计过程中遇到的并且对你具有启发性的问题; 交课程设计报告手写版,源程序交电子版。

五、评分标准

1、根据平时出勤情况和设计时的工作情况;

2、根据课程设计程序的完成情况,必须有可运行的软件。3.根据课程设计报告的质量。课程设计报告不能抄袭,抄袭判为不及格。4.在题目要求之外附加具有实用性的功能。

六、课程设计工作进度计划

星期一:课程设计介绍,源程序阅读理解,功能设计,程序编写。星期二:功能设计,程序编写。

星期三:程序编写与调试,课程设计报告撰写。星期四:程序编写与调试,课程设计报告撰写。

星期五:程序最终修改,课程设计报告撰写,提交报告并答辩。

七、主要参考资料

[1]杨文显.汇编语言程序设计简明教程.北京:电子工业出版社,2005

八、附录

《文本阅读器》汇编语言源程序清单

;Title: Assemble Program “Reader.asm”

;Read a file from disk, display it‟s contents on screen;Move the content on screen by up/down arrow keys;========================== MYDAT SEGMENT MAXLEN DW 1000;最大行数 INDEX DW 1000 DUP(?);行索引 LENCT DW 0;实际行数 CURLINE DW 0;当前页第一行行数 CCOUNT DW ?;文件总字符数

TOP DB 5;窗口左上角行数 LEFT DB 5;窗口左上角列数 WS DW 60;窗口宽度 HS DW 15;窗口高度 FG DB 17H;文字属性 FGB DB 1FH;窗口边框属性

MSG1 DB "File:$";输入文件名提示 MSG2 DB "File open error!$";打开文件出错时提示 MSG3 DB "File read error!$";读文件出错时提示 FILENA DB 80,?,80 DUP(?);输入文件名缓冲区

;定义功能键和相应的处理程序

;每个功能定义两个数据:扫描码,处理程序入口地址;该数据由DOSUB子程序使用

KEYSUB DW 48H, SUB1 , 50H, SUB2, 0

MYDAT ENDS

;==========================

BUFFER SEGMENT PARA DB 65535 DUP(?);文件缓冲区,文件最大为64K BUFFER ENDS

;==========================

SSEG SEGMENT STACK „STACK‟;堆栈段

DW 100 DUP(?)SSEG ENDS

;==========================

;宏定义 DISPINIT: 设置显示器显示方式 DISPINIT MACRO MOV AX,0003H;文本方式 25x80 INT 10H ENDM;----------;宏定义 PROMPT: 显示字符串 PROMPT MACRO OUTMSG LEA DX, OUTMSG MOV AH, 09H;INT 21H;ENDM;--------;宏定义KRYIN: 从键盘读入一个字符 KEYIN MACRO MOV AH,0;读键

INT 16H;AH中为扫描码

ENDM;==========================;代码段开始 CODE SEGMENT

ASSUME CS: CODE, DS: MYDAT, ES: BUFFER, SS: SSEG

START: MOV AX, MYDAT;装载DS,ES MOV DS, AX MOV AX, BUFFER MOV ES, AX

DISPINIT;显示方式初始化

CALL READFILE;读入文件

JC DONE

CALL CLIST;初始化索引行

CALL CLSCREEN;清屏

CALL CREWIN;创建窗口

CALL SHOWCUR;显示当前页

NEXT: KEYIN;进入主程序: 读键盘

CALL COMMAND;命令分析与处理

JNC NEXT;非x键继续循环

DONE: CALL CLSCREEN;清屏

MOV AX, 4C00H INT 21H;退出

;-------;子程序READFILE: 提示并读入文件名,将文件读入缓冲区 READFILE PROC PROMPT MSG1;CALL SIN;读入文件名

MOV AX, 3D00H MOV DX, OFFSET FILENA+2 INT 21H;打开文件(读)JC GETERR1;打开文件出错转GETERR1 PUSH DS PUSH ES POP DS;将DS指向文件缓冲区段

MOV BX, AX;BX=文件号

MOV AH, 3FH;读文件 MOV CX, 0FFFFH;读入最多64K-1 MOV DX, 0;DS: DX指向文件缓冲区

INT 21H POP DS JC GETERR2;读入文件出错转GETERR2 MOV CCOUNT, AX;实际读入字符数存入CCOUNT中

CLC JMP GETFILEXIT

GETERR1: PROMPT MSG2;读入文件出错处理

KEYIN STC JMP GETFILEXIT;

GETERR2: PROMPT MSG3;打开文件出错处理

KEYIN STC

GETFILEXIT: RET

READFILE ENDP;-------;输入文件名子程序 SIN PROC MOV AH, 0AH MOV DX, OFFSET FILENA INT 21H;输入文件名

XOR CH, CH MOV CL, FILENA+1;取文件名长度

LEA BX, FILENA+2 ADD BX, CX;计算字符串结尾地址

MOV BYTE PTR [BX], 0;在字符串尾部加0 RET SIN ENDP;-------;索引行初始化子程序 CLIST PROC MOV CX, CCOUNT JCXZ CSTX;文件为空结束

MOV SI,0;文件缓冲区字符指针

MOV DI,0;索引行指针

MOV DX,0;行数计数

MOV INDEX[DI], 0 INC DX;假设文件至少有一行 CST1: CMP WORD PTR ES:[SI], 0A0DH;判断是否为回车换行符

JNZ CST2;不是行结束,转CST2 INC DX;行数加一

ADD SI, 2;跳过回车换行符

ADD DI, 2;索引行指针加一

MOV INDEX[DI], SI;指向本行开始地址

CMP DX, MAXLEN JNC CST4;是否超过最大行,超过转CST4,结束

JMP CST3;CST2: INC SI;文件缓冲区字符指针指向下一字符 CST3: LOOP CST1;CST4: MOV LENCT, DX;保存行数到LENCT中 CSTX: RET CLIST ENDP;-------;清屏子程序

CLSCREEN PROC MOV AX, 0600H;清屏

MOV CX, 0 MOV DH, 50 MOV DL, 79 MOV BH, 07H INT 10H RET CLSCREEN ENDP;------;显示当前页子程序 SHOWCUR PROC MOV DH, 0;窗口最顶行

MOV SI, CURLINE;取当前页第一行行数

MOV CX, HS;窗口的第一行和最后一行为边框,SUB CX, 2;所以能够显示内容的高度为窗口高度减二 SC1:

CALL SHOWLINE;显示一行

INC DH;窗口下一行

INC SI;文件下一行

MOV AX, LENCT;CMP SI, AX;文件是否显示完

JNC SC2;显示完则转SC2 LOOP SC1 JMP SC1X SC2: JCXZ SC1X;该页显示满则结束

;该页没有显示满,则用空行填满该页 SC3: PUSH CX PUSH DX CALL SHOWSPLINE;显示空行

POP DX POP CX INC DH LOOP SC3 SC1X: RET SHOWCUR ENDP;------;显示一行子程序

;输入:SI=显示行行号;DH=窗口中的行号 SHOWLINE PROC PUSH CX PUSH SI PUSH DX PUSH AX

ADD DH, TOP;INC DH;实际行数=窗口左上角行数+DI+1 MOV DL, LEFT;INC DL;实际列数=窗口左上角列数+1 CALL VADD;

MOV CX, WS;窗口的第一列和最后一列是边框,SUB CX, 2;所以能够显示内容的宽度为窗口宽度减二

SHL SI, 1;行索引为字类型,所以乘二

MOV SI, INDEX[SI];取该行第一个字符在文件缓冲区的地址

PUSH DS MOV AX, 0B800H MOV DS, AX;DS指向显示缓冲区段地址 SL1: MOV AX, ES:[SI] CMP AX, 0A0DH JZ SL2;如果是回车换行,则该行结束

MOV DS: [DI], AL;显示一个字符 ADD DI, 2;INC SI;取下一个字符

LOOP SL1;JCXZ SLX;该行正好显示完,则结束,否则用空格填满

SL2: MOV BYTE PTR DS:[DI], " ";该行没有显示满,则用空格填满

ADD DI, 2 LOOP SL2

SLX: POP DS

POP AX POP DX POP SI POP CX

RET SHOWLINE ENDP;--------;显示空行子程序

;输入:DI=窗口中的行号 SHOWSPLINE PROC;

MOV AX, HS;SUB AX, 2;CMP DH, AL;显示的空行是否超出最低行

JNC SSLX;如果是,则转SSLX ADD DH, TOP;INC DH;实际行数=窗口左上角行数+DI+1 MOV DL, LEFT;INC DL;实际列数=窗口左上角列数+1 CALL VADD;

MOV CX, WS;窗口的第一列和最后一列是边框,SUB CX, 2;所以能够显示内容的宽度为窗口宽度减二

PUSH DS MOV AX, 0B800H MOV DS, AX SSL1: MOV BYTE PTR DS:[DI], " " ADD DI, 2 LOOP SSL1 POP DS SSLX: RET SHOWSPLINE ENDP;-------;创建窗口子程序 CREWIN PROC PUSH ES MOV AX, 0B800H;显示缓冲区地址为B800:0 MOV ES, AX;

MOV DH, TOP MOV DL, LEFT;窗口左上角行列数

MOV CX, HS;窗口高度(行数)CW1: PUSH DX;CALL VADD;计算地址

PUSH CX;MOV CX, WS;窗口宽度(列数)

MOV AL, FG;取属性 CW2: MOV BYTE PTR ES:[DI], " ";送空白字符

INC DI;MOV BYTE PTR ES:[DI], AL;送属性

INC DI;LOOP CW2;

POP CX POP DX INC DH;行数加一

LOOP CW1

CALL DRAWB;画边框

POP ES RET CREWIN ENDP;-;画边框子程序 DRAWB PROC PUSH DX PUSH CX PUSH BX PUSH AX MOV BL, FGB MOV DH, TOP MOV DL, LEFT CALL VADD

;画左上角角框

MOV BYTE PTR ES:[DI], 0C9H INC DI MOV BYTE PTR ES:[DI], BL INC DI

;画第一行边框

MOV CX, WS SUB CX,2 DB1: MOV BYTE PTR ES:[DI], 0CDH INC DI MOV BYTE PTR ES:[DI], BL INC DI LOOP DB1

;画右上角角框

MOV BYTE PTR ES:[DI], 0BBH INC DI MOV BYTE PTR ES:[DI], BL

;画第二行到倒数二行左右边框

MOV DH, TOP MOV DL, LEFT INC DH MOV CX, HS SUB CX, 2 DB2: PUSH DX CALL VADD MOV BYTE PTR ES:[DI], 0BAH INC DI MOV BYTE PTR ES:[DI], BL DEC DI MOV AX, WS DEC AX SHL AX, 1 ADD DI, AX MOV BYTE PTR ES:[DI], 0BAH INC DI MOV BYTE PTR ES:[DI], BL POP DX INC DH LOOP DB2;取边框属性;窗口左上角行列数;计算地址;角框╔;因为去掉了左右角框,所以宽度减二;上下边框═;角框╗;从第二行开始;第一行和最后一行没有左右边框,;所以高度减二;;计算左边框地址;左右边框║;;;;计算右边框地址;;下一行;

;画左下角角框

MOV DH, TOP;MOV DL, LEFT;MOV AX, HS;DEC AX;ADD DH, AL;左下角行数=右上角行数+窗口高度-1 CALL VADD MOV BYTE PTR ES:[DI], 0C8H;角框╚

INC DI MOV BYTE PTR ES:[DI], BL INC DI

;画最低行边框

MOV CX, WS;SUB CX, 2;因为去掉了左右角框,所以宽度减二 DB3: MOV BYTE PTR ES:[DI], 0CDH;上下边框═

INC DI MOV BYTE PTR ES:[DI], BL INC DI LOOP DB3

;画右下角角框

MOV BYTE PTR ES:[DI], 0BCH;角框╝

INC DI MOV BYTE PTR ES:[DI], BL

POP AX POP BX POP CX POP DX

RET DRAWB ENDP;------;计算窗口内某行列位置对应显存地址;输入:DH=行 DL=列;输出:DI为显存地址 VADD PROC MOV AL, 80;MUL DH;XOR DH, DH;ADD AX, DX;行数×80+列数

SHL AX, 1;乘2,因为每个字符占两个字节

MOV DI, AX RET VADD ENDP;--------;命令分析子程序 COMMAND PROC CMP AH, 2DH;2DH为x键的扫描码

JNZ COM1;不是x键,转COM1 STC;值x键标志

RET COM1: CALL DOSUB;转命令散转子程序

CLC RET COMMAND ENDP;--;命令散转子程序 DOSUB PROC MOV AL, AH MOV AH, 0;将键扫描码放入AX中

MOV BX, OFFSET KEYSUB;BX指向KEYSUB DOSUB1: CMP WORD PTR [BX], 0 JZ DOSUBX;KEYSUB表查完,即没有找到转DOSUBX CMP AX, [BX] JZ DOSUB2;找到扫描码转DOSUB2 ADD BX, 4 JMP DOSUB1;DOSU)白话文○(B2: ADD BX, 2 MOV BX, [BX];取处理程序入口地址

JMP BX;转处理程序 DOSUBX: RET

;SUB1和SUB2均为功能键处理程序;处理完后应使用JMP DOSSUBX结束

;上箭头键处理程序 SUB1: CMP CURLINE, 0 JZ SUB1X;已到第一行,结束

DEC CURLINE;向上一行

CALL SHOWCUR;显示当前页 SUB1X: JMP DOSUBX

;下箭头键处理程序 SUB2: MOV AX, LENCT DEC AX DEC AX;至少显示一行

CMP AX, CURLINE;已到最后一行

JZ SUB2X INC CURLINE;向下一行

CALL SHOWCUR;显示当前页 SUB2X: JMP DOSUBX

DOSUB ENDP;--------

CODE ENDS

;========================= END START

推荐访问:大纲 课程设计 高级 《高级语言程序设计》课程设计大纲 《高级语言程序设计》课程设计大纲是什么 《高级语言程序设计》课程设计大纲内容 高级语言程序设计教程 高级语言程序设计课后答案 高级语言程序设计(一) 高级语言程序设计课程设计题目 高级语言程序设计知识点总结 高级语言程序设计知识点 高级语言程序设计课后题答案

猜你喜欢