版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序设计基础课程设计安排及要求附件一:程序设计基础课程设计登记表班级姓名学号电话题目题目描述及要求1. 题目可从参考中选择,也可以自选,但要得到指导教师认可; 附件二:游戏类题目:1.扑克游戏(1)21点游戏(要求:1.源文件采用多文件的工程结构2.标准的C输入输出3.功能完善,适当的注释)2.五子棋游戏要求:模块化程序设计,能实现人人对弈,能悔棋一步,并判断玩家输赢。3.中国象棋游戏要求:模块化程序设计,能实现人人对弈,能判断走棋是否合法,允许悔棋一步,并能对玩家记时。4.俄罗斯方块要求:模块化程序设计,能显示方块的堆放及消除效果,可以选难度,记分规则等。5.汉诺塔的动态演示要求:模块化程序
2、设计,能自动移动hanoi的盘子,要求能输入塔盘的数量。6.重排九宫游戏要求:“重排九宫”,8个数字放在3*3九个格子中,余下一个格子为空。要求可以用鼠标拖动数字,并记录玩家花费的时间。7.贪食蛇游戏 要求:模块化程序设计,可以选择难度,实现记分功能。8.打地鼠游戏 要求:实现打地鼠的动画效果。应用程序类题目:1. 工具软件(1)简易计算器(自学数据结构“栈”部分内容)小型整数、实数、复数计算器,设计并实现一个小型计算器,包括如下功能:实现加减乘除等功能,并显示运算结果2. 工具软件(2)回文判断程序(自学数据结构“栈”、“队列”相关内容)写一个栈及一个队列,实现判断一个字符串是否为回文。(要
3、求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)3. 实用工具的设计与使用(1)编写一个DateTime函数:用并实现如下功能:设置日期 、时间,用日/月/年,时:分:秒格式输出日期和时间,可实现日期增加、减少一天、增加一小时、减少一小时的操作,以及某一天是星期几、判断闰年,十二小时与二十四小时制转换、等操作。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)4. 实用工具的设计与使用(2)CString函数定义一个CStri
4、ng函数,实现字符串的全部操作(例如strcpy、strcmp、strlen、strcat等,具体可以查Turboc2的帮助说明)。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)5. 实用工具的设计与使用(3)多项式矩阵操作函数定义一个多项式矩阵操作函数,实现多项式矩阵的操作(赋值、+、-、*、/、转置等)。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)6. 单词类软件(1)单词学习软件单词(中英文)录入、修改、删除
5、管理、提供多种(至少三种,例如,给出英文选中文,给出中文写英文等)单词学习方法,对出错单词能够进行查询、统计、排序。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)7. 单词类软件(2)查词软件单词(中英文)录入、修改、删除管理、提供模糊查询功能(中文查英文,英文查中文等)。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)8. 单词类软件(3)打字练习统计软件能对用户(管理员、普通用户)进行管理,对用户打字进行统计并排序
6、。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)9. 简易画图软件能实现圆、矩形、直线、椭圆,扇形、圆弧的绘制及颜色的填充。能够用鼠标手工绘制图形。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)小型管理系统类题目:1.图书管理系统图书信息:登录号(ISBN)、书名、作者名、图书类别(自然科学、人文科学等)、出版单位、出版时间、价格、数量等。(1)图书借阅管理实现图书的入库、修改信息、删除、借阅、归还、续借管理,以及学
7、生、教师(读者)管理,学生、教师借阅情况查询与阅览功能。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)2.图书管理系统图书信息:登录号(ISBN)、书名、作者名、图书类别(自然科学、人文科学等)、出版单位、出版时间、价格、数量等。(2)图书查询管理实现图书的入库、修改信息、删除功能,能够按照图书名称、作者、出版社、类别等进行图书的查询和统计功能,并支持模糊查询。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)3.班级学
8、生信息管理班级信息:班级编号、班级类别(研究生班、本科生班、专科生班等)、班级学生人数、学生姓名、班长、其他班干等。(1)班级缴费信息管理实现班级的创建、修改、删除功能,能够对班级中的学生信息进行增、删、改操作,并能够对班级应交学费进行计算(本科生学费为专科生学费的80%,研究生学费时本科生学费的70%)。输入班级每个学生所缴纳的学费,如果全班缴纳学费低于总学费的80%则显示欠费学生信息,并能够按照学号和姓名对学生缴费情况进行查询,并按照学生缴费金额的多少进行排序显示。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容
9、需要自学)4.班级学生信息管理班级信息:班级编号、班级类别(研究生班、本科生班、专科生班等)、班级学生人数、学生姓名、班长、其他班干等。(2)学生信息管理实现学生信息的增、删、改操作,设置学生的成绩信息:学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所占百分比。用户录入每个学生每门课程的平时成绩、期末成绩、平时成绩所占百分比;计算学生总评成绩:总评成绩=平时成绩*平时成绩所占百分比+期末成绩*(1-平时成绩所占百分比)、平均成绩,并按总分将成绩排序,显示每个学生的总分和排名;计算全班各门功课的平均分,显示每门课程中低于平均分的每一个学生的学号,姓名,性别,科目,成绩等信息;显示每门
10、科目中,成绩在90分以上的学生信息。另外还输出每门科目中不及格的学生信息;能按姓名或者学号查找,增加,删除和保存各个学生的信息。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)5.班级学生信息管理班级信息:班级编号、班级类别(研究生班、本科生班、专科生班等)、班级学生人数、学生姓名、班长、其他班干等。(3)班级考勤管理实现学生信息的增、删、改操作。可对班级学生按照课程进行考勤(类别:出勤、迟到、早退、缺席),并提供按照班级、学号、类别进行统计、查询、浏览等功能。(要求:1.源文件采用多文件的工程结构2.数据
11、存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)6.班级学生信息管理班级信息:班级编号、班级类别(研究生班、本科生班、专科生班等)、班级学生人数、学生姓名、班长、其他班干等。(4)学生档案管理学生档案:学号、身份证号、姓名、性别、籍贯、当前状态等。实现一个学生档案管理系统,完成功能:档案创建、修改、删除、查询、统计、排序等操作。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)7.商品进销存管理商品信息:商品编号、商品名称、商品类别(普通电视机、DVD、带DVD的电视
12、机,带DVD的电视机的售价为普通电视机和DVD单价之和的80%)、商品进货价格、商品销售价格、商品数量、供应商名称等。(1)商品进货管理记录每一次进货信息,对该信息可以进行增加、删除、修改,能够对仓库中的商品按照供应商以及价格进行查询、统计和排序,并能够对所有库存商品进行价格、数量汇总。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)8.商品进销存管理商品信息:商品编号、商品名称、商品类别(普通电视机、DVD、带DVD的电视机,带DVD的电视机的售价为普通电视机和DVD单价之和的80%)、商品进货价格、商品
13、销售价格、商品数量、供应商名称等。(2)商品库存管理要求对所有的库存商品都能按照品名进行显示、查找、增加、删除、修改的功能。并提供按照品名进行浏览、统计和排序(价格)的功能。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)9.商品进销存管理商品信息:商品编号、商品名称、商品类别(普通电视机、DVD、带DVD的电视机,带DVD的电视机的售价为普通电视机和DVD单价之和的80%)、商品进货价格、商品销售价格、商品数量、供应商名称等。(3)商品销售管理记录每一次销售商品的数量和价格,并提供对已售出商品的价格、数量
14、进行统计、排序功能,但允许用户退商品。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)10.体育赛事成绩管理(1)足球联赛积分统计足球联赛采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0分,联赛排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前,若仍相同,则抽签或踢附加赛决定名次(这在联赛结束后进行,联赛未结束则两队名次并列,本程序不做这方面要求)。试编一程序统计最近一轮比赛后,各队积分及排名。 基本要求:设积分表结构如下:队
15、名,已比赛的场数,赢的场数,平的场数,负的场数,进球数,失球数,积分。积分表放在文件中。最近一轮的结果从键盘输入,其形式为:主队名(可用代码),客队名(可用代码),主队得分(即进球数),客队得分(即进球数)。程序应根据此轮结果修改各队的积分和名次,提供以积分进行统计和排序的功能。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)11.体育赛事成绩管理(2)学生运动会成绩统计系统记录某校运动会上全部运动项目,各系获得的分数及排名的情况,包括50、100、200,400,1500米,跳高,跳远,标枪,铅球铁饼等。
16、进入系统后可以输入和修改某个项目的结果情况,可以按各系院编号输出总分;按总分排序;按男团体总分排序 ;按系院编号查询;按项目编号查询;按女团体总分排序。键盘输入:系院数目,男子项目数女子项目数,(每项目取前三名,分别为10,5,2分)。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)12.企业人事管理系统人员包括总经理、经理、雇员,信息包括工号、姓名、职务、身份证号、籍贯、工资(实发工资)等。(1)人事管理模块实现人员信息的增、删、改操作,并实现按姓名、工号进行查询功能,按照部门、工资统计、排序功能。能够实
17、现人员的部门之间的调动功能。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)13.企业人事管理系统人员包括总经理、经理、雇员,信息包括工号、姓名、职务、身份证号、籍贯、工资(实发工资)等。(2)人事工资管理 职工工资的主要属性如下:基本工资、岗位工资、奖金、应发工资、医疗住房基金、税金、实发工资;其中应发工资等于基本工资与岗位工资之和,而实发工资等于应发工资减去医疗住房基金和税金。部门暂时分为设备处、人事处、学工处、计算机学院,利用文本文件存储职工工资信息;实现工资的录入、统计(统计整个单位的平均工资、最高
18、工资和最低工资、工资均方差等信息;各部门的平均工资、最高工资和最低工资、工资均方差等信息)、查询(根据工号或姓名查询)、修改、删除等功能。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)14.票务管理系统(1)火车票务管理火车票包括硬座票(票价x)、硬卧票(2x+y)和软卧票(3x+z)、实现火车票的管理、销售、统计、查询功能。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)15.票务管理系统(2)航空售票管理飞机票分为
19、头等舱、经济舱(经济舱价格的y%)、折扣舱(经济舱价格的x%),实现飞机票的管理、销售、统计、查询等功能。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)16.信息查询系统(1)通讯录管理系统设计并实现一个简单电话簿,包括如下功能:能设置并以文件保存若干姓名、联系电话和电邮地址(联系人分为办公类、个人类、商务类,当选中某类时,显示出此类所有数据中的姓名和电话号码。)根据输入的姓名,在已经保存的文件中查询相应的联系电话和电邮地址,并显示查询结果。根据输入的电话号码,在已经保存的文件中查询相应的联系人姓名,并显
20、示查询结果,此外,能够对通讯录信息进行修改和删除等操作。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)17.信息查询系统(2)日记管理软件能够对用户进行管理(管理员、普通用户),对日记进行管理(增、删、改,其中删除和修改为管理员权限),可以对日记进行查询、浏览(普通用户权限)。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)18.信息查询系统(3)校友录管理系统创建校友录,对校友录中的学生进行管理(增、删、改),合法用
21、户可以在校友录中发表信息、查询信息、浏览信息等功能。管理员可以对校友录中成员及信息进行维护操作。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)19.实验室设备管理系统设备信息:设备编号、设备名称、设备地点(实验室)、设备状态等。(1)设备管理:实验室信息管理(增、删、改)、设备信息管理(增、删、改),能够实现设备的统计、查询功能,以及设备的报修、报废以及修复等功能。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)20.
22、实验室设备管理系统设备信息:设备编号、设备名称、设备地点(实验室)、设备状态等。(2)学生上机管理实现实验室、设备信息维护、学生信息维护、学生上机登记管理、学生上机统计、查询、排序等功能。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)21.学生选课系统 课程信息包括:课程编码、课程名称、适用专业、课程类型(必修、限选、必选、实践、实习)、学分、学时、主讲教师等。(1)课程管理课程信息录入,课程信息浏览、查询和排序(按专业、学分、主讲教师等)功能,课程信息的删除与修改等。(要求:1.源文件采用多文件的工程结
23、构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)22.学生选课系统 课程信息包括:课程编码、课程名称、适用专业、课程类型(必修、限选、必选、实践、实习)、学分、学时、主讲教师等。(2)选课管理学生信息管理,学生选课管理(学生选课学分总数有一定范围),学生可以对课程进行查询、浏览,选完课后可以退选、重选,并可以按学号、姓名、课程名进行查询、统计。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)附件三:课设报告的基本要求 需求分析: 陈述程序设计的任务,强调程
24、序要做什么,明确规定: 输入的形式和输入值的范围; 输出的形式; 程序所能达到的功能; 测试数据:包括正确的输入输出结果和错误的输入及其输出结果。 概要设计:说明用到的数据类型、主程序流程及各函数之间的调用关系。 本程序所用的数据类型的定义; 本程序所用到的标准函数名称、自定义函数名称; 主程序的流程及各函数之间的层次关系。(用图来描述) 详细设计: 用流程图描述每个自定义函数,并给出适当的注释。 写出各函数的调用关系图。 调试分析: 调试过程中所遇到的问题及解决方法; 经验与体会。 用户使用说明:说明如何使用你的程序,详细列出每一步操作步骤。 测试结果:列出对于给定的输入所产生的输出结果。
25、附录:提交带注释的完整源程序。格式要求: 封面:(购买)标准课程设计报告封面; 内页:(打印)纸张:16K;边距:上2.5CM,下2.5CM,左2.5CM,右2CM标题:四号,黑体,加粗,左对齐. 正文:小四号,宋体,首行缩进2个字程序代码:五号,宋体 图题:五号,宋体,居中,如:图1.1 主程序的流程图附件四:课设文档示范文档目录3号,黑体,多倍行距,设置值为3一、需求分析2二、概要设计2三、详细设计4四、调试分析8五、用户手册9六、测试数据9七、附录10四号,宋体,1.5倍行距一、需求分析格式:黑体,四号字,英文用times new roman,以下的标题格式均采用该格式。行距为多倍行距,
26、设置值为1.73要求:本节是需求分析的部分,该节主要说明课程设计题目的具体要求,如:程序应具备的功能、程序设计时必须使用的数据结构(数组、动态链表、文件等)、程序运行时对输入输出格式的要求以及对程序运行性能的要求等,在撰写本节的文档时,对于以上的具体要求应详细地给出明确的说明。 用栈的基本操作完成迷宫问题的求解,其中栈的基本操作作为一个独立的模块存在。 以二维数组Mm+2n+2表示迷宫,Mij 表示迷宫中相应(i,j)位置的通行状态(0:表示可以通行,1:表示有墙,不可通行),完成迷宫的抽象数据类型,包括出口、入口位置等。 用户从屏幕上输入迷宫,完成对应迷宫的初始化。 迷宫的入口位置和出口位置
27、在合法范围内由用户而定。 程序完成对迷宫路径的搜索,如果存在路径,则以长方形形式将迷宫打印出来,用特定符号标出迷宫的物理状态,其中字符“#”表示不可行,“*”表示出口和入口,空格表示没有经过的部分,“”标记出可行的路径;如果程序完成搜索后没有找到通路,则提示用户“cant find one way!”。 程序执行的命令: 创建初始化迷宫; 搜索迷宫; 输出搜索结果。正文部分,字号小四,中文用宋体,英文用times new roman,行距为1.5倍,如果需要引入代码时,代码用times new roman字体,字号为5号,且行距为单倍行距,页面要有页码。二、概要设计格式:黑体、四号字,同标题一
28、要求:概要设计是在理解程序的各项需求以后,对程序的结构和模块进行设计的环节。该节主要说明的内容包括对程序中所使用数据结构的介绍(如数组、数组表示的意义、数组的名称、结构体的名称,结构体成员表示的意义,文件的名称等)、对程序中主要模块以及模块之间关系的介绍(即程序由哪些模块组成,模块之间有何种关系等),在撰写本节的文档时,对于以上的具体内容给出详尽的说明。 设计栈的抽象数据类型定义:ADT Stack 数据对象:D=ai:|aiPositionSet,i=1n,n0数据关系:R1=|ai-1,aid,i=2,n基本操作: 操作结果InitStack(&S)构造一个空栈,完成栈的初始化SDesto
29、ryStack(&S)撤消一个已经存在的栈SClearStack(&S)将栈S重新置空StackLength(S)返回栈的长度GetTop(S,&e)用e返回栈S的栈顶元素StackEmpty(S)若S为空返回1,否则返回0Push(&S,e)将新的元素e压入栈顶Pop(&S,e)删除栈顶元素,并用e返回其值StackTraverse(s)将栈S的所有元素输出ADT Stack; 迷宫的抽象数据类型定义:ADT Maze数据对象:D:=aij,Start,end|aij,Start,end 0im+2,0jn+2,m,n0数据关系:R=ROW.COL Row=|ai-1,aijD i=1,m+
30、2,j=1,n+2 Col=|aijaij-1D基本操作:SetMaze(&Maze)初始条件:Maze已经定义,Maze的下属单元二维数组Maze.Mrow+2d+2已存在,Maze.start,Maze.end也已作为下属存储单元存在操作结果:构成数据迷宫,用数值标识迷宫的物理状态,以0表示通路,以1表示障碍,由终端读取迷宫空间大小,各点处的具体物理状态及Start和End点位置,完成迷宫构建Pass(&Mazem,&Nposition,Position,di)初始条件:已知目前迷宫状态及当前位置、下一步探索方向di操作结果:完成相应的搜索任务,如果可行,则用Nposition返回 下一步
31、位置,并将Maze状态改变为相应点已走过情况PrintMaze(Maze)操作结果:输出字符标示的迷宫FindWay(Maze,&way)操作结果:利用Pass搜索迷宫,用way返回搜索所得路径。如不存在,返回PrintWay(Maze,way)操作结果:将Maze及相应最短路径一起打印输出ADT MAZE, 本程序模块结构 主函数模块void main()初始化;do接受命令;处理命令;while(退出命令) 栈模块实现栈抽象数据类型; 迷宫模块实现迷宫抽象数据类型;各模块之间的调用关系如下:主程序模块迷宫模块栈模块三、详细设计格式同标题二要求:详细设计是在概要设计基础上对各模块进一步细化的
32、环节。本节需要介绍的内容包括程序中所有函数的介绍(包括函数的原型,函数的功能,各参数的名称以及表示的意义)、函数之间的调用关系(见如下的例子)、程序核心模块算法的介绍(需要用流程图描述),在撰写本节的文档时,对于以上的具体内容给出详尽的说明,作图要规范,排版要统一。 基本数据类型操作 栈模块 typedef structint x,y,num; / X、Y坐标位置,NUM栈的追踪序号 Postype; typedef struct SelemType *base; / 在栈初始化之前和销毁之后为NULLSelemType *top; / 栈顶指针,在栈顶元素上方一单元处int stacksiz
33、e; / 当前已分配存储空间,以元素为单位 sqstack; / 线性存储结构正文部分,字号小四,中文用宋体,英文用times new roman,行距为1.5倍,如果需要引入代码时,代码用times new roman字体,字号为5号,且行距为单倍行距 参数设置:#define STACK_INIT_SIZE 20;#define STACKINIREMENT 10;/-基本操作的算法描述-Status InitStack(SqStack &s) / 构造一个空栈S.base=(SelemType )malloc(STACK_INIT_SIZE*SizeOf(SelemType);if(!S
34、.base)exit(OVERLOW); / 存储分配失败S.top=S.base;S.stacksize=STACK_INIT_SIZE;return ok;Staus DestoryStack(Sqstack &s)/ 销毁栈SFree(S.base);S.top=S.base; S.stacksize=o;return ok;Status ClearStack(sqstack &S) / 清空SS.top=S.base;return ok;Status StackEmpty(Sqstack S) / 若S为空返回TRUE,否则返回FALSEreturn S.base=S.top;int
35、stackLength(Sqstack S) / 返回栈S的长度,以单元为单位return S.top-S.base;Status GetTop(SqStack S,Selemtype &e) / 栈不空,用e返回s的栈顶元素及OK,否则返回ERRORif(S.top=S.base)return ERROR;e=*(S.top-1);return ok; Status Push(Sqstack &S,SelemType e) / 插入元素e为新的栈顶元素if(S.top-S.base=S.stacksize)/ 栈满追加存储空间S.base=(SelemType)realloc(S.base,
36、(S.stacksize+STACKICREMENT)Sizeof(Selemtype);if(!S.base)exit(OVERFLOW) / 存储分配失败S.top=S.base+S.stacksize; / 确定新的栈顶指针S.stacksize+=STACKINCREMENT;/ 已分配空间增加 *S.top+=e;return ok;Status Pop(Sqstack &s,SelemType &e)/ 若栈不变,则删除栈顶元素,用e返回其值及ok,否则falseif(S.top=o=S.base)return ERROR;e=*-S.top; / 顶指针减小,用e返回其数据ret
37、urn ok; 迷宫模块: 迷宫的数据类型#define MAXSIZE 50 / 屏幕宽度,迷宫的最大宽度typeof structint MMAXSIZE; / 迷宫的物理状态描述int Row,Col; / 迷宫的大小Position Start,end; / 开始与结束位置与栈的单元类型相同MAZE; / “迷宫”型数据迷宫模块中的基本操作Status semaze(MAZE &Maze)Printf(“请输入所建迷宫的宽度Row和高度Col”);Dosanf(“row,col”);if(RowMAXSIZE-2)printf(“太大,请重新输入”);while(RowMAXSIZE-
38、2);for(i=0;i=Row+1;i+) / 设置迷宫边界Maze.M0i=1;Maze.MCol+1i=1;for(i=0;i=Col+1;i+)Maze.Mi0=1;Maze.M1Row+1=1; for(i=1;i=col;i+) / 输入相应迷宫各点处的具体物理状态for(j=1;j=Row;i+) scanf(“Maze.Mij”); printf(“n”);printf(“设置出入口”);scanf(“Maze.start,Maz.end);Maze.MMaze.start.xMaze.start.Y=2;Maze.MMaze.end.xMaze.end.Y=2;Maze.Ro
39、w=Row;Maze.Col=Col;return ok;void printMaze(MAZE Maze) / 打印出迷宫,包括边界for(i=0;i=Maze.Col+1;i+)for(j=0;jbase; / 搜索位置开始于start处 Do Pos=*p; / 持续下一步搜索,当前位置POSFor(i=1;i(s-base); / 记下追踪序数Push(S,N_Pos); / 将可行点如栈P+; / 继续下一步while(pos.x!=Maze.end.x|Maze.end.y)&p!=s-top);if(p=s-top)return 0; / 无路径可达p=&Pos; / 从出口入逆
40、向路径dop=S-base+-NUM; / 由p-num找回上一步位置Push(&way,*P);while(p!=s-base);Destory(&s);return 1;void PrintWay(MAZE.Maze,Sqstack Way) / 将迷宫及路径一起打印print(“最短路径“”);for(p=way.base;pxp-y=4; / 标出路径PrintMaze(Maze); / 打印输出 主函数算法:main()clrscr();InitStack(&way);DoPrintf(“现在开始构筑迷宫”);SetMaze(&Maze);Printf(“所得迷宫状态为:”);Pri
41、ntMaze(Maze);Printf(“按任意键开始搜索路径”);Setch();printf(“搜索结果:”);if(FindWay(Maze,&way)Printf(“所锝路径:”);PrintWay(Maze,Way);elseprintf(“没有可到达出口处”);printf(“按C键继续处理其它迷宫或其它键退出”);getch(c);while(c=c|c=C);destoryStack(“&Way”); 函数的调用关系反映了本演示程序的层次结构迷宫处理工作栈设置mainInitStack DestoryStack FindWay PrintWay PrintMaze Pass S
42、etMaze Push GetTop Pop StackLength StackEmpty ClearStack四、调试分析格式同上要求:本节为调试分析的部分,在撰写本节的文档时,应对程序调试过程中出现的问题以及如何解决的过程进行说明。说明应详尽,排版要统一。 开始没有将Mnm.start.end设置为MAZE 型数据的下属单元,使得各个迷宫操作的函数参数十分散杂,调试时各参数关系不易把握。 另行设置PrintWay函数,使得终端输出更加友好,并巧妙地将迷宫以特殊、明朗的字符输出,效果更好。 只须将FindWay程序中搜索循环的结束条件改动,并增加栈便可输出迷宫的所有路径。追踪时还要多加一次循
43、环对工作栈进行扫描。正文格式同上五、用户手册格式同上要求:本节需要对程序运行时的操作步骤和使用顺序做出具体的说明(如是否对路径要求,如何运行程序等)。说明应详尽,排版要统一。 本程序的运行环境为DOS操作系统,执行文件为Maze.exe; 进入演示程序后,即显示对话形式的提示操作过程,如:提出开始建筑迷宫输入迷宫的大小输入迷宫具体结构 现在的迷宫状态为:按任意键开始搜索搜索结果:最短路径为:没有找到可行路径按C键continue 或其它键Quit 提示输入迷宫大小后,用户输入所要处理迷宫的宽ROW,高COL; 提示输入迷宫后,用户将迷宫输入,0代表可行,1代表障碍; 按任意键开始后,程序自动进
44、行对所建迷宫的搜索,并将搜索结果; 进行下一个迷宫处理单元或退出程序。正文格式同上六、测试数据格式同上要求:本节需要对程序调试过程中所使用的测试数据以及输入测试数据以后的结果进行说明。说明应详尽,排版要统一。现在开始建筑迷宫(set the Maze now:please Enterin the size of the maze your want to deal with:The Row(=s.stacksize)S.base=(SelemType*) realloc(S.base,(S.stacksize+STACKIN(EMENT)*SIZEOF(seLEMtYP);if(!S.base
45、)exit(OVERFLOW);S.top=S.base+S.stackSize;S.stacksize+=STACKINCREMENT;*(S.top).X=e.X;*(S.top).Y=e.Num;S.top+;void Pop(Sqstack *s,SelemType &e)if(S.top=S.base)exit(-1);e.X=*(S.top).x;e.Y=*(S.top).ye.NUM=*(S.top).Num(2) 迷宫Maze.c:#include Stack.c#define MAXSIZE 50typedef Sturctint MMAXSIZE;int Row;int Col;Position end;Position start;MAZE;void SetMaze(MAZE &Maze)int i,j,Row,Col;printf(Now Set the Maze:n);printf(The Row of the Maze:);Scanf(%d,&Row);printf(The Col of the Maze:);scanf(%d,&Col);for(i=0;i=Row+1;i+)Maze.M01=1;Maze.MCol+1=1;for (i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅游企业财务审计岗位面试要点
- 基于云技术的移动文库管理与分享方法
- 零售连锁店呼叫中心招聘秘籍
- 客户满意度提升计划总经理主导
- 客户信息收集、与运用指南
- 9-Azido-1-nonanol-生命科学试剂-MCE
- 2026云南白药集团春季校园招聘备考题库及答案详解【夺冠系列】
- 2026平安财险甘孜县支公司农险客户经理招聘备考题库(四川)【研优卷】附答案详解
- 2026广东河源市消防救援支队第一批政府专职消防员招聘127人备考题库附完整答案详解(网校专用)
- 宁银理财2026届春季校园招聘备考题库附参考答案详解(突破训练)
- 2025年部编版道德与法治五年级下册第一单元复习课教案
- 三方股权代持协议书范本
- DB37T3418-2018标准化池塘建设改造技术规范
- 2025年上海中烟机械技术中心限责任公司招聘高频重点提升(共500题)附带答案详解
- 铁路劳动安全 课件 第三章 防洪抢险
- 《Animate CC 动画制作案例教程(第2版)》中职全套教学课件
- 【MOOC】数据库系统(上):模型与语言-哈尔滨工业大学 中国大学慕课MOOC答案
- 医院品管圈(QCC)活动成果报告书-基于QFD 润心服务改善 ICU 患者及家属就医体验
- 基于PLC的物料分拣系统设计
- JJG 693-2011可燃气体检测报警器
- 《低压配电设备安装与调试》课件 劳动 学习任务 3 落地式配电柜安装与调试
评论
0/150
提交评论