数据结构课程设计报告

时间:2024-10-10 09:19:36编辑:莆田seo君

数据结构实验的实验报告怎么写

数据库课程设计“数据库课程设计”是数据库系统及应用课程的后续实验课,是进一步巩固学生的数据库知识,加强学生的实际动手能力和提高学生综合素质。 一、课程设计目的课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。课程设计的目的:1.加深对数据库原理、程序设计语言的理论知识的理解和应用水平;2.在理论和实验教学基础上进一步巩固已学基本理论及应用知识并加以综合提高;3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增强动手能力;4.为毕业设计和以后工作打下必要基础。二、课程设计要求运用数据库原理的基本理论与应用知识,在微机RDBMS(SQL Server)的环境上建立一个数据库应用系统。要求把现实世界的事物及事物之间的复杂关系抽象为信息世界的实体及实体之间联系的信息模型,再转换为机器世界的数据模型和数据文件,并对数据文件实施检索、更新和控制等操作。 1.用E-R图设计选定题目的信息模型;2.设计相应的关系模型,确定数据库结构;3.分析关系模式各属于第几范式,阐明理由;4.设计应用系统的系统结构图,确定系统功能;5.通过设计关系的主码约束、外码约束和使用CHECK实现完整性控制;6.为参照关系设计插入、删除、修改触发器;7.实现应用程序设计、编程、优化功能;8.对系统的各个应用程序进行集成和调试,进一步优化系统功能、改善系统用户界面完成实验内容所指定的各项要求;9.分析遇到的问题,总结并写出课程设计报告;10.自我评价三、实验环境开发环境VC++、C#、ASP或JAVA;ODBC/JDBC;数据库SQL Server四、上机实现内容1.创建数据库的结构2.创建各基本表的结构3.编制系统各功能模块,完成数据的管理(增、删、改)及统计查询。对于程序运行界面不做考核的重点。五、课程设计考核 1.对学生到实验室的情况进行不定时统计;2.出勤率+课程设计报告+课程设计所开发的应用系统+其他(上机抽查和提问)=综合评定成绩。3.课程设计结束时请将下列资料上交:(1)课程设计报告;(2)所开发的应用系统的源程序、安装和使用说明;(3)将(1)(2)中的资料压缩成一个压缩包,压缩包文件的命名规则:班级+学号(末2位)+姓名(例如:计科090101王鹏晓);(4)班长将本班每人的(3)中的压缩包刻录成光盘连同打印的课程设计报告收齐,交给任课教师。附录﹑课程设计题目题目1:课程设计选题管理系统(1,24)包括三大模块:课程设计题目维护与查询:题目的添加、修改和删除;按题目类型、名称和关键字查询以及已选与未选题目的查询;学生信息维护与查询;学生选题维护与管理:学生选题及查询;具体功能细化:前台学生选题:学生上网登录系统进行选题;前台教师出题:教师添加、修改和删除题目;教师确认学生的选题;后台管理出题和选题添加用户及权限题目2:书店管理系统(23)包括四大模块:售书(图书销售管理及销售统计,查询)进书(通过书目,向发行商下定单订购图书)库存(图书库存,统计)相关查询题目3:图书馆管理系统(11)包括四大模块:图书的查询借书还书图书的预约题目4:库存管理系统(8)包括四大模块:商品目录建立商品入库管理商品出库管理商品库存查询题目5:工资管理系统(1 人)41包括四大模块:系统数据初始化员工基本信息数据的输入、修改、删除;员工个人信息及工资表的查询;员工工资的计算;参考数据如下:员工基本状况:包括员工号、员工姓名、性别、所在部门、工资级别、工资等级等。 工资级别和工资金额:包括工资等级、工资额。 企业部门及工作岗位信息:包括部门名称、工作岗位名称、工作岗位工资等。 工龄和工资金额:包括工龄及对应工资额。 公司福利表:包括福利名称、福利值。工资信息:包括员工号、员工姓名、员工基础工资、员工岗位工资、员工工龄工资、公司福利、员工实得工资。题目6:酒店客房管理系统 (1 人)14,26包括四大模块:前台操作:包括开房登记、退房结账和房状态查看 预订管理:包括预订房间、预订入住和解除预订 信息查询:包括在住客人列表、预订客人列表和历史客人列表 报表统计:包括开房记录统计、退房结账和预订房间统计员工基本信息数据的输入、修改、删除;参考数据如下:住店管理:客人姓名、证件号码、房号、入住时期、预计离开日期、结账离开日期、应付金额 客人信息:姓名、性别、证件类型、证件号码、联系电话 房间信息:房号、房类型、价格、押金、房状态 预订房间客人姓名、性别、房类型、房号、价格、证件类型、证件号码、联系电话、入住日期、预计离开日期、历史信息题目7:旅行社管理信息系统(1 人)3包括如下模块:旅游团队、团队团员及旅游路线相关信息的输入 旅游团队、团队团员及旅游路线相关信息的维护(修改、浏览、删除和撤销)旅游团队管理信息的查询(如按团队编号)团队团员基本情况的查询(可选多种方式)旅游路线相关信息的查询(如按线路编号)旅游路线排行榜发布。数据备份,更改密码。参考数据如下:团员信息表(路线编号,团队编号,团员编号,姓名,性别,电话,通信地址,身份证号码, 团费交否,备注) 线路信息表(路线名称,团费,简介,图形,路线编号) 团队信息表(团队编号,路线编号,团员人数,出发日期,返程日期) 旅游团队信息表(团队编号,团队负责人,团员人数,建团时间,是否出发,团费,盈亏) 密码信息(操作员,密码)题目8:报刊订阅管理系统 (1 人)25,35包括如下模块:登录功能:登录统为身份验证登录。分为管理员登录和一般用户登录。分别通过不 同的用户名和密码进入报刊订阅管理界面,新的用户需要注册。录入新信息功能:对于管理员,包括新用户信息和新报刊信息的录入功能,信息一旦 提交就存入到后台数据库中;普通用户自行注册进行可以修改个人信息。订阅功能:用户可以订阅报刊,系统自动计算所需金额,并显示在界面上;管理员不 可订阅报刊,必须以用户身份订阅报刊。查询功能:用户可以查询并显示自己所订阅的信息;管理员可以按人员、报刊、部门 分类查询。查询出的信息显示在界面上,并且可以预览和打印出结果。统计功能:管理员可以按用户、部门、报刊统计报刊的销售情况,并对一些重要的订 阅信息进行统计;普通用户可以统计出自己的订阅情况,并且可以预览和打印出结果。 系统维护功能:数据的安全管理,主要是依靠管理员对数据库里的信息进行备份和恢 复,数据库备份后,如果出了什么意外可以恢复数据库到当时备份的状态,这提高了系统和 数据的安全性,有利于系统的维护参考数据如下:管理员表(Adminuser) :管理员名、密码。部门表(Department) :部门号,部门名。 用户表(Users) :用户账号、密码、真实姓名、身 份证号、联系电话,联系地址,部门号(和部门表有关)等。 报刊类别表(NewspaperClass) :分类编号、 分类名称。 报刊信息表(Newspaper) :报刊代号、报刊名称、出版 报社、出版周期、季度报价、内容介绍、分类编号(和报刊类别表有关)等。订单表(Order) :订单编号、用户编号、报刊代号、订阅份数、订阅月数等。题目9:计算机等级考试教务管理系统(2 人)32包括四大模块: 用户设置:对考点代码,考点名称进行设置,设置用户与密码;系统复位:即清除上一次考试数据(在之前存入历史) 报名管理: 报各库录入(姓名不能不空,之间不能有空格) 增加、删除、修改、浏览准考证管理:准考证生成规则:xxx+yy+zz+kk,其中 XXX 为考点代码;YY 为语言代码,XX 为考场号,KK 为座位号 同一级别、语言应根据报名初始库信息按随机数生成准考证,同一考点最多可有 99*30=2970 名考生;如已生成准考证号,再重新生成准考证号,应该给予提示。 准考证打印考务管理:考生信息查询、浏览、打印成绩管理:成绩数据录入、接收 成绩合成(总成绩=笔试成绩*0.6+上机成绩*0.4),按大于或等于 60 合格 参考数据如下:初始报名表(准考证号(为空) ,报名号(主键) ,级别+语言种类(外键) ,姓名,性别, 出生年份,民族,身份证号,联系地址,联系电话,照片,备注,参加培训) 含准考证号的报名表(准考证号(为主键) ,报名号,级别+语言种类(外键) ,姓名,性别, 出生年份,民族,身份证号,联系地址,联系电话,照片,备注,参加培训)成绩表(准考证号,笔试成绩,上机成绩,总成绩) 级别语言代码表(级别语言代码,级别+语言) 用户信息表(考点代码,考点名称,用户名,密码)题目10:人事管理系统(1 人)21包括四大模块:登录管理:包括操作员管理,口令设置,权限管理人员管理:包括人事数据维护、人事信息查询和人事信息统计 工资管理部门管理:包括部门表,职称表和年份表查询及报表打印参考数据如下:人事表(编号,姓名,性别,出生日期,工作日期,部门代码,职称,婚否,简历,相片) 工资表(基本工资,岗位津贴,奖励,应发工资,水电,保险,实发工资) 部门表(代码,部门名称) 职称表(职称代码,职称名称) 年份表(年份代码,年份名称) 操作员表(操作员代码,操作员姓名,口令,部门,电话) 系统日志表(操作员代号,操作员姓名,登录时间,离开时间)题目11:商品销售管理系统(1 人)19包括四大模块:用户登录 基本信息管理:包括销售情况、商品信息、库存表、员工表等信息的录入、浏览、修改、撤销、删除和查询等 商品销售管理:包括商品售出、退回和入库 盘点:包括库存盘点、当日销售盘点参考数据如下: 商品信息表(商品编号,商品名称,品牌,型号,销售单价) 商品编号=类别代码(1 位)+品名代码(1 位)+品牌代码(2 位)+型号代码(2 位) 销售情况表(成交编号,商品编号,销售数量,总金额,销售日期,员工编号) 库存表(商品编号,供货商编号,进货日期,进货价,库存数量) 员工表(员工编号,员工姓名,性别,基本工资,职务,密码)供货商表(供货商编号,供货商名称,所在地,联系电话) 员工资料表(员工编号,员工姓名,是否党员,简历,照片)题目12:学生成绩管理系统(1 人)29包括四大模块:基本数据管理:包括院系管理,专业管理(设置院系下面的专业),班级管理(设置专业下面的班级),课程管理(设置相应专业下面的课程)学生信息管理:包括基本信息录入、基本信息修改学生成绩管理:包括学生成绩录入、学生成绩修改 信息查询:包括基本信息查询、成绩信息查询、学校人数统计 系统管理:用户管理、数据备份和系统帮助参考数据如下: 院系信息(院系代码,院系名称) 院系专业信息(班级、院系代码,专业) 学生基本信息(班号,学号,姓名,性别,出生年月,籍贯,政治面貌,身份证号,入学年月,家庭地址,邮政编码,图片信息,备注) 学生成绩表(学号,课号,成绩,备注) 课程表(课号,课程名称,学期,备注)班表(班号,班级名称)用户信息表(用户名,密码,用户标识)题目13:火车售票管理系统(4 人)36包括四大模块:售票管理订票管理信息查询系统维护参考数据如下:车次信息表(车次,始发站,终点站,发车时间,到达时间)订票信息表(车次,座位号,发车时期,发车时间,座位等级,票价)车次座位等级分配及座位占用表(车次,座位号,座位等级,票价,占用标志)用户信息表(用户名,密码,用户标识)题目14:小型物业管理系统(1 人)包括四大模块:房源管理:对原始资料的录入、修改、查询和刷新。一般用户可以查询与房间有关 的统计资料;物业主管可其进行增、删、改、插等操作租房管理:对房产出租,退租以及租房面积调整。其中物业主管可对其进行房租金 额计算和收款操作,一般用户对其查询水电处理:根据租房资料,结合当月水、电量进行分摊,完成应收水电费。其中物 业主管对其进行计算,其他查询交款处理:提供收款和发票打印以及交款数据查询查询处理:对租房资料、交款资料,发票资料进行查询参考数据如下:房源资料(名称,面积,月租,物业,仓库) 租房资料(名称,面积,单位,月租,物业,押金,仓库)水电资料(单位,电量,水量,电费,水费) 交费资料(收费项目,应收日期,应收金额,已收金额,未收金额,本次收款) 发票资料(单位,房租,电费,水费,物业) 权限资料(用户,密码,房源管理,租房管理,水电管理,交费管理,发票管理,系统维护) 其中系统管理员,有权进行系统维护;单位内部物业主管,有权进行物业资源调配、单元出 租,退租和收款开票操作;物业管理员,有权进行水电处理和收款处理等操行;租户代表, 有权进行种类费的查询操作 题目15:机房收费管理系统(1 人)7,34包括四大模块:登录模块上机管理模块 说明:上机登记时,余额不足 3 元或卡处于挂失状态,则拒绝登记 每位同学的一次上机形成一条记录,每 36S 遍历一次上机记录表,对表中所有正上机字段为 TRUE 的记录的上机用时增加 36S,同时从上机卡表的余额减少 上机卡管理模块充值挂失模块查找统计模块:统计某天上机的总时数、每次上机的平均时数和机房的收入;某学 生上机的次数、上机总时数、每次上机平均时间;挂失和查询余参考数据如下:上机卡(卡号,姓名,专业班级,余额,状态) 状态的取值有:正常(能自费上机)挂失上机记录(卡号,上机日期,开始时间,上机用时,正上机,管理号代码),上机用时记录学生上机时间(S);正上机是一个布尔型,为 True 表示正上机,每 36 秒刷新 其上机用时并扣除上机费用,为 False 表示上机结束。上机记录表永久保存,用于事后查询 和统计 管理员(代码,姓名,口令)题目16:高校药房管理(1 人)31包括四大模块:基础数据处理:包括医生和药剂师名单的录入,修改,删除及查询营业数据处理:包括药品进货上柜,处理划价,配药,柜存药品查询,处方综合查 询,交接班结转清。参考数据如下:药品信息表(货号,货名,计量单位,进货数量,进货单价,出售单价,进货日期,收货人 和供应商) 处方信息(编号,患者姓名,医生姓名,药剂师姓名,处方日期,配药日期) 处方药品信息(处方编号,药品货号,计量单位,配药数量,销售单价,已配药否) 医生名单和药剂师名单表(姓名)题目17:考勤管理系统(2 人)40包括四大模块:记录每个员工每天所有进入公司的时刻和离开公司的时刻。每天结束时自动统计当天的工作时间每天结束时自动统计当天迟到或早退的次数。对于弹性工作制,每天结束时自动统计当月的工时,并自动算出当月欠缺或富余的 时间每个月末统计该月的工作时间判断是束足够每个月末统计该月的工作天数并判断是否足够管理人员查询并修改工作时间(特殊情况下修改)管理人员账户管理(如设置密码等)管理人员设定早退及迟到的条件,每个月的工作时间管理人员设定每个月的工作日期及放假日期参考数据如下:员工信息(工号,姓名,年龄,入职时间,职位,性别,密码)配置信息(上班时间小时,上班时间分钟,下班时间小时,下班时间分钟,每天工作时间) 每月统计数据表(工号,姓名,剩余的时间,迟到的次数,早退的次数,工作天数) 每天统计信息表(工号,姓名,小时,分钟,动作,时间) 其中动作指的时入或离开公司 题目18:单位房产管理系统(2 人)33,10包括四大模块:系统模块:完成数据库维护、系统关闭功能 物业费用模块:完成本月物业的计费、历史资料查询和财务部门接口传送数据、物 业相关费用单价设置房屋资源模块:对房屋资源进行添加、列表显示、查询职工信息模块:对职工进行添加、列表显示、查询以及相应部门、职务进行维护帮助模块:对用户使用本系统提供在线帮助参考数据如下:职工(编号,姓名,性别,参加工作时间,行政职务,专业技术职务,评上最高行政职务时 间,评上最高专业技术职务时间,双职工姓名,现居住房号,档案号,房产证号,所在部门 编号,是否为户主) 部门(编号,部门名称) 住房级别表(编号,级别,住房标准,控制标准,级别分类) 房产情况(编号,房号,使用面积,现居住人 id,上一个居住人 id,最早居住人 ID,阳台面积) 物业费用(编号,房号,水基数,水现在值,电基数,电现在值,燃气基数,燃气现在值, 当前年份,当前月份) 价格标准(编号,水单价,电单价,燃气单价)题目19:标准化考试系统 (2 人)15,39功能要求: 设计一个简单的标准化考试系统,仅有单项选择题、多项选择题和判断题功能即可。包括四大模块:题库管理:实现试题的录入、修改、删除功能;考试子系统:能够实现考生做题、结果自动存入到数据库中,有时间提示;选择身份(登录)功能:系统能够记录考生输入的登录信息及交卷信息;自动评分功能:考生交卷后能自动评分;查看成绩功能:能够查询考生相关信息(包含成绩等)。参考数据如下:其它可供选择的题目:网上教务评教系统130,127,133 16学生日常行为评分管理系统232,110,230网上鲜花店 38基于BS结构的工艺品销售系统12基于BS结构的校园二手物品交易网站 37大学生就业管理系统201,208,234题库及试卷管理系统 数据库原理及应用课程设计报告题目: 课程设计选题管理系统 所在学院: 班 级: 学 号: 姓 名: 李四 指导教师: 2011年12月 日 目录一、概述二、需求分析三、概念设计四、逻辑设计五、系统实现六、小结 一、概述


数据结构实验报告

.需求分析
1.运行环境
硬件:计算机486/64M以上
操作系统: WIN9x 以上/WIN2000/WIN XP/WIN ME
相关软件:vistualC++
2.程序所实现的功能:
(1)建立并显示图的邻接表。
(2)深度优先遍历,显示遍历结果。
(3)对该图进行拓扑排序,显示排序结果。
(4)给出某一确定顶点到所有其它顶点的最短路径。
3.程序的输入,包含输入的数据格式和说明
(1)输入顶点数,及各顶点信息(数据格式为整形)
(2)输入边数,及权值(数据格式为整形)
4.程序的输出,程序输出的形式
(1)输出图的邻接表、深度优先遍历结果、拓扑排序结果。
(2)输入某一确定顶点到其它所有顶点的最短路径。
5.测试数据
二、设计说明
1、 算法设计的思想
建立图类,建立相关成员函数。最后在主函数中实现。具体成员函数的实现请参看源程序。  
2、 主要的数据结构设计说明
图邻接矩阵、邻接表的建立。图的深度优先遍历、拓扑排序、顶点之间的最短路径。
3、 程序的主要模板template class Graph
4、 程序的主要函数
Graph、link()、DFTraverse()、TopologicalOrder()、
TopologicalOrder()、GetVertexPos()、ShortestPath
三、上机结果及体会
1、 实际完成的情况说明
主要程序参考教材《数据结构——C++版》。
2、 程序的性能分析
可连续建图
3、 上机过程中出现的问题及其解决方案。
编译没有错误,但结果有问题。解决方案:虽然程序的编译通过,只能说明语法上没有问题,结果只所以不正确是因为算法上原因。
4、 程序中可以改进的地方说明
程序中的深度优先遍历,浪费空间较大,可以考虑用循环来做。但这样将付出代码长度度加长的代价。
5、 程序中可以扩充的功能及设计实现假想
实现假想:随用户的输入可以随时动态的显示图的生成。
6、 收获及体会
编写程序即是一件艰苦的工作,又是一件愉快的事情。最大的收获:编程时如果遇到看似简单但又无法解决的问题,很容易灰心丧气。此时切不可烦躁,一定要冷静的思考,认真的分析。要勇敢的面对问题,勇敢的接受问题,勇敢的处理问题,最后最勇敢的解决问题。
四、参考文献
数据结构(C++版) 叶核亚 主编 机械工业出版社
数据结构经典算法实现与习题解答 汪杰 编著 人民邮电出版社
数据结构课程设计 苏仕华 编著 机械工业出版社
数据结构程序设计题典 李春葆 编著 清华大学出版社
数据结构课程与题解(用C/C++描述) 胡圣荣 编著 北京大学出版社




[程序运行流程图]

char op //程序控制变量希望对你能有所帮助。


求一份数据结构课程设计报告

//class CNode.h
#ifndef __CNODE_H__
#define __CNODE_H__

#include
using namespace std;
struct stData //出生年月结构
{
int m_nYear;
int m_nMonth;
int m_nDay;
};

struct stResult //五门课成绩结构
{
double m_dSubject_1; //自己改成绩的名称
double m_dSubject_2;
double m_dSubject_3;
double m_dSubject_4;
double m_dSubject_5;
};

struct stStudent //声明学生信息的结构
{
string m_strNumber; //学生学号
string m_strName; //姓名
char m_chSex; //性别
struct stData m_stData; //出生年月
string m_strAppearance; //政治面貌
struct stResult m_stResult; //五门课成绩
};


typedef class CNode
{
private:
struct stStudent m_stStudent;
CNode* m_Next;
public:
CNode(); //构造函数
~CNode(); //析构函数
void SetNodeData(); //设置结点内容的函数成员
stStudent GetNodeData(); //获取结点内容的函数成员
void SetNodeNext(CNode* _Next); //设置结点Next指针的函数成员
void ShowNodeData(); //输出结点内容的函数成员
CNode* GetNodeNext(); //获取结点Next指针的函数成员
}LinkNode;

#endif


//class CLinkList
#ifndef __CLINKLIST_H__
#define __CLINKLIST_H__

#include "CNode.h"

typedef class CLinkList
{
private:
LinkNode* m_Head; //链表的头指针
LinkNode m_Node; //链表的头结点
public:
CLinkList(); //构造函数
~CLinkList(); //析构函数
void CreateList(); //初始化链表的函数成员
LinkNode* GetListNode(int _nIndex); //按位置查找指定位结点的成员函数
void InsertList(int _nIndex); //插入结点的成员函数
void DeleteList(int _nIndex); //删除某一结点的成员函数
LinkNode* GetHeadList(); //获取头指针的成员函数
void SetListData(int _nIndex); //设置链表中某一结点的值的成员函数
void ShowListData(int _nIndex); //这个是现实链表中某一结点值的函数成员
void DestroyList(int _nIndex); //销毁某一位置以后链表的成员函数
void ShowList(); //显示链表的成员函数
}LinkList;

#endif

//class CLinkList

#include "CLinkList.h"
#include "CNode.h"

CLinkList::CLinkList()
{
cout << "这个是构造函数"<< endl;

m_Head = &m_Node; //链表的头指针指向头结点
m_Node.SetNodeNext(NULL); //将头结点的Next指针设置为NULL;
}

CLinkList::~CLinkList()
{
cout << "这个是析构函数" << endl;
}

void CLinkList::CreateList() //以向后追加的方式创建一个链表,输入0退出
{
int nTemp = 0; //定义一个临时变量用于标志程序结束
cout << "欢迎来创建链表 !" << endl;
CNode * pTemp = NULL; //定义一个临时结点指针,用来增加新结点用
CNode * pNode = m_Head; //定义一个标记指针,首先叫其指向头结点

while(1)
{
pTemp = new LinkNode;

cout << "请输入下一个结点的内容!" << endl;
pTemp->SetNodeData(); //设置链表中结点的内容

cout << "如果想继续输入下一个学生的信息请输入 1,否则输入 0" << endl;
cin >> nTemp;
if ('0' == nTemp)
{
break;
}
pNode->SetNodeNext(pTemp); //让链尾的Next指向新建的结点
pNode = pTemp; //将结尾元素向后移
}
cout << "创建链表结束" << endl;
}


LinkNode* CLinkList::GetListNode(int _nIndex)
{
cout << "这个是按位置查找指定位结点的成员函数" << endl;

LinkNode* pNode = m_Head->GetNodeNext(); //定义一个临时的结点指针,初始化指向头结点
int Temp = 0; //定义一个临时的变量,用来标记已检查结点的个数的

if(-1 == _nIndex) //返回头结点(即头指针)
{
return m_Head;
}

if(_nIndex < -1) //_nIndex控制条件
{
cout << "您输入的是错误的位置!" << endl;
return 0;
}

while(pNode != NULL)
{
if(_nIndex == Temp)
{
return pNode;
}
pNode = pNode->GetNodeNext(); //临时结点向后移动
++Temp;
}

return pNode; //没找到结点就返回NULL

}

void CLinkList::ShowListData(int _nIndex);

void CLinkList::InsertList(int _nIndex) //插入结点的函数成员
{
cout << "这个是插入结点的成员函数" << endl;

LinkNode* pNode = GetListNode(_nIndex - 1); //定义一个结点类的指针,指向的是要插入位置的前一指针

LinkNode* pTemp = new CNode; //定义一个临时结点指针,用来增加新结点用

pTemp->SetNodeData(); //设置插入结点的内容

pTemp->SetNodeNext(pNode->GetNodeNext());
pNode->SetNodeNext(pTemp);
}

void CLinkList::DeleteList(int _nIndex)
{
cout << "这个是删除某一结点的成员函数" << endl;

LinkNode* pNode = GetListNode(_nIndex - 1); //定义一个结点类的指针,指向的是要删除位置的前一指针
LinkNode* pTemp = NULL; //定义一个临时结点指针,用来指向要删除的结点

pTemp =pNode->GetNodeNext(); //把pTemp指向要删除的结点

pNode->SetNodeNext(pTemp->GetNodeNext()); //把pNode指向要删除的结点的后一个结点

delete pTemp; //删除结点
pTemp = NULL;
}

LinkNode* CLinkList::GetHeadList()
{
cout << "这个是获取头指针的成员函数" << endl;

return m_Head;
}

void CLinkList::SetListData(int _nIndex)
{
cout << "这个是设置链表中某一结点的值的成员函数" << endl;

CNode *pNode = GetListNode(_nIndex); //定义一个结点类的指针,指向的是要修改内容位置的结点

pNode->SetNodeData(); //修改内容

}

void CLinkList::ShowListData(int _nIndex)
{
cout << "这个是显示链表中某一结点值的成员函数" << endl;

CNode *pNode = GetListNode(_nIndex); //定义一个结点类的指针,指向的是要获取内容位置的结点

pNode->ShowNodeData(); //返回想要得到位置的结点内容
}

void CLinkList::DestroyList(int _nIndex)
{
cout << "这个是销毁某一位置以后链表的成员函数" << endl;

LinkNode* pTemp = GetListNode(_nIndex - 1); //定义一个结点指针,指向要销毁位置的前一结点
LinkNode* pNode = pTemp->GetNodeNext(); //定义一个结点指针,指向要销毁位置的结点

while(pTemp->GetNodeNext() != NULL) //销毁动作的结束条件或初始条件
{
pTemp->SetNodeNext(pNode->GetNodeNext()); //把需要销毁的位置的前结点的Next指向销毁位置的下一个结点
delete pNode; //销毁结点

pNode = pTemp->GetNodeNext(); //把pNode重新指向要销毁位置的结点
}
}

void CLinkList::ShowList()
{
cout << "这个是显示链表的成员函数" << endl;

int nTemp = 0; //定义一个临时的整形变量用来控制输入的个数

LinkNode* pTemp = m_Head->GetNodeNext(); //定义一个结点类指针,指向第0位的结点
if(NULL == pTemp)
{
cout << "这是个空链" << endl;
}

while(pTemp != NULL)
{
pTemp->ShowNodeData();

++nTemp;
if(0 == nTemp % 5 && nTemp != 0) //控制每行只能输出5个结点的内容
{
cout << endl;
}

pTemp = pTemp->GetNodeNext();
}
}


//class CNode
#include "CNode.h"

CNode::CNode() //构造函数
{
//m_stStudent = {0};
m_Next = NULL;
}

CNode::~CNode() //析构函数
{
}

void CNode::SetNodeData()
{
char* pNumber = new char[30]; //用来接收字符串的临时变量
char* pName = new char[30];
char* pAppearance = new char[30];

cout << "学生学号: " << endl;
cin >> pNumber;
m_stStudent.m_strNumber = pNumber;
cout << "姓名: " << endl;
cin >> pName;
m_stStudent.m_strName = pName;
cout << "性别: " << endl;
cin >> m_stStudent.m_chSex;
cout << "出生年月: " << endl;
cout << "m_stData.m_nYear" << endl;
cin >> m_stStudent.m_stData.m_nYear;
cout << "m_stData.m_nMonth" << endl;
cin >> m_stStudent.m_stData.m_nMonth;
cout << "m_stData.m_nDay" << endl;
cin >> m_stStudent.m_stData.m_nDay;
cout << "政治面貌: " << endl;
cin >> pAppearance;
m_stStudent.m_strAppearance = pAppearance;
cout << "五门课成绩: " << endl;
cout << "m_dSubject_1: " << endl;
cin >> m_stStudent.m_stResult.m_dSubject_1;
cout << "m_dSubject_2: " << endl;
cin >> m_stStudent.m_stResult.m_dSubject_2;
cout << "m_dSubject_3: " << endl;
cin >> m_stStudent.m_stResult.m_dSubject_3;
cout << "m_dSubject_4: " << endl;
cin >> m_stStudent.m_stResult.m_dSubject_4;
cout << "m_dSubject_5: " << endl;
cin >> m_stStudent.m_stResult.m_dSubject_5;

delete []pNumber; //释放内存
pNumber = NULL; //指针置空

delete []pName; //释放内存
pName = NULL;

delete []pAppearance; //释放内存
pAppearance = NULL;
}

stStudent CNode::GetNodeData() //返回结点内容(即学生信息)
{
return m_stStudent;
}

void CNode::SetNodeNext(CNode* _Next)
{
m_Next = _Next;
}

void CNode::ShowNodeData()
{
const char* pNumber = m_stStudent.m_strNumber.c_str(); //用来接收字符串的临时变量
const char* pName = m_stStudent.m_strNumber.c_str();
const char* pAppearance = m_stStudent.m_strAppearance.c_str();


cout << "学生学号: " << pNumber << '\t' << "姓名: " << pName << '\t' << "性别: " << m_stStudent.m_chSex;
cout << "出生年月: " << m_stStudent.m_stData.m_nYear << ',' << m_stStudent.m_stData.m_nMonth << ',' << m_stStudent.m_stData.m_nDay;
cout << "政治面貌: " << pAppearance << "五门课成绩: " << endl;
cout << "m_dSubject_1: "<< m_stStudent.m_stResult.m_dSubject_1<< endl;
cout << "m_dSubject_2: "<< m_stStudent.m_stResult.m_dSubject_2<< endl;
cout << "m_dSubject_3: "<< m_stStudent.m_stResult.m_dSubject_3<< endl;
cout << "m_dSubject_4: "<< m_stStudent.m_stResult.m_dSubject_4<< endl;
cout << "m_dSubject_5: "<< m_stStudent.m_stResult.m_dSubject_5<< endl;

}

CNode* CNode::GetNodeNext()
{
return m_Next;
}


#include "CLinkList.h"
#include "CNode.h"

void Text(); //测试函数声明

int main()
{
cout << "这是mian函数" << endl;
Text();
return 0;
}

void Text()
{
cout << "这个是测试函数" << endl;

LinkList* pList = new LinkList; //创建一个内存链表对象

cout << "------------------CreateList-----------------------------" << endl;
pList->CreateList(); //初始化链表的函数成员
pList->ShowList();
cout << endl;

cout << "------------------GetListNode-----------------------------" << endl;
LinkNode* pNode = NULL; //定义一个临时的结点类指针用于检测查找函数成员
pNode = pList->GetListNode(3); //按位置查找指定位结点的成员函数的测试

if(pNode)
{
cout << "用按位置查找的方法找到了指定位结点" << endl;
}
else
{
cout << "对不起,用按位置查找的方没有找到指定位结点" << endl;
}
cout << endl;

cout << "------------------InsertList-----------------------------" << endl;
pList->InsertList(0); //插入结点的成员函数的测试
pList->ShowList();
cout << endl;

cout << "------------------DeleteList-----------------------------" << endl;
pList->DeleteList(0); //删除某一结点的成员函数的测试
pList->ShowList();
cout << endl;

cout << "------------------GetHeadList-----------------------------" << endl;
pNode = NULL;
pNode = pList->GetHeadList(); //获取头指针的成员函数的测试
if(pNode)
{
cout << "已经返回了头指针" << endl;
}
else
{
cout << "对不起,头指针为空" << endl;
}
cout << endl;

cout << "------------------GetHeadList-----------------------------" << endl;
pList->SetListData(3); //设置链表中某一结点的值的成员函数的测试
pList->ShowList();
cout << endl;

cout << "------------------GetListData-----------------------------" << endl;
cout ShowListData(3) =";
pList->ShowListData(3); //获取链中某一结点值的成员函数的测试
cout << endl;

cout << "------------------DestroyList(3)-----------------------------" << endl;
pList->DestroyList(3); //销毁第3位置以后链表的成员函数的测试
pList->ShowList();
cout << endl;

cout << "------------------DestroyList(0)-----------------------------" << endl;
pList->DestroyList(0); //销毁第0位置以后链表的成员函数的测试
pList->ShowList();
cout << endl;

delete pList; //释放内存
pList = NULL; //指针置空

}


你的要求太多 , 没仔细看, 我把我给别人写的赋值给你吧 , 我已经写的很全了,程序有问题可以给我留言


数据结构课程设计

30个旅客同乘一条船,因为严重超载,加上风高浪大,危险万分;因此船长告诉乘客,只有将全船一半的旅客投入海中,其余人才能幸免遇难。无奈,大家只得同意这种办法,并议定30个人围成一圈,由第一个人开始,顺时针依次报数,数到第9人,便把他投入大海中,然后从他的下一个人数起,逆时针数到第5人,将他投入大海,然后从他逆时针的下一个人数起,顺时针数到第9人,再将他投入大海,如此循环,直到剩下15个乘客为止。问哪些位置是将被扔下大海的位置。
给出每个部分的算法说明啊,用c语言做! 搞定的快的话 追加50
假设n个旅客排成一个环形,依次顺序编号1,2,…,n。从某个指定的第1号开始,沿环计数,数到第m个人就让其出列,然后从第m+1个人反向计数到m-k+1个人,让其出列,然后从m-k个人开始重新正向沿环计数,再数m个人后让其出列,然后再反向数k 个人后让其出列。这个过程一直进行到剩下q个旅客为止。【摘要】
数据结构课程设计【提问】
30个旅客同乘一条船,因为严重超载,加上风高浪大,危险万分;因此船长告诉乘客,只有将全船一半的旅客投入海中,其余人才能幸免遇难。无奈,大家只得同意这种办法,并议定30个人围成一圈,由第一个人开始,顺时针依次报数,数到第9人,便把他投入大海中,然后从他的下一个人数起,逆时针数到第5人,将他投入大海,然后从他逆时针的下一个人数起,顺时针数到第9人,再将他投入大海,如此循环,直到剩下15个乘客为止。问哪些位置是将被扔下大海的位置。
给出每个部分的算法说明啊,用c语言做! 搞定的快的话 追加50
假设n个旅客排成一个环形,依次顺序编号1,2,…,n。从某个指定的第1号开始,沿环计数,数到第m个人就让其出列,然后从第m+1个人反向计数到m-k+1个人,让其出列,然后从m-k个人开始重新正向沿环计数,再数m个人后让其出列,然后再反向数k 个人后让其出列。这个过程一直进行到剩下q个旅客为止。【回答】
本游戏的要求用户输入的内容包括:
1. 旅客的个数,也就是n的值;
2. 正向离开旅客的间隔数,也就是m的值;
3. 反向离开旅客的间隔数,也就是k的值;
4. 所有旅客的序号作为一组数据要求存放在某种数据结构中。
本游戏要求输出的内容是包括
1. 离开旅客的序号;
2. 剩余旅客的序号;【回答】


数据结构课程设计的需求分析怎么写

一 需求分析:在该部分中根据设计题目的要求,充分地分析和理解问题,叙述系统的功能要求,明确问题要求做什么?以及限制条件是什么?1.1问题描述1.2基本要求(1) 输入的形式和输入值的范围;(2) 输出的形式;(3) 程序所能达到的功能;二 概要设计说明本程序中用到的所有抽象数据类型的定义。主程序的流程以及各程序模块之间的层次(调用)关系。1、 数据结构2、 程序模块3、各模块之间的调用关系以及算法设计三 详细设计实现概要设计中定义的所有数据类型,对每个操作写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);写出出函数和过程的调用关系.四 测试与分析测试数据,输出测试的结果,这里的测试数据应该完整和严格。并对结果进行分析。五 总结总结可以包括 : 课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容。

上一篇:学习扎各种发型

下一篇:没有了