软件工程实习报告Word文件下载.docx
《软件工程实习报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《软件工程实习报告Word文件下载.docx(19页珍藏版)》请在冰点文库上搜索。
![软件工程实习报告Word文件下载.docx](https://file1.bingdoc.com/fileroot1/2023-4/30/6904c459-7796-4f68-9f6f-1d0ffb7bc141/6904c459-7796-4f68-9f6f-1d0ffb7bc1411.gif)
其成员函数有:
LIB();
//LIB构造函数
voidadd(intn,Stringna,Stringa,Stringpu,floatpr);
//添加图书
voidadd(BOOKb);
voiddel_num(intn);
//按图书编号进行删除
voiddel_nam(Stringn);
//按图书名字进行删除
voidfind_num(intn)const;
//按图书编号进行查找
voidfind_nam(Stringn)const;
//按图书名字进行查找
voidfind_act(Stringn)const;
//按图书作者进行查找
voidfind_pub(Stringn)const;
//按图书出版社进行查找
voidfind_act_pub(Stringn,Stringn1)const;
//按图书作者和出版社进行组合查找
voidfind_pub_nam(Stringn,Stringn1)const;
//按图书出版社和书名进行组合查找
voidfind_act_nam(Stringn,Stringn1)const;
//按图书作者和书名进行组合查找
voidfind_pub_act_nam(Stringn,Stringn1,Stringn2)const;
//按图书作者、书名和出版社进行组合查找
voidfind_act_m(Stringn)const;
//按图书作者进行模糊查找
voidfind_nam_m(Stringn)const;
//图书名字进行模糊查找
voidfind_pub_m(Stringn)const;
//按图书出版社进行模糊查找
intsize();
//获取图书数目
voidoutput();
//显示所有图书
主函数
主函数主要是把图书管理功能有机结合起来,起到方便使用的作用。
其流程图如下:
4、详细设计
图书数据结构定义
structBOOK
{
intnum;
BOOK();
};
图书管理类的定义
classLIB
private:
List<
intall;
public:
LIB()
{初始化all}
voidadd(intn,Stringna,Stringa,Stringpu,floatpr)
{判断图书编号是否已存在
若存在,则添加失败
否则,添加成功
将图书信息保存到文本文件}
voidadd(BOOKb)
{和上述类似的算法};
voiddel_num(intn)
{判断图书是否存在
若存在,将其删除
否则,删除失败
voiddel_nam(Stringn)
{同上}
voidfind_num(intn)const
{循环检测是否存在该图书编号的图书
若存在,将其图书信息输出
否则,查找失败}
voidfind_nam(Stringn)const
{同上,只是将编号换成书名}
voidfind_act(Stringn)const
{同上,只是将编号换成作者}
voidfind_pub(Stringn)const
{同上,只是将编号换成出版社}
voidfind_act_pub(Stringn,Stringn1)const
{同上,只是将编号换成作者和出版社的组合}
voidfind_pub_nam(Stringn,Stringn1)const
{同上,只是将编号换成出版社和书名}
voidfind_act_nam(Stringn,Stringn1)const
{同上,只是将编号换成作者和书名的组合}
voidfind_act_nam_pub(Stringn,Stringn1,Stringn2)const
{同上,只是将编号换成作者、书名和出版社的组合}
voidfind_act_m(Stringn)const
{循环检测是否存在该图书作者子串的图书
{同上,只是将图书换成书名}
voidfind_pub_m(Stringn)const
{同上,只是将图书换成出版社}
intsize()
{返回图书管理系统的图书数目}
voidoutput()
{输出所有图书}
voidoutput_file()
{将图书保存到文本文件}
5、调试分析
本图书管理系统的函数比较多,我在每完成一个函数时,就用驱动函数来执行一下。
这样子做有助于及时发现问题并更正。
6、使用说明
运行程序,在显示主菜单之前,程序已经把文本文件的一些图书信息读入内存了(为了方便测试)。
之后显示菜单:
1:
插入图书记录
2:
删除图书记录
3:
查找图书记录
4:
显示图书记录
0:
退出系统
请选择:
输入1,则进入添加图书的分支。
即程序会收集图书信息,然后插入到系统。
输入2,进入删除图书的分支。
程序会提示:
按编号删除
按书名删除
输入1,将会提示要输入编号;
输入2,将会提示要输入书名。
输入3,进入查找图书分支。
精确查找
模糊查找
组合查找
输入1,进入精确查找,程序提示:
按作者查找
按出版社查找
按书名查找
按图书编号查找
输入1,程序会提示要输入图书作者,回车,输出查找结果
输入2,程序会提示要输入图书出版社,回车,输出查找结果
输入3,程序会提示要输入图书名字,回车,输出查找结果
输入4,程序会提示要输入图书编号,回车,输出查找结果
输入2,进入模糊查找,程序提示:
输入1,程序会提示要输入图书作者,回车,输出模糊查找结果
输入2,程序会提示要输入图书出版社,回车,输出模糊查找结果
输入3,程序会提示要输入图书名字,回车,输出模糊查找结果
输入3,进入组合查找,程序提示:
按作者和出版社查找
按出版社和书名查找
按作者和书名查找
按作者、书名和出版社查找
输入1,程序会提示要输入作者和出版社,回车,输出组合查找结果
输入2,程序会提示要输入出版社和书名,回车,输出组合查找结果
输入3,程序会提示要输入作者和书名,回车,输出组合查找结果
输入4,程序会提示要输入作者、书名和出版社,回车,输出组合查找结果
输入4,程序会把所有图书信息显示到屏幕
在以上的每一个菜单选择中,如果输入的是非法命令,程序会停留在该菜单界面,直到用户输入的命令是合法的。
以上没执行完一个操作,程序会跳回到主菜单,让用户选择。
7、测试结果
程序开始时,已经从文本文件读入以下信息:
111111shujujiegoulimingdianzigongyechubanshe32.6
111112suanfashejihudongrenminchubanshe23.5
111113lisanshuxuechenhongyoudiandaxuechubanshe25.0
111114ruanjianshixibinyuandongfangjiaoyuchubanshe12.3
111115美国文化戴特斯曼(美)世界图书出版公司48.0
111116高等数学(上册)吴赣昌中国人民大学出版社39.0
111117高等数学(下册)吴赣昌中国人民大学出版社33.0
111118C语言设计教程谭浩强清华大学出版社25.0
111119数字电子技术教程余孟尝高等教育出版社41.7
111120C++面向对象程序设计姚全珠电子工业出版社29.0
1)插入图书记录
输入:
111666程序设计谭老电子工业出版社30.2
输出:
插入成功!
111111程序设计谭老电子工业出版社30.2
111111已经存在!
2)删除图书记录
111111
删除成功。
111111
111111不存在!
美国文化
美国文化不存在!
3)查找图书记录
精确查找:
吴赣昌
李勇
李勇的记录不存在!
高等教育出版社
C语言设计教程
111118
模糊查找:
吴
出版社
111116高等数学(上册)吴赣昌中国人民大学出版社39.0
111120C++面向对象程序设计姚全珠电子工业出版社29.0
111666程序设计谭老电子工业出版社30.2
教程
数子
数子的记录不存在!
组合查找:
谭老程序设计
老谭程序设计
老谭和程序设计的记录不存在!
谭老电子工业出版社
高等教育出版社数据电子技术教程
吴赣昌高等数学(上)中国人民大学出版社
吴赣昌高等数学(上)高等教育出版社
吴赣昌和高等数学和(上)高等教育出版社的记录不存在!
4)显示图书信息
选择显示图书记录命令
4
111114ruanjianshixibinyuandongfangjiaoyuchubanshe2.3
5)退出系统
退出系统
实验二
假设表达式中允许有两种括号:
圆括号和方括号,其嵌套的顺序随意,即(()[])或
[([][])]等为正确格式,[()]或((()均为不正确的格式。
用户输入一个括号串,程序输出该括号串是否匹配正确。
本程序要用到自编的数据结构字符串和单链表
所以要包含头文件:
#include”String.h”
除了主函数之外,还有一个函数boolmatch(charc1,charc2),其作用是判断c1和c2是否为相互匹配的括号对。
本程序所用的变量:
Strings;
//存储用户输入的括号串
Stack<
char>
st;
//存储待匹配的括号
以下是本主程序的流程图:
4、详细设计
函数定义
boolmatch(charc1,charc2)
{如果c1为‘(‘并且c2为’),返回真
如果c1为‘[‘并且c2为’],返回真
如果c1为‘{‘并且c2为’},返回真
如果c1为‘<
‘并且c2为’>
,返回真
返回假}
intmain()
{定义变量s和st
输入括号串
求括号串长度len
i=0;
如果i<
len,进行循环
如果栈为空,s[i]入栈
否则,s[i]与栈顶元素匹配
若匹配,删除栈顶元素
否则,s[i]入栈
循环结束后
判断栈是否为空
为真,则括号匹配
否则,括号不匹配
return0;
}
本程序做简单的括号匹配,算法实现也比较简单。
主要思想是先匹配好后输入的左括号,再匹配先输入的左括号。
其中,待匹配的左括号压入栈中。
最后判断栈是否为空,为空,则说明完全匹配,否则匹配失败。
本程序使用简单
运行程序,程序提示用户输入要匹配的括号串
回车,程序输出运行结果
程序提示是否继续
7、测试结果
{[]()}
括号匹配
{}[}
括号比配不合法
实验三
建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果。
从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立),并采用递归算法对其进行遍历(先序、中序、后序),将遍历结果打印输出。
本程序用到数据结构
structnode
{data//存储节点数值
leftnode//存储左子节点的地址
rightnode//存储右子节点的地址}
二叉树类定义
classbnrtree
{root//存储二叉树根节点的地址
all//记录节点个数
add()//创建二叉树
xianxu()//先序遍历二叉树
zhongxu()//中序遍历二叉树
houxu()//后序遍历二叉树}
主函数流程图如下:
节点结构体
{chardata;
node*leftnode;
node*rightnode;
二叉树类
{private:
node*root;
intall;
public:
voidadddata()
{调用函数add(),把返回值赋值给root}
node*add()
{输入字符c
判断c是否代表空节点
是,则不用动态分配节点内存
否,则动态分配节点内存
把c赋值给新节点的data数据成员
调用函数add(),把返回值赋值给新节点的leftnode
调用函数add(),把返回值赋值给新节点的rightnode}
voidxianxu()
{调用函数xianxu(root)}
voidxianxu(node*n)
{输出n->
data
如果n->
leftnode不为空,则调用函数xianxu(n->
leftnode)
rightnode不为空,则调用函数xianxu(n->
rightnode)}
voidzhongxu()
{调用函数zhongxu(root)}
voidzhongxu(node*n)
{如果n->
leftnode不为空,则调用函数zhongxu(n->
输出n->
rightnode不为空,则调用函数zhongxu(n->
voidhouxu()
{调用函数houxu(root)}
voidhouxu(node*n)
leftnode不为空,则调用函数houxu(n->
rightnode不为空,则调用函数houxu(n->
data}
本程序运用递归的方法进行插入和遍历的,这样子实现比较简单,代码量也少。
但如果二叉树很大,其对内存的要求较大,即运行空间大。
本程序操作简单。
运行本程序,程序提示输入要建立的二叉树
按规则输入二叉树,回车
程序输出该二叉树的先序遍历、中序遍历和后序遍历的结果
程序结束
7、测试数据
abc##d##e#fg###
先序遍历二叉树
abcdefg
中序遍历二叉树
cbdaegf
后序遍历二叉树
cdbgfea