软件工程.docx
《软件工程.docx》由会员分享,可在线阅读,更多相关《软件工程.docx(20页珍藏版)》请在冰豆网上搜索。
软件工程
陕西省高等教育自学考试
软件工程课程
实践环节考核报告
准考证号:
考生姓名:
所学专业:
计算机及应用专业层次:
本科
考核地点:
西安电子科技大学考核时间:
2012-5-22
实践考核评语及成绩评定(由指导教师填写)
教师签名:
年月日
主考院校:
西安电子科技大学
《软件工程》课程实践
一、实验环境
1.硬件:
CPU2.4G;内存2G;硬盘160G;显示器17;
2.软件:
操作系统windowsXp
3.实验环境:
Foxpro,word2003
二、实验目的:
使考生掌握软件工程的基本概念、基本原理、实用的开发方法和技术;了解软件工程各领域的发展动向;如何用工程化的方法开发软件项目,如何用工程化的方法开发软件项目,在开发过程中应遵循的流程、准则、标准和规范,注重方法、技术的实际应用
三、软件设计说明书:
1.需要说明书
1.1概述
1.1.1项目背景
学生成绩统计是学校教务工作的一个重要内容,该软件可以大大减轻工作人员的工作量,更有助于学生成绩的管理,促进学校教学管理工作。
1.1.2用户特点
用户主分,管理员、老师、学生三类,数量不大,用户需求简单。
1.1.3假定与约束
假定学生只有三门主课。
成绩在1-100分之间。
1.2具体要求
1.2.1功能需求
可以录入学生基本资料,三门本课的成绩,计算机计算总成绩与平均分。
1.2.2外部接口需求
人工手工录入。
1.2.3性能需求
1.2.4软件属性需求
软件能在xp系统下,单机运行。
1.2.5数据需求
可满足大型学校,学号id为十进制12位。
1.2.6产品化需求
内部使用,不需要产品化。
1.3运行环境规定
1.3.1设置
在xp系统下能正常运行,进行程序需提供用户密码。
1.3.2支持软件
程序依托xp操作系统
1.3.3接口
采用foxfro表单数据库,手工录入。
1.3.4控制
管理员可以修改数据结构,教师可以录入及修改学生成绩,学生只能查询操作。
2.概要设计说明书
2.1总体设计
2.1.1软件描述
软件是单机软件,为学校内部使用,数据量小,功能也比较简单,用户较小。
2.1.2软件结构
软件包括一个主界面,内含一个主菜单,一个退出。
主采单分6项,分别完成软件功能。
2.1.3外部接口
人工手工键盘录入界面。
2.2模块设计
2.2.1模块功能
主模块:
进入系统首先显示系统名称,开发者姓名,版本号口令,口令正确进入等.
数据输入:
向成绩数据库追加记录,输入学号,姓名等.
数据修改:
修改学生成绩库文件记录,输入学号查找并进行修改操作.
数据统计模块,提示正在进行统计,请稍等…..,然后进行总成绩和平均成绩,完成
数据打印模块,按照设计的报表,编写打印程序,并调试,显示
2.2.2外部接口
人工手工键盘录入界面。
2.3数据结构设计
2.3.1逻辑结构设计
数据库。
2.3.2物理结构设计
foxpro数据库系统。
3.详细设计说明书
3.1引言
学生成绩统计是学校教务工作的一个重要内容,为了减轻工作人员的工作量,更有助于学生成绩的管理,促进学校教学管理工作,特设计此软件。
3.2软件结构
软件包括一个主界面,内含一个主菜单,一个退出。
主菜单分6项:
输入学生记录,修改学生记录,删除学生记录,查询学生记录,统计学生记录,打印学生记录。
3.3模块设计说明
输入模块查询模块
统计模块打印模块
4.测试分析报告
4.1测试结果
通过编译后,多次测试程序各个功能模块使用正常,录入,删除,查询,统计,打印等功能都已实现,但对话框要求输入Y/N时,不正确输入时,容易死机。
4.2软件功能结果
此软件,教师用户可以录入学生基本资料,及三门主课的成绩,自动计算学生成绩总分及平均分,并进行查询、统计与打印。
学生可以按学号查询自己或他人的成绩,不能打印。
4.3分析摘要
软件功能比较简单,可以实现简单的学生成绩管理,但功能还很少。
四、实验内容:
1.题目:
学生成绩管理系统。
2.数据库结构。
3.系统结构模块图:
主控模块
各模块功能说明:
1):
主模块:
进入系统首先显示系统名称,开发者姓名,版本号口令,口令正确进入等.
2):
数据输入:
向成绩数据库追加记录,输入学号,姓名等.
3):
修改学生成绩库文件记录,输入学号查找并进行修改操作.
4):
数据统计模块,提示正在进行统计,请稍等…..,然后进行总成绩和平均成绩,完成
5):
数据打印模块,按照设计的报表,编写打印程序,并调试,显示
4.程序代码及运行结果:
五、程序源代码及运行结果:
1.主控程序XSCJGL.prg
SETTALKOFF
CLEAR
TEXT
--------------------学生成绩管理系统-----------------
|开发工具:
FoxPro6.0|
|设计者:
郭晶|
|准考证号:
010106209678|
|版本:
Ver1.0|
----------------------------------------------------
ENDTEXT
?
“请输入密码”
SETCONSOLEOFF
ACCEPTTOkey
SETCONSOLEON
IF
key=="12345”
ELSE
WAIT"密码不正确,按任意键退出!
"
CANCEL
ENDIF
CLEAR
USEcjk
DEFINEMENUxscjgl
DEFINEPADcjglOFxscjglPROMPT"学生成绩管理"
DEFINEPADokOFxscjglPROMPT"退出"
ONSELECTIONPADcjglOFxscjglACTIVATEPOPUPpopcj
ONSELECTIONPADokofxscjglRETURN
DEFINEPOPUPpopcjFROM1,0
DEFINEBAR1OFpopcjPROMPT"1.输入学生记录"
DEFINEBAR2OFpopcjPROMPT"2.删除学生记录"
DEFINEBAR3OFpopcjPROMPT"3.修改学生记录"
DEFINEBAR4OFpopcjPROMPT"4.查询学生记录"
DEFINEBAR5OFpopcjPROMPT"5.统计学生记录"
DEFINEBAR6OFpopcjPROMPT"6.打印成绩报表"
ONSELECTIONBAR1OFpopcjDOinput.prg
ONSELECTIONBAR2OFpopcjDOsc.prg
ONSELECTIONBAR3OFpopcjDOxg.prg
ONSELECTIONBAR4OFpopcjDOcx.prg
ONSELECTIONBAR5OFpopcjDOtj.prg
ONSELECTIONBAR6OFpopcjDOdy.prg
ACTIVATEMENUxscjgl
RETURN
2.数据记录输入程序input.prg
CLEAR
DEFINEWINDOWw1FROM2,20TO25,100SYSTEMCLOSEFLOATGROW;
FONT"T黑体",11TITLE"输入学生纪录窗口"
DEFINEWINDOWw2INWINDOWw1FROM12,10TO18,50SYSTEM;
CLOSEFLOATGROWFONT"T黑体",11TITLE"对话窗口"
DIMENSIONa(9)
action=.T.
answer=.T.
DOWHILEaction
DOWHILE.T.
SCATTERTOaBLANK
ACTIVATEWINDOWw1
CLEAR
@1,2SAY"学号:
"GETa
(1)PICTURE"XXXXXXXXXXXX"
@1,20SAY"姓名:
"GETa
(2)PICTURE"XXXXXX"
@3,2SAY"性别:
"GETa(3)PICTURE"XX"
@3,20SAY"出生日期:
"GETa(4)PICTURE"@d"
@5,2SAY"计算机:
"GETa(5)PICTURE"999.99"RANGE0,100
@5,20SAY"数学:
"GETa(6)PICTURE"999.99"RANGE0,100
@5,38SAY"数学:
"GETa(7)PICTURE"999.99"RANGE0,100
READ
a(8)=a(5)+a(6)+a(7)
a(9)=a(8)/3
ACTIVATEWINDOWw2
@1,2SAY"输入正确吗?
[Y/N]"GETanswerPICTURE"L"
READ
IFanswer
APPENDBLANK
GATHERFROMa
EXIT
ENDIF
ENDDO
@1,0CLEAR
@1,2SAY"继续输入吗?
[Y?
N]"GETactionPICTURE"L"
READ
DEACTIVATEWINDOWw2
ENDDO
DEACTIVATEWINDOWw1,w2
RETURN
3.删除记录程序sc.prg
SETDELETEON
CLEAR
num=SPACE(5)
DEFINEWINDOWw1FROM2,20TO25,80SYSTEMCLOSEFLOATGROW;
FONT"T黑体",11TITLE"删除学生记录窗口"
DEFINEWINDOWw2INWINDOWw1FROM8,10TO16,70SYSTEMCLOSEFLOAT;
GROWFONT"T黑体",11TITLE"对话窗口"
action=.T.
answer=.T.
DOWHILEaction
ACTIVATEWINDOWw1
CLEAR
@1,1SAY"请输入要删除学生的记录号:
"GETnumPICTURE"XXXXXXXXXXXX"
LOCATEFOR学号=num
IFFOUND()
DISPLAY
ACTIVATEWINDOWw2
CLEAR
@1,1SAY"确定要删除该学生记录吗?
[Y/N]"GETanswerPICTURE"L"
READ
IFanswer
DELETE
@1,0CLEAR
@1,1SAY"该学生数据已删除!
"
@2,1SAY"继续删除操作吗?
[Y/N]"GETactionPICTURE"L"
READ
ENDIF
ENDIF
IF.NOT.FOUND()
ACTIVATEWINDOWw2
@1,1SAY"查无此人!
"
@2,1SAY"继续删除操作吗?
[Y/N]"GETactionPICTURE"L"
READ
ENDIF
CLEAR
ENDDO
DEACTIVATEWINDOWw1,w2
PACK
SETDELETEOFF
RETURN
4.修改学生记录程序xg.prg
CLEAR
DEFINEWINDOWw1FROM2,20TO25,100SYSTEMCLOSEFLOATGROW;
FONT"T黑体",11TITLE"修改学生记录窗口"
DEFINEWINDOWw2INWINDOWw1FROM8,10TO14,50SYSTEMCLOSEFLOAT;
GROWFONT"T黑体",11TITLE"对话窗口"
action=.T.
answer=.T.
DIMENSIONa(9)
DOWHILEaction
DOWHILE.T.
num=SPACE(12)
ACTIVATEWINDOWw1
CLEAR
@0,1SAY"请输入要修改学生的学号:
"GETnumPICTURE"XXXXXXXXXXXX"
READ
LOCATEFOR学号=num
IFFOUND()
SCATTERTOa
@1,2SAY"学号:
"GETa
(1)PICTURE"XXXXXXXXXXXX"
@1,20SAY"姓名:
"GETa
(2)PICTURE"XXXXXX"
@3,2SAY"性别:
"GETa(3)PICTURE"XX"
@3,20SAY"出生日期:
"GETa(4)PICTURE"@d"
@5,2SAY"计算机:
"GETa(5)PICTURE"999.99"RANGE0,100
@5,20SAY"英语:
"GETa(6)PICTURE"999.99"RANGE0,100
@5,38SAY"数学:
"GETa(7)PICTURE"999.99"RANGE0,100
READ
a(8)=a(5)+a(6)+a(7)
a(9)=a(8)/3
ACTIVATEWINDOWw2
@1,2SAY"真的要修改吗?
[Y/N]"GETanswerPICTURE"L"
READ
IFanswer
GATHERFROMa
@2,2SAY"修改后的数据已经存入库文件!
"
WAITWINDOW
CLEAR
ENDIF
ENDIF
IF.NOT.FOUND()
@1,1CLEAR
ACTIVATEWINDOWw2
@1,2SAY"库文件中无此人!
"
WAITWINDOW
CLEAR
ENDIF
EXIT
ENDDO
@1,2SAY"继续修改操作吗?
[Y/N]"GETactionPICTURE"L"
READ
@1,2CLEAR
ENDDO
DEACTIVATEWINDOWw1,w2
RETURN
5.查询程序cx.prg
CLEAR
DEFINEWINDOWwFROM8,1TO25,160SYSTEMCLOSEFLOATGROW;
FONT"T黑体",11TITLE"查询学生记录窗口"
action=.t.
DOWHILEaction
num=SPACE(5)
ACTIVATEWINDOWw
CLEAR
@1,1SAY"请输入要查询学生的学号:
"GETnumPICTURE"XXXXX"
READ
LOCATEFOR学号=num
IFFOUND()
DISPLAY
WAIT"按任意键继续!
"
ENDIF
IF.NOT.FOUND()
@2,1SAY"查无此人!
"
WAIT"按任意键继续!
"
ENDIF
@ROW()+1,1SAY"继续查吗?
[Y/N]"GETactionPICTURE"L"
READ
ENDDO
DEACTIVATEWINDOWw
RETURN
6.统计程序tj.prg
CLEAR
AVERAGE计算机TOa1
AVERAGE英语TOa2
AVERAGE数学TOa3
countTOn
COUNTFOR计算机>=60TOn1
COUNTFOR英语>=60TOn2
COUNTFOR数学>=60TOn3
CLEAR
DEFINEWINDOWwFROM2,20TO25,150SYSTEMCLOSEFLOATGROW;
FONT"T黑体",11TITLE"统计窗口"
ACTIVATEWINDOWw
?
"计算机单科平均:
",a1,"及格率",n1/n*100,'%'
?
"英语单科平均:
",a2,"及格率",n2/n*100,'%'
?
"数学单科平均:
",a3,"及格率",n3/n*100,'%'
wait"按任意键返回!
"
DEACTIVATEWINDOWw
RETURN
7打印程序dy.prg
CLEAR
WAIT"是否打印?
[Y/N]:
"TOx
IFx="Y"orx="y"
SETPRINTON
SETCONSON
ELSE
RETURN
ENDIF
usecjk
sorttodcjxON总分/D
usedcjx
CLEAR
?
SPACE(24)+"9906班学生成绩表"
?
SPACE(3)+""
?
SPACE(3)+"学号姓名计算机|英语数学总分平均成绩"
GOTOTOP
DOWHILE.NOT.EOF()
?
SPACE(3)+""
?
SPACE(3)+""+学号+"|"+姓名+""+str(计算机,5,1)+""+str(英语,5,1)+;
""+str(数学,5,1)+""+str(总分,6,1)+""+str(平均成绩,6,2)+""
SKIP
ENDDO
?
SPACE(3)+""
?
SPACE(49)+"制表日期:
"+DTOC(DATE())
USEcjk
SETPRINTOFF
!
deldcjx.dbf
RETUR
打印程序运行结果:
试验心得体会
通过此次课程实践,使我对软件工程有了进一步的认识,了解到一个软件开发的总体过程,认识到需求分析在软件工程中是比较重要的,这次设计由于时间和能力限制,未能全面的完成软件功能,但是通过整个需求分析,有流程图,模块图等,完成软件还是能顺利的。
这次实践题目是设计一个学生成绩管理系统,通过分析软件所要达到的功能,完成了软件的需要说明书。
在详细设计中,画出了具体的流程图,再根据题目要求的基本模块,完成了最终的软件设计说明书。
在软件设计说明书的指导下,使用Foxpro工具完成了软件的基本开发。
通过调试,最终完成了学生成绩管理系统。
通过此次实验,让我受益无穷,让我体会到软件工程思想的魅力,开发软件决对不就是简单的编源代码,而是一个工程开发的过程。
深刻认识到需求分析对一个软件开发的重要性。
通过这次实践,深入了解了软件工程的基本概念、基本原理、实用的开发方法和技术,学会了用工程化的方法来开发软件项目。
我想,这种新的体会与认识只有你亲自上机实践才可以理解与感受到,这无疑是我们今后学习的宝贵经验与财富。
在实践过程中,的确让我学到了很多有用的知识。
在实践中提高了我的动手能力,也让我了解到了自己的不足,我会继续努力。
最后感谢实践老师的辛苦辅导。