第一篇:算法设计与分析 实验指导书1
实验1 递归与分治
一、实验目的:
利用C/C++/JAVA等程序设计语言,实现本章节中分治算法、递归,汉诺塔问题/二分搜索算法/合并排序/快速排序等经典算法。通过本实验章节掌握递归、分治算法的设计思想及实现技巧,加深对课程知识的理解。
二、实验学时:2
三、实验任务:
利用高级程序设计语言,编程实现以下问题: 1)递归:排列问题,汉诺塔问题;
2)分治:递归实现的合并排序及非递归的自然合并排序;
四、实验要求
1,设计过程
理解课本中源代码或伪代码的思想,结合流程图等工具描述实验任务的设计过程,并独自完成代码编写、调试及测试过程。2,代码及注释
提交包含完整源代码及关键代码注释的实验报告。3,运行效果图及测试数据
实验报告中应有能体现源代码正确编译、运行的实验运行效果图及多组测试数据集。
4,心得体会
将实验过程中所遇到的问题以及解决问题的方式、方法以及调试过程加以概括,并总结该实验过程中的收获。
第二篇:《算法分析与设计》实验指导书-
计算机科学与技术学院
算法分析与设计
实验指导书
于洪 编写 2011年8月
目 录
实验一实验二实验三实验四附录1 附录2 排序问题求解…………………………..…..………3 背包问题求解…………………………..…………..5 最短路径问题求解………………..………………..8 N-皇后问题求解…………………………………..10关于文件的操作……………………………….….12 关于如何统计运算时间…………………………..13
实验一
排序问题求解
实验目的
1)以排序(分类)问题为例,掌握分治法的基本设计策略。2)熟练掌握一般插入排序算法的实现; 3)熟练掌握快速排序算法的实现; 4)理解常见的算法经验分析方法; 实验环境
计算机、C语言程序设计环境 实验学时
2学时,必做实验。实验内容与步骤 1.生成实验数据.要求:编写一个函数datagenetare,生成2000个在区间[1,10000]上的随机整数,并将这些数输出到外部文件data.txt中。这些数作为后面算法的实验数据。2.实现直接插入排序算法.要求:实现insertionsort算法。
算法的输入是data.txt;
输出记录为文件:resultsIS.txt;同时记录运行时间为TimeIS。直接插入算法思想:
Procedure insertionsort(A,n)
A(0)=-
for j=2 to n do item=A(j);i=j-1 while item repeat End insertionsort 3.实现快速排序算法.要求:实现QuickSort 算法。 算法的输入是data.txt; 输出记录为文件:resultsQS.txt;同时记录运行时间为TimeQS。 快速排序算法思想: Procedure QuickSort(p,q) integer p,q;global n,A(1:n) if p< q then j ← q+1 call Partition(p, j) call QuickSort(p, j-1) call QuickSort(j+1, q) end if end QuickSort 实验报告: 实验报告应包括以下内容: 用A(m)划分集合A的函数: Procedure partition(m,p) integer m,p, I;global A(m:p-1)v=A(m);I=m Loop loop I=I+1 until A(I)>=v repeat loop p=p-1 until A(p)<=v repeat if I then call interchange(A(i), A(p)) Else exit Endif Repeat A(m)=A(p);A(p)=v End partition(1)题目; (2)2个算法的基本思想描述;(3)算法理论分析(参考教材); (4)程序流程图; (5)给出data.txt、resultsIS.txt、resultsQS.txt三个文件任选其一的清单; TimeIS、TimeQS的记录结果; (6)实验分析;以表或者图的形式给出这2个算法的经验对比分析结果;并和理论分析结论进行对比。 (7)说明本次调试实验的心得体会、经验等。如果程序未通过,应分析其原因。 实验二 背包问题求解 实验目的 1)以背包问题为例,掌握贪心法的基本设计策略。 2)熟练掌握各种贪心策略情况下的背包问题的算法并实现;其中:量度标准分别取:效益增量P、物品重量w、P/w比值; 3)分析实验结果来验证理解贪心法中目标函数设计的重要性。 实验环境 计算机、C语言程序设计环境 实验学时 2学时,必做实验。 实验内容与步骤 1.理解需要求解背包问题.(1)背包问题的描述:已知有n种物品和一个可容纳M重量的背包,每种物品i的重量为益,这里,0xi1wi。假定将物品i的一部分 xi放入背包就会得到 pixi的效,pi0。显然,由于背包容量是M,因此,要求所有选中要装入背包的物品总重量不得超过M.。如果这n件物品的总重量不超过M,则把所有物品装入背包自然获得最大效益。现需解决的问题是,在这些物品重量的和大于M的情况下,该如何装包,使得得到更大的效益值。由以上叙述,可将这个问题形式表述如下: 极 大 化目标函数 约束条件 1inpixi w1inixiM 0xi1,pi0,wi0,1in(2)用贪心策略求解背包问题 首先需确定最优的量度标准。这里考虑三种策略: 策略1:按物品价值p降序装包,策略2:按物品重w升序装包 策略3:按物品价值与重量比值p/w的降序装包 (3)分别以上面三种策略分别求以下情况背包问题的解: n=7,M=15,(p1,,p7)=(10,5,15,7,6,18,3)(w1,,w7)=(2,3,5,7,1,4,1)。以策略3为例的背包问题的贪心算法描述: procedure GREEDY-KNAPSACK(P,W,M,X,n)//P(1:n)和W(1:n)分别含有按P(i)/W(i)≥P(i+1)/ W(i+1)排序的n件物品的效益值和重量。M是背包的容量,而X(1:n)是解向量。// real P(1:n),W(1:n),X(1:n),M,cu; integer i,n;X0 //将解向量初始化为零 cuM //cu是背包剩余容量 for i1 to n do if W(i)>cu then exit endif X(i)1 cucu-W(i)repeat if i≤n then X(i)cu/W(i)endif end GREEDY-KNAPSACK 2.以策略1作为量度标准求解要求问题,记录解向量为X1、目标函数的值fp1(即最后装好包后背包的效益值 1in、背包的重量fw1; pixi)3.以策略2作为量度标准求解要求问题,记录解向量为X21、目标函数的值fp2(即最后装好包后背包的效益值 1in、背包的重量fw2; pixi)4.以策略3作为量度标准求解要求问题,记录解向量为X3、目标函数的值fp3即最后装好包后背包的效益值实验报告: 实验报告应包括以下内容: 1in、背包的重量fw3; pixi)(1)题目; (2)算法的基本思想描述;(3)程序流程图; (4)给出3个程序任意之一的程序清单; (5)实验分析;通过实验结果对比分析说明哪种策略好。 (6)说明本次调试实验的心得体会、经验等。如果程序未通过,应分析其原因。 Tips: 1.解向量的表示。需要注意:因为算法中涉及到排序,如何保证各种物品的原始命名(如果以第几种,即序号,来命名物品)关系需要考虑。 #define MAX 200 typedef struct Solution //定义的解向量 { int x[MAX];表示该号物品放了多少在背包里,这里0xi 1int order[MAX];表示物品的序号,相当于其名字 }Solution;Solution X;所以,初始化时,为: for(i=0;i { X.order[i]=i; X.x[i]=0; } 2.主要函数: void GreedyKnapsack(float profit[],float weight[],float x[],int m, int n){ float cu; int i; cu=float(m); for(i=0;i { x[i]=0; } for(i=0;i { if(weight[i]>cu) break; x[i]=1; cu=cu-weight[i]; } if(i { x[i]=cu/weight[i]; } } 实验三 最短路径问题求解 实验目的: 1)以最短路径问题为例,掌握动态规划的基本设计策略; 2)掌握dijkstra贪心法求解最短路径问题并实现; 3)掌握动态规划方法Floyd算法求解最短路径问题并实现; 3)分析实验结果。实验环境 计算机、C语言程序设计环境 实验学时 2学时,必做实验。实验内容与步骤 1.以下图作为输入,利用dijkstra贪心法获取由结点1到其余结点最短路径长度,输出保存到外部文件dijkstra-output1.txt 3 4 5 2 1 2.然后改写你的程序,求得所有各点之间的最短距离;输出保存到文件dijkstra-output2.txt.3.以上图作为输入,利用Floyd算法求得所有各点直接的最短距离;输出保存到文件floyd-output1.txt.实验报告 实验报告应包括以下内容: (1)题目; (2)写出算法设计思想; (3)程序清单;(4)运行的结果; (5)对运行情况所作的分析以及本次调试程序所取的经验。如果程序未通过,应分析其原因。 Tips: 主要函数 void dijkstra::algorithm()//算法函数 { initialize();int count=0;int i;int u;while(count u=minimum(); set[++count]=u; mark[u]=1; for(i=1;i<=num_of_vertices;i++) { if(graph[u][i]>0) { if(mark[i]!=1) { if(pathestimate[i]>pathestimate[u]+graph[u][i]) { pathestimate[i]=pathestimate[u]+graph[u][i]; predecessor[i]=u; } } }} }} //-------------float graph[maxsize][maxsize];//成本矩阵,邻接矩阵 //floyd algorithm for(k = 0;k < n;k ++) { // graph[i][j] = min {graph[i][j]}, graph[i][k] + graph[k][j] for(i = 0;i < n;i ++) //每次找到最优的路径代替原来的路径 for(j = 0;j < n;j ++) if(graph[i][j] > graph[i][k] + graph[k][j])//状态转换条件 { graph[i][j] = graph[i][k] + graph[k][j];//状态转换方程 } } 实验四:N-皇后问题求解 实验目的: 1)以Q-皇后问题为例,掌握回溯法的基本设计策略。2)掌握回溯法解决Q-皇后问题的算法并实现; 3)分析实验结果。 实验环境 计算机、C语言程序设计环境 实验学时 2学时,必做实验。 实验内容与步骤 1.用回溯法求解N-Queen,参考教材算法思想,并实现你的算法。要求:用键盘输入N;输出此时解的个数,并统计运算时间。2.给出N=4,5,6时,N-Queen解的个数。 3.尝试增大N,观察运行情况;并理解该算法的时间复杂度。实验报告 实验报告应包括以下内容: (1)题目; (2)写出算法设计思想; (3)运行的结果; (4)对运行情况所作的分析以及本次调试程序所取的经验。(5)如果程序未通过,应分析其原因。 Tips: 主要函数等 while(k>0)//对所有行执行以下语句 { X[k] = X[k]+1;//移到下一列 while(X[k]<=n &&!PLACE(k)) { X[k] = X[k]+1;//移到下一列,再判断 } if(X[k] <= n)//找到一个位置 { if(k==n)//一个完整的解 { //print printf(“the soution is:n”); for(t=1;t<=n;t++) printf(“%3d”,X[t]); printf(“n”); count +=1; } else {k=k+1;X[k]=0;} //转向下一行 } else k=k-1;//回溯 } printf(“n the number of the solutions is %d n”, count); bool PLACE(int k){ i=1;while(i if(X[i]==X[k] || abs(X[i]-X[k])==abs(i-k)) return false; i=i+1;} return true;} 附录1关于文件的操作 以背包问题为例: 1,例如外部文件为knapsack-input.txt: 2, 读入文件的操作: FILE* fp; /* Open for read(will fail if file “knapsack-input.txt” does not exist)*/ if((fp = fopen(“knapsack-input.txt”, “r”))== NULL) printf(“The file 'knapsack-input.txt' was not openedn”); else printf(“The file 'knapsack-input.txt' was openedn”); //读输入文件,写n,M,p[MAX],w[MAX] fscanf(fp,“n=%dn”,&n); fscanf(fp,“M=%dn”,&M); for(i=0;i for(i=0;i fscanf(fp,“%f”,&weight[i]);fscanf(fp,“n”); /* Close stream */ if(fclose(fp)) printf(“The file 'knapsack-input.txt' was not closedn”);附录2关于如何统计运算时间 #include “time.h” …….//----start time-----设置计时开始 double duration; clock_t finish, start;start = clock(); …… //----finish time-----设置计时结束 finish = clock(); duration =(double)(finish-start)/ CLOCKS_PER_SEC; printf(“nThe CPU time is %2.6f seconds:n”, duration); // 统计时间duration 北 京 邮 电 大 学 计 算 机 科 学 与 技 术 学 院 算 法 与 数 据 结 构 实 验 指 导 书 杨俊、徐塞虹、漆涛 编著 2006年9月 算法与数据结构 实验指导书 目录 实验要求....................................................................................................................................3 试验 一、约瑟夫环..............................................................................…………………..……4 试验 二、长整数四则运算运算………………………………………………………………4 实验三、八皇后.....................................……..........................................................................5 实验 四、骑士遍历......................................……………………..............................................5 实验 五、桌面计算器...............................……………..............................................................6 实验 六、平衡排序二叉树....................…...…….....................................................................6 试验 七、多重集合的实现……......................................………………………………………7 试验 八、图论………………………………………………………………………….……..8 实验 八、内部排序性能的比较..........………………….............................................................8 教材及主要参考文献………………………………………………………………………………..9 2 北京邮电大学 计算机科学与技术学院 算法与数据结构 实验指导书 实验要求 一、本课程在讲课期间需要做上机实验,目的之一是检查学生对所学算法的掌握和理解程度;其次是锻炼学生的团队合作精神。 二、成绩: 1、编码:占整个实验成绩的50%; 2、测试:占整个实验成绩的20%; 3、文档:占整个实验成绩的30%。 三、按时提交上机文档,实验文档包含以下各项: 1、问题描述:实验题目、内容和要求; 2、算法思路:实验小组对问题的解决方法的文字描述; 3、算法描述:用类算法语言等对算法进行描述; 4、源程序及驱动程序:上机实验编制的代码源程序及程序运行环境; 5、测试数据:对算法的测试用例; 6、结果分析和结论:对算法及测试结果的分析及结论; 7、心得体会:通过实验获得的心得体会; 8、分工及签名:最后是小组成员的分工及签名。 北京邮电大学 计算机科学与技术学院-1-算法与数据结构 实验指导书 实验 一、约瑟夫环 一、实验类别:设计型实验。 二、问题描述:约瑟夫环问题是:n个人p0,p1,…pn 围坐成一个圆环。每个人pk持有一个秘密的数字ck。0 < ck <= m。开始时随机选取一个数 c = c0。每个人从p0 开始从1开始报数。报到数c 的人出对。然后以出队的人的秘密数字作为新的c 值。从出队者的下一个人顺时针从1 开始再报数。直到所有的人全部出队。 三、实验目的:检查学生对各种线性表的实现的掌握程度。 四、实验学时:2小时 五、实验组人数:1人。 六、实验设备环境:计算机。 七、实验原理及要点(知识点):各种队列的实现。 八、实验内容和要求:至少用3种以上的线性表来完成此试验。可以在带头节点的和不带头节点的线性表、循环的和非循环线性表、动态链表和静态链表以及向量(数组)之间选择三种。从空表开始,为每个人生成一个随机数。然后将此人加入到线性表之中。 九、可研究与探索的问题:给出各种实现的优缺点比较。 十、验收及实验报告要求:现场操作及运行效果验收。要求程序必须上机编译通过并且正确运行。给出试验报告。给出各种线性表实现的优缺点分析。 实验 二、长整数四则运算 一、实验类别:验证实验。 二、问题描述:计算机CPU本身可以做32位或者64位的整数四则运算。本试验要求对任意大小的整数实现其四则运算。将一个整数N表示为 N = ±(d0 + d1*B + d2*B2 + ….+ bk*Bk) 其中 1< B <= 256 为一个取定的整数。0 <= dk < B。用线性表存储{bk}。给出整数的四则运算程序。 三、实验目的:对具体的问题选择适当的线性表实现。 四、实验学时:2小时 五、实验组人数:3人。 六、实验设备环境:计算机。 七、实验原理及要点(知识点):各种队列的实现。 八、实验内容和要求:至少用2种以上的线性表来完成此试验。比较不同线性表实现的速度。 九、可研究与探索的问题:1)对具体问题选择合适的线性表实现。2)B 的选取问题。可 否选择更大的基B。B的选择所应考虑的因素。 十、验收及实验报告要求:现场操作及运行效果验收。要求程序必须上机编译通过并且正确运行。给出试验报告。能够得出用向量(数组)实现的线性表速度最快。 实验三、八皇后问题 一、实验类别:设计型实验。 二、问题描述:在n*n 的国际象棋棋盘上放置n个皇后,使每个皇后不受其他皇后的攻击。 三、实验目的:检查学生对堆栈和递归程序掌握程度。 四、实验学时:2小时 五、实验组人数:1人。 六、实验设备环境:计算机。 七、实验原理及要点(知识点):递归程序与堆栈 八、实验内容和要求: 分别用递归和堆栈完成此试验。统计程序运行时间与问题规模n 的关系。 九、可研究与探索的问题:问题的复杂度。当n 比较大时,讨论提高程序运行的方法。 十、验收及实验报告要求:现场操作及运行效果验收。要求程序必须上机编译通过并且正确运行。给出试验报告。找出程序运行速度的瓶颈。 实验 四、骑士遍历 一、实验类别:设计型实验。 二、问题描述:在国际象棋n*n的棋盘中,一匹马从棋盘中任意一格出发,要求用n2-1步走完所有的n2个格子。每个格子走且只走过一次。应如何走? 试给出算法实现。 三、实验目的:检查学生对堆栈与回溯算法的掌握。 四、实验学时:2小时 五、实验组人数:3人。 六、实验设备环境:计算机。 七、实验原理及要点(知识点):堆栈与回溯 八、实验内容和要求:用堆栈完成此试验。统计程序运行时间与问题规模n 的关系。 九、可研究与探索的问题:怎样枚举所有马下一步可走的位置。选择下一步所走位置的策略。注意由于这个程序非常耗时,在初期程序调试时应取较小的n。 十、验收及实验报告要求:现场操作及运行效果验收。要求程序必须上机编译通过并且正确运行。给出试验报告。找出程序运行速度的瓶颈。给出不同选择策略的程序运行 速度的比较结果。 实验 五、桌面计算器(表达式求值) 一、实验类别:设计型实验。 二、问题描述:模仿Unix系统下的dc命令。输入表达式字符串,按回车键后给出表达式的值。操作数为实数。 1)操作符有 “+”、“-”、“*”、“/”、“^”(乘方) 2)还可以有临时变量。用法如 pi = 3.1415926,r = 3, r*pi^2 3)还可以有事先定义的函数如:“sin()”(正弦)、“cos()”(余弦)、“log()”(对数)、“ln()”(自然对数)等函数。 三、实验目的:检查学生用堆栈解决实际问题。为本课程后续的内容提供伏笔。也为后继的课程如编译原理预习。 四、实验学时:2小时 五、实验组人数:3人。 六、实验设备环境:计算机。 七、实验原理及要点(知识点):堆栈,线性表,命令行参数的处理。 八、实验内容和要求:学生应至少应实现处理五个运算符:“+”、“-”、“*”、“/”、“^”(乘方)。可以用一个线性表来存储临时变量。另一个线性表来存储预定义的函数名。 九、可研究与探索的问题:查找临时变量名的不同方法。如哈希表,二叉树。 十、验收及实验报告要求:现场操作及运行效果验收。要求程序必须上机编译通过并且正确运行。给出试验报告。 实验 六、平衡排序二叉树 一、实验类别:设计型实验。 二、问题描述:随机生成一组整数p0,p1,…pn-1。将这组整数按生成的次序插入到一个平衡排序二叉树中。然后将p0,p1,…pn-1随机重新排列为q0,q1,…qn-1。再按照次次序将这些整数从生成的平衡排序二叉树删除。 三、实验目的:平衡排序二叉树的插入和删除。 四、实验学时:2小时 五、实验组人数:3人。 六、实验设备环境:计算机。 七、实验原理及要点(知识点):平衡排序二叉树的插入和删除中的旋转。 八、实验内容和要求:统计在平衡排序二叉树的插入和删除过程中各种旋转的出现次数。 九、可研究与探索的问题:研究平衡排序二叉树与一般的排序二叉树在插入和删除方面的性能比较。 十、验收及实验报告要求:现场操作及运行效果验收。要求程序必须上机编译通过并且正确运行。给出试验报告。给出在均匀的随机分布下,平衡排序二叉树与一般排序二叉树的性能比较。 实验 七、多重集合的实现 一、实验类别:设计型实验。 二、问题描述:实现数学上多重集合。所谓的多重集合类似于集合,但是一件东西可以放置多个副本。就如一个菜篮子里面可以放两个苹果。 三、实验目的:查找结构的各种实现。 四、实验学时:2小时 五、实验组人数:3人。 六、实验设备环境:计算机。 七、实验原理及要点(知识点):平衡排序二叉树的插入和删除、遍历,查找。哈希查找结构。 八、实验内容和要求: 假设集合中包含的元素是可以排序的。将多重集合封装成一个类。具体的实现可以是中序线索化的平衡排序二叉树,或者带父节点指针的平衡排序二叉树。多重集合的界面如下: template { Multi_set(void);//构造函数,初始化为空集合~Multi_set(void);//析构函数 Multi_set& operator=(Multi_set const a);//重载运算符= bool contains(T const& v)const;//如果集合包含v 则返回true,否则返回false Multi_set& operator+=(Multi_set const&a);//将集合a 并到自身中。 Multi_set& operator-=(Multi_set const& a);//自身减去集合a Multi_set& operator-=(T const& a);//自身减去一个元素a };//~class Multi_set //返回集合a,b的并 template //返回集合a,b的差 template //返回 a –{v} template Multi_set 九、可研究与探索的问题:哈希函数的选取。比较哈希与平衡排序二叉树的优缺点、性能和速度。 十、验收及实验报告要求:现场操作及运行效果验收。要求程序必须上机编译通过并且正确运行。给出试验报告。给出平衡排序二叉树实现的多重集合和用哈希实现的多重集合的性能比较。 实验 八、图论 一、实验类别:设计型实验。 二、问题描述:实现图论中的各种算法。 1)最小代价生成树的Krscal 算法和Prim算法。2)单源点的最短路径的Dijstra 算法。3)深度优先遍历与广度优先遍历。4)拓扑排序 5)求所有节点之间的最短路径Floyd算法 (在这五个小题中只要选作一个即可。) 三、实验目的:学习根据不同的运算来选取不同的存储结构。 四、实验学时:2小时 五、实验组人数:3人。 六、实验设备环境:计算机。 七、实验原理及要点(知识点):图论中的各种算法及其复杂度。根据不同的操作来决定图的存储结构。 八、实验内容和要求:至少实现上面五个小题目中的一个。从文件中读入一个图的信息。 九、可研究与探索的问题:高级数据结构如堆、并查集在图论算法中的应用。 十、验收及实验报告要求:现场操作及运行效果验收。要求程序必须上机编译通过并且正确运行。给出试验报告。给出在均匀的随机分布下,平衡排序二叉树与一般排序二叉树的性能比较。 实验 九、内部排序性能的比较 一、实验类别:设计型实验。 二、问题描述:随机生成一组整数p0,p1,…pn-1。对这组数据进行排序。 三、实验目的:比较不同排序算法的性能。 四、实验学时:2小时 五、实验组人数:3人。 六、实验设备环境:计算机。 七、实验原理及要点(知识点):各种内部排序算法。 八、实验内容和要求: 1)实现插入排序,选择排序,希尔排序,堆排序以及快速排序。2)快速排序的多种版本。3)对单链表实现归并排序。4)基数排序。 5)对小型问题(n = 10)、中型问题(n = 1000)以及大型问题(n = 1百万)分别统计不同排序算法的键值比较次数、键值移动次数以及程序运行时间。 26)排序算法的时间复杂度可以有O(n)和 O(n log n)。对相同复杂度的算法,给出他们运行时间与时间复杂度的比值。 九、可研究与探索的问题:研究快速排序算法的不同改进方法。自省排序算法。只需要移动而不需要交换的快速排序方法。 十、验收及实验报告要求:现场操作及运行效果验收。要求程序必须上机编译通过并且正确运行。给出试验报告。给出在均匀的随机分布下,对大中小问题的最快的排序算法。 教材及主要参考文献 [1] 严蔚敏、吴伟民,数据结构习题集,清华大学出版社,1999年 [2] John R.Hubbard, Data Structures with C++, China Machine Press, 2002.[3] Mark Allen Weiss, Data Structures and Problem Solving Using C++, 2ed, 清华大学出版社。2004年。[4] Robert Sedgewick,Algorithms in C Part 1 – 4: Fundamentals, Data Structures, Sorting, rdSearching, 3, 中国电力出版社,2003年。 [5] 严蔚敏、吴伟民,数据结构(C语言版),清华大学出版社,2006年 系统分析与设计实验指导书 前言 信息系统分析与设计是一门研究管理信息系统开发与维护的普遍原理和技术的工程学科。随着信息系统概念及应用的发展,成功的经验与失败的教训使人们认识到:信息系统建设过程是复杂的社会过程,系统观点是系统建设的重要思想武器,科学的开发过程和规范的项目管理要比开发技术本身更为重要,严格遵循系统分析与设计的方法论可以大大提高信息系统开发的成功率,显著减少系统开发和维护中的问题。 按该课程的特点,实验内容包括软件开发的两大方法学的专题训练,即结构化(生命周期学)的方法学和面向对象的方法学,通过对一个具体的信息系统项目,要求学生利用结构化软件开发技术或面向对象的软件开发技术完成对该项目的开发。因此设置四个实验项目,从项目开发的准备工作,系统分析过程,系统设计过程,到文档的整理和完善,覆盖软件开发的主要过程,此外又引入我国国家《计算机开发规范》,以规范技术文档的书写标准,提高实验教学质量。 通过实验训练,达到如下目的: 使学生进一步了解和掌握系统分析与设计原理,提高对实际项目的分析和设计能力,通过实验课程,熟悉和基本掌握软件开发方法学、软件开发的过程,文档资料的编写格式及规范,全面领会和贯通所学习的理论知识,从而培养学生综合运用所学课程知识,分析解决问题的能力,培养学生理论联系实际作风,实事求是,严肃认真的科学态度和良好的工作作风,为今后从事科学研究工作打下基础。 目 录 实验一:项目开发的准备工作--------------------1 实验二:系统分析过程----------------------------1 实验三:系统设计过程----------------------------2 实验四:系统文档整理----------------------------3 附录一:--------------5 附录二:--------------6 附录三:--------------11 实验一:项目开发的准备工作 实验学时:2 实验类型:验证性 一、目的与任务 目的:确定课题,组织组员,合理分工,熟悉软件开发环境,培养团队精神。 任务:学习软件开发小组的组织和管理,合理分工,将项目开发各阶段的任务明确,并熟悉相应的软件开发环境。 二、内容、要求与安排方式 1、实验内容与要求: 根据各组选择的课题,实行项目经理制,各组推荐一名组长,统一管理整个项目的实施过程,并和理调整资源和负责项目全局;根据项目的难易合理分配组员的任务,对问题达成一直的看法;针对项目的实施,熟悉相应的软件开发工具的使用环境。 2、实验安排方式: 本实验为开放实验,各组可同时进行实验,每组2—3人。3.准备参考资料和阅读相关的国家有关软件开发的标准文档。 三、思考题 1. 2. 3. 项目开发首先要做的事是什么? 你认为该软件应具备的最重要的特性是什么。你认为怎样分工是最合理的? 实验二:系统分析过程 实验学时:4 实验类型:验证性 一、目的与任务 目的:确定项目的可实施性,在此基础上完成系统的逻辑功能模型的建立。任务:采用不同的软件开发技术,完成对项目的分析过程,给出系统的逻 1 辑功能模型,数据字典以及规格说明书。 二、内容、要求与安排方式 1、实验内容与要求:(1)结构化分析 明白项目的业务流程图,绘制数据流程图,编写数据字典,数据加工处理的描述,实体关系图(ER图),需求规格说明书。 (2)面向对象分析 弄清信息系统的业务流程,绘制系统的用例图,书写用例规格说明;初步绘制系统的静态结构——类图;初步绘制系统动态行为——顺序图、协作图、活动图、状态图。最后利用Word写出系统的需求规格说明书。 2、实验安排方式: 本实验为开放实验,各组可同时进行实验,每组2—3人。 三、思考题 1. 2. 3. 4. 需求分析在软件开发中真的有那么重要吗? 分析系统流程图,流程图和数据流图的区别和各自的特点。怎样写合乎规范的数据流图和数据词典? 怎样组织对该工作的评审? 实验三:系统设计过程 实验学时:4 实验类型:技能性 一、目的与任务 目的:在实验二基础上完成系统的体系结构的建立和系统详细设计,并给出相应的规格说明书。 任务:认真分析实验二的结果,给出系统合理的体系结构,描绘系统结构图,并合理划分系统的各组成模块,最后给出系统的各部分设计规格说明书。 二、内容、要求与安排方式 1、实验内容与要求:(1)结构化设计 软件体系结构图(HIPO图或模块结构图)设计,模块处理流程设计,输出设计(主要指打印输出设计),存储文件格式设计(数据库结构设计),输入设计(主要指数据录入卡设计),代码设计,系统设计说明书 (2)面向对象设计 设计系统合理的体系结构;在Rational Rose环境中对实验二的分析模型进行细化、精化,使之成为计算机能够实现的物理模型。最后利用Word写出系统的设计规格说明书。 2、实验安排方式: 本实验为开放实验,各组可同时进行实验,每组2—3人。 三、思考题 1.系统设计和需求分析的关系是什么?两者必须先后关联吗? 2.怎样描绘系统的体系结构? 3.怎样绘制复合规范的流程图。4.怎样组织对设计阶段工作的评审? 实验四:系统文档整理 实验学时:2 实验类型:验证性 一、目的与任务 目的:系统运行和软件后期制作。 任务:总结软件开发中的得失,正确书写软件说明书和用户手册。 二、内容、要求与安排方式 1、实验内容与要求: 完善系统所涉及的程序框图,源程序,模拟运行数据,打印报表,软件使用说明书和用户手册等。 2、验安排方式: 本实验为开放实验,各组可同时进行实验,每组2—3人。 三、思考题 1.怎样合理选择软件开发的工具? 2.怎样进行用户说明手册和使用手册的编写。3.总结项目实施中的得失。 附录一: 实验要求 软件工程实验要求学生采用“项目小组”的形式,结合具体的开发项目进行设计。具体要求如下: 1. 班级按项目小组进行分组,每组不得超过4人 2. 每个项目小组选出项目负责人或项目经理,由项目经理召集项目组成员讨论、选定开发项目 3.项目开的每项任务要落实到人且规定该任务的起止日期和时间 4.每个项目小组可以参照附录中给定的文档规范标准提供项目文档 5.题目自定或采用附录二中的题目 6.软件开发的方法学自定(结构化或面向对象的方法学) 附录一:实验题目 题目一:“教务管理系统之子系统——学院课程安排” 1. 系统简介 每个学期的期中,学校教务处向各个学院发出下各学期的教学计划,包括课程名称、课程代码、课时、班级类别(本科、专科、成人教育、研究生)、班号等;学院教学主管人员根据教学任务和要求给出各个课程的相关限制(如:任课教师的职称、上课的班数、最高和最低周学时数等);任课教师自报本人授课计划,经所在教研室协调任可,将教学计划上交学院主管教学计划的人员,批准后上报学校教务处,最终由教务处给出下个学期全学院教师的教学任务书。 假设上述排课过程全部由人工操作,现要求为上述过程实现计算机自动处理过程。2. 限定条件 (1)每位教师的主讲课程门数不超过2门/学期:讲师以下职称的教师不能承担学院定主课的主讲任务。 (2)学院中层干部的主讲课时不能超过4学时/周。 (3)本学期出现严重教学事故的教师不能承担下各学期的主讲任务。 (4)本系统的输入项至少包括:教务处布置的教学计划,学院教师自报的授课计划和学院定的有关授课限制条件。 (5)本系统的输出项至少包括:教务处最终下达全院教师的教学任务书和学院各个班级下各学期的课程表(可以不含上课地点)。 题目二:“学校教材定购系统” 1. 系统简介 本系统可以细化为两个子系统:销售系统和采购系统。 销售系统的主要工作过程为:首先由教师或学生提交购书单,经教材发行人员审核是有效购书单后,开发票、登记并返给教师或学生领书单,教师或学生可以到书库领书。 采购系统的主要工作过程为:若是教材脱销,则登记缺书,发缺书单给书库采购人员;一旦新书入库后,即发进书通知给教材发行人员。 以上功能要求在计算机上实现。2. 技术要求和限制条件 (1)当书库中的各种书籍数量发生变化(包括进书和出书)时,都应修改相关的书库记录,如库存表或进/出库表。 (2)在实现上述销售和采购的工作过程时,需考虑有关的合法性验证。 6(3)系统的外部项至少包括:教师、学生和教材工作人员。 (4)系统的相关数据存储至少包括:购书表、库存表、缺书登记表、待购教材表、进库表和出库表。 题目三:“机票预定系统” 1. 系统简介 航空公司为给旅客乘机提供方便,需要开发一个机票预定系统。各个旅行社把预定机票的旅客信息(姓名、性别、工作单位、身份证号码(护照号码)、旅行时间、旅行始发地和目的地,航班舱位要求等)输入到系统中,系统为旅客安排航班。当旅客交付了预订金后,系统打印出取票通知和帐单给旅客,旅客在飞机起飞前一天凭取票通知和帐单交款取票,系统核对无误即打印出机票给旅客。此外航空公司为随时掌握各个航班飞机的乘载情况,需要定期进行查询统计,以便适当调整。2. 技术要求和限制条件 (1)在分析系统功能时要考虑有关证件的合法性验证(如身份证、取票通知和交款发票)等。 (2)对于本系统还应补充以下功能: 旅客延误了取票时间的处理 航班取消后的处理 旅客临时更改航班的处理 (3)系统的外部输入项至少包括:旅客、旅行社和航空公司。 题目四:“实验室设备管理系统” 1. 系统简介 每学年要对实验室设备使用情况进行统计、更新。其中:(1)对于已彻底损坏的做报废处理,同时详细记录有关信息。 (2)对于由严重问题(故障)的要及时修理,并记录修理日期、设备名、编号、修理厂家、修理费用、责任人等。 (3)对于急需修改但又缺少的设备,需以“申请表”的形式送交上级领导请求批准购买。新设备购入后要立即进行设备登记(包括类别、设备名、编号、型号、规格、单价、数量、购置日期、生产厂家、保质期和经办人等信息),同时更新申请表的内容。 (4)随时对现有设备及其修理、报废情况进行统计、查询,要求能够按类别和时间段等查询。 2. 技术要求及限制条件 7(1)所有工作由专门人员负责完成,其他人不得任意使用。 (2)每件设备在做入库登记时均由系统按类别加自动顺序号编号,形成设备号;设备报废时要及时修改相应的设备记录,且有领导认可。 (3)本系统的数据存储至少包括:设备记录、修理记录、报废记录、申请购买记录。(4)本系统的输入项至少包括:新设备信息、修理信息、申请购买信息、具体查询统计要求。 本系统的输出项至少包括:设备购买申请表、修理/报废设备资金统计表。 题目五:人事管理系统的设计系统简介和设计要求:(1)信息要求 本系统应该包含与人事管理相关的信息,如部门信息、职员信息,其中职员信息应该包含职员的基本信息(如职员的编号、姓名、性别等)职员的其他信息如(如:主要社会关系、奖惩情况等)。(2)功能要求 本系统的基本功能要求如下: 部门信息维护; 职员信息维护(含职员的部门调整); 职员信息查询(不确定查询); 人事信息查询(如人才结构的统计查询) 用户管理(含用户权限的设置) 辅助功能(如学历索引表、职称索引表的维护等) 题目六:工资管理系统的设计 系统简介和设计要求:(1)信息要求 本系统应该包含与工资管理相关的信息,如部门信息、职员工资信息,其中职员工资信息应该包含与支援工资相关的基本信息(如:职员的编号、姓名、基本工资、各种津贴以及其他应发工资项目,水电、煤气等各项扣款,以及公积金、会费等)、职员的其他信息(如工资调整情况)等。 (2)功能要求 本系统的基本功能要求如下: 部门信息维护; 职员工资信息维护; 显示打印职员工资表; 打印职员工资发放表; 打印部门工资汇总表; 用户管理(含用户权限的设置)。 题目七:毕业生管理信息系统 设计要求:(1)信息要求 本系统应该包含与毕业生管理相关的信息,如毕业生基本信息、毕业生就业信息、其中毕业生基本信息应该包括:毕业生的编号、姓名、性别、民族、籍贯、毕业时间、专业、政治面貌等信息;毕业生就业信息应该包括:毕业生的编号、就业时间、工作单位、工作性质、职务、地址等。 (2)功能要求 本系统的基本功能要求如下: 毕业生基本信息维护; 毕业生就业信息维护; 毕业生就业情况查询(不确定查询); 按专业划分的就业情况统计; 用户管理(含用户权限的设置)。 题目八:建立一个分布式、互动式的远程教学平台 为教师教学、学生学习提供比较完整的教学解决方案。其主要功能包括通知发布、参考资料发布、电子课件发布、学生作业提交、帮助教师批改学生作业、帮助学生复查批改后的作业。 题目九:开发一个基于WEB的网上机票查询和销售系统 该系统可以录入航班和机票信息,用户可以查询航班时刻表、查询机票可用信息和机票折扣信息,用户可以通过WEB订票。 题目十:开发一个基于WEB的网上投稿系统 该系统可以接受作者的电子投稿,以及作者信息(如姓名、单位、通信地址、电话、E-Mail等)注册,并能供投稿人查询稿件处理情况,以及在稿件处理后(退稿、录用、修改后再审等),能自动发送E-Mail通知投稿人。 题目十一:开发一个基于Web的BBS系统 包含一般BBS所具有的功能,如用户注册、用户信息管理、发贴功能、贴子管理、主题词查询、用户信息修改和查询等。 题目十二:开发一个基于Web的网上书店 该系统可以分类录入书籍和相关信息(如名称、页数、出版商、摘要、目录等),用户可以注册、登录,注册用户享受打折服务,所有用户都可以查询、浏览书籍。注册用户可以定购书籍并查询订单。 附录三: 软件开发文档指南 可行性研究报告 可行性研究报告的编写目的是:说明该软件开发项目的实现在技术、经济和社会条件方面的可行性;评述为了合理地达到开发目标而可能先择的各种方案;说明论证所选定的方案。可行性研究报告的编写内容要求如下: 1.1 引言 1.1.1 编写目的 1.1.2 背景 1.1.3 定义 1.1.4 参考资料 1.2 可行性研究的前提 1.2.1 要求 1.2.2 目标 1.2.3 条件、假定和限制 1.2.4 进行可行性研究的方法 1.2.5 评价尺度 1.3 对现有系统的分析 1.3.1 数据流程和处理流程 1.3.2 工作负荷 1.3.3 费用开支 1.3.4 人员 1.3.5 设备 1.3.6 局限性 1.4 所建议的系统 1.4.1 对所建议系统的说明 1.4.2 数据流程各处理流程 1.4.3 改进之处 1.4.4 影响 1.4.4.1 对象设备的影响 1.4.4.2 对软件的影响 1.4.4.3 对用户单位机构的影响 1.4.4.4 对系统动行的影响 1.4.4.5 对开发的影响 1.4.4.6 对地点和设施的影响 1.4.4.7 对经费开支的影响 1.4.5 局限性 1.4.6 技术条件方面的可行性 1.5 可选择其他系统方案 1.5.1 可选择的系统方案1 1.5.2 可选择的系统方案2 …… 1.6 投资及收益分析 1.6.1 支出 1.6.1.1 基本建设投资 1.6.1.2 其他一次性支出 1.6.1.3 非一次性支出 1.6.2 收益 1.6.2.1 一次性收益 1.6.2.2 非一次性收益 1.6.2.3 不可定量的收益 1.6.3 收益/投资比 1.6.4 投资回收周期 1.6.5 敏感性分析 1.7 社会条件方面的可行性 1.7.1 法律方面的可行性 1.7.2 使用方面的可行性 1.8 结论 2 项目开发计划 编制项目开发计划的目的是用文件的形式,把对于在开发过程中各项工作的负责人员、开发进度所需经费预算、所需软、硬件条件等问题作出安排记载下来,以便根据本计划开展和检查本项目的开发工作。编制内容要求如下: 2.1 引言 2.1.1 编写目的 2.1.2 背景 2.1.3 定义 2.1.4 参考资料 2.2 项目概述 2.2.1 工作内容 2.2.2 主要参加人员 2.2.3 产品及成果 2.2.3.1 程序 2.2.3.2 文件 2.2.3.3 服务 2.2.3.4 非移交产品 2.2.4 验收标准 2.2.5 完成项目的最迟期限 2.2.6 本计划的审查者与批准者 2.3 实施总计划 2.3.1 工作任务的分解 2.3.2 接口人员 2.3.3 进度 2.3.4 预算 2.3.5 关键问题 2.4 支持条件 2.4.1 计算机系统支持 2.4.2 需要用户承担的工作 2.4.3 需由外单位提供的条件 2.5 专题计划要点 3 软件需求说明书 软件需求说明书的编制是为了使用户的软件开发者双方对该软件的起初规定有一个共同的理解,使之成为整个开发工作的基础。编制软件需求说明书的内容要求如下: 3.1 引言 3.1.1 编写的目的 3.1.2 背景 3.1.3 定义 3.1.1 参考资料 3.2 任务概述 3.2.1 目标 3.2.2 用户的点 3.2.3 假定与约束 3.3 需求规定 3.3.1 对功能的规定 3.3.2 对性能的规定 3.3.2.1 精度 3.3.2.2 时间特性要求 3.3.2.3 灵活性 3.3.3 输入输出要求 3.3.4 数据管理能力的要求 3.3.5 故障处理要求 3.3.6 其它的专门的要求 3.4 运行环境规定 3.4.1 设备 3.4.2 支持软件 3.4.3 接口 3.4.4 控制 4 数据需求说明书 数据要求说明书的编制目的是为了向整个开发时期提供关于处理数据的描述和数据采集要求的技术信息。编制数据要求说明书的内容要求如下: 4.1 引言 4.1.1 编写目的 4.1.2 背景 4.1.3 定义 4.1.4 参考资料 4.2 数据的逻辑描述 4.2.1 静态数据 4.2.2 动态输入数据 4.2.3 动态输出数据 4.2.4 内部生成数据 4.2.5 数据约定 4.3 数据的采集 4.3.1 要求和范围 4.3.2 输入的承担者 4.3.3 处理 4.3.4 影响 5 概要设计说明书 概要设计说明书可称作系统设计说明书,这里说的系统是指程序系统,编制的目的是说 15 明对程序的系统的设计考虑,包括程序系统的基本处理流程、程序系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为程序的详细设计提供基础。编制概要设计说明书的内容要求如下: 5.1 引言 5.1.1 编写目的 5.1.2 背景 5.1.3 定义 5.1.4 参考资料 5.2 总体设计 5.2.1 需求规定 5.2.2 运行环境 5.2.3 基本设计概念和处理流程 5.2.4 结构 5.2.5 功能需求与程序的关系 5.2.6 人工处理过程 5.2.7 尚未解决的问题 5.3 接口设计 5.3.1 用户接口 5.3.2 内部接口 5.3.3 外部接口 5.4 运行设计 5.4.1 运行模块组合 5.4.2 运行控制 5.4.3 运行时间 5.5 系统数据结构设计 5.5.1 逻辑结构设计要点 5.5.2 物理结构设计要点 5.5.3 数据结构与程序的关系 5.6 系统出错处理设计 5.6.1 出错信息 5.6.2 补救措施 5.6.3 系统维护设计 6 详细设计说明书 详细说明书可称作程序设计说明书。编制目的是说明一个软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,如果一个软件系统比较简单,层次很少,本文件可以不单独编写,有关内容合并概要设计说明书。对详细设计说明书的内容要不得要求如下: 6.1 引言 6.1.1 编写目的 6.1.2 背景 6.1.3 定义 6.1.4 参考资料 6.2 程序系统的组织结构 6.3 程序1(标识符)设计说明 6.3.1 程序描述 6.3.2 功能 6.3.3 性能 6.3.4 输入项 6.3.5 输出项 6.3.6 算法 6.3.7 流程逻辑 6.3.8 接口 6.3.9 存储分配 6.3.10 注释设计 6.3.11 限制条件 6.3.12 测试计划 6.3.13 尚未解决的问题 6.4 程序2(标识符)设计说明 …… 数据库设计说明书 数据库设计说明书的编制目的是对于设计中的数据库所有标识、逻辑结构和理结构作出具体的设计规定。其内容要求如下: 7.1 引言 7.1.1 编写目的 7.1.2 背景 7.1.3 定义 7.1.4 参考资料 7.2 外部设计 7.2.1 标识符和状态 7.2.2 使用它的程序 7.2.3 约定 7.2.4 专门指导 7.2.5 支持软件 7.3 结构设计 7.3.1 概念结构设计 7.3.2 逻辑结构设计 7.3.3 理结构设计 7.4 运用设计 7.4.1 数据字典设计 7.4.2 安全保密设计 8 用户手册 用户手册的编制是要使用非专门术语的语言,充分地描述该软件系统工程所具有的功能及基本的使用方法。使用户(或潜在用户)通过本手册能够了解该软件的用途,并且能够确定在什么情况下,如何使用它。具体的内容要求如下: 8.1 引言 8.1.1 编写目的 8.1.2 背景 8.1.3 定义 8.1.4 参考资料 8.2 用途 8.2.1 功能 8.2.2 性能 8.2.2.1 精度 8.2.2.2 时间特性 8.2.2.3 灵活性 8.2.3 安全保密 8.3 运行环境 8.3.1 硬设备 8.3.2 支持软件 8.3.3 数据结构 8.4 使用过程 8.4.1 安装与初始化 8.4.2 输入 8.4.2.1 输入数据的现实背景 8.4.2.2 输入格式 8.4.2.3 输入举例 8.4.3 输出 8.4.3.1 输出数据的现实背景 8.4.3.2 输出格式 8.4.3.3 输出举例 8.4.4 文卷查询 8.4.5 出错处理与恢复 8.4.6 终端操作 操作手册 操作手册的编制是为了向操作人中提供该软件每一个运行的具体过程和有关知识,包括操作方法的细节。具体的内容要求如下: 9.1 引言 9.1.1 编写目的 9.1.2 背景 9.1.3 定义 9.1.2 参考资料 9.2 软件概述 9.2.1 软件的结构 9.2.2 程序表 9.2.3 文卷表 9.3 安装与初始化 9.4 运行说明 9.4.1 运行表 9.4.2 运行步骤 9.4.3 运行1(标识符)说明 9.4.3.1 运行控制 9.4.3.2 操作信息 9.4.3.3 输入-输出文卷 9.4.3.4 输出文段 9.4.3.5 输出文段的复制 9.4.3.6 启动恢复过程 9.4.4 运行2(标识符)说明 9.5 非常规过程 9.6 远程操作 10 模块开发卷宗 模块开发卷宗是在模块开发过程中逐步编写出来的,每完成一个模块或一级密切相关的 20 模块的复审时编写一份,应该把所有的模块开发卷宗汇集在一起。编写的目的是记录和汇总低层次开发的进度和结果,以便于对整个模块开发工作的管理和复审,并为将来的维护提供非常有用的技术信息。具体的内容要求如下: 10.1 标题 10.2 模块开发情况表 10.3 功能说明 10.4 设计说明 10.5 源代码清单 10.6 测试说明 10.7 复审的结论 11 测试计划 11.1 引言 11.1.1 编写目的 11.1.2 背景 11.1.3 定义 11.1.4 参考资料 11.2 计划 11.2.1 软件说明 11.2.2 测试内容 11.2.3 测试1(标识符) 11.2.3.1 进度安排 11.2.3.2 条件 11.2.3.3 测试资料 11.2.3.4 测试培训 11.2.4 测试2(标识符) …… 11.3 测试设计说明 11.3.1 测试1(标识符)21 11.3.1.1 控制 11.3.1.2 输入 11.3.1.3 输出 11.3.1.4 过程 11.3.2 测试2(标识符) …… 11.4 评价准则 11.4.1 范围 11.4.2 数据整理 11.4.3 尺度 12 测试分析报告 测试分析报告的编写是为了把组装测试和确认测试的结果、发现及分析写成文件加发记载,具体的编写内容要求如下: 12.1 引言 12.1.1 编写目的 12.1.2 背景 12.1.3 定义 12.1.4 参考资料 12.2 测度概要 12.3 测试结果及发现 12.3.1 测试1(标识符) 12.3.2 测试2(标识符) …… 12.4 对软件功能的结论 12.4.1 功能1(标识符) 12.4.1.1 能力 12.4.1.2 限制 12.4.2 功能2(标识符) …… 12.5 分析摘要 12.5.1 能力 12.5.2 缺陷和限制 12.5.3 建议 12.5.4 评价 12.6 测试资源消耗 13 开发进度月报 开发进度月报的编制目的是及时向有关管理部门汇报项目开发的进展和情况,以便函及时发现或处理开发过程中出现的问题。一般地,开发进度月报是以项目组为单位每月编写的。如果被开发的软件系统规模比较大,整个工程项目被划分给若干个分项目组承担,开发进度月报将以项目组为单位按月编写。具体的内容要求如下: 13.1 标题 13.2 工程进度与状态 13.2.1 进度 13.2.2 状态 13.3 资源耗用与状态 13.3.1 资源耗用 13.3.1.1 工时 13.3.1.2 机时 13.3.2 状态 13.4 经费支出与状态 13.4.1 经费支出 13.4.1.1 支持性费用 13.4.1.2 设备购置费 13.4.2 状态 13.5 下个月的工作计划 13.6 建议 14 项目开发总结报告 项目开发总结报告的编制是为了总结本项目开发工作的经验,说明实际取得的开发结果以及对整个开发工作的各个方面的评价。具体的内容要求如下: 14.1 引言 14.1.1 编写目的 14.1.2 背景 14.1.3 定义 14.1.4 参考资料 14.2 实际开发结果 14.2.1 产品 14.2.2 主要功能和性能 14.2.3 基本流程 14.2.4 进度 14.2.5 费用 14.3 开发工作评价 14.3.1 对生产效率的评价 14.3.2 对产品质量的评价 14.3.3 对技术方法的评价 14.3.4 出错原因的分析 数据结构算法设计与分析、计算机网络、计算机组成原理、操作系统原理、编译原理、数据库原理及应用、软件工程、软件测试等计算机基础理论课程; 网页制作、程序设计Java、JSP程序设计、Oracle、XML程序设计、计算机网络、SSH(Struts+Spring+Hibernate)框架、Java EE程序设计、Ajax程序设计、Linux+PHP+MySQL程序设计、Android手机开发、UML系统分析与设计、性能测试、自动化软件测试、软件质量保证、毕业设计及项目综合实训等。 数据结构、计算机网络、计算机组成原理、操作系统原理、编译原理、数据库原理及应用、金融学概论、西方经济学等基础理论课程; 网页制作、程序设计Java、JSP程序设计、J2EE程序设计、SQL Server数据库、Oracle数据库、Linux操作系统、UML系统分析与设计、软件工程、XML程序设计、SSH框架、金融市场学、ERP财务管理、管理信息系统、投资银行学、商业银行学、国际金融管理、毕业设计及项目综合实训等专业课程。 数据结构、计算机网络、计算机组成原理、操作系统原理、数据库原理及应用、软件工程、软件测试等计算机基础理论课程; 网页制作、程序设计Java、JSP程序设计、J2EE程序设计、XML程序设计、Ajax程序设计、SSH框架、Android手机开发、Linux+PHP+MySQL程序设计、SQL Server数据库、Linux操作系统、UML系统分析与设计、软件项目管理、行业标准与规范、IT服务管理、IT职业英语、毕业设计及项目综合实训等专业课程第三篇:算法与数据结构实验指导书
第四篇:系统分析与设计实验指导书
第五篇:数据结构算法设计与分析