第一篇:华中科技大学软件学院2003级本科
华中科技大学软件学院2003级本科
2005~ 2006学年度第二学期课程表
备注:
1、信号与系统、微机接口技术实验另行通知。
2、从7月8日起进行为期三周的专业实训。
1华中科技大学软件学院2003级本科
2005 ~ 2006学年度第二学期课程表
备注:
1、信号与系统、微机接口技术实验另行通知。
2、从7月8日起进行为期三周的专业实训。
26-2
2005~ 2006学年度第二学期课程表
26-3
2005~ 2006学年度第二学期课程表
26-4
26-5
26-6
第二篇:华中科技大学软件课程设计报告
软件课程设计报告
班 级:姓 名:学 号:
光 信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语言程序设计及应用》 周纯杰 编著 华中科技大学出版社 华中科技大学软件学院文件院教 [2005] 06号 关于印发《华中科技大学软件学院在职软件工程硕士 学位论文撰写及答辩工作流程》的通知 根据学校的有关文件和院教字〔2005〕05号《软件工程硕士学位论文答辩工作管理办法(试行)》文件精神,学院在全面总结2005年下半年软件工程硕士学位论文答辩工作的基础上,制订了《华中科技大学软件学院在职软件工程硕士学位论文撰写及答辩工作流程》。 各教学点应印发给全体学生,并认真组织他们学习,严格按有关规范做好学位论文撰写及答辩的相关工作。各位导师应配合学院、教学点把学校、学院的有关政策向学生讲清楚,确保学位论文的质量。 附:华中科技大学软件学院在职软件工程硕士学位论文撰写及答辩工作流程 华中科技大学软件学院2005.11.16 主题词:印发学位论文撰写及答辩流程通知 抄报:研究生院 华中科技大学软件学院 2005年11月16日印发 -1- 附: 华中科技大学软件学院 在职软件工程硕士学位论文撰写及答辩工作流程 第一阶段:确定导师和开题 1、课程学习结束时,教学点按学院安排的导师名额,负责本教学点学生的导师填报,并要求每个学生提供自己的联系电话和E-mail(必备),由教学点汇总后报学院,学院确认后再提供导师的E-mail和联系方式; 2、学生与导师联系开题事宜,2个月内应完成开题报告,导师审定; 3、学生将经导师确认同意开题的选题报告送(或邮寄)至软件学院教务办公室马老师、邹老师收(邮编430074,教务办公室一般星期四下午集中送导师签字)。 第二阶段:撰写学位论文 4、学生浏览华中科技大学研究生院主页,下载硕士学位论文撰写要求或从导师处获取相关指导要求; 5、撰写学位论文,时间一般不少于10个月,从论文初稿到最后定稿一般要与导师沟通并修改2至3次; 6、经导师确认同意学位论文答辩的学生,其本人必须向教务办公室提交论文打印件(不装订)一份,学院聘请专家对其论文进行盲审;初审合格者,即开始清理学费、学分,符合上述答辩条件者,由教务办公室通知本人、教学点和导师,方可组织答辩。 第三阶段: 论文答辩准备 7、学生办理单位介绍信、教学点介绍信; 8、准备本科毕业证书、学位证书原件及复印件一式四份; 9、准备1寸彩色免冠正面蓝底照片5张,2寸2张; 10、提交导师签字的论文定稿清样,领取学位论文答辩档案袋,填表;领取档案袋时间比答辩时间至少提前3天; 11、在教务办公室缴纳学位论文评审费; 12、至少打印5本学位论文,将其中3本论文和硕士学位论文评语一起送3位高级专业技术职称专家评审,要求校外专家1人(具体评阅人与答辩秘书联系); 13、在软件学院教务办公室进行答辩资格审核、盖章、打印成绩单; 14、在研究生院学位办进行答辩资格审核,审核合格后到教务办公室办理登记手续;到研究生院进行资格审核的时间比答辩时间至少提前1天; 15、需准备的其它文档材料: ⑴ “学位论文对学科理论与技术等的贡献”说明,400字左右,电子版和A4打印件各一份; ⑵个人对学位论文、技术水平、创新能力、理论知识、学习态度的自我评价,400字左右,电子版和A4打印件各一份; ⑶学位论文综述,500字左右,电子版和A4打印件各一份; ⑷学位论文答辩演讲稿(15分钟左右,PPT格式),电子版和A4打印件各一份; 上述材料导师审阅后,交答辩秘书。 第四阶段:学位论文答辩 16、学位论文演讲,15分钟左右; 17、答辩委员提问,提问不少于3个; 18、学生准备1小时左右的时间,回答答辩委员的提问,并于会后立即整理答辩记录; 答辩委员会至少由5名高级专业技术职称专家(其中校外专家1人)组成。全体委员2/3及以上同意,为通过。 第五阶段:提交答辩材料 19、应提交材料包括: ⑴硕士学位论文定稿表1份; ⑵学位申请及评定书2本; ⑶硕士学位论文评语3份; ⑷申请工程硕士学位论文答辩审批表2份; ⑸硕士学位论文答辩评审意见5份(标题部分); ⑹基本信息表1份; ⑺已发表或已被接收发表的与学位论文内容相关的学术论文或录用证明;(不作必备条件); ⑻出版的专著或科研成果获奖的证明材料;(不作必备条件); ⑼修订后的学位论文3本(含红头原文); ⑽将论文改写成3000字左右的小论文,电子版和A4打印件各一份; 20、在软件学院机房上网录入“授予工程硕士学位人员基本信息表”。 第六阶段:论文修订和学位授予 21、软件学院主持召开软件工程专业学位分委会,对答辩材料和论文进行审核;对提出问题的论文,通知导师和学生修订; 22、学校研究生顾问组对论文进行审核;对提出问题的论文,通知导师和学生修订; 23、学校学位委员会对答辩材料和论文进行终审,合格者,授予硕士学位。不合格的,一年后方可重新申请答辩; 24、有条件的教学点或班级,可集中组织到华中科技大学领取学位证书,穿硕士服、戴硕士帽留影。 华中科技大学软件学院研究生招生信息 一、学院概况和优势 华中科技大学软件学院是经教育部批准(教高[2001]6号文)的首批35所国家示范性软件学院之一。华中科技大学软件学院坚持以需求为目标,面向产业、面向领域;坚持国际合作、校企办学;坚持质量第一,素质与技术并重、基础与实践统一,重基础、强能力的工程化办学理念;坚持办学模式、管理体制、课程体系、教学内容和教学方法的改革和创新,做到人才培养与社会需求的无缝接轨,使其成为培养高层次、复合型、国际化、工程型软件精英人才基地。 学院建立了5个联合实验室,即日本三菱控制软件联合实验室、新加坡横河-蓝筹联合实验室、SIEMENS移动实时计算联合实验室、INTEL嵌入式系统联合实验室、微软创新与实训基地等。 学院实验办公大楼总面积约4000余平方米,主要用于学院办公、开放实验室、专业实验室、联合实验室等。学院现有各类设备1472台套,其中,台式计算机1147台、网络及其他教学设备306件,具有良好的教学和研发环境。 学院现有在编专职教师23人,具有博士学位的教师比例达到了90%,一半以上的教师具有多年从事软件工程工作的经验;聘请国外教师28人,其中聘期一年以上的教师9人,他们主要是专业课程和语言外教;聘请IT公司的兼职教师30人,他们都具有大型软件项目开发和项目管理的实际经验。 学院在校本科生900余人,全日制研究生450余人,在职研究生1000余人,并已为国家输送毕业研究生、本科生4000余人。 学校硕士研究生班,实行三自主政策,即:自主命题,自主划线,自主录取,通过率达99%!北京报名,周末上课,非常便捷! 软件学院办学九年来成绩显著,主要体现在:办学模式和教学方式的改革特色鲜明;教师资源全球化;学生出口国际化,并普遍受到工程实践单位和就业用人单位的好评。软件学院的学生现已成为我国IT行业特别是软件行业的一支生力军,并在社会上已得到广泛认同和高度评价。 二、培养目标 软件工程领域工程硕士的培养目标是面向国民经济信息化建设和发展的需要,面向企事业单位对软件工程技术人才的需求,培养高层次、复合型、国际化、工程型软件工程技术和软件工程管理人才。要求达到以下培养目标: 1.政治素质 热爱祖国,遵纪守法,具有良好职业道德和创业精神等。 2.业务技能 具有扎实的理论基础、宽广的专业知识、很强的动手能力;具备运用先进的方法、技术和工具从事软件设计、开发、维护工作能力;具有工程项目的组织与管理能力,以及团队协作和市场开拓的能力。 3.外语水平 具备良好阅读、理解、撰写外文资料和进行国际交流的能力。 三、培养方向 软件工程硕士具有较宽的培养方向,主要有以下五个方向: 1.电子金融 2电子政务 3教育管理信息化 4电子音乐电子通信 培养方向主要根据人才市场和工程实践基地需求以及导师科研情况动态设置;学生可根据自身的专业背景、个人兴趣爱好,在导师指导下,侧重某一方向或多方向选修课程和进行研发工作。 四、培养特色与学习年限 1,软件工程领域工程硕士采用系统的课程学习和工程实践相结合的培养方式。课程 学习实行学分制;软件工程实践要求学生直接参与软件企业或软件工程项目的实际开发过程,完成必要的技术方案设计、软件开发、项目管理等工作,并在所取得的工程实践成果的基础上完成硕士学位论文的工作。 学院将聘请具有丰富实践和教学指导经验的企业资深技术或管理人员参与课程教学,并对学生的软件工程实践进行联合指导。加强双语教学的力度,包括直接采用英文原版教材,培养学生国际竞争的能力。 学制与学分:学制2-2.5年,采用学分制,第一年学习培养计划规定的课程,第二年参加工程实践并完成学位论文。学位论文答辩通过者经校学位委员会批准,可授予软件工程硕士学位。 培养方式:非全日制学习:课程学习和工程实践主要利用业余时间完成。课程学习原则上采取周末,晚上授课方式。工程实践要求在工作岗位上结合工作实际来进行,并在此基础上完成学位论文。 五 秋季班现已开始报名,招生电话:*** 刘老师。 欢迎报考华中科技大学软件学院软件工程硕士 武汉·中国光谷,中国第三大智力密集区,国家自主创新示范区。光谷软件园、光谷金融港、光谷生物城、武汉未来科技城四大科技产业园区建设方兴未艾。 光谷软件园将建成全国面积最大的软件研发和服务外包产业基地,是科技部认定的“国家火炬计划软件产业基地”和商务部认定的“中国服务外包基地”,150余家企业将共建ITO和BPO行业标杆。 光谷金融港将建设成为全国性金融后台中心、国际化金融创新服务园区。 光谷生物城是发改委批准的“国家生物产业基地”,朝着全球“生物谷”目标迈进。武汉未来科技城是中组部批准的“精英云集,共筑梦想”的人才之城。“千人计划”、“百人计划”、“黄鹤英才计划”及“3551人才计划”,将加快人才之城聚集具有全球战略眼光的企业家和世界一流的科研人员。 光谷肩负着引领科技创新、中部崛起的重大历史使命。四大科技产业园区建设和发展急需大批优秀人才,数百家国内外一流企业对中高端人才求贤若渴。 武汉市中高端软件实用人才服务基地得到了开发区政府、软件行业协会的大力支持,是华中科技大学软件学院工程实训中心,软件工程硕士研究生教学点,承担着为光谷四大科技产业园区挑选、培养、储备、输送中高端IT优秀人才,为武汉的经济建设和发展服务的任务。2012年9月拟面向全国高校应届毕业生招收150名软件工程硕士研究生,即日起开始报名和选拔,报名和选拔不收取任何费用。 一、报名 报名条件:普通高校信息学科相关专业,包括计算机、软件、通讯、电子、电信、信息管理、信息安全、电子商务等专业大四学生;或对软件开发有浓厚兴趣,且具备一定特长的其他专业大四学生;英语通过CET四级考试;身体、身心健康。 报名时间:2011年11月1日至12月8日 二、选拔 1、基础及开发能力测试 2011年12月10日10:00,安排基地参观、与华中科技大学软件工程硕士研究生交流、实习及就业方案介绍、软件工程硕士研究生培养方案介绍;11:30,中餐(设定专区,定向供应,费用学生自理);13:00,在线评测(英语、数学、微机原理)和机试(C、C++、JAVA任选)。 基础及开发能力测试结果作用: ⑴作为2012年6月报考软件工程硕士研究生的参考条件之一,成绩优秀者同等条件下优先推荐报考、优先录取。 ⑵创新基金扶持IT自主创业的重要参考依据,其中个人2000-5000元,团队5000-10000元。 ⑶测试成绩排前5%的学生,可获得实训奖学金2000元。 2、研究生入学考试 校考:2012年6月参加华中科技大学统一组织的软件工程硕士研究生入学考试,可取得单证硕士研究生(硕士学位)资格。考前将安排考生补习,补习班为期15天,学费500元,住宿费100元(4人标准间,独立卫生间)。 国考:成绩优异的单证学生可报名参加2013年1月全国统一组织硕士研究生入学考试,取得双证硕士研究生(硕士学历、硕士学位)资格。 三、培养 严格执行华中科技大学软件学院软件工程硕士研究生培养方案,第一年,基地授课;第二年,到光谷四大科技产业园区工程实践(实习)。 单、双证硕士研究生执行同一培养方案。2012年9月初入学,全日制学习。 四、实习 2013年6月,邀请光谷四大科技产业园区一流企业进校招聘,双向选择,签订实习合同,带薪实习。学生实习期为1-1.5年。 武汉市中高端软件实用人才服务基地和光谷四大科技产业园区IT企业签订了大量的实习合同,能满足所有学生的实习要求。 五、就业 2013年11月-2014年6月,学生和实习单位签订就业协议。 2014年6月,组织多场校园招聘会,推荐学生到光谷四大科技产业园区就业。 其他优势项目推介: 1、欢迎普通高校信息学科相关专业大三本科学生报名参加2012年暑期实训项目,该实训项目和华中科技大学软件学院200余名本科生同步进行,执行统一实训方案,现征集300名学生。实训从2012年7月初开始,9月底结束,2012年10月全部推荐到光谷实习、就业。(网上报名) 2、欢迎普通高校信息学科相关专业大四本科学生报名参加2012年春季实训项目,实训从2012年2月中旬开始,5月中旬结束,2012年6月全部推荐到光谷实习、就业。(网上报名) 详细地址:华中科技大学文华学院实训大楼六楼。乘车线路:鲁巷、关山口乘738、786至文华路站,进入华中科技大学文华学院校内,按“武汉市中高端软件实用人才服务基地”(即华中科技大学软件学院工程实训中心)路标指引,上实训大楼六楼。 乘车路线地图:http://j.map.baidu.com/_HyEJ 报名网址:http:// 附:报考华中科技大学软件工程硕士考生测试申请表 华中科技大学软件学院工程实训中心 武汉市中高端软件实用人才服务基地 二0一一年十月二十五日 报考华中科技大学软件工程硕士考生测试申请表第三篇:华中科技大学软件学院文件
第四篇:华中科技大学软件学院研究生招生信息
第五篇:欢迎报考华中科技大学软件学院软件工程硕士