软件设计方法实习报告文档格式.docx
《软件设计方法实习报告文档格式.docx》由会员分享,可在线阅读,更多相关《软件设计方法实习报告文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
![软件设计方法实习报告文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/29/e827901f-358f-45ae-bbb2-d53b3e7ed367/e827901f-358f-45ae-bbb2-d53b3e7ed3671.gif)
1.安装
Eclipse
开发环境;
2.学习
开发环境的使用;
3.在
下,编写程序,完成实数的四则运算功能;
(三)、发挥部分
根据自己的程序开发水平,完成其他可展示功能程序。
-1-
二.过程(如实际程序开发、电子制作,详细说明有关原理、开发过程、
调试过程、结果)
(一)、在
LINUX
下
Shell
命令行内执行四则运算
1、在
Linux
根目录
root
下创建自己的工作目录
:
[root@localhost
~]#
mkdir
std
std]#
cd
std]#mkdir
calculate
calculate]#
add
sub
mul
div
ls
adddivmulsub
2.在上述的工作目录下编写四则运算的代码。
(1)
目录下
add]#
vi
add.c
float
add(float
a,float
b)
{
{return
a+b;
}
add.h
#ifndef
ADD_H_
#define
b);
#endif
add.o:
cc
-c
-o
add.o
(2)sub
sub]#
sub.c
sub(float
return
a-b;
-
11
-
sub.h
SUB_H_
sub.o:
sub.o
(3)
mul]#
mul.c
mul(float
returna
*
b;
mul.h
MUL_H_
mul.o:
mul.o
(4)
div
div]#
div.c
div(float
a/b;
div.h
12
DIV_H_
x,float
y);
div.o:
div.o
(5)
calculate
cal.c
#include<
stdio.h>
#include"
add.h"
sub.h"
div.h"
mul.h"
int
main
(void)
m=
1;
a=
0;
b
=0;
sum=
0
;
minus=
multi=
divide=
charc=
const
EPSILON
=
1e-10;
while(m==1)
printf("
请输入两个实数:
\n"
);
scanf("
%f
%f"
&
a,&
运算符号是:
scanf
("
%s"
c);
switch
(c)
case
'
+'
:
sum
add(a,b);
%f+%f=%f\n"
a,b,sum);
break;
-'
minus
=sub
(a,b);
%f-%f=%f\n"
a,b,minus);
*'
multi
=mul(a,b);
%f*%f=%f\n"
a,b,multi);
/'
if
((b>
-EPSILON)&
&
(b<
EPSILON))
错误,除数不能为
!
else
divide
%f/%f=%f\n"
a,b,divide);
default
未知运算符!
输入
1
继续,输入其他退出程序!
%d"
m);
vpath
%add.c
add
%add.h
%sub.c
sub
%sub.h
%mul.c
mul
%mul.h
%div.c
%div.h
obj
cal.o
div.o
test
$(obj)
cal.c
-I
clean:
rm
-rf
*.o
上述程序中使用了
gcc
与
makefile
①在
的终端命令中有
指令
◆
预处理(Pre-Processing)
使用-E
参数可以让
在预处理结束后停止编译过程:
#
-E
hello.c
hello.i
编译(Compiling)
下一步是将
hello.i
编译为目标代码,这可以通过使用-c
参数来完成:
-x
cpp-output
–c
hello.o
或者
汇编(Assembling)
链接(Linking)
hello.o
hello
②Makefile
就是“自动化编译”,一旦写好,只需要一个
make
命令,整个工程完全自动编
译。
命令执行时,需要一个
Makefile
文件,以告诉
命令需要怎么样的去编译和链
接程序。
的规则:
target
...
:
prerequisites
...
command
也就是一个目标文件,可以是
Object
File,也可以是执行文件。
还可以是一个标签
(Label)。
就是,要生成那个
所需要的文件或是目标。
command
也就是
需要执行的命令。
这是一个文件的依赖关系,target
这一个或多个的目标文件依赖于
中的文件,
其生成规则定义在
中。
中如果有一个以上的文件比
文件要新
的话,command
所定义的命令就会被执行。
是如何工作的:
命令。
那么,
1、make
会在当前目录下找名字叫“Makefile”或“makefile”的文件。
2、如果找到,它会找文件中的第一个目标文件(target),并把这个文件作为最终的目
标文件。
3、如果
edit
文件不存在,或是
所依赖的后面的
.o
文件的文件修改时间要比
这
个文件新,那么,他就会执行后面所定义的命令来生成
这个文件。
4、如果
所依赖的.o
文件也存在,那么
会在当前文件中找目标为.o
文件的依
赖性,如果找到则再根据那一个规则生成.o
文件。
5、C
文件和
H
文件存在时
会生成
文件,然后再用
文件生命
的终极任
务,也就是执行文件
了。
这就是整个
的依赖性,make
会一层又一层地去找文件的依赖关系,直到最终编译
出第一个目标文件。
在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,
那么
就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make
根本不理。
只管文件的依赖性。
Vpath
中如果没有指明
这个变量,make
只会在当前的目录中去找寻依赖文件和
目标文件。
如果定义了这个变量,那么,make
就会在当当前目录找不到的情况下,到所
指定的目录中去找寻文件了。
Vpath
的使用方法:
<
pattern>
directories>
为符合模式<
的文件指定搜索目录<
。
vapth
使用方法中的<
需要包含“%”字符。
“%”的意思是匹配零或若干字符,
(需引用“%”,使用“\%"
)例如,“%.h”表示所有以
“.h”结尾的文件。
指定了要搜索的文件集,而<
则指定了<
的文件集的搜索的目录。
(如果某文件在当前目录没有找到的话)
我们可以连续地使用
语句,以指定不同
搜索策略。
如果连续的
语句中出现了相同的<
,或是被重复了的
,那么,make
会按照
语句的先后顺序来执行搜索。
3.
在
目录下使用
make
cc-c
add/add.c
sub/sub.c
mul/mul.c
div/div.c
4.
运行四则运算程序
./test
54
+
5.000000+4.000000=9.000000
1
5.000000-4.000000=1.000000
*
5.000000*4.000000=20.000000
50
/
2
(二)、Eclipse
的学习使用
下,编写程序,完成实数的四则运算功能
(1)、点击
file
下的新建(new)一个
C
工程(c
project);
(2)、在出现的对话框中,输入
project
name,点
Finsh,完成
的创建;
(3)、新建
源程序:
file->
new->
source;
(4)、新建头文件:
headfile;
(5)、在
source
中输入
name,输入文件名要加上后缀.c
或.h;
(6)、在
窗口中输入需要的
程序和各个头文件,复制上述代码即可;
(7)、单击“Build
Debug'
for
test'
”,然后再单击“Run
test”运行。
(三)、其他可展示功能程序
十进制正整数转换为二进制或八进制
math.h>
ten_two(int
num)
inti=0;
arr[20]={};
for(
i
i++)
arr[i]
num
%
2;
/
if(num
==
0)
for(;
i>
i--)
arr[i]);
arr[20];
ten_eight(int
i=0;
8;
main(void)
select
a[20]={};
请输入一个十进制整数\n"
num);
十进制转二进制,2
十进制转八进制\n"
select);
switch(select)
转换为二进制:
ten_two
(num);
转换为八进制:
ten_eight(num);
您的输入有误,请重新输入!
运行结果如下:
请输入一个十进制数
8
十进制转八进制
1000
10
12
三、小结
这一周的课程设计是本学期所有课程设计里最令我纠结的一个,归根结底还是个大问
题:
一个是基础知识掌握不牢;
二是就是设计时粗心大意,小错误不断;
三是检错能力差,
不能根据报错结果找出错误原因。
以下是我设计时遇到的问题及解决方法:
1.编辑头文件时,分号容易漏掉,导致语法性错误
2.Makefile
时
前面的空格一定要用
TAB
键,否则检测会报“缺少分隔符”
3.GCC
的调试中出现了一些语法错误,gcc
有很多种写法规则,因为类别太多导致容易混
淆。
4.编写
不规范,错误很多,多目录下的
与同目录下的
虽然不
同,但也有相同之处,不能做到举一反三。
5.关于如何在主程序下的
中引用
add、sub
等的
makefile,通过查资料在陈浩编
写的“跟我一起写
Makefile”找到了答案。
问题看上去虽然不多,但每一个问题都曾使我焦头烂额很长时间,一直到星期四下午
才把一切都弄好。
这次课程设计虽然给我带来了很多麻烦,但也同时激发了我对软件设计
的挑战和兴趣,这次设计是结束了,但我会在课余时间继续专研,扩展自己该领域的知识
面,不断的前进与挑战自我。
成绩日期批阅人