B05040424苏杰锋软件设计报告.docx
《B05040424苏杰锋软件设计报告.docx》由会员分享,可在线阅读,更多相关《B05040424苏杰锋软件设计报告.docx(54页珍藏版)》请在冰豆网上搜索。
B05040424苏杰锋软件设计报告
软件设计报告
姓名:
苏杰锋
学号:
B05040424
2008年3月24日~2008年4月6日
第一章软件设计介绍
软件设计总时间:
二周
一、软件设计的性质、目的
本课程是一门技能训练课,为在校学生的必修课程。
通过设计培养学生良好的编程习惯,使学生掌握编程的基本步骤,规范学生的编写程序的格式,锻炼学生编写程序的能力,为将来编写较大程序的打好基础。
二、软件设计的任务
通过集中时间上机实验,使学生充分发挥已有的编程能力,熟悉编译环境,选择若干课题,进行审题、分析、设计和调试,并根据要求写出实验报告。
三、实验内容
软件设计课题共分A、B两档。
A档共5题,第一周完成;B档共2题,第二周完成。
四、考核办法
考核采取程序验收和面试的方法进行。
其中,程序验收及面试占50%,实验报告占50%。
在考核过程中,若发现抄袭程序者,所抄袭的程序按零分记。
五、实验设备
南京邮电大学微机室微机。
第二章软件开发平台简介
本次实验采用VisualC++开发平台。
VisualC++是一个功能强大的可视化软件开发工具。
自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。
VisualC++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrateddevelopmentenvironment,IDE)。
VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。
这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境。
VisualC++它大概可以分成三个主要的部分:
1.DeveloperStudio,这是一个集成开发环境,我们日常工作的99%都是在它上面完成的,再加上它的标题赫然写着“MicrosoftVisualC++”,所以很多人理所当然的认为,那就是VisualC++了。
其实不然,虽然DeveloperStudio提供了一个很好的编辑器和很多Wizard,但实际上它没有任何编译和链接程序的功能,真正完成这些工作的幕后英雄后面会介绍。
我们也知道,DeveloperStudio并不是专门用于VC的,它也同样用于VB,VJ,VID等VisualStudio家族的其他同胞兄弟。
所以不要把DeveloperStudio当成VisualC++,它充其量只是VisualC++的一个壳子而已。
这一点请切记!
2.MFC。
从理论上来讲,MFC也不是专用于VisualC++,BorlandC++,C++Builder和SymantecC++同样可以处理MFC。
同时,用VisualC++编写代码也并不意味着一定要用MFC,只要愿意,用VisualC++来编写SDK程序,或者使用STL,ATL,一样没有限制。
不过,VisualC++本来就是为MFC打造的,VisualC++中的许多特征和语言扩展也是为MFC而设计的,所以用VisualC++而不用MFC就等于抛弃了VisualC++中很大的一部分功能。
但是,VisualC++也不等于MFC。
3.PlatformSDK。
这才是VisualC++和整个VisualStudio的精华和灵魂,虽然我们很少能直接接触到它。
大致说来,PlatformSDK是以MicrosoftC/C++编译器为核心(不是VisualC++,看清楚了),配合MASM,辅以其他一些工具和文档资料。
上面说到DeveloperStudio没有编译程序的功能,那么这项工作是由谁来完成的呢?
是CL,是NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成VisualStudio的基石。
第三章软件设计的内容
3.1分数统计软件(A1)
3.1.1设计题目及要求
分数统计
要求:
(1)输入某班级学生的姓名、分数;
(2)对
(1)的分数进行降幂排列并输出;
(3)具有输入输出界面。
3.1.2设计思想及程序流程框图
提示用户输入学生信息,检查动态开辟的内存空间是否够用,不够用则重新申请更大的一块空间。
输入结束后采用冒泡排序,最终按要求打印成绩。
3.1.3逻辑功能程序
structrecord
{
charname[15];
intfenshu;
};
voidmain()
{
record*p=NULL,*q;
inttotal=0;
intfenshutemp;
charnametemp[15];
intshipment=0;
constintquantity=5;
//成绩录入
cout<<"成绩录入!
输入姓名“end”以结束录入,显示成绩"<while
(1){
if(total==quantity*shipment){//申请空间不够
shipment++;
q=newrecord[quantity*shipment];
if(q==NULL){
cout<<"内存已满,无法继续输入"<total--;
}
else{
for(intj=0;jq[j].fenshu=p[j].fenshu;
strcpy(q[j].name,p[j].name);
}
if(p)delete[]p;
p=q;
}
}
if(!
q)break;
cout<<"学生姓名:
";
cin>>p[total].name;
if(!
strcmp(p[total].name,"end"))break;
cout<fenshutemp=check(10);
while(fenshutemp<0||fenshutemp>100){
cout<<"输入分数不符合要求,请重新输入!
"<fenshutemp=check(10);
}
p[total].fenshu=fenshutemp;
total++;
};
if(q)
{
boolreverse=0;
for(inttime=total-1;time>0;time--){//冒泡排序
for(intj=0,reverse=0;j