第一篇:华中科技大学大学生科技创新基地设计报告格式及要求
华中科技大学大学生科技创新基地设计报告格式及要求
一 设计报告格式
题目:×××××××××(居中 三号黑体)
署名:×××、×××、×××(居中 五号宋体)
摘要:„„(左顶格 小四宋体)
关键词:„ ;„ ;„(3~5个)
正文(关键词与正文之间应空两行小四宋体)
„„„
„„„
„„„
参考文献:(左顶格,四号宋体)
或
[参考文献](居中)
[1](序号左顶格,用阿拉伯数字加方括号标示;每一条目的最后均以实心点结束;8个以内;五号宋体)
„„„
„„„
二 设计报告内容摘要部分的撰写:摘要是概括地总结论文的内容。一般写摘要应考虑必须自成系统,并尽量提供更多的信息。摘要应包括下列内容:
A.简明扼要地说明课题研究的主要意义和目的;
B.作者做了哪些工作;
C.如何做的(采用的方案);
D.主要结果和结果的意义。
摘要应避免写成正文小标题的罗列,应具有独立性和自含性,并采用第三人称表述,一般以300字内为宜。关键词部分的撰写:关键词是反映文章主题内容的名词和术语,应尽量从汉语主题词表中选取,第一关键词应能体现出文章的学科分类。正文部分的撰写:正文可自拟分标题,但应按要求含以下内容:⑴ 方案设计与论证(考虑过的各方案框图、简要原理和优缺点以及所选方案之理由等)。
⑵ 理论计算(单元电路的设计,元器件的选择,指标参数计算)。
⑶ 电路图及设计文件[电路原理图(一般不必给出全图,应以有特色的电路部分为主)、算法、软件流程图(设计中使用单片机的)]。
⑷ 测试方法与数据(系统功能或指标的测试方法、测量仪器型号、测试数据和波形)。
⑸ 结果分析(指标阐述、误差分析、所设计电路的特点以及改进意见)。⑹ 收获、体会和建议。
三 报告要求正文
⑴ 文内标题力求简短、明确,各层标题均单独占行书写,第一级标题和第二级标题序数顶格书写,空一格接写标题,末尾不加标点。第三级标题空两格书写序数,空一格书写标题。建议标题的编号:一,二,„;1,2,„;(1),(2),„,四级以后的标题不作要求。
⑵ 用字应符合现代汉语规范,除某些古籍整理和古汉语方面的文章外避免使用旧体字、异体字和繁体字。简化字应执行新闻出版署和国家语言文字工作委员会以1992年7月7日发布的《出版物汉字使用管理规定》,以1986年10月10日重新发表的《简化字总表》为准。
⑶ 标点符号使用要遵守GB/T15834-1995《标点符号用法》的规定(参考文献著录中的标点作为标识的用法另据后文规定),除前引号、前括号、破折号、省略号外,其余都应紧接文字后面,不能排在行首。夹注及表格内的文句末尾不用句号。著作、文章、文件、刊物、报纸等均用书名号。用数字简称的会议或事件,只在数字上加引号;用地名简称的,不加引号。外文的标点符号应遵循外文的习惯用法。
⑷ 数字使用执行GB/T15835-1995《出版物上数字用法的规定》,凡公历世纪、年代、年、月、日、时刻和各种记数与计量(包括正负数、分数、小数、百分比、约数),均采用阿拉伯数字。年份不能简写。星期几一律用汉字。非公历纪年用汉字,并加圆括号注明公元纪年。多位的阿拉伯数字不能移行。4位以上数字采用3位分节法,即节与节之间空1/4字距。5位以上的数字尾数零多的,可以“万”、“亿”作单位。数字作为语素构成定型的词、词组、惯用词、缩略语,应使用汉字。邻近两个数字并列连用所表示的概数均使用汉字数字。
⑸ 插图和照片应比例适当,清楚美观;图中文字与符号一律植字。插图应标明图序和图题,序号和图题之间空1字;图序以阿拉伯数字连续编号,仅有1图者于图题处标明“图1”;图题一般居中排于图的下方。图一般随文编排,图较
多时也可集中排在文末或其他适当位置。插图的横向尺寸不超过版面2/3者,图旁应串文。图需卧排时,应顶左底右。插页图版可另编页码,并在图版上方标识文章篇名和所在页码。建议图和文字作在同一个文本框里面,便于修改排序。
⑹ 表格应结构简洁,具有自明性。尽可能采用三线表,必要时可加辅助线。表格应有表序和表题。序号和表题居中排于表格上方,两者之间空1字。表序以阿拉伯数字连续编号,仅有1表者,于表题处标明“表1”。表内数据一律采用阿拉伯数字,个位数、小数点位置应上下对齐。相邻行格内的数字或文字相同时,应重复填写。表一般随文编排,先见文字后见表。表格的横向尺寸不超过版面2/3者,表旁应串文。表需卧排时,应顶左底右;需跨页时,一般排为双面跨单面;需转页时,应在续表上方居中注明“续表×”,表头重复排出。
⑺ 文稿中的计量单位应严格执行GB 3100-3102-93《量和单位》的规定。⑻ 文稿中的数学公式应简明、准确地表达各个量之间的关系,一般另行编排,主辅线须区分清楚。在不引起误解的前提下,某些公式也可夹在文句中间。数学公式的编排,应遵循量、符号的书写规则。
⑼ 每篇文章应尽可能排在连续页码上。确需转页时应在当页最末一行标点停顿处注明“下转第×页”;在接转部分之前注明“上接第×页”,字体与正文区别,加圆括号。转页应尽可能少,并不可逆转。
⑽ 分期连载的长文,应在每期篇名之后加注连载序号,文末加注“待续”,最末一期加注“续完”。参考文献
⑴ 参考文献的著录应执行GB7714-87《文后参考文献著录规则》及《中国学术期刊(光盘版)检索与评价数据规范》规定,采用顺序编码制,在引文处按论文中引用文献出现的先后以阿拉伯数字连续编码,序号置于方括号内。一种文献在同一文中被反复引用者,用同一序号标示,需表明引文具体出处的,可在序号后加圆括号注明页码或章、节、篇名,采用小于正文的字号编排。
⑵ 文后参考文献的著录项目要齐全,其排列顺序以在正文中出现的先后为准;参考文献列表时应以“参考文献:”(左顶格)或“[参考文献]”(居中)作为标识;序号左顶格,用阿拉伯数字加方括号标示;每一条目的最后均以实心点结束。
⑶ 各种参考文献的类型,根据GB3469-83《文献类型与文献载体代码》规定,以单字母方式标识:M-专著,C-论文集,N-报纸文章,J-期刊文章,D-学位论文,R-研究报告,S-标准,P-专利;对于专著、论文集中的析出文献采用字母
“A”标识,对于其他未说明的文献类型,采用单字母“Z”标识。对于数据库、计算机程序及电子公告等电子文献类型,以双字母作为标识:DB-数据库,CP-计算机程序,EB-电子公告。对于非纸张型载体电子文献,需在参考文献标识中同时标明其载体类型,建议采用双字母表示:MT-磁带,DK-磁盘,CD-光盘,OL-联机网络,并以下列格式表示包括了文献载体类型的参考文献类型标识:DB/OL 联机网上数据库,DB/MT 磁带数据库,M/CD 光盘图书,CP/OL磁盘软件,J/OL 网上期刊,EB/OL 网上电子公告。以纸张为载体的传统文献在引作参考文献时不注其载体类型。
⑷ 参考文献著录的条目以小于正文的字号编排在文末。其格式为:
期刊:[序号] 作者姓名.文题.刊名,年,卷(期):起页~止页(任选). 图书:[序号] 作者姓名.书名.出版地:出版社,年.
其中,作者姓名3人以内写全,3人以外加“等”或“,et al”;析出文献请注明源文献。
示例:
[1] 周振甫.周易译注[M].北京:中华书局,1991.
[2] 陈崧.五四前后东西方文化问题论战文选[C].北京:中国社会科学出版社,1985.
[3] 陈桐生.中国史官文化与《史记》[D].西安:陕西师范大学文学研究所,1992.
[4] 白永秀,刘敢,任保平.西安金融、人才、技术三大要素市场培育与发展研究[R].西安:
陕西师范大
学西北经济发展研究中心,1998.
期刊文章
[序号] 主要责任者.文献题名[J].刊名,年,卷(期):起止页码.
示例:
[5] 何龄修.读顾诚《南明史》[J].中国史研究所,1998,5(3):167~173.
论文集中的析出文献
[序号] 析出文献主要责任者.析出文献题名[A].原文献主要责任者(任选).原文献题名
[C].出版地:出版年.析出文献起止页码.
示例:
[6] 瞿秋白.现代文明的问题与社会主义[A].罗荣渠.从西化到现代化[C].北京:北京大
学出版社,1990.121-133.
报纸文章
[序号] 主要责任者,文献题名[N].报纸名,出版日期(版次).
示例:
[7] 谢希德.创造学习的新思路[N].人民日报,1998-12-25(10).
国际标准、国家标准 [序号] 标准编号,标准名称[S].
示例:
[8] GB/T 16159-1996,汉语拼音正词法基本规则[S].
电子文献
[序号] 主要责任者.电子文献题名[电子文献及载体类型标识].电子文献的出处或可获得地址,发表或更
新日期/引用日期(任选).
示例:
[9] 王明亮.关于中国学术期刊标准化数据库系统工程的进展
[EB/01].,1998-08-16/1998-10-04.
[10] 万锦坤.中国大学学报论文文摘(1983-1993).英文版[DB/CD].北京:中国大百科全书出版社,1996.
各种未定类型的文献
[序号] 主要责任者.文献题名[Z].出版地:出版者,出版年.
示例:
[11] 张永禄.唐代长安词典[Z].西安:陕西人民出版社,1980.
⑸ 注释集中排在文末时,参考文献排在注释之后。
三、打印及装订要求:
一级标题:三号黑体;居中
二级标题:四号宋体,左对齐。
三级标题以及正文:小四号宋体;均缩进2 字符(全角)。
行间距采用1.25 倍行距。
图号、图名、表号、表名:五号宋体,居图或表中央。
页码在页面下方,居中。
纸型:A4
页边距:上:2.54cm,下:2.54cm,左:3.17cm,右3.17cm
第二篇:2011华中科技大学电工基地寒假作业
2011级招新寒假作业
1准备笔试
考核方式:笔试。
考核内容:C语言基础知识、模拟电路基础知识、大众科普、人文素养、快速学习能力等。要求:
(1)【必做】C语言主要考查指针前的内容理解(含指针)以及编写算法实际解决问题的能力。参考书籍:《标准C语言程序设计及应用》周纯杰主编。
(2)【必做】模拟电路知识主要考察模拟电路的一些基本概念,基本晶体管的特性以及运算放大器相关知识等。参考书籍:《电子技术基础—模拟部分》(第五版)康华光主编(4.5节之前,包括4.5节)。
(3)【选做】寒假阅读一本国学、哲学或人物传记、励志方面的经典书籍。推荐书籍:《沉思录》马可·奥勒留著;《苏菲的世界》乔斯坦·贾德著;《富兰克林自传》本杰明·富兰克林著;世纪人文系列书籍。可以阅读的书目不限于此,基地深信足够优秀的同学应该都具有快速鉴别一本书的能力。
(4)【选做】寒假每天学习一则附录提供的国学文段(寒假推荐句子30句),要求能借助工具书理解其含义并作自己的思考。
2做好进入基地的准备
考核方式:在笔试中有所体现。考核内容:同学们对基地的了解程度。要求:
【必做】同学们离进入基地只有一步之遥了。在基地里,你就是主人,但是你是否充分做好了成为基地的主人的准备了呢?请利用寒假或寒假前后时间,通过登录中心网站或其他网站、采访学长、调查、实地参观等任何你能想到的手段了解进入基地以后的学习、生活、文化,以及将来可能参加的比赛、基地同学可能会涉足的领域、基地历届杰出的学长、基地可以提供给自己的资源平台,并思考自己的未来与基地的关系——如将来自己想往哪方面发展等问题,做好充分的进入基地的准备。创意项目
考核方式:提交文档,文档成绩按一定比例计入最终录取成绩
考核内容:在我们生活中,经常会遇到一些不够便捷或者还可以改善、提高的地方,而科技恰好可以改变它们。请以“科技让生活更美好”为主题设计一个创新项目。要求:
【必做】我们非常鼓励同学们的发散思维,但是发散也应该有个“度”。我们要求同学们提出的项目要符合当今社会实际情况,最好不要提诸如探索某星球之类的在当今或者未来几年内不可能做到的项目。有项目背景和可行性分析,能提出具体实施方案更好。
提交的文档要求为纸质打印档。其目的在于让同学们借此机会学习文档的排版的相关知识。附件中提供了《华中科技大学大学生科技创新基地设计报告格式及要求》,可以作为文档格式以及排版的参考。文档格式以及排版占本次创意项目总成绩的30%。
注:
1.作品被评选为“十佳作品”的同学可以根据自己意愿或与本院系负责人协商决定在寒假期间完成寒假作业还是完善作品。若选择完成完善作品,则需在寒假开始之前向本院系负责人提出需要完善的部分的内容及指标,经院系负责人同意后于2月18日之前向本院系负责人提交寒假期间积累的作品文档以及完善后的作品;若选择完成寒假作业,则需同样参加笔试。
2.为鼓励提出优秀的可行性较强的创意的同学,中心将会从所有参加验收的创意项目中评选出“十佳创意”。评选为“十佳创意”的同学,若无其他特殊情况,同样也会被中心直接录取为2011级正式成员,并在11级基地新生动员大会上与“十佳作品”一同予以奖励。
3.创意项目文档请直接提交给本院负责人。提交的截止时间为2012年2月17日23:59。笔试时间初步定在2012年2月26日晚。地点以及考场分配待定。
4.每个想加入基地的学生看到如此繁重的寒假作业之后会有何感想?如果遇到这样的考验就有了放弃的念头,那么心中的远大理想、远大抱负也只能是空想。5.对寒假作业有任何疑问请咨询院系负责人。
6.基地原则上不对个人因参加基地招新过程而产生的各种支出负责。基地对招新过程中各项事宜有最终解释权。
祝大家寒假愉快并且有个美好的大学生活。
第三篇:大学生科技创新基地纪律管理条例
大学生科技创新基地纪律管理条例
1.对于大声喧哗的成员或社团给予制止并警告。
2.周一至周六,检查人员若发现有成员聊QQ,把电脑号记下来,累计一天超
过5次者,扣除该社团量化分2分。
3.在周一至周六发现有看视频(学习教程除外)的成员,检查人员责令其关闭,并记下电脑号,扣除该社团量化分3分,两周内累计发现两次立即清出创新基地。
4.检查人员发现打游戏的成员,把电脑号记下来,并及时通知该社团负责人。
打游戏者一经发现立即清出社团,并扣社团量化5分。
5.进创新基地必须佩带证件,忘带证件的成员,累计每周8次以上,扣除社团
量化分3分(以登记的人数为准);对于不带证件且不登记的成员发现即扣除社团量化分1分,并要求社长给予口头解释;对于转借证件的成员发现即扣除社团量化分2分,并要求社长上交检查一份,外部人员不服从管理交于分团委处理。
6.检查人员在工作时候若有出现不配合,不尊重检查人员的成员或社团交给管
委会负责人处理。管委会负责人根据具体情节经过协商后对当事人或社团做出相应处分。对于有语言冲突甚至肢体冲突的成员或整个社团,可立即登记,并由管委会负责人直接交分团委处理。
7.如果有社团不积极配合管委会工作(包括每周的打水,每月的会费等等),管委会将在大厅贴出通报批评,并扣除社团量化分0.5—2分,打水不积极的,加罚一周。
8.创新基地成员若对管委会工作人员的工作有异议,可以向管委会分管负责人
提出异议,管委会将会同其社团会长进行协商处理。
大学生科技创新基地管理委员会
2011-10
第四篇:科技创新要求
关于2013大学生创新创业训练计划立项的预通知
为了贯彻落实《中国石油大学(北京)大学生创新创业训练计划工作方案》、《中国石油大学(北京)大学生科技创新行动计划》(中石大京校〔2005〕38号)精神,组织开展好2013国家级大学生创新创业训练计划立项申请工作、2013年北京市支持中央在京高校共建项目工作、我校第十三批大学生科研训练计划工作,现组织开展立项申请工作,具体要求如下:
一、项目内容
此次立项内容包括创新训练项目、创业训练项目和创业实践项目三类。创新训练项目是在校本科生个人或团队,在导师指导下,自主完成创新性研究项目设计、研究条件准备和项目实施、数据处理与分析、研究报告撰写、成果(学术)交流等工作。创新训练项目包含三种类型,分为自主立项项目、双向选择项目和竞标项目(双向选择项目及竞标项目题目见附件)。学生可根据自己的实际情况申请或竞标。项目又分为国家级、北京市级、校级三个等级。
创业训练项目及创业实践项目只包含国家级项目。
创业训练项目是本科生团队,在导师指导下,团队中每个学生在项目实施过程中扮演一个或多个具体的角色,通过编制商业计划书、开展可行性研究、模拟企业运行、参加企业实践、撰写创业报告等工作。
创业实践项目是本科生团队,在学校导师和企业导师的共同指导下,采用前期创新训练项目(或创新性实验)的成果,提出一项具有市场前景的创新性产品或者服务,以此为基础开展创业实践活动。
二、申报时间
本申请项目时间为:2013年3月1日至3月15日。
三、审批时间
1.学院指导专家组初评时间:2013年3月16日至3月30日。
2.学校指导专家组评审时间:2013年3月31日至4月15日。
四、申报程序
1.选定好自己所要申报的项目类别,项目内容及名称。
2.本次申报训练计划项目分为三大类:“创新训练项目”、“创业训练项目”和“创业实践项目”。学生可选择自己喜欢的项目类型,创新训练项目学生可以申请校级项目,或者直接进入学校的立项等级评审(通过开题答辩形式最终确定国家级、北京市级或校级);创业训练项目及创业实践项目立项即为国家级。
3.学生在校园网下载申请书。申请书一式三份,使用A4纸打印。4.根据申请书表格设置,填写相关内容,同时请一名专业教师作为本项目的指导教师并填写推荐意见。
5.申请书由学生自行上交至项目挂靠单位(所在学院团委、团总支或机关)。
6.登录教务处网页的实践教学选课系统创新创业板块进行相关申报。
7.创新和创业训练项目允许已完成项目继续拓展研究,程序如上。
五、挂靠单位
所有项目立项都必须有一个挂靠单位,挂靠单位一般为项目负责人所在学院团委、团总支或者项目提供单位,负责项目实施的日常管理、进度监控、研究条件的保障和立项经费的使用审批等。所有项目立项都必须有指导教师,学生可以主动联系确定,也可以由挂靠单位指派,最终由挂靠单位审批。
六、项目研究人员申请条件
1.原则上面向本科生申报,在校各年级的本科学生均可参与。创新训练项目的申请者需是本科生个人或团队(研究生可申报科技创新项目中的校级项目);创业训练项目的申请者需是本科生团队。创业实践项目的申请者需是本科生团队,其中可包括本科毕业后已成为研究生的相关前期创新训练项目(或创新性实验)的负责人或主要成员。项目负责人毕业后可根据情况更换负责人,在能继续履行项目负责人责任的情况下,允许项目负责人毕业后以大学生自主创业者的身份继续担任该创业实践项目负责人。
2.项目由本科生个人或团队向学校提出申请。创新训练类项目团队人数一般不超过3人;创业训练类和创业实践类项目团队人数根据项目需要确定;原则上每个学生不能同时参与两个及以上“训练计划”项目。
七、指导教师遴选条件
指导教师一般由校内教师担任,也可由校外专家担任。
1.治学严谨、为人师表、责任心强、关心大学生、富有奉献精神。
2.有一定的学术水平,较好的教学、科研与实验室工作背景。
3.每名教师和校外专家指导的项目一般不超过2项。
八、审批程序
1.本所有申请项目申报截止后,由项目挂靠学院指导专家组进行初评评审,给出初评结果及排序。
2.经学院指导专家组初评评审同意立项的项目,由挂靠单位(学院团委、团总支)统一整理后上报学校“训练计划”工作小组,同时上报《中国石油大学(北京)大学生创新创业训练计划建议立项项目统计表》一份及同意推荐立项项目的《中国石油大学(北京)大学生创新创业训练计划申请书》一式三份。上报时间截至2013年3月30日。
九、立项程序
1.由学校“训练计划”工作小组下发正式通知,确立本的所有立项项目、级别及项目经费资助最高额度。
2.通知形式有:校园网站、通知公告栏、正式文件等。3.凡正式通过立项项目,需确定项目完成时间。后期如有项目负责人,成员,完成时间更改等情况都需按要求下载《中国石油大学(北京)大学生创新创业训练计划项目变更申请书》按程序更改。
十、中期检查时间
1.学校每学期对立项项目的进展情况进行一次检查;未能按进度要求完成项目阶段任务的项目,按规定进行整改、终止或撤销。
2.本立项项目中期检查时间:2013年10月20日前完成。项目中期检查按挂靠单位要求进行,将相关审核材料上交至挂靠单位。
3.由挂靠单位(所在学院团委、团总支)对项目进行检查评阅,统一整理后填写《中国石油大学(北京)大学生创新创业训练计划项目中期检查统计表》,将此表于2013年10月31日前上报学校“训练计划”工作小组。同时将原始材料备案,以备检查。
十一、结题时间
1.创新、创业项目完成时间原则上不超过两年。学生必须在本科毕业前完成项目。创业实践项目不超过三年。学生申请项目时需按需填写项目周期,按周期结题。学校每年春季组织一次结题评审,除创业实践项目,其他项目必须在学生毕业前完成。
2.按预期完成时间无法结题的项目,项目负责人需提前一个月提交延期申请报告,经指导教师、挂靠单位(所在学院团委、团总支或机关)、工作小组审批通过后,一式四份上交学校、挂靠单位(所在学院团委、团总支)及指导教师各一份,项目负责人保留一份。确系无
法完成的项目,项目负责人必须提交一份说明,并视情况全部退回或部分退回前期支付的50%经费。3.所有申请立项项目结题报告、论文统一为A4打印稿,不接收手写稿,结题报告一式三份。科技发明制作需上交一定的实物、光盘、模型、图片、图纸等,若设备不易移动,需说明现场演示。所有科技发明制作必须全部附详细的说明文字或结题报告。
十二、交流评奖
1.所有项目将分等级评奖,具体评奖细则需按当年规定执行。2.项目可申请参与评奖,由挂靠单位初审并推荐参与校级交流评奖,学校大学生创新行动计划管理办公室将统一组织答辩、展示并评选“中国石油大学(北京)大学生科研训练计划成果奖”。获奖等级分一等奖、二等奖、三等奖。
3、学校大学生科技创新行动计划管理办公室统一公布获奖项目名单。
4、获奖证书由项目挂靠单位大学生科技创新行动计划管理办公室(团委、团总支)到学校科技创新行动计划管理办公室统一办理。
5、推荐相关项目参加“挑战杯”等比赛。
关于2012年国家级大学生创新创业训练计划立项项目结题验收工作的预通知:
一、结题要求 1.创新、创业项目完成时间原则上不超过两年。学生必须在本科毕业前完成项目。创业实践项目不超过三年。学校每年组织一次结题评审,学生可根据项目完成情况申请结题评审,2012年国家级大学生创新创业训练计划立项项目第一次结题评审时间定于2013年3月。2.按预期完成时间无法结题的项目,项目负责人需提前一个月提交延期申请报告,下载延期申请报告,填写一式四份上交学校、学院管理办公室、指导教师各一份,自己保留一份。确系无法完成的项目,项目负责人必须提交一份说明,并视情况全部退回或部分退回前期支付的50%经费。
3、所有申请立项项目结题报告、论文统一为A4打印稿,不接收手写稿,结题报告一式三份。科技发明制作需上交一定的实物、光盘、模型、图片、图纸等,若设备不易移动,需说明现场演示。所有科技发明制作必须附详细的说明文字或结题报告。
4、结题通过的项目须提交电子版《中国石油大学(北京)大学生国家级创新创业训练计划结题报告》
二、结题程序:
1、2013年3月1日-3月31日学生向挂靠单位(负责人所在学院团委)提出结题申请。上交结题报告、论文及实物等。
2、2013年4月1日-4月15日,挂靠单位对监管的国家级大学生创新创业训练计划申请结题项目进行验收答辩,考核学生是否完成预期的任务并达到预期研究目标,考核结果分为不合格、合格。考核结果在学院存档的基础上上报学校大学生创新创业训练计划管理办公室审核和备案。同时上报《中国石油大学(北京)大学生创新创业训练计划结题项目统计表》。3、2013年4月16日-4月30日,学校大学生创新创业训练计划管理委员会委托专家组对项目进行结题验收。
4、学校大学生创新创业训练计划管理办公室统一公布通过结题的立项项目。对通过结题的项目兑现经费,由项目挂靠学院大学生创新创业训练计划管理办公室(团委、团总支)到学校大学生科技创新行动计划管理办公室统一办理。
教务处
校团委
2013年1月24日
第五篇:华中科技大学软件课程设计报告
软件课程设计报告
班 级:姓 名:学 号:
光 信0 8 0 4 廖 娟
U 2 0 0 8 1 3 1 9 7 光信0804廖娟
U200813197
目 录 软件设计............................................4
1.1 设计题目及目的.................................4 1.2 设计思想.......................................4 1.3 背景知识.......................................4(1).定义:.....................................4(2).存储结构:.................................5(3).遍历二叉树:...............................6 1.4 程序结构及功能划分.............................7(1).廖娟#注释.cpp..............................7(2).廖娟#软件课程设计.cpp......................8 1.5 程序流程......................................10 2 软件测试...........................................14
2.1 测试环境......................................14 2.2 廖娟#注释.cpp 的测试过程.......................14 2.3 廖娟#软件课程设计.cpp 的测试过程...............15(1).程序运行前的初始界面.......................15(2).输入数据及二叉树打印的画面.................16(3).选择操作的提示画面.........................16(4).程序测试时的画面..........................17 3 算法改进...........................................19
3.1问题发现......................................19 软件课程设计
2010年1月
(1).问题一:..................................20(2).问题二:.................................21 3.2解决方案......................................21(1).问题一改进方案:.........................21(2).问题二改进方案:.........................22 4 开发体会...........................................23 附录:源代码清单......................................25
廖娟#注释.cpp.....................................25 廖娟#软件课程设计.cpp.............................29 参考文献.............................................35 光信0804廖娟
U200813197软件设计
1.1 设计题目及目的
设计题目:二叉树的查找--用链表结构实现二叉树建立、查询、打印的源程序。
设计目的:基于C语言的基础,熟练运用结构体等扩展数据手段,定义应用数据、并进行运用。本题要求掌握数据的链式存储结构,并编程实践它们的实现、应用方法。
1.2 设计思想
利用结构体,链表等数据结构,以及折半查找、选择排序等基本算法,结合指针,文件等相关知识,利用C语言编写链式结构实现二叉树的建立、打印、查询、先序遍历、中序遍历、后序遍历等基本功能,并将这些功能用独立的子函数实现,通过主函数的调用实现相应的功能。
1.3 背景知识
(1).定义:
二叉树是由n(n>=0)个结点的有限集合构成,此集合或者为空集,或者由一个根结点及两棵互不相交的左右子树组成,并且左右子树都是二叉树。
这也是一个递归定义。二叉树可以是空集合,二叉树结点的子树 软件课程设计
2010年1月
要区分左子树和右子树,即使只有一棵子树也要进行区分,说明它是左子树,还是右子树。二叉树的定义方法:
Struct tree { char info;struct tree *left, *right;
}(2).存储结构:
存储结构分为顺序存储结构和链式存储结构。
a.顺序存储结构:从树根起,自上层至下层,每层自左至右的给所有结点编号缺点是有可能对存储空间造成极大的浪费,在最坏的情况下,一个深度为H且只有H个结点的右单支树确需要2h-1个结点存储空间。而且,若经常需要插入与删除树中结点时,顺序存储方式不是很好!光信0804廖娟
U200813197
b.链式存储结构:
存储二叉树经常用二叉链表法
(3).遍历二叉树:
假如以L、D、R分别表示遍历左子树、遍历根结点和遍历右子树,遍历整个二叉树则有DLR、LDR、LRD、DRL、RDL、RLD六种遍历方案。若规定先左后右,则只有前三种情况,分别规定为:
DLR——先(根)序遍历,LDR——中(根)序遍历,软件课程设计
2010年1月
LRD——后(根)序遍历。①.先序遍历二叉树的操作定义为: 若二叉树为空,则空操作;否则 A.访问根结点; B.先序遍历左子树; C.先序遍历右子树。
②.中序遍历二叉树的操作定义为: 若二叉树为空,则空操作;否则 A.中序遍历左子树; B.访问根结点; C.中序遍历右子树。
③.后序遍历二叉树的操作定义为: 若二叉树为空,则空操作;否则 A.后序遍历左子树; B.后序遍历右子树; C.访问根结点。
1.4 程序结构及功能划分
(1).廖娟#注释.cpp
主要分为主函数、创建二叉树子函数、二叉树查询子函数、二叉树打印子函数四个部分。其基本功能分块,如下图所示: 光信0804廖娟
U200813197
(2).廖娟#软件课程设计.cpp 在 廖娟#注释.cpp 的基础上进行了一些算法改进,进行了简单的界面设计,能够实现友好的交互,系统用户进入界面控制后,对不同的功能操作提示不同,此外加入了二叉排序树的前序遍历程序、中序遍历程序和后序遍历程序。
①.先序遍历源代码:
void PreorderTraversal(struct tree *root){ if(root==0)return;printf(“%c”,root->info);软件课程设计
2010年1月
PreorderTraversal(root->left);PreorderTraversal(root->right);} ②.中序遍历源代码:
void InorderTraversal(struct tree *root){ if(!root)return;InorderTraversal(root->left);printf(“%c”,root->info);InorderTraversal(root->right);} ③.后序遍历源代码:
void PostorderTraversal(struct tree *root){ if(!root)return;PostorderTraversal(root->left);PostorderTraversal(root->right);printf(“%c”,root->info);} 光信0804廖娟
U200813197
1.5 程序流程
廖娟#注释.cpp的主程序的流程图如下: 软件课程设计
2010年1月
创建二叉树的流程图如下: 光信0804廖娟
U200813197
二叉树查询的流程图如下: 软件课程设计
2010年1月
二叉树打印的流程图如下: 光信0804廖娟
U200813197软件测试
2.1 测试环境
Microsoft Visual C++
2.2 廖娟#注释.cpp 的测试过程
但是在测试的过程中也发现了一些问题,设计示例给出的源代码中存在几个问题在下图所示操作中暴露出来了:软件课程设计
2010年1月
具体的解决方案见算法改进。
2.3 廖娟#软件课程设计.cpp 的测试过程
输入50个数字(或字母),对 廖娟#软件课程设计.cpp 进行测试。(1).程序运行前的初始界面 光信0804廖娟
U200813197
(2).输入数据及二叉树打印的画面
(3).选择操作的提示画面 软件课程设计
2010年1月
(4).程序测试时的画面
①.选择1,进行先序遍历; ②.选择2,进行中序遍历; ③.选择3,进行后序遍历;
④.选择4,进行查询结点,再输入要查询的结点e,找到了,输出:
Successful search!!key=e
继续输入w,同样查询成功; ⑤.输入m,没找到,输出结果:
Search Failure!!光信0804廖娟
U200813197
⑥.再次选择3,进行后序遍历,与③输出相同;
再次选择2,进行中序遍历,与②输出相同; ⑦.再次选择4,进行查询结点,运行结果正常; ⑧.再次选择1,进行先序遍历,与①输出相同; ⑨.选择8,输入错误,没有对应的操作,输出:
您 的 输 入 有 误,请 重 新 输 入!!⑩.选择5,进行退出操作,输出:
光 信 0 8 0 4 ———— 廖 娟0 1 0 年 1 月软件课程设计
2010年1月算法改进
3.1问题发现
在完成第4项选做项目时,程序前面部分的创建、查询、打印二叉树的算法仍采用已给出的设计示例中的算法,但是在测试过程中发现存在问题。光信0804廖娟
U200813197
(1).问题一:
第一次先序遍历的输出结果为:edaf
第二次先序遍历的输出结果为:f 经过观察及调试发现问题在于查询二叉树子函数,其中root是根结点,运行查询后root就被移动了,所以再次要求先序遍历的结果就与第一次先序遍历的结果不同。
未改动前源代码如下: 软件课程设计
2010年1月
(2).问题二:
设计示例中给出的函数运行后,没有退出的方式,即没有出口,程序无法正常退出。
3.2解决方案
(1).问题一改进方案:
函数内部定义一个指针tree *t,用 *t指向根结点,这样进行查询操作后根结点就不会移动了。
改动后源代码如下: 光信0804廖娟
U200813197
(2).问题二改进方案:
在switch语句中增加:
case 5:
printf(“
光 信 0 8 0 4 ———— 廖 娟nn”);printf(“ 0 1 0 年 1 月nn”);return;来实现退出程序的操作,具体解决方案见
廖娟#软件课程设计.cpp 的源代码。软件课程设计
2010年1月开发体会
刚刚拿到软件课程设计的题目时,我震惊了,二叉树?这是什么东西,上学期学习C语言的时候好像没学到二叉树啊。听了老师的介绍才知道做这个题目的软件课程设计还要先学习一下数据结构中关于二叉树部分的知识,当时我真的是有些不知所措,本就不怎么好的C语言加上完全不会的数据结构二叉树使我开始怀疑:三个星期后我可以完成这份关于二叉树的查找的软件课程设计吗?
最初的几天也确实很没有头绪,只是想着想把老师给的资料都看了,看完了之后走一步算一步吧,可是看完了之后发现仍然没有很大的收获,连怎么二叉树到底有什么用都不知道,对于这个题目依然是十分陌生。可是时间紧迫啊,于是找了位学习过数据结构的同学借了本数据结构的书,研究了一番,在加上在网上搜索了一番终于有些头绪了,知道这份课设到底要我们做什么了!
接下来的几天,随着了解的加深,自己开始慢慢的做课设了,当然从和同学的交流中,我也学到了很多。这之后我一步步的完成了对设计示例的注释,对递归算法的理解,以及先序遍历、中序遍历、后序遍历程序的书写,最终完成了程序的开发。程序开发中我记忆最深刻的就是编写选择操作的提示界面和初始界面的时候,为了使界面更加友好,加入了一些人性化的语句,以及为了出现欢迎界面进行的许多次试验,慢慢的我觉得这个过程十分有趣,看着自己编排的界面出现在面前心中还是有些许成就感的。当然除了这些还有很令我头疼的 光信0804廖娟
U200813197
程序调试过程:在程序的调试阶段,发现程序中有许多问题,有的根本不知道从哪入手解决问题,甚至不知道为什么会出现错误,也因此耗费了很多时间,让我苦闷了很久。
在这段时间里,因为有软件课程设计,让我学到了很多知识,收获了很多我,自我感觉自己解决问题的能力提高了,并且掌握了软件开发的一些基本的方法和技巧。还记得写课设报告的时候,花了一天的时间把报告里面的所有图都画完了,从刚开始的不会用画图软件,到后来慢慢摸索最后熟练运用,画图的速度是越来越快了,让我后来甚是欣慰。
经过了这一次的软件课程设计,我感受到了C语言的魅力,也深切的体会到了“学海无涯”这四个字的分量。在以后的日子里,我所需要学习的东西还有很多很多,应了那句“书山有路勤为径,学海无涯苦作舟。” 软件课程设计
2010年1月
附录:源代码清单
廖娟#注释.cpp #include
*/ #include
/* 定义二叉树结构
*/ struct tree
{
char info;
// 定义char型变量,存放数据
struct tree *left,*right;
// 左子树指针,右子树指针
};/* 定义结构指针变量,作用创建二叉树
*/ struct tree *create_btree(struct tree *root,struct tree *r,char info);/* 定义结构指针变量,作用查询数据
*/ struct tree *search_btree(struct tree *root,char key);/* 定义子函数,作用打印二叉树
*/ void print_btree(struct tree *r,int l);
/* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ /* 主函数
*/ void main(){
char s[100],c,key=' ';
struct tree *root=0;
// 定义结构指针根结点,初始化为0
/* 读入二叉树的各个结点的值,并将其插入到二叉树中
*/
do {
printf(“Enter a letter:”);
gets(s);
// 数据输入过程
if(!root)
root=create_btree(root,root,*s);
// 如果二叉树还未建立,则建立根结点并保存数据
else
create_btree(root,root,*s);// 如果二叉树已建立,则建立新的子树
}
while(*s);
// 直到s字符串为空,停止输入
print_btree(root,0);光信0804廖娟
U200813197
/* 查找具有指定值的结点
*/ key='1';while(key){
printf(“Enter a key to find:”);
scanf(“%s”,&c);
root=search_btree(root,c);
printf(“press to continuen”);} }
/* Btree.C 结束
*/
/* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ /* 创建二叉树
*/ struct tree *create_btree(struct tree *root,struct tree *r,char info)/* struct tree *root:根结点
struct tree *r:要增加的结点
char info:要保存的数据
*/ {
if(r==0)
// 如果当前位置无结点,则将新结点插入此处
{
r=new(struct tree);
// same as function: malloc(sizeof())
if(r == 0)
{
printf(“Out of memoryn”);
return 0;
}
r->left= 0;
r->right=0;
r->info=info;
// root为空,则插入后保存至根结点处
if(root)
// 如果二叉树存在,则将新建结点与二叉树连接起来
{
if(info
root-> left=r;
else
root-> right=r;
// 按左结点<父结点<=右结点,保存数据
}
else
// 如果根结点不存在,即二叉树不存在,则将新建一个二叉树
{
r->right=0;
r->left=0;软件课程设计
2010年1月
}
return r;}
/* if = = 0 接下页
*/
/* 判断要插入的节点应该在当前节点的左子树或右子树,递归插入
*/ if(info < r->info)
create_btree(r,r->left,info);if(info>=r->info)
create_btree(r,r->right,info);}
/* create_btree(root,r,info)*/
/* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ /* 查询数据
*/ struct tree *search_btree(struct tree *root,char key)/* struct tree *root:要查询的二叉树首地址
char key:要查询的数据
*/ {
if(!root)
// 如果二叉树指针为空,输出Empty btree {
printf(“Empty btreen”);
return root;
}
while(root->info!=key)
{
if(key
// 按照“左结点<父结点<=右结点”查找
root=root->left;
else
root=root->right;
if(root==0)
// 如果指针为空,则退出查找
{
printf(“Search Failuren”);
break;
} } /* while(root->info!=key)*/ if(root!=0)
// 如果二叉树指针不为空,即查找成功给出信息,返回
printf(“Successful searchn key=%cn”,root->info);return root;} /* *search_btree(root,key)*/
/* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ 光信0804廖娟
U200813197
/* 打印二叉树
*/ void print_btree(struct tree *r,int l)/* struct tree *r:二叉树首地址
int l:当前结点的高度,根结点为0
输出的二叉树为正常树逆旋转90°后成镜像的结果
*/ {
int i;if(r == 0)
return;
//如果传入指针为0,则返回
print_btree(r->left,l+1);
//打印左结点
for(i=0;i printf(“ ”); //打印空格,用来排版控制格式 printf(“%cn”,r->info); //打印根结点 print_btree(r->right,l+1); //打印右结点 } /* *print_btree(root,0) */ 软件课程设计 2010年1月 廖娟#软件课程设计.cpp #include */ #include /* 定义二叉树结构 */ struct tree { char info; // 定义char型变量,存放数据 struct tree *left,*right; // 左子树指针,右子树指针 };/* 定义结构指针变量,作用创建二叉树 */ struct tree *create_btree(struct tree *root,struct tree *r,char info);/* 定义结构指针变量,作用查询数据 */ struct tree *search_btree(struct tree *root,char key);/* 定义子函数,作用打印二叉树 */ void print_btree(struct tree *r,int l);/* 定义子函数,作用先序遍历 */ void PreorderTraversal(struct tree *root);/* 定义子函数,作用中序遍历 */ void InorderTraversal(struct tree *root);/* 定义子函数,作用后序遍历 */ void PostorderTraversal(struct tree *root); /* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ /* 主函数 */ void main(){ char s[100],c; int n;struct tree *root=0; // 定义结构指针根结点,初始化为0 printf(“ ###”);printf(“## ##”);printf(“## 软件课程设计: 二叉树的查找 ##”);printf(“## ##”);printf(“## 班 级: 光 信0 8 0 4 ##”);光信0804廖娟 U200813197 printf(“## ##”);printf(“## 姓 名: 廖 娟 ##”);printf(“## ##”);printf(“## 学 号: U 2 0 0 8 1 3 1 9 7 ##”);printf(“## ##”);printf(“ ###”);printf(“n”);printf(“ 程 序 运 行 开 始 啦!!nn”); /* 读入二叉树的各个结点的值,并将其插入到二叉树中 */ do { printf(“ 请 输 入 一 个 字 符:”); gets(s); // 数据输入过程 printf(“n”); if(!root) root=create_btree(root,root,*s); // 如果二叉树还未建立,则建立根结点并保存数据 else create_btree(root,root,*s); // 如果二叉树已建立,则建立新的子树 } while(*s); // 直到s字符串为空,停止输入 printf(“ 打 印 的 二 叉 树 如 下:n”);print_btree(root,0); printf(“ ###”); printf(“## ##”); printf(“## ★★★★★★★★★ 请输入您想要执行的操作!: ★★★★★★★★★ ##”); printf(“## ##”); printf(“## 选择1—————————————进行先序遍历 ##”); printf(“## ##”);软件课程设计 2010年1月 printf(“## 选择2—————————————进行中序遍历 ##”); printf(“## ##”); printf(“## 选择3—————————————进行后序遍历 ##”); printf(“## ##”); printf(“## 选择4—————————————进行查询结点 ##”); printf(“## ##”); printf(“## 选择5—————————————进行退出操作 ##”); printf(“## ##”); printf(“## ★★★★★★★★★ 温馨提示:请选择数字键0~5 ★★★★★★★★★ ##”); printf(“## ##”); printf(“ ###”);while(1){ scanf(“%d”,&n); switch(n) { case 1: printf(“ 先 序 遍 历 为:n”); PreorderTraversal(root); printf(“nn”); break; case 2: printf(“ 中 序 遍 历 为:n”); InorderTraversal(root); printf(“nn”); break; case 3: printf(“ 后 序 遍 历 为:n”); PostorderTraversal(root); printf(“nn”); break; case 4: 光信0804廖娟 U200813197 printf(“ 请 输 入 您 要 查 询 的 结 点:n”); scanf(“%s”,&c); printf(“ 您 要 查 询 的 结 点 为:n”); root=search_btree(root,c); printf(“n”); break; case 5: printf(“ 光 信 0 8 0 4 ———— 廖 娟nn”); printf(“ 0 1 0 年 1 月nn”); return; default: printf(“ 您 的 输 入 有 误,请 重 新 输 入!!n”); break; } } } /* Btree.C 结束 */ /* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ struct tree *create_btree(struct tree *root,struct tree *r,char info)/* struct tree *root:根结点 struct tree *r:要增加的结点 char info:要保存的数据 */ { if(r==0) // 如果当前位置无结点,则将新结点插入此处 { r=new(struct tree); // same as function: malloc(sizeof()) if(r == 0) { printf(“ Out of memoryn”); return 0; } r->left= 0; r->right=0; r->info=info; // root为空,则插入后保存至根结点处 if(root) // 如果二叉树存在,则将新建结点与二叉树连接起来 软件课程设计 2010年1月 { if(info root-> left=r; else root-> right=r; // 按左结点<父结点<=右结点,保存数据 } else // 如果根结点不存在,即二叉树不存在,则将新建一个二叉树 { r->right=0; r->left=0; } return r;} /* if = = 0 接下页 */ /* 判断要插入的节点应该在当前节点的左子树或右子树,递归插入 */ if(info < r->info) create_btree(r,r->left,info);if(info>=r->info) create_btree(r,r->right,info);} /* *create_btree(root,r,info)*/ /* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ /* 查询数据 */ struct tree *search_btree(struct tree *root,char key)/* struct tree *root:要查询的二叉树首地址 char key:要查询的数据 */ { tree *t;t=root;if(!t) // 如果二叉树指针为空,输出Empty btree { printf(“ Empty btree!!n”); return root; } while(t->info!=key) { if(key // 按照“左结点<父结点<=右结点”查找 t=t->left; else t=t->right; if(t==0) // 如果指针为空,则退出查找 光信0804廖娟 U200813197 { printf(“ Search Failure!!n”); break; } } /* while(root->info!=key)*/ if(t!=0) // 如果二叉树指针不为空,即查找成功给出信息,返回 printf(“ Successful search!!n key=%cn”,t->info);return root;} /* *search_btree(root,key)*/ /* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ /* 打印二叉树 */ void print_btree(struct tree *r,int l)/* struct tree *r:二叉树首地址 int l:当前结点的高度,根结点为0 输出的二叉树为正常树逆旋转90°后成镜像的结果 */ { int i;if(r == 0) return; //如果传入指针为0,则返回 print_btree(r->left,l+1); //打印左结点 for(i=0;i printf(“ ”); //打印空格,用来排版控制格式 printf(“%cn”,r->info); //打印根结点 print_btree(r->right,l+1); //打印右结点 } /* *print_btree(root,0) */ /* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ /* 先序遍历 */ void PreorderTraversal(struct tree *root){ if(root==0) return;printf(“%c”,root->info);PreorderTraversal(root->left);PreorderTraversal(root->right);} 软件课程设计 2010年1月 /* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ /* 中序遍历 */ void InorderTraversal(struct tree *root){ if(!root) return;InorderTraversal(root->left);printf(“%c”,root->info);InorderTraversal(root->right);} /* O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ O(∩_∩)O~ */ /* 后序遍历 */ void PostorderTraversal(struct tree *root){ if(!root) return;PostorderTraversal(root->left);PostorderTraversal(root->right);printf(“%c”,root->info);} 参考文献 《数据结构》(c语言版)严蔚敏 吴伟民 编著 清华大学出版社 《C语言程序设计》 谭浩强 编著 清华大学出版社 《C程序上机指导》 谭浩强 编著 清华大学出版社 《标准c语言程序设计及应用》 周纯杰 编著 华中科技大学出版社