太原理工大学软件工程程序设计实验报告

太原理工大学软件工程程序设计实验报告
太原理工大学软件工程程序设计实验报告

《程序设计》课程设计

姓名:

学号:

班级:软件工程1334 班

指导教师:杨永强

成绩:

2015年6月

实验一:谁拿了最多奖学金

1.【问题描述】

(1)问题描述

某校的惯例是在每学期的期末考试之后发放奖学金。发放的奖学金共有五种,获取的条件各自不同:

1)院士奖学金,每人8000 元,期末平均成绩高于80 分( >80 ),并且在本学期内发表

1 篇或 1 篇以上论文的学生均可获得;

2)五四奖学金,每人4000 元,期末平均成绩高于85 分( >85 ),并且班级评议成绩高于 80 分( >80 )的学生均可获得;

3)成绩优秀奖,每人2000 元,期末平均成绩高于90 分( >90)的学生均可获得;

4)西部奖学金,每人1000 元,期末平均成绩高于85 分( >85 )的西部省份学生均可获得;

5)班级贡献奖,每人 850 元,班级评议成绩高于 80 分( >80 )的学生干部均可获得;只要

符合条件就可以得奖,每项奖学金的获奖人数没有限制,每名学生也可以同时获得

多项奖学金。例如姚林的期末平均成绩是87 分,班级评议成绩82 分,同时他还是一位学生

干部,那么他可以同时获得五四奖学金和班级贡献奖,奖金总数是4850 元。

2.【设计需求及分析】

(1)设计思路

先定义了一个 Student 的结构体,它里面定义了关于学生的各个属性。比如期末平均

成绩,班级评议成绩,班干部等等。然后设计了一个判断函数,判断他得到奖学金的

多少。接下来就是主函数了,在主函数里,有着输出输入变量,和赋值函数,最重要

的是比较函数,比较出哪一位学生的奖学金多及所有金额的总计。最后输出。下面是

关键步骤:

(2)输出输入格式

输入数据格式格式:

输入的第一行是一个整数N (1 <= N <= 100),表示学生的总数。接下来的N 行每行是一位学生的数据,从左向右依次是姓名,期末平均成绩,班级评议成绩,是否是学生干部,是否是西部省份学生,以及发表的论文数。姓名是由大小写英文字母组成的长度不超过20的字符串(不含空格);期末平均成绩和班级评议成绩都是0 到 100 之间的整数(包括0和 100);是否是学生干部和是否是西部省份学生分别用一个字符表示,Y 表示是, N 表示不是;发表的论文数是0 到 10 的整数(包括0 和 10)。每两个相邻数据项之间用一个空格

分隔。

输出数据格式:

输出包括三行,第一行是获得最多奖金的学生的姓名,第二行是这名学生获得的奖金总

数。如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的

学生的姓名。第三行是这N 个学生获得的奖学金的总数。

(3)名字为char 类型,各类成绩及论文数量为int 类型,判断类型为char 类型。人数最多为 100 人。

(4)测试数据: YaoLin 87 82 Y N 0

ChenRuiyi 88 78 N Y 1

LiXin 92 88 N N 0

ZhangQin 83 87 Y N 1

3.【设计功能的实现】#include

#include usingnamespace std;

string stu_name[100];

int stu_num[100];

int main()

{

int n;cin>>n;

memset(stu_name,0,

memset(stu_num,0, for ( int i=0;i

sizeof stu_name); sizeof stu_num);

int sc1,sc2;

char fl1,fl2;

int c;

cin>>stu_name[i];

cin>>sc1>>sc2>>fl1>>fl2>>c;

if(sc1>80&&c)

stu_num[i] += 8000;

if(sc1>85&&sc2>80)

stu_num[i] += 4000;

if (sc1>90)

stu_num[i] += 2000;

if (sc1>85&&fl2== 'Y' )

stu_num[i] += 1000;

if (sc2>80&&fl1== 'Y' )

stu_num[i] += 850;

}

int max_index = 0;

int max_num = 0;

for ( int i=0;i

{

if(stu_num[i]>stu_num[max_index])

max_index = i;

max_num += stu_num[i];

}

cout<

}

4.【实验结果】

5.【使用说明】

第一步是输入人数,第二步是输入你所要的数据,最后一步按换行键,得出结论。

6.【心得体会】

我最大的收获是对于结构体的理解和运用,比如创建,引用,赋值等等,还有区别。从以前的忘记到现在的熟悉。走过了一大段路。.和-> 的

实验二:统计数字

1. 【问题描述】

某次科研调查时得到了n 个自然数,每个数均不超过1500000000 ( 1.5* 109)。已知不相同

的数不超过10000 个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的

顺序输出统计结果。

2【设计需求及分析】

(1)设计要求

原始数据保存在文件count.in中,文件包含n+1 行。第 1 行是整数n(1<=n<=200000) ,表示自然数的个数;第2~n+1 行每行一个自然数。

结果保存在文件count的尾部,其中结果包含m 行( m 为 n 个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次

数,其间用一个空格隔开。

(2) 设计思路

首先必须有文件的打开和关闭语句,将文件的内容读取到数组a[] 中,然后对数组进行

排列和对比,计数。最终输出数据和次数。并写入文件的尾部。

A[] 为容纳数据的数组,fopen 为文件打开函数,fscanf为文件读取函数,然后进行冒

泡排序。排序之后的内容由while设置条件,用if进行判断。在不等于时,中间嵌套了一

个while 循环,进行往后的排查。最后输出数据和次数。

下面是关键步骤:

FILE* fp=fopen("count.txt","a+");//用只读/ 的方式打开文件

if(fp==NULL)

{

printf("无文件 ");//若没有文件则返回—1

return -1;

}

for(i=0;i<9;i++)

{

fscanf(fp,"%d",&a[i]);//读取文件

fscanf(fp,"\n");

}

int j,t;

for (i=1;i<9;i++)

for(j=0;j<9-i;j++)

if(a[j]>a[j+1])

{//冒泡排序

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

、for(i=0;i<9;i++)

{

count=1;

if(a[i]!=a[i+1])

{

printf("%d\t%d\n",a[i],count);

fprintf(fp,"%d\t%d\n",a[i],a[i]);

i++;

}对数字的循环查找和控制条件,if(a[i] == a[i + 1])

{

while(a[i] == a[i + 1])

{

count++;

i++;

}

}

}

(3)输出输入格式

输入时,为竖行依此输入文件,且为数字。且为

输出时,分为两行,第一列为数据,第二列为次数。

3.【设计功能的实现】

9 个以内的数字。

#include

int main()

{

int a[100];//

int i;

FILE* fp=fopen("count.txt","a+"); if(fp==NULL)

{//

创建容纳文件数据的数组

用只读 / 的方式打开文件

printf("无文件 ");//若没有文件则返回—1 return -1;

}

for(i=0;i<9;i++)

{

fscanf(fp,"%d",&a[i]);//读取文件

fscanf(fp,"\n");

}

int j,t;

for (i=1;i<9;i++)

for(j=0;j<9-i;j++)

if(a[j]>a[j+1])

{//冒泡排序t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

printf("结果为:\n数据结果 \n");

int count;

for(i=0;i<9;i++)

{

count=1;

if(a[i]!=a[i+1])

{

printf("%d\t%d\n",a[i],count);

fprintf(fp,"%d\t%d\n",a[i],a[i]);

i++;

}

if(a[i] == a[i + 1])

{

while(a[i] == a[i + 1])

{

count++;

i++;

}

printf("%d\t%d\n", a[i], count);

fprintf(fp,"%d\t%d\n", a[i], count);

}

}

fclose(fp);//关闭文件return 0;

}

4.【实例测试及运行结果】

测试分析内容包括:

(1)我认为我的短板在于对语句的不熟悉程度,在编程过程中,经常需要询问他人,或者查询书籍;

(2)我认为可以由文档输入与输出,减少了输入与输出的错误,增加了数据的准确性;

5.【使用说明】

有很大的限制,比如数字的个数,输入的格式,

必须为 9 个以内的数字,必须为竖列输入,必须写到count.txt的文件中。

6.【心得体会】

此次编程有问题没有解决,在客户输入值的个数上,必须少于等于9 个。因为文件中有很多东西,看不到但是总是赋值到数组中。只能有9 个数字了。

对于文件的打开和关闭语句有了更深的理解。有打开必须有关闭。在查重复次数的程序上,

有着两个循环的嵌套。由while控制总循环,由if进行选择。

实验三:文本文件单词的计数

1.【问题描述】

假设有如下的英文文本文档: (此处为太原理工大学学校简介英文版)

TAIYUAN UNIVERSITY OF TECHNOLOGY

Taiyuan University of Technology (TUT) has its history traced all the way back to the Western Learning School of Shanxi Grand Academy (1902), which was one of the three earliest national universities in China. With the tradition and development of over 100 years, TUT is now a general university with engineering as the major, sciences and technology integrated and coordinate development of multiple disciplines. It is a university that is included in the “ Project211”--- the national higher education promotion program for 100 top universities in China.

??

Recollecting the centennial history, generations of TUT have created its mission and glory of a century with responsibility and confidence; expecting the promising tomorrow, over 30,000 TUT students and faculty are producing splendor and perspectives by their wisdom and diligence. In the new era, Taiyuan University of Technology, following the Conception of Scientific Development, is determined to further the reformation on education, to reinforce the teaching management so as to upgrade its teaching and researching levels. Taiyuan University of Technology will be turning itself into a research-based university.

设计 C 或 C++ 程序,统计在这样的英文文本文件中,出现了多少个单词,每个单词出

现了几次。连续的英文字符都认为单词(不包括数字 ),单词之间用空格或标点符号分隔。

2【设计需求及分析】

(1)设计要求

要统计英文文本文件中出现了哪些单词,就要从文件中读取字符,读取出来的连续英

文字符认为是一个单词,遇空格或标点符号单词结束。

使用线性表记录单词以及每个单词出现的次数。线性表中的单词按字典顺序存储。

线性表的顺序存储结构如下:

#define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef struct{

char word[21]//

int count;//

} ElemType;

typedef struct{

ElemType *elem;//

int length;//

int listsize;////

//

线性表存储空间的初始分配量

线性表存储空间的分配增量

存储单词,不超过20 个字符

单词出现的次数

存储空间基址

当前长度

当前分配的存储容量

} Seqlist;

(2)设计思路

⑴顺序表的初始化:InitList(SqList &L)

⑵顺序表上查找指定的单词:LocateElem(SqList &L,char *s)

若找到,单词的出现次数增1,返回 0,否则返回该单词的插入位置。

⑶在顺序表上插入新的单词:InsertList(SqList &L,int i,char *s)

要求按字典顺序有序。新单词的出现次数为 1.

⑷输出顺序表上存储的单词统计信息:PrintList(SqList &L)

输出文件中每个单词出现的次数以及文件中总的单词数( 可输出到文件中) 。

( 5)程序实现的思路,定义了一个结构体名字为WAC ,其中成员有char 类型的str1的数组, int 类型的strC,WAC 的指针成员变量*next 和成员变量WordAndCnt ,然后是

dealtable 和 dealstr 函数,其中有着上一个函数的嵌套模式,和一个递归调用函数。以及一

些复制和比较函数。

关键程序块如下

#include

#include

#include

int readData(char filename[]);

void writeData(int n );

int main(void)

{

char name[40] = "e:\\abc2.txt";

int word_num;

word_num = readData(name);

writeData(word_num);

return 0;

}

int readData(char filename[]) // 此函数计算英文单词个数

{

FILE* fp;

char ch;

char flag = 0;

int num=0;

if((fp = fopen(filename,"r")) == NULL)

{

printf("%s open failure",filename);

exit(EXIT_FAILURE);

}

printf("%s open sucessfully!~\n",filename);

while(!feof(fp))

{

ch = fgetc(fp);

if((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9'))

flag = 0;

else if(flag == 0 && (ch != '-' && ch != '/'&& ch != '\''))

{

num++;

flag = 1;

}

}

fclose(fp);

return num;

}

void writeData(int n)// 此文件输出

{

FILE* fp;

if((fp = fopen("D:\\result.txt","a")) == NULL)

{

printf("File open failure!!!");

exit(EXIT_FAILURE);

}

fprintf(fp," 文件中的单词个数为%d\n",n);

printf(" 文件中的单词个数为%d\n",n);

printf(" 结果保存在D:\\result.txt 当中 \n");

fclose(fp);

}

【实例测试及运行结果】

7.【使用说明】

文本保存在哪里就把地址填成哪里

8.【心得体会】

此次编程有问题没有解决,不擅长于设置关于文件的语句的设置,只要表现为,对于语句中将文件的单词赋值给字符串。没有把统计单词次数的功能做出来。

实验四:构造可以使n 个城市连接的最小生成树1. 【问题描述】

给定一个地区的n 个城市间的距离网,用Prim算法或Kruskal算法建立最小生成树,并计算得到的最小生成树的代价。

2.【基本要求】

1、城市间的距离网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定

义,

若两个城市之间不存在道路,则将相应边的权值设为自己定义的无穷大值。

2、要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最

小生成树的代价。

3、表示城市间距离网的邻接矩阵(要求至少 6 个城市,10 条边)。

3. 【测试数据】

学生自主确定或参考下图。

图4-1一个带权图(网络)

#include

#include

#include

#define max 200

#define MAX_LNT 100

typedef struct node /* 构造一个结构体,两个城市可以看成起点和终点,之间的道路可

以看成一个边 */

{

int str; /* 起点 */

int end; /* 终点 */

int dis;/* 距离 */

}node;

node p[max],temp; /*p 记录城市信息*/

int pre[100],rank[100];/*用于判断是否构成回路*/

int n=0,arcs[MAX_LNT][MAX_LNT];/*n表示城市个数,

arcs[][] 记录城市间权值*/ int menu( )/* 菜单函数 */

{

int m;

printf("..........................2015年6月28日......................\n\n");

printf("求最小生成树\n");

printf("________________________________\n\n");

printf(" 1 输入城市之间的信息\n");

printf(" 2 判断是否能构成一个最小生成树\n");

printf(" 3 遍历所有城市生成最小生成树\n");

printf(" 4 退出 \n");

printf("________________________________\n\n");

printf("请输入所选功能1-4\n");

system("color 8E");/* 改变界面颜色的,对程序没什么影响*/

scanf("%d",&m);

return m;

}

/* 下面三个函数作用是检验当一条边添加进去,是否会产生回路*/

void set(int x)/* 初始化 */

{

pre[x] = x;

rank[x] = 0;

}

int find(int x)/*找到这个点的祖先*/

{if(x != pre[x]) pre[x] =

find(pre[x]);

return pre[x];

}

void Union(int x,int y)/*将这两个添加到一个集合里去*/

{

x = find(x);

y = find(y);

if(rank[x]>= rank[y])

{

pre[y] = x;

rank[x] ++;

}

else pre[y] = x;

}

void Kruskal()

{

*/

int ans = 0,i,j,k = 0;/*ans 用来记录生成最小树的权总值

int index;

int count = 0;/* 记录打印边的条数*/

for(i = 1;i <= n;i ++)/* 初始化数组pre[x],rank[x]*/

set(i);

for(i = 1;i <= n;i ++)

{

for(j = i + 1;j <= n;j ++)

{

p[++k].str = i;

p[k].end = j;

p[k].dis = arcs[i][j]; /*先把所有城市之间的路段看成一个边*/

}

}

for(i=1;i<=k;i++)/* 把所有的边按从小到大进行排序*/

{

index=i;

for(j=i+1;j<=k;j++)

if(p[j].dis

index=j;

temp=p[index];

p[index]=p[i];

p[i]=temp;

}

for(i = 1;i <= k;i ++)

{

if(find(p[i].str) != find(p[i].end))/*如果这两点连接在一起不构成一个回路,则执行下面操作*/

{

printf("\t第 %d条路段为:%d--%d, 权值为%d\n",++

count,p[i].str,p[i].end,p[i].dis);/*将这条边的起点、终点打印出来

*/

ans += p[i].dis; /* 说明这条路段要用*/

Union(p[i].str,p[i].end);

}

}

printf("\t遍历所有城市得到最小生成树的代价为: %d\n\n",ans);

}

void create()/* 输入城市信息*/

{

int i,j;

printf(" 请输入城市的个数:\n");

scanf("%d",&n);

printf(" 输入 %d 个城市的邻接矩阵:\n",n);

for(i = 1;i <= n;i ++)

{

for(j = 1;j <= n;j ++)

scanf("%d",&arcs[i][j]);

}

}

void display()/* 显示生成的最小生成树*/

{

if(n == 0)

{

printf(" 这里没有城市之间的信息\n");

return;

}

printf(" 遍历所有城市得到最小生成树为:\n\n\n");

Kruskal( );

}

void judge( )/* 判断是否能够生成最小生成树*/

{

int close[100],low[100],i,j,ans = 0;/*close[j]表示离j最近的顶点,low[j]表示离j最短的距离 */

int use[100];

use[1] = 1;

for(i = 2;i <= n;i ++)

{

low[i] = arcs[1][i]; /*初始化*/

close[i] = 1;

use[i] = 0;

}

for(i = 1;i < n;i ++)

{

int min = 100000000,k = 0;

for(j = 2;j <= n;j ++)

{

if(use[j] == 0 && min > low[j])/* 找到最小的 low[] 值,并记录 */ {

min = low[j];

k = j;

}

}

for(j = 2;j <= n;j ++)

{

if(use[j] == 0 && low[j] > arcs[k][j])

{

low[j] = arcs[k][j]; /*修改low[]值和close[]值*/

close[j] = k;

}

}

ans += arcs[close[k]][k];

}

if(ans >= 100000000)

printf(" 不能构成最小生成树\n");

else

printf(" 能构成最小生成树\n");

}

int main( )/* 主函数 */

{

while(1)

{

switch( menu() )

{

case 1:create( );

break;/* 输入城市信息 */

case 2:judge( );

break;/* 判断是否能够生成最小生成树*/ case 3:display( );

break;/* 显示生成的最小生成树*/

case 4:exit( 0 );

}

}

return 0;

}

9.【使用说明】

城市间距离两两之间没有的为无穷大,就把10000当成的无穷大

10.【心得体会】

选择循环结构用的比较多!

(1) 根据问题描述可以得到信息,要输入一个n 行 m列的数组,然后判断每行每列有没

有连续相邻 3 个或 3 个以上的相同元素,所以代码首先要定义输入一个数组,由于通常习惯m行 n 列的习惯,所以先把m和 n 交换达到问题要求的n 行 m列的要求,之后把新输入的数

组存储到指针 *map 和 *mark 中,出于安全性考虑定义mark 不直接在原始数组上,以防止出错。

(2) 输入完成后先对行进行判断,首先用if(tmap+2-map)%n!=0||(tmap+1-map)%n!=0,

来判断是否该行元素超出数组每行应有的元素,没有的话进行下一步判断,if (*(tmap) == *(tmap + 1) && * (tmap + 1) == *(tmap + 2))判断每行连续 3 个或 3 个以上指针中所存

储的值是否相等,若相等,dif = tmap - map;标记,*(tmark + dif) = 0;*(tmark + dif +

1) = 0;*(tmark + dif + 2) = 0;相邻元素置0.

(3) 之后进行列判断,首先用if (tmap + 2 * n - map < m * n || tmap + n - map <

m* n) 来判断是否该列元素超出数组应有的元素,没有的话进行下一步判断,if (*(tmap) == *(tmap + n) && * (tmap + n) == *(tmap + 2 * n)),是否一列中相邻 3 个或 3 个以上元素值相等,相等的话dif = tmap - map;标记,*(tmark + dif) = 0;*(tmark + dif + n) =

0;*(tmark + dif + 2 * n) = 0;置0.之后,tmap = map + (j + 1) + i * n;进行下一个元素的判断。

(4) 行令都判断完成后,tmap = map ,把指到最后一个元素的tmap 再重行指到首地址,进行输出操作,把刚才标记相等的元素置0,之后, cout << *(tmap + i * n + j) << " ";

输出。最后程序终止,return 0.程序完成。

软件工程实验报告

软件工程实验报告 姓名:冯巧 学号 实验题目:实验室设备管理系统 1、系统简介: 每天对实验室设备使用情况进行统计,对于已彻底损坏的作报废处理,同时详细记录有关信息。对于有严重问题(故障)的要即时修理,并记录修理日期、设备名、修理厂家、修理费用、责任人等。对于急需但又缺少的设备需以“申请表”的形式送交上级领导请求批准购买。新设备购入后立即对新设备登记(包括类别、设备名、型号、规格、单价、数量、购置日期、生产厂家、购买人等),同时更新申请表的内容。 2、技术要求及限定条件: 采用C#语言设计桌面应用程序,同时与数据库MySql进行交互。系统对硬件的要求低,不需要网络支持,在单机环境下也能运行,在局域网环境下也能使用。方案实施相对容易,成本低,工期短。 一:可行性分析 1、技术可行性分析 计算机硬件设备,数据库,实验室设备管理软件与实验室设备管理系统的操作人员组成,能够实现实验室设备管理的信息化,提高工作效率,实现现代化的实验室设备管理。系统需要满足实验室设备管理(包括对实验设备的报废、维修和新设备的购买)、实验室设备信息查询(包括按类别进行查询和按时间进行查询)、实验室设备信息统计报表(包括对已报废设备的统计、申请新设备购买的统计和现有设备的统计)。这些功能框图如下图所示: 2、经济可行性分析 依据用户的现实需求、技术现状、经济条件、工期以及其他局限性因素等等因素,考虑到工期的长短、技术的成熟可靠、操作方便等因素,本方案具备经济可行性。

3、系统可选择的开发方案 ①方案A用C#开发系统的特点是:开发工具与数据库集成一体,可视化,开发速度较快,但数据库能够管理的数据规模相对较小。系统对硬件的要求低,不需要网络支持,在单机环境下也能运行,在局域网环境下也能使用。方案的实施相对容易,成本低,工期短。 ②方案B:以小型数据库管理系统为后台数据库,该前台操作与数据库分离,也能够实现多层应用系统。系统对硬件的要求居中,特别适合在网络环境下使用,操作方便。但系统得实现最复杂,成本最高,工期也较长。 二:软件需求分析 1.软件系统需求基本描述: 实验室设备管理系统是现代企业资源管理中的一个重要内容,也是资源开发利用的基础性工作。实验室设备在信息化之前,在用户系统管理、设备维修管理、设备的增删改查管理等方面存在诸多不利于管理的地方,不适应现代的企业管理形势和资源的开发利用。 2.软件系统数据流图(由加工、数据流、文件、源点和终点四种元素组成): 1)顶层数据流图 2)二层流程图 3)总数据流图

太原理工大学计算机网络实验报告

本科实验报告 课程名称:计算机网络B 实验地点:行勉楼 专业班级:学号 学生姓名: 指导教师: 实验成绩: 2016年 6 月 14 日

实验3 VLAN基本配置 一、实验目的 掌握交换机上创建VLAN、分配静态VLAN成员的方法。 二、实验任务 1、配置两个VLAN:VLAN 2和VLAN 3并为其分配静态成员。 2、测试VLAN分配结果。 三、实验设备 Cisco交换机一台,工作站PC四台,直连网线四条,控制台电缆一条。 四、拓扑结构 五、实验结果 PC0到PC1 想通 PC0到PC2 不通,不在相同VLAN PC2到PC3 不通,网段不同。 Switch#sh run Building configuration... Current configuration : 1127 bytes ! version 12.1 no service timestamps log datetime msec no service timestamps debug datetime msec no service password-encryption ! hostname Switch ! ! spanning-tree mode pvst ! interface FastEthernet0/1

! interface FastEthernet0/2 switchport access vlan 2 ! interface FastEthernet0/3 switchport access vlan 2 ! interface FastEthernet0/4 switchport access vlan 2 ! interface FastEthernet0/5 switchport access vlan 3 ! interface FastEthernet0/6 switchport access vlan 3 ! interface FastEthernet0/7 switchport access vlan 3 ! 六、实验心得 输入容易出现错误。重复输入次数多。

软件工程导论期末考试试题和答案

1.软件生存周期一般可分为__问题定义__、可行性研究、_需求分析_____、设计编码、__ 测试________、运行与维护阶段。 2.按软件的功能进行划分,软件可以划分为系统软件、支撑软件 和应用软件。 3.可行性研究主要集中在以下四个方面经济可行性、技术可行 性、法律可行性和抉择。 4.用户界面的可使用性是用户界面设计最重要的也是最基本的目标。 5.常见的软件概要设计方法有3大类:以数据流图为基础构造模块结构的___结构化设计 方法_________,以数据结构为基础构造模块的__jackson方法__________,以对象、类、继承和通信为基础的__面向对象设计方法__________。 6.__数据流图________和__数据字典___共同构成系统的逻辑模型。 7.软件测试的方法有__分析方法________和___非分析方法_______(即黑盒法)。 8.单元测试一般以___白盒_____________测试为主,___黑盒______测试为辅。 9.成本估计方法主要有__自底向上估计________、_自顶向下估计_________和算法模型估 计三种类型。 1.下列哪个阶段不属于软件生存周期的三大阶段( C )。 A、计划阶段 B、开发阶段 C、编码阶段 D、维护阶段 2.需求分析是(A )。 3.A、软件开发工作的基础B、软件生存周期的开始 4.C、由系统分析员单独完成的D、由用户自己单独完成的 5.原型化方法是软件开发中一类常用的方法,它与结构化方法相比较,更需要(B )。 6.A、明确的需求定义B、完整的生命周期 7.C、较长的开发时间D、熟练的开发人员 8.软件维护时,对测试阶段未发现的错误进行测试、诊断、定位、纠错,直至修改的回归 测试过程称为( A )。 9.A、改正性维护B、适应性维护 10.C、完善性维护D、预防性维护 11.一般说来,投入运行的软件系统中有错误(A )。

软件工程实验报告最终版

合肥师范学院实验报告册 2012 / 2013 学年第一学期 系别计算机科学与技术系 实验课程软件工程 专业计算机科学与技术 班级2010级计算机应用 姓名马军福董国运李思贤 学号1010411024 1010411008 1010411076 指导教师范庆春

实验一:结构化方法建模的基本应用 1.实验目的 (1)了解Visio工具软件的功能特色、安装、工作环境和基本操作等基本知识; (2)掌握应用Visio工具的基本使用方法和基本绘图操作; (3)熟悉结构化分析建模的基本应用。 2.实验内容 (1)使用Visio 建立期刊管理系统的实体-关系图; (2)使用Visio 建立期刊管理系统的数据流图。 3. 实验要求 使用Visio 建立期刊管理系统的实体-关系图、数据流图。数据流图要绘 制三层。 4.实验结果和体会 (1)需求陈述 在图书管理系统中,管理员要为每个读者建立借阅账户,,账户内存储读者的个人信息和借阅记录信息。持有借阅卡的读者可以通过管理员借阅、归还期刊,读者可通过互联网或图书馆内查询终端查询期刊信息和个人借阅情况,以及续借期刊。 借阅期刊时,先输入读者的借阅卡号,系统验证借阅卡的有效性和读者是否可继续借阅图书,无效则提示其原因,有效则显示读者的基本信息。然后输入要借阅的书号,系统查阅图书信息数据库,显示图书的基本信息。最后提交借阅请求,若被系统接受则存储借阅纪录,并修改可借阅图书的数量。归还期刊时,输入读者借阅卡号和期刊号,系统显示读者和期刊的基本信息供管理员人工审核。如果有超期借阅或丢失情况,先转入过期罚款或期刊淘汰处理。然后提交还书请求,系统接受后删除借阅纪录,并登记修改可借阅期刊的数量。 期刊管理系统包括:1.读者信息管理a:借阅请求b归还请求c:查询请求d:修改自身信息2.期刊管理a:修改书目、出版日期、编辑b:增加书目数据、删除书目数据。3.期刊借阅a:增加所借读者信息b:删除所借读者信息4.期刊查询a:已借出图书列表b:未借出图书列表5.期刊的征订6.期刊内容登记题目、作者姓名、作者单位7.期刊内容查询

软件工程实验报告(总)

信息工程学院 软件工程实验报告 专业: 班级: 学号: 姓名: 指导老师:

实验一:软件开发的过程计划 实验课时:2课时 一、实验目的 项目计划的目的是为项目的研发和管理工作制定合理的行动纲领,以便所有相关人员按照计划有条不紊地开展工作。 ⑴估计项目的总体规模、工作量和成本。 ⑵制定项目计划,重点放在产品生命周期中的主要关键任务。 ⑶制定项目时间表和预算。 二、实验环境 1.硬件环境 P4以上的个人计算机环境,要求内存不少于512MB,硬盘不小于20G.。 2.软件环境 操作系统:Windows XP 数据库:Sql Server 2000以上或Access 2003以上 3.通用工具软件 通用绘图工具:MicroSoft V isio 2003以上 文本编辑工具:MicroSoft Word 2003以上 4.CASE工具 UML建模工具:Rational Rose 2000 三、实验要求、实验内容 1、实验要求: 在进行实验之前,必须掌握软件开发过程的一些基础知识,准备参考资料和阅读相关的过程模型的文档。 2、实验内容 熟悉RUP(Rational Unified Process)软件开发统一过程的思想,RUP(Rational Unified Process)是由Rational公司(现已是IBM公司的一部分)提出的过程模型,它软件工程史上最完整、最成熟、最优秀的过程模型之一。 学习软件开发的组织和管理,将项目开发各阶段的任务明确,掌握各阶段的里程碑,并熟悉相应的工具。

四、思考题 1、项目开发首先要做的事是什么? 答:进行需求分析和定义,了解客户或用户的需求,然后再进行后续。 2、你认为该软件应具备的最重要的特性是什么。 答:安全性、实用性、灵活性。 3、你认为怎样分工是最合理的? 答:该项目已经采取项目经理制,但是在具体开发过程中,情况也许会比预计的复杂,因此,在了解了各组员的工作风格的情况下,根据性格类型进行工作分配,比如:外向而且善于交流的,可以给他安排和客户交流沟通,让客户随时了解我们 的工作情况,并且反应客户的需求改变;为了让项目更好的组织和管理,可以采取 主程序员负责制;这样,在项目经理的带领下,内部安排主程序员和副程序员,工 作员有问题的话,内部自己解决,只要按时汇报工作就可以了。 五、实验内容: 项目背景 项目名称:银行计算机储蓄系统 随着社会经济的发展,XX银行的业务不断增长,传统的依靠手工的存取款业务办理方式已经不能满足不断增长的业务需求。其一,业务需求的增加需要消耗大量人力物力资源;其二,业务复杂化导致人工处理方式出错率增加,从而引起储户不满。一方面可以减轻银行业务员的工作量,另一方面可以减少工作的出错率,从而提高工作效率。现在计算机网络的告诉发现使越来越多的人更喜欢在网购物、在家存款取款。在这样的背景下,很明显现在的银行储蓄系统已经不能满足人们越益增长的需求,急切需要建立一个新的、高效的、方便的、互联的计算机储蓄系统。为解决此问题,拟为其开发计算机储蓄系统。 项目进度: 项目在项目经理的制度下,在整个开发过程中,树立“里程碑”,而且严格按照计划进行,各阶段任务必须完成,现把任务进度历程绘制如下:

2019最新软件工程导论期末考试题库及答案

2019最新软件工程导论期末考试题库及答案 1.填空题 1.一般来说,可以从__一致性__、_完整性___、_现实性____和_有效性___四个方面验证软件需求的正确性。 2.IPO图是_输入、处理和输出图_的简称,它是美国IBM 公司发展完善起来的一种图形工具。 3.系统流程图是描述__物理模型__的传统工具,用图形符 号表达了系统中各种元素之间的_____信息流动_____情况。4.数据流图中的箭头表示数据流,椭圆或圆形表示数据处理,矩形表示数据的源点/终点。5.软件测试的步骤按顺序分别是:___单元测试_____、子系统测试、系统测试(子系统和系统测试通常称为集 成测试)、__确认测试__和_____系统测试(集成测试)____ 6.软件生命周期一般可分为_问题定义_、可行性研究、_需求分析_、设计编码、_测试_、运行与维护阶段。 7.可行性研究主要集中在以下四个方面_经济可行性_、__技术可行性____、__法律可行性___和抉择。 8.在结构化设计中,HIPO图应用在总体设计阶段,由IPO图和_层次图_两部分组成。 9.复杂问题的对象模型通常由下述五个层次组成:主题层、___类与对象_层、__结构___层、_属性_层和__服务_层。 10.实施精化设计的目标是基于模块的“高内聚低耦合” 的原则,提高模块的_独立性。 11.软件生命周期一般可分为___问题定义_、可行性研究、__需求分析__、概要设计__、详细设计、编码、__软件测试_、运行与维护阶段。 12.面向对象的数据存储管理模式分为__文件__、_关系数据库__和__面向对象数据库___三种。 13.单元测试一般以_白盒_测试为主,__黑盒__测试为辅。

安徽工业大学软件工程实验报告

《软件工程》实验报告 姓名:江文杰 学号:139074333 班级:网133 指导老师:周兵

一.实验目的 1.能按照软件工程的思想,采用面向过程的方法开发出一个小型软件系统。 2.在软件系统开发过程中,能综合利用一门编程语言和软件工程等多门课程的知识。 3.培养良好的软件开发习惯,了解软件企业文化。 4.掌握结构化数据流分析技术。 5.掌握结构化程序设计的基本概念与技术,并且养成良好的编码风格。 6.掌握单元测试的一般步骤及技术。 7.掌握集成测试的一般步骤和技术。 二.实验内容 1.软件需求分析 ①、功能需求分析 ·输入一个年份(1-3000),然后显示12个月的月历 ·能解决闰年和平年问题 ·能输出显示结果 ②、运行需求分析 ·操作系统:Windows9x, Windows2000, Windows XP及更高版本 ③、数据流图

软件结构图: 2.软件设计与编码 #include #include #include #include #define firstdayof1 1 /* 定义第一年的第一天,星期日=7 */ #define gap " " /* set gap between numbers of dates */ #define dent " " /* set right margin. */ struct info { int month; int firstdayofmonth; int daysofmonth; int leap; }monthinfo;

太原理工大学web实验报告资料

本科实验报告 课程名称:Web开发实用技术基础 实验项目:HTML语言 网页程序设计Javascript Request与Response对象的应用 Application与Session对象的应用 实验地点:实验室211 专业班级:学号: 学生姓名: 指导教师: 2015年11月5日

学院名称学号实验成绩 学生姓名专业班级实验日期 课程名称Web开发实用技术基础实验题目HTML语言 一.实验目的和要求 1.掌握常用的HTML语言标记; 2.利用文本编辑器建立HTML文档,制作简单网页。 3.独立完成实验。 4.书写实验报告书。 二.实验内容 1.在文本编辑器“记事本”中输入如下的HTML代码程序,以文件名sy1.html保存,并在浏览器中运行。(请仔细阅读下列程序语句,理解每条语句的作用) 源程序清单如下: Example

welcome to you


A simple HTML document

Welcome to the world of HTML This is a simple HTML document.It is to give you an outline of how to write HTML file and how the markup tags work in the HTML file Following is three chapters
Following is items of the chapter two

软件工程导论期末考试题

一、单项选择题 1.适合于面向对象方法学的软件生存周期模型是( B ) A.瀑布模型 B.喷泉模型 C.螺旋模型 D.增量模型 2.从实用角度看,数据规范化程度在大多数场合选用第( C )范式。 A. 1 B.2 C.3 D.5 3. 可行性分析研究的目的是( A )。 A.项目值得开发否 B.争取项目 C.开发项目 D.规划项目 4. 模块的内聚性最高的是 ( D ) A.逻辑内聚 B.时间内聚 C.偶然内聚 D.功能内聚 5.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做 ( B ) A. 软件工程 B. 软件危机 C. 软件周期 D. 软件产生 6. 需求分析阶段的任务是确定( D ) A.软件开发方法 B.软件开发工具 C.软件开发费 D.软件系统的功能 7. 完整的软件结构通常用( B )图来表示。 A. IPO 图 B. HIPO 图 C.PAD 图 D.DFD 图 8. 在白盒法技术测试用例的设计中( A )是最弱的覆盖标准。 A.语句 B.路径 C.条件组合 D.判定 9?对象实现了数据和操作的结合,使数据和操作( C )于对象的统一体中。 A.结合 B.隐藏 C.封装 D.抽象 10. 在数据流图中,圆代表( C )。 A.源点 B.终点 C.加工 D.模块 11. 模块内聚度越高,说明模块内各成分彼此结合的程度越( B )。 A.松散 B.紧密 C.无法判断 D.相等 12. 软件测试方法中,黑盒、白盒测试法是常用的方法,其中黑盒测试主要用于测试( B )。 A.结构合理性 B.软件外部功能 C.程序正确性 D.程序内部逻辑 13. 面向对象开发方法中, ( C )是占主导地位的标准建模语言。 A.Booch 方法 B.Coad 方法 C.UML 语言 D.OMT 方法 14. 软件需求分析的主要任务是准确地定义出要开发的软件系统是( C ) A.如何做 B.怎么做 C.做什么 D.对谁做 15. 结构化程序设计的一种基本方法是( C ) A.筛选法 B.迭代法 C.逐步求精法 D.递归法 二、填空题 1. 目前使用最广泛的软件工 程学方法分别是传统方法学和(面向对象方法学 ) )和事务流。 文档 ) 。 ( 重复 )三种结构。 自顶向下 的集成测试方法,对软件结构中下层使 6. 软件维护包括 ( 改正性维护 )、适应性维护、完善性维护、预防性维护。 7. 面向对象方法学建模得到的三个基本子模型是 (对象建模 ) .动态模型、功能模型。 8. 复杂大型问题的对象模型通常由主题 2. 数据流图中信息流的类型有(变换流 3. 软件的定义是:软件 =程序+数据+ 4. 经典结构程序设计包括顺序、选择和 5. 集成测试时对软件结构中上层使用 用 ( 自底向上 ) 的集成测试方法。

软件工程实验报告

1.1 实验一结构化需求分析 一.实验类型 图书馆管理系统 假定校图书馆需要你设计一个图书馆管理系统,要求包括以下功能: ●图书管理员可以管理馆藏图书,包括每本图书的藏书编号、书名、编著者、 ISBN号、出版社、出版时间、入馆时间、馆藏数量(如果馆藏数量为1,则标明为孤本图书)、在馆数量、学科类别等(或其它你认为有用的信息); ●管理员可以查询、统计所有图书、每一类图书或每一本书的借阅记录; ●图书管理员可以管理所有读者的信息,包括读者类型(学生、教师、社会人 士)、姓名、图书证编号、办证时间、证件状态(正常、挂失、冻结)等信息; ●图书管理员可以查询和统计所有读者、每一类读者或每一个读者的借阅记录; ●读者可以通过本系统查询馆藏图书; ●读者可以通过本系统借阅读书。但对于孤本图书或在馆数量为1的图书则不 准外借; ●管理员可以对超期未归还图书的读者发送电子邮件进行提醒,对于超期一年 不归还图书的读者冻结其图书证; ●读者可以通地本系统归还图书。如果图书超期,则自动计算罚款金额。二.实验目的 1.掌握数据流的分析技术 2.掌握软件需求分析的过程和方法。 3.熟悉项目开发计划和需求规格说明书的制定方法。 三.实验内容和要求 1.用结构化数据流分析技术进行软件系统需求分析,得出系统的数据流图和数据字典。 2.正确运用图表工具进行表示。 3.按规范正确编写软件文档。

四.实验步骤 1.理解所承担项目的业务流程和业务内容。 本软件项目是面向中小型学校、单位机构对于图书管理的基于服务的一款便捷式软件。能满足一系列常用图书管理的功能模块,提供简介、准确的操作性,可以很大程度减少人为因素带来的数据错误,统计错误,系统逻辑错误。并且规模小,很容易进行推广。 ●本项目的参与对象有图书管理员及读者。 ●对于读者,能通过该软件浏览馆藏的所有图书。读者在图书馆找到自己喜欢 的书后,能自行通过该软件操作完成借阅操作。若读者是第一次借书,必须通过图书管理员进行添加读者记录,登记读者信息。读者在登陆后方能完成借阅操作,对于孤本图书(即图书馆中馆藏只有一本的图书)则拒绝进行借阅操作。在规定期限内,读者可以通过该软件完成还书操作,对于超期的图书,应将扣除一定罚款金额,对于超期一年不归还图书的读者冻结其图书证。 并且读者能修改个人信息。 ●对于图书管理员,能管理自己和比自己低一级管理权限的管理员。一级管理 员能完成维护管理员的基本信息和二级管理员的一切操作。二级管理员则能维护自己的信息和添加读者、添加图书的功能。管理员可以对超期未归还图书的读者发送电子邮件进行提醒,对于超期一年不归还图书的读者冻结其图书证; 2.按照系统的功能及性能要求,系统的作业范围等,确定软件系统的开发环境(操作系统、开发工具、程序设计语言等)。 根据软件编程经验,本系统将采用面向对象的设计方法,使用Eclipse开发工具,java窗体应用程序,操作系统使用Win8。 3.绘制数据流图、功能分析图等。

软件工程实验报告(总)

信息工程学院软件工程实验报告 专业: 班级: 学号: 姓名: 指导老师:

实验一:软件开发的过程计划 实验课时:2课时 一、实验目的 项目计划的目的是为项目的研发和管理工作制定合理的行动纲领,以便所有相关人员按照计划有条不紊地开展工作。 ⑴估计项目的总体规模、工作量和成本。 ⑵制定项目计划,重点放在产品生命周期中的主要关键任务。 ⑶制定项目时间表和预算。 二、实验环境 1.硬件环境 P4以上的个人计算机环境,要求内存不少于512MB,硬盘不小于20G.。 2.软件环境 操作系统:Windows XP 数据库:Sql Server 2000以上或Access 2003以上 3.通用工具软件 通用绘图工具:MicroSoft Visio 2003以上 文本编辑工具:MicroSoft Word 2003以上 4.CASE工具 UML建模工具:Rational Rose 2000 三、实验要求、实验内容 1、实验要求: 在进行实验之前,必须掌握软件开发过程的一些基础知识,准备参考资料和阅读相关的过程模型的文档。 2、实验内容 熟悉RUP(Rational Unified Process)软件开发统一过程的思想,RUP(Rational Unified Process)是由Rational公司(现已是IBM公司的一部分)提出的过程模型,它软件工程史上最完整、最成熟、最优秀的过程模型之一。 学习软件开发的组织和管理,将项目开发各阶段的任务明确,掌握各阶段的里程碑,并熟悉相应的工具。

四、思考题 1、项目开发首先要做的事是什么? 答:进行需求分析和定义,了解客户或用户的需求,然后再进行后续。 2、你认为该软件应具备的最重要的特性是什么。 答:安全性、实用性、灵活性。 3、你认为怎样分工是最合理的? 答:该项目已经采取项目经理制,但是在具体开发过程中,情况也许会比预计的复杂,因此,在了解了各组员的工作风格的情况下,根据性格类型进行工作分配,比如:外向而且善于交流的,可以给他安排和客户交流沟通,让客户随时了解我们 的工作情况,并且反应客户的需求改变;为了让项目更好的组织和管理,可以采取 主程序员负责制;这样,在项目经理的带领下,内部安排主程序员和副程序员,工 作员有问题的话,内部自己解决,只要按时汇报工作就可以了。 五、实验内容: 项目背景 项目名称:银行计算机储蓄系统 随着社会经济的发展,XX银行的业务不断增长,传统的依靠手工的存取款业务办理方式已经不能满足不断增长的业务需求。其一,业务需求的增加需要消耗大量人力物力资源;其二,业务复杂化导致人工处理方式出错率增加,从而引起储户不满。一方面可以减轻银行业务员的工作量,另一方面可以减少工作的出错率,从而提高工作效率。现在计算机网络的告诉发现使越来越多的人更喜欢在网购物、在家存款取款。在这样的背景下,很明显现在的银行储蓄系统已经不能满足人们越益增长的需求,急切需要建立一个新的、高效的、方便的、互联的计算机储蓄系统。为解决此问题,拟为其开发计算机储蓄系统。 项目进度: 项目在项目经理的制度下,在整个开发过程中,树立“里程碑”,而且严格按照计划进行,各阶段任务必须完成,现把任务进度历程绘制如下:

2014太原理工大学C++实验报告

本科实验报告 课程名称:C++面向对象程序设计 实验项目:C++语言编程 实验地点:明向校区 专业班级:软件1431 学号:201400XXXX 学生姓名:白建兴 指导教师:崔晓红 2015年5月10日

1.运行例题程序: #include using namespace std; void fn1(int z=5); int x=1,y=2; int main() { cout<<"Begin. . ."<>p[i]; if(p[i]>0) plus++; else if(p[i]!=0) minus++; } cout<<"正数的个数:"<

软件工程导论》期末考试试题与答案

《软件工程导论》期末考试-试题与答案 一、填空题 1.软件工程中的结构化分析 SA 是一种面向________的分析方法。 2.软件模块独立性的两个定性度量标准是_________________。 3.软件开发是一个自顶向下逐步细化和求精的过程,而软件测试是一个________的过程。 4. ________和数据字典共同构成了系统的逻辑模型 5. ___________是一种黑盒测试技术,这种技术把程序的输入域划分为若干个数据类,据此导出测试用例。二、单选 题 1.在软件危机中表现出来的软件质量差的问题,其原因是_______。A.软件 研发人员素质太差B.用户经常干预软件系统的研发工作C.没有软件质量标 准 D.软件开发人员不遵守软件质量标准2.在软件质量因素中,软件在异常条件下仍能运 行的能力成为软件的_____。A.安全性B.健壮性C.可用性D.可靠性 3.在下列测试技术中,______不属于黑盒测试技术。A.等价 划分B.边界值分析C.错误推测D.逻辑覆盖 4.软件工程方法是在实践中不断发展着的方法,而早期的软件工程方法主要是指______。A.原型化方法B.结构化方法C.功能化方法D.面向对象方法 5. ______是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是 隐蔽的,外界只能通过有限的接口与对象发生联系。A.多态 B.继承C.封装D.消息 6. Jackson 方法是在软件开发过程中常用的方法,使用 Jackson 方法时可以实现______。A.从数据结构导出程序结构B.从数据流图导出初始结构图C.从模块结构导出数据结构D.从模块结构导出程序结构 7.软件测试时为了________而执行程序的过程。A.纠正 错误B.发现错误 C.避免错误 D.证明错误 8.在软件系统中,一个模块应具有什么样的功能,这是由_____决定的。A.总体 设计B.需求分析C.详细设计D.程序设计 9.面向对象分析是对系统进行_________的一种方法。A.需求 分析B.程序设计C.设计评审D.测试验收 10.软件文档是软件工程实施中的重要部分,它不仅是软件开发各阶段的重要依据,而 且影响软件的_______。A.可理解 性B.可维护性C.可扩展性D.可 移植

软件工程 实验报告

院系:计算机科学学院专业:计算机科学与技术年级: 2013级 课程名称:软件工程 组员:司少武(1135) 兰少雄(1136) 张宇(1133) 纳洪泽(1132) 指导教师:刘卫平 2015年 12月 26 日

聊天室 1 前言 即时消息系统的研究现状 即时消息系统[1](Instant Messenger,IM)是一种在后 PC 时代兴起的,以Internet 网络为基础的,允许交互双方即时地传送文字、语音、视频等信息,能够跟踪网络用户在线状态的网络应用软件。即时消息系统产生有着深刻的社会原因:人们都有渴望社交,获得社会尊重、实现自我的需求,这正是即时消息软件风行的原动力,而物质文明的日益发达所带来副作用,又使得人们习惯与周围的人保持距离,以致人们更愿意对陌生人敞开心扉,在网络中可以跨越年龄、身份、行业、地域的限制,达到人与人、人与信息之间的零距离交流。从这点上讲,即时消息系统的出现改变了人们的沟通方式和交友文化,大大拓展了个人生活交流的空间。 本工程的主要内容 随着互联网逐步普及,人们的生活和工作也越来越离不开信息网络的支持,而聊天室是人们最常见,最直接的网上交流的方式。本聊天系统以聊天交流为主,为广大用户提供一个借助网络进行人际交往的平台,也是网络与现实最贴近的实用型网站。本文所介绍的网络聊天系统是基于开放的JAVA应用程序开发设计的,其主要特性是能动态、实时的完成信息的传递,且具有高效的交互性,更有效的处理客户请求,且具有脱离数据库技术方法,易于维护和更新的特点。 2 需求分析 本系统所要实现的主要功能是当用户聊天时,将当前用户名、聊天对象、聊天内容、聊天语气和是否私聊进行封装,然后与服务器建立Socket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,并将本次用户的聊天信息对象添加到聊天对象集Message中,以供所有聊天用户访问。 接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务器上是否有最新消息,在本程序中设定的是3秒刷新服务器一次,如果间隔时间太短将会增加客户端与服务器端的通信负担,而间隔时间长就会让人感觉没有时效性,所以经过权衡后认为3秒最佳,因为每个用户都不可能在3秒内连续发送信息。 当每次用户接收到聊天信息后将会开始分析聊天信息然后将适合自己的信息人性化地显示在聊天信息界面上。

软件工程实验报告

软件工程实验报告 Prepared on 22 November 2020

实验报告实验名称实验一:可行性分析试验报告评分 实验日期 2008 年 4 月 1 5 日指导教师张铁楠 姓名董晓光专业班级信息与计算科学0501 学号 21 一、实验名称 可行性分析试验报告 二、实验目的 根据软件工程国家文档规范和课题,撰写可行性分析报告文档。达到熟悉可行性分析方法和可行性文档规约的目的。 三、实验环境 1、硬件环境:显示器一台(分辨率为800*600),硬盘为80G,内存为512M,CPU为Pentium 2.66G。 2、软件环境:WORD2000。 四、试验步骤与内容 1. 引言 编写目的:本学生课程管理系统模块是为了实现各大高校对学生选课而设计的,通过试用本系统,可以更加有效的管理学生选课信息,其中包括课程基本信 息,课程信息并且具有查询课程信息,查询教师信息,选课、退选等功 能 项目背景:本系统属于高校学生信息管理系统中的学生选课管理模块,由管理系统总体设计人员提出,由本组成员联合开发,实现的是管理系统中关于学生 选课管理的子功能。 参考资料:参见《软件工程》、《管理信息系统》两书。 2.可行性研究的前提 要求:(1)功能:本系统主要针对各大高校选课这一块,学生通过登录,可以查 看各周课程基本信息、查看教师基本信息,并且通过必修和选 修分开,如果一天哪几节有必修课,而其它时间你可以进行选

修课选择,可以通过选课,学生选择自己需要的课程,并可以 退选,最后学生还可以打印课程表。 (2)性能:查询效率尽可能做到精准,信息维护功能做到简单易 用,不需过多对人员的培训。 (3)输入:对于查询功能,应做到可以单条件和组合条件输入;对 于维护功能,要有输入、修改学生信息和课程。 (4)输出:能按要求在显示器上显示所需内容并能打印成有条理的 表格。 (5)安全与保密:对于不同权限用户,设置不同权限,对重要数据 可以考虑加密存储。考虑到数据保存,条件允许的情况下 可以让系统定时自动保存,省去手工保存的繁杂程序。 (6)本模块由系统主界面调入,实现学生选课管理子功能。 (7)完成期限:1个月 (8)基本处理流程:(见最后一页) 条件、假定和限制: 开发时间:4月。 经费来源:个人筹集 最迟完成时间:2008年6月1日 决定可行性的主要因素: 资金到位 开发人员无较大变动 3.对现有系统的分析 现有系统为完全人工记录,设备落后,工作重复量大、枯燥,错误率高,查询复杂、花费时间长。 4.所建议技术可行性分析 本系统将大大改善数据处理速度,并且更加方便的对数据进行管理,同时可以减少人力资源的浪费以及工资支出。 采用建议系统可能带来的影响 只需添置低档计算机,如果条件允许可添加打印机以便查询能方便打印成 资料作为参考。 4.2.2对现有软件的影响

太原理工大学数值计算方法实验报告

本科实验报告 课程名称:计算机数值方法 实验项目:方程求根、线性方程组的直接解法、线性方程组的迭代解法、代数插值和最小二乘拟合多项式 实验地点:行勉楼 专业班级:******** 学号:********* 学生:******** 指导教师:誌,冬华 2016年4 月8 日

y = x*x*x + 4 * x*x - 10; return y; } float Calculate(float a,float b) { c = (a + b) / 2; n++; if (GetY(c) == 0 || ((b - a) / 2) < 0.000005) { cout << c <<"为方程的解"<< endl; return 0; } if (GetY(a)*GetY(c) < 0) { return Calculate(a,c); } if (GetY(c)*GetY(b)< 0) { return Calculate(c,b); } } }; int main() { cout << "方程组为:f(x)=x^3+4x^2-10=0" << endl; float a, b; Text text; text.Getab(); a = text.a; b = text.b; text.Calculate(a, b); return 0; } 2.割线法: // 方程求根(割线法).cpp : 定义控制台应用程序的入口点。// #include "stdafx.h" #include"iostream"

心得体会 使用不同的方法,可以不同程度的求得方程的解,通过二分法计算的程序实现更加了解二分法的特点,二分法过程简单,程序容易实现,但该方法收敛比较慢一般用于求根的初始近似值,不同的方法速度不同。面对一个复杂的问题,要学会简化处理步骤,分步骤一点一点的循序处理,只有这样,才能高效的解决一个复杂问题。

软件工程导论期末试题

软件工程导论期末考试试题 一.选择(20分) 1、瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( C)。 A、详细计划 B、可行性分析 C、运行阶段 D、测试与排错 2、从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节出错,对软件的影响最大(C )。 A、详细设计阶段 B、概要设计阶段 C、需求分析阶段 D、测试和运行阶段 3、在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试中的系统测试阶段的目标(A )。 A、需求分析阶段 B、详细设计阶段 C、概要设计阶段 D、可行性研究阶段 4、软件工程的出现主要是由于(C )。 A.程序设计方法学的影响 B.其它工程科学的影响 C. 软件危机的出现 D.计算机的发展 5、软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是(C ) A、硬件环境 B、软件开发的环境 C、软件开发工具和软件开发的环境 D、开发人员的素质 6、软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为 ( B) A、相互排斥 B、相互补充 C、独立使用 D、交替使用 7、UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法(C ) A、基于瀑布模型的结构化方法 B、基于需求动态定义的原型化方法 C、基于对象的面向对象的方法 D、基于数据的数据流开发方法

8、在下面的软件开发方法中,哪一个对软件设计和开发人员的开发要求最高(B ) A、结构化方法 B、原型化方法 C、面向对象的方法 D、控制流方法 9、结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的(B ) A、控制流 B、数据流 C、程序流 D、指令流 10、软件开发的结构化生命周期方法将软件生命周期划分成(A ) A、计划阶段、开发阶段、运行阶段 B、计划阶段、编程阶段、测试阶段 C、总体设计、详细设计、编程调试 D、需求分析、功能定义、系统设计 二.填空(20分) 21.系统流程图是描述物理模型的传统工具,用图形符号表示系统中各个元素 表达了系统中各种元素之间的(信息流动)情况。 22.成本效益分析的目的是从(经济)角度评价开发一个项目是否可行。 23.自顶向下结合的渐增式测试法,在组合模块时有两种组合策略:深度优先 策略和(宽度优先策略) 。 24.独立路径是指包括一组以前没有处理的语句或条件的一条路径。从程序图 来看,一条独立路径是至少包含有一条(在其他独立路径中未有过)的边的路径。 25.汇编语言是面向(机器) 的,可以完成高级语言无法完成的特殊功能,如与外部设备之间的一些接口工作。 26.在JSP方法中解决结构冲突的具体办法是(中间数据结构或中间文件)。 27.详细设计的任务是确定每个模块的内部特性,即模块的算法、(使用的数据)。 28.所有软件维护申请报告要按规定方式提出,该报告也称( 软件问题)报告。 29.有两类维护技术:在开发阶段使用来减少错误、提高软件可维护性的面向 维护的技术;在维护阶段用来提高维护的效率和质量的(维护支援)技术。 30.科学工程计算需要大量的标准库函数,以便处理复杂的数值计算,可供选 择的语言有:(FORTRAN语言)、PASCAL语言、C语言和PL/1语言。三.判断(10分)

软件工程课程实验报告

网上招聘求职系统 一、系统分析概述 1、社会应用 当下社会,互联网生活已经逐渐成为人们不可或缺的生活方式,计算机应用也已经渗透到日常工作的许多方面。无论是其自身还是所发挥的作用,计算机都标志着一种高科技、高效率和高水平。在短短的几十年里,网络互连的崛起是之前人们所不能想象的。其中,通过网络来招聘、管理、求职、推销自己也是日渐盛行。网络招聘求职的快速发展,与网络招聘求职平台的建设和发展有着紧密的联系。 2、系统特点 如今社会主流同城网上招聘系统是具有交互功能的人才信息管理系统,它可以实现交互、人才管理、人才交流等功能。其开发主要包括后台数据库的建立和维护以及前台程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库;而后者则要求应用程序功能完备,易于使用。 二、需求分析 1、功能需求 实现网上招聘信息化管理,前台管理系统包括用户注册,企业和个人可以通过注册成为会员;招聘信息、求职信息、在线留言;站内新闻、浏览网站消息;后台管理系统包括求职招聘、新闻资讯、企业会员、系统管理员、个人会员,系统管理员可以通过登录后管理网站内的信息等。 会员登陆后,作为求职者,可以浏览各大企业发布的信息,创建自己的简历,创建和修改个人信息,发送求职信等。作为企业,主要功能有发布招聘信息,查看求职申请,发送面试通知等。作为系统管理员,是整个网站的管理者,具有最高的权限,可以对网站各个模块进行管理。 企业会员用例图

设置人才库个人会员用例图 发布求职信息系统管理员用例图

管理系统用户 系统管理员模块时序图如下: : 管理者

: 管理者 : 管理者

相关文档
最新文档
item content