1、B05040424苏杰锋软件设计报告软件设计报告姓名: 苏杰锋 学号:B050404242008年3月24日2008年4月6日第一章 软件设计介绍软件设计总时间:二周一、软件设计的性质、目的本课程是一门技能训练课,为在校学生的必修课程。通过设计培养学生良好的编程习惯,使学生掌握编程的基本步骤,规范学生的编写程序的格式,锻炼学生编写程序的能力,为将来编写较大程序的打好基础。二、软件设计的任务通过集中时间上机实验,使学生充分发挥已有的编程能力,熟悉编译环境,选择若干课题,进行审题、分析、设计和调试,并根据要求写出实验报告。三、实验内容软件设计课题共分A 、B两档。A档共5题,第一周完成;B档共2题
2、,第二周完成。四、考核办法考核采取程序验收和面试的方法进行。其中,程序验收及面试占50%,实验报告占50%。在考核过程中,若发现抄袭程序者,所抄袭的程序按零分记。五、实验设备南京邮电大学微机室微机。第二章 软件开发平台简介本次实验采用Visual C+ 开发平台。Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。Visual C+6.0不仅是一个C+编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated deve
3、lopment environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。Visual C+它大概可以分成三个主要的部分:1 Developer Studio,这是一个集成开发环境,我们日常工作的99%都是在它上面完成的,再加上它的标题赫然写着“Microsoft Visual C+”,所以很多人理所当然的认为,那就是Visual C+了。其实不然,虽然Developer Studio提供了一个很好的编辑器
4、和很多Wizard,但实际上它没有任何编译和链接程序的功能,真正完成这些工作的幕后英雄后面会介绍。我们也知道,Developer Studio并不是专门用于VC的,它也同样用于VB,VJ,VID等Visual Studio家族的其他同胞兄弟。所以不要把Developer Studio当成Visual C+, 它充其量只是Visual C+的一个壳子而已。这一点请切记!2 MFC。从理论上来讲,MFC也不是专用于Visual C+,Borland C+,C+Builder和Symantec C+同样可以处理MFC。同时,用Visual C+编写代码也并不意味着一定要用MFC,只要愿意,用Visu
5、al C+来编写SDK程序,或者使用STL,ATL,一样没有限制。不过,Visual C+本来就是为MFC打造的,Visual C+中的许多特征和语言扩展也是为MFC而设计的,所以用Visual C+而不用MFC就等于抛弃了Visual C+中很大的一部分功能。但是,Visual C+也不等于MFC。3 Platform SDK。这才是Visual C+和整个Visual Studio的精华和灵魂,虽然我们很少能直接接触到它。大致说来,Platform SDK是以Microsoft C/C+编译器为核心(不是Visual C+,看清楚了),配合MASM,辅以其他一些工具和文档资料。上面说到De
6、veloper Studio没有编译程序的功能,那么这项工作是由谁来完成的呢?是CL,是NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成Visual Studio的基石。第三章 软件设计的内容3.1 分数统计软件(A1)3.1.1设计题目及要求分数统计要求:(1)输入某班级学生的姓名、分数;(2)对(1)的分数进行降幂排列并输出;(3)具有输入输出界面。3.1.2设计思想及程序流程框图提示用户输入学生信息,检查动态开辟的内存空间是否够用,不够用则重新申请更大的一块空间。输入结束后采用冒泡排序,最终按要求打印成绩。3.1.3逻辑功能程序struct record char na
7、me15; int fenshu;void main() record *p=NULL,*q; int total=0; int fenshutemp; char nametemp15; int shipment=0; const int quantity=5;/成绩录入 cout成绩录入!输入姓名“end”以结束录入,显示成绩endl; while(1) if(total=quantity*shipment) /申请空间不够 shipment+; q=new recordquantity*shipment; if(q=NULL) cout内存已满,无法继续输入endl; total-; el
8、se for(int j=0;jtotal;j+) qj.fenshu=pj.fenshu; strcpy(qj.name,pj.name); if(p) delete p; p=q; if(!q) break; coutptotal.name; if(!strcmp(ptotal.name,end) break; coutendl; fenshutemp=check(10); while(fenshutemp100) cout输入分数不符合要求,请重新输入!0;time-) /冒泡排序 for(int j=0,reverse=0;jtime;j+) if(pj.fenshupj+1.fens
9、hu) fenshutemp=pj.fenshu; pj.fenshu=pj+1.fenshu; pj+1.fenshu=fenshutemp; strcpy(nametemp,pj.name); strcpy(pj.name,pj+1.name); strcpy(pj+1.name,nametemp); reverse=1; if(reverse=0) break; for(int j=0;jtotal;j+) coutttpj.name pj.fenshuendl; int check(int weight) char numin100; int temp=0; int numlength
10、,i; while(1) coutnumin; numlength=strlen(numin); for(i=0;inumlength;i+) numini=numini-0x30; for(i=0;i9) numini=numini-7; if(numini26) numini=numini-32; if(numiniweight) break; if(i=numlength) break; coutt输入数值不符合要求!n; for(i=0,temp=0;inumlength;i+) temp=temp*weight+numini; return temp;3.1.4结果及完善方向结果如下
11、:完善方向:输入姓名可编写一函数使输入姓名可含空格,用MFC,使输入界面更加友好。3.2 打字软件(A2)3.2.1设计题目及要求打字程序。要求:(1)随即产生一字符串,每次产生的字符串内容、长度都不同; (2)根据(1)的结果,输入字符串,判断输入是否正确,输出正确率; (3)具有输入输出界面。3.2.2设计思想及程序流程框图先设定可产生的字符串的最大长度,随机生产一整数,将它与长度最大值取余,得到该次所要生成字符串长度。重复调用随机数生成函数,将生成的随机数对应输出字符,提示用户按所给字符串输入。当用户输入完后,统计用户输入字符情况,打印输出。3.2.3逻辑功能程序void main()
12、const int maxlength=30; char fommermaxlength,lattermaxlength*2,temp,c=1; int length,i,len; float j; srand(unsigned) time(NULL); while(c!=q&c!=Q) length=rand()%maxlength; if(length=0) length=maxlength; for(i=0;ilength;i+) temp=rand()%(2*26); if(temp27) fommeri=temp+A; else fommeri=temp+a-27; fommeri=0; coutt请输入如下字符串,按回车结束: fommerlatter; len=strlen(latter); if(lenlength) cout您只输入了length个字母中的lenlength) cout您多输入了len-length个字符。n; for(i=0,j=0;ilength;i+) if(fommeri=latteri) j+; coutt您的成绩是: int(j/length*100)%endl; coutc; 3.2.4结果及完善方向结果如下:改善方向:生成字符串可扩展为含有标点符号。3.3 文本编辑器(A3)3.3.1设计题目及要求要
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1