软件设计报告_第1页
软件设计报告_第2页
软件设计报告_第3页
软件设计报告_第4页
软件设计报告_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件设计报告姓名:学号:2014年6月23日2012年7月4日目录第一章软件设计介绍.2第二章软件开发平台简介.3第三章软件设计的内容.43.1分数统计软件(a1).43.1.1设计题目及要求.43.1.2设计思想及程序流程框图.43.1.3逻辑功能程序.43.1.4结果及完善方向.错误!未定义书签。3.2打字软件(a2).93.2.1设计题目及要求.93.2.2设计思想及程序流程框图.103.2.3逻辑功能程序.103.2.4结果及完善方向.133.3文本编辑器(a3).143.3.1设计题目及要求.143.3.2设计思想及程序流程框图.153.3.3逻辑功能程序.153.3.4结果及完善方

2、向.173.4加密软件(a4).193.4.1设计题目及要求.193.4.2设计思想及程序流程框图.193.4.3逻辑功能程序.193.4.4结果及完善方向.213.5进制转换器(a5).错误!未定义书签。3.5.1设计题目及要求.233.5.2设计思想及程序流程框图.233.5.3逻辑功能程序.243.5.4结果及完善方向.273.6学生成绩核算系统的设计与实现(b1).303.6.1设计题目及要求.303.6.2设计思想及程序流程框图.303.6.3逻辑功能程序.323.6.4结果及完善方向.413.7模拟电信计费系统的设计与实现(b2).453.7.1设计题目及要求.453.7.2设计思

3、想及程序流程框图.463.7.3逻辑功能程序.483.7.4结果及完善方向.错误!未定义书签。第四章心得体会.错误!未定义书签。第一章软件设计介绍一、所涉及的课程及知识点高级语言程序设计:常量、变量、表达式的基本知识;函数的定义与调用;文件读写;数组、指针、结构体等自定义类型的使用;排序等知识。二、目的与任务目的:通过集中时间上机实验,对学生的程序设计能力进行一次综合训练,使学生充分发挥已有的编程能力,熟悉编译环境。选择若干课题,进行审题、分析、设计和调试,在程序准备、程序实现、完成文档、答辩验收过程中,将全面巩固已学过的编程知识,全面提高编程技能,在编程风格、调试器的使用、测试技术等方面得到

4、全面训练。学生在程序设计过程中,学生需要查找各种资料获取有用信息解决实际问题,自学相关知识,提高文档书写能力,加强团队合作意识,提高口头表达能力。任务:软件设计课题共分a、b两档。a档共5题,题目较简单,第一周完成;b档共2题,题目是综合性的,较复杂,第二周完成。三、考核及报告要求1.考核根据学生平时的上机出勤情况、为上机所作的准备情况、上机时的表现、程序的完成情况、验收答辩时的表现、报告的完成情况等综合打分。等级为:优秀、良好、中等、及格、不及格。2.报告要求报告以电子版形式递交,要求书写规范、文字简练、语句通顺、图表清晰,见本大纲最后的一个软件设计报告样例。四、主要仪器设备硬件:微型计算机

5、软件:c、c+、visualc+等五、参考书参考书【1】朱立华,王立柱c语言程序设计北京:人民邮电出版社,2009【2】朱立华,朱建,俞琼面向对象程序设计及c+北京:人民邮电出版社,2008【3】张引等c程序设计基础课程设计浙江:浙江大学出版社,2007第二章软件开发平台简介本次实验所用的开发软件是microsoftvisualc+6.0。visualc+是一个功能强大的可视化软件开发工具。自1993年microsoft公司推出visualc+1.0后,随着其新版本的不断问世,visualc+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了visualc+.net(visualc+7

6、.0),但它的应用的很大的局限性,只适用于windows2000,windowsxp和windowsnt4.0。所以实际中,更多的是以visualc+6.0为平台。vc+6集成开发环境中集成了编辑器、编译器、连接器以及调试程序,覆盖了的开发应用程序的整个过程,与开发其他高级语言的程序一样,开发一个c/c+语言程序包括编辑、编译、链接和运行几个步骤。1编辑编辑是将编写好的c/c+语言源程序通过输入设备录入到计算机保存,生成扩展名为.c(或.cpp)的源程序文件。编辑源程序的方法有两种:一种是选用c+集成开发环境中的编辑器,这是最常用的方法;另一种是使用计算机中的其他文本编辑器,如写字板、记事本等

7、。2编译编译是将已生成的c/c+语言源程序代码转换为机器可识别的目标代码(即二进制代码),生成相应的扩展名为.obj的目标文件。编译又包括预处理和编译两个子过程,先执行程序中的以#开头的预处理命令进行预处理,然后再进行正常的编译过程。在编译过程中主要进行词法和语法分析,发现有不符合的,及时以error或warning信息提示用户,用户必须重新修改源程序文件直至编译正确才能进行下面的步骤。3链接链接是在编译生成的目标代码中加入某些系统提供的库文件代码,进行必要的地址链接,最后生成扩展名为.exe的可执行文件。4运行生成了可执行文件后就可以运行程序。运行程序的方法很多,最常用是选择集成环境中的“运

8、行”命令来运行可执行文件;另一种方法是在ms-dos提示符后直接键入可执行文件名(如果主函数有形式参数,则应提供实在参数),按回车确认。运行后在显示器上显示结果。需要说明的是,在以上4个过程中都有可能出错,无论是哪一个阶段出了错,都应该回到编辑步骤,因为如果源文件有错,就无法保证后面各步生成正确的文件。如果是运行期出错,则程序存在逻辑上的错误,要借助调试器找出错误才能保证源程序的修改正确。c语言程序的开发在特定的集成开发环境下进行。集成环境中提供了编辑器、编译器、链接器、调试器等多种工具,使得程序员从源程序的编辑到最后的运行均可在集成环境中完成。第三章软件设计的内容3.1分数统计软件(a1)3

9、.1.1设计题目及要求课题内容:设计一个分数统计程序。包括学生信息的输入输出以及排序。通过该课题全面熟悉结构体数组、字符串的使用以及排序的方法,掌握程序设计的基本方法及友好界面的设计。课题要求:(1)输入某班级学生的姓名、分数;(2)对(1)的分数进行降幂排列并输出;(3)具有输入输出界面。3.1.2设计思想及程序流程框图设计思想(1)建立一个student结构体,包含数据成员姓名、分数,分别用于存放学生的姓名和分数。(2)输入学生人数和基本信息。(3)采用选择排序法对学生分数进行排序,通过循环比较ai.score和sj.score的大小并交换顺序实现分数的降序排列。(4)通过菜单选择程序的功

10、能。程序流程图1.系统整体框图开始主菜单选择:输入choice0、退出2、降序输出成绩退出系统1、输入学生信息选择,输入choice2、降序输出成绩,退出系统其他选择,退出系统2.排序过程n开始i=0in-1输出排序结果yi+j=i结束jnynyai.scoreaj.score交换ai和ajnj+3.1.3逻辑功能程序#include#include#includestructstudentcharname20;doublegrades;typedefstructstudentstudent;voiddisplay()printf(*主菜单*n);printf(0、退出1、输入学生信息2、降序

11、输出成绩n);printf(n);printf(*请选择(0/1/2):);intinput(student*pa)intm,i,p=1;printf(*请输入学生人数:);scanf(%d,&m);for(i=0;im;i+)printf(*name(%d):,p);scanf(%s,&);printf(grades(%d):,p);scanf(%lf,&pai.grades);p+;printf(输入完毕n);returnm;voidselectsort(student*pa,intn)inti,j,max,k;studenttemp;for(i=0;in-1;i+)max

12、=i;for(j=i+1;jpamax.grades)max=j;if(max!=i)temp=pai;pai=pamax;pamax=temp;printf(降序排列为:n);for(k=0;kn;k+)printf(%s:%gn,,pak.grades);voidmain()intchoice;inta=0;student*sa;sa=(structstudent*)malloc(a*sizeof(structstudent);printf(*欢迎进入学生成绩统计系统*n);printf(n);display();scanf(%d,&choice);switch(choic

13、e)case1:a=input(sa);printf(n);display();scanf(%d,&choice);if(choice!=2)break;elsecase2:selectsort(sa,a);break;case0:printf(退出n);printf(*谢谢使用n);3.1.4结果及完善方向主菜单:选择1,输入学生信息:若再选择2,降序输出学生成绩:若再选择其他,则退出系统:程序分析:此程序功能上满足基本的题目要求,能够做到输入学生的姓名和成绩,能够按成绩降幂排列并输出。完善方向基本功能已实现,对于实际的系统,接下来完善的功能的是能够选择不同的科目进行输入,能够选择进行降幂或

14、者升幂排序,同时能添加或删除学生信息,对于成绩相同的学生进行并列排名.3.2打字软件(a2)3.2.1设计题目及要求课题内容:设计一个打字程序。包括随机产生字符串,以及字符串比较和统计。通过此课题,熟练掌握数组、格式输出、字符串处理等。课题要求:(1)随机产生一字符串,每次产生的字符串内容、长度都不同;(2)根据(1)的结果,输入字符串,判断输入是否正确,输出正确率;(3)具有输入输出界面。3.2.2设计思想及程序流程框图设计思想:(1)利用随机函数产生随机数作为产生的字符串长度;(2)利用随机函数产生随机数0、1,用于控制产生小写字母、大写字母的随机性,并产生随机字符串;(3)建立新的数组,

15、用户输入字符串;(4)用户输入字符串与随机字符串对比统计:若两者字符个数相同,则直接计算出正确率,否则提示字符串长度不对,退出系统。程序流程图:1.系统整体框图开始产生随机数,length为字符串的长度j=0jlengthjlengthnyflag=rand()%2输出随机字符串输入字符串guessnj+flag=1originj=a+rand()flag=0originj=a+rand(k=strlen(guess)n提示字符串长度不对k=lengthy统计输出正确率,退出系统2、正确率统计流程图n=0nlengthyguessi=originiyn+right+r=(float)right

16、/length输出正确率3.2.3逻辑功能程序#include#include#include#includeintmain()charorigin20;charguess20;intlength,intflag;intright=0;floatr;intk,j,i,n;srand(time(null);length=rand()%15+1;printf(*欢迎进入打字程序系统*n);printf(n);printf(thestringslengthis:%dn,length);for(j=0;jlength;j+)flag=rand()%2;if(flag)originj=a+rand()%

17、26;elseoriginj=a+rand()%26;/随机输入26个字母大小写任意printf(theoriginalstringis:);for(i=0;ilength;i+)printf(%c,origini);printf(npleaseguessthestring:);scanf(%s,guess);k=strlen(guess);if(k!=length)printf(lengtherror!n);return0;for(n=0;nlength;n+)if(originn=guessn)right+;printf(therightnumberis:%dn,right);r=(flo

18、at)right/length;printf(你的正确率是%fn,r);printf(谢谢使用!n);return0;3.2.4结果及完善方向打字前的界面:输入正确长度的字符串,显示正确率:输入的字符串长度错误,显示“lengtherror!”:程序结果分析:此程序功能上满足题目的基本要求:能够产生随机的字符串,每次产生的字符串内容、长度都不同;能够判断输入是否正确,能够输出正确率。程序完善方向:对于这个程序,不足的就是可以添加计时功能,在打字前,可以询问用户是否进行计时,还可以添加功能,由用户自己选择可从从其他文件导入一段字符串。3.3文本编辑器(a3)3.3.1设计题目及要求课题内容:设计

19、一个简单的文本编辑器,通过此课题,熟练掌握文本文件的操作及用字符数组或字符指针实现字符串操作的功能。课题要求:(1)编辑文本;(2)保存、打开指定位置的文本文件;(3)具有输入输出界面。3.3.2设计思想及程序流程框图系统整体框图开始choice1、写入一个0、退出2、读取文本文新的文本文件件并保存结束,退出结束,退出3.3.3逻辑功能程序#include#includeintmain()intchoice;char30;charch;file*fp;printf(*欢迎进入文本编辑器系统*nn);printf(0、退出系统1、写入并保存文件2读取文件n);printf(请选择(0/1/2):

20、);scanf(%d,&choice);switch(choice)case1:printf(请输入文件路径:);scanf(%s,);fp=fopen(,w+);/以写的方式建立一个新的文本文件if(!fp)printf(文件没有正常打开!n);exit(1);/文件没有正常打开printf(请输入内容(以#结束)n);ch=getchar();while(ch!=#)fputc(ch,fp);ch=getchar();fclose(fp);printf(n文件已保存!n);break;case2:printf(请输入文件路径:);scanf(%s,);/输入路径fp=fopen(,r);i

21、f(!fp)printf(文件没有正常打开!n);exit(1);printf(n文件内容如下:n);rewind(fp);/返回文件首,输出整个文件的内容doch=fgetc(fp);putchar(ch);while(ch!=eof);fclose(fp);break;case0:printf(退出系统n);break;printf(n谢谢使用此系统n);3.3.4结果及完善方向进入系统的界面:选择1,输入文件路径,写入文件内容并保存:选择2,读取文件内容:选择0,退出系统:程序结果分析:此程序在功能上基本满足要求,能实现文本文档的的写入、保存和读取。程序完善方向:没能实现文档的插入,删除

22、,查找等功能,软件用起来会不方便。3.4加密软件(a4)3.4.1设计题目及要求课题内容:设计一个加密程序。包括明文与密钥的转换。通过此课题,熟练掌握数组、格式输出、字符串处理、类型转换等。课题要求:(1)输入任意一段明文m,以及密钥k;(2)根据以下公式将其转换为密文c。ci=mi+k,其中i=0,1,n-1,k为密钥;(3)具有输入输出界面。3.4.2设计思想及程序流程框图设计思想(1)输入明文和密钥字符串;(2)运用公式ci=mi+k,其中i=0,1,n-1,k为密钥,进行加密;(3)解密是加密的逆运算程序流程图1.程序整体框图开始choice0、退出系统1、加密2、解密输入明文输入密文

23、输入密钥输入密钥输出加密结果输出解密结果3.4.3逻辑功能程序#include#include#includevoidjiami(char*a)charc100;inti,k,l;l=strlen(a);printf(输入密钥=);scanf(%d,&k);for(i=0;il;i+)ci=ai+k;cl=0;printf(加密结果:);printf(%sn,c);voidjiemi(char*b)chard100;inti,l,k;l=strlen(b);printf(输入密钥=);scanf(%d,&k);for(i=0;il;i+)di=bi-k;dl=0;printf(解密结果:);p

24、uts(d);intmain()intchoice;chara100,b100;printf(*欢迎进入加密系统*nn);printf(0、退出系统1、加密2、解密n);printf(请输入你的选择:);scanf(%d,&choice);switch(choice)case1:printf(请输入原文:);getchar();gets(a);jiami(a);break;case2:printf(输入密文:);getchar();gets(b);jiemi(b);break;case0:printf(退出系统);break;printf(n谢谢使用!);return0;3.4.4结果及完善方

25、向选择2,解密:选择1,加密:选择0,退出系统:程序结果分析:此程序基本完成功能,能实现字符串的加密与解密,具有较友好的界面。程序完善方向:此程序完成的是一个十分简单的加密过程,在实际生活中没有应用价值。应该往更复杂和专业的加密解密模块发展。3.5进制转换器(a5)3.5.1设计题目及要求课题内容:设计一个进制转换器程序。包括二进制、八进制、十进制、十六进制数互相转换。通过此课题,熟练掌握字符串、格式输出、进制换算的各种操作。课题要求:(1)可输入二进制、八进制、十进制、十六进制数;(2)将已输入的数转换成其余进制的数;(3)具有输入输出界面。3.5.2设计思想及程序流程框图设计思想(1)除十

26、进制外,其他进制按照字符串方式输入;(2)输入一个进制后,首先验证它的合法性;(3)验证合法之后首先转为一个十进制的数,再根据这个十进制的数输出其他进制的数。整体结构流程图开始输出界面choice1、二进2、八进3、十进4、十六5、退出制制制进制转为其转为其他进制他进制输出输出转为其转为其他进制他进制输出输出3.5.3逻辑功能程序#include#include#includevoidzhuan2(intk)/十进制转换成二进制数intb30;inti=0;while(k)bi=k%2;/取余数k=k/2;/取相除的整数商i+;i-;printf(二进制:);if(k=0)printf(%d,

27、0);while(i=0)printf(%d,bi-);/输出二进制数printf(n);voiddisplay()printf(*欢迎进入进制转换系统*n);printf(n);printf(1二进制n);printf(2八进制n);printf(3十进制n);printf(4十六进制n);printf(0退出n);printf(n);printf(*请选择:);intmain()charm100;intx,f=0;intn=0;intchoice;inti=0;display();scanf(%d,&choice);switch(choice)case1:f=0;while(!f)i=0;

28、f=1;printf(请输入二进制数:);scanf(%s,m);getchar();while(mi!=0)if(mi!=1&mi!=0)f=0;/若输入数字不为1或0则输入错误i+;if(!f)printf(您输入数值错误,不是二进制数!请重输!n);i=0;while(mi!=0)/二进制转换为十进制n=n*2;if(mi=1)n=n+1;i+;printf(n二进制数%s转换为其他进制结果如下:n,m);printf(八进制:%on,n);printf(十进制:%dn,n);printf(十六进制:%xn,n);break;case2:f=0;while(!f)f=1;i=0;prin

29、tf(请输入八进制数:);scanf(%s,m);getchar();while(mi!=0)if(mi7|mi0)f=0;i+;if(!f)printf(输入数值错误,不是八进制数!请重输n);i=0;while(mi!=0)n=n*8;n=n+mi-48;i+;printf(n八进制数%s转换为其他进制结果如下:n,m);zhuan2(n);printf(十进制:%dn,n);printf(十六进制:%xn,n);break;case3:printf(请输入十进制数:);scanf(%d,&x);printf(n十进制数%d转换为其他进制结果如下:n,x);zhuan2(x);printf

30、(十进制:%dn,x);printf(十六进制:%xn,x);break;case4:f=0;while(!f)i=0;f=1;printf(请输入十六进制数:);scanf(%s,m);getchar();while(mi!=0&f)if(mi=0)f=1;elseif(mi=a&mi=a&mi=f)f=1;elsef=0;if(!f)printf(输入数值错误,不是十六进制数!请重输n);i+;i=0;while(mi!=0)n=n*16;if(0=mi&mi=9)n=n+mi-48;if(a=mi&mi=f)n=n+mi-97+10;if(a=mi&mi=f)n=n+mi-65+10;i

31、+;printf(n十六进制数%s转换为其他进制:n,m);zhuan2(n);printf(八进制:%on,n);printf(十进制:%dn,n);break;case0:printf(退出n);break;printf(n谢谢使用!n);return0;3.5.4结果及完善方向选择1,输入的是二进制:选择2,输入的是八进制:选择3,输入的是十进制:选择4,输入的是十六进制:选择0,退出系统:程序结果分析:本程序基本实现功能,且能实现16以下的任意进制间的相互转换,在输入非法进制数时能报错提醒,并可以多次转换。程序完善方向:本程序只能实现整数进制之间的转换,应对代码进行进一步优化,以实现小

32、数进制间的相互转换;数字的大小受到一定的限制,可以尝试用数组解决大数间进制转换问题;题输出界面可以进一步美化。3.6学生成绩核算系统的设计与实现(b1)3.6.1设计题目及要求课题内容:设计一个学生成绩核算系统。能实现从文件中读取学生成绩资料,并提供成绩查询统计服务。通过此课题,熟练掌握文件、数组、结构体的各种操作以及友好界面的设计。课题要求:(1)按班级按课程从文件中读入相应的平时成绩、期中考试成绩和期末考试成绩。(2)三个成绩对总评成绩的百分比被定义为常数,各占总成绩的30%、30%和40%。(3)计算每位学生的总评成绩。(4)计算该班级本课程的总平均成绩。(5)计算处于优、良、中、及格、

33、不及格的学生人数以及占总人数的百分比。其中100-90为优,89-80为良,79-70为中,69-60为及格,60分以下为不及格。(6)按要求输出成绩在优、良、中、及格、不及格各区间的学生学号、成绩。3.6.2设计思想及程序流程框图设计思想:(1)建立一个stu结构体,包含学生学号、平时成绩、期中成绩、期末成绩、总评成绩、等级结构体常量;(2)从文件中读出数据赋给结构体相应的变量,对数据进行计算得出综合成绩、等级赋给相应结构体变量;(3)查询时,通过不断比较结构体中的学号名与输入的学号找出该学号对应的的结构体变量,对期中的数据进行处理输出;程序流程图:1、程序系统框图开始输入选项输入错误choice=1choice=2choice=3choice=4choice=5choice=6choice=7choice=0从文计算按总退出系统件中并显读取示成按评成等级绩排按学号等级列表保存到文数据绩查询序查询件结束按任意键返回主菜单2、查询部分程序流程(以查询学号为例)开始输入待查询学号temp10i=0查询的学号不存在iamountflag=strcmp(temp,listi.code)i+flag=0?输出学生信息结束3、计算总评成绩和等级程序流程图开始i=0ni90?lis

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论