南京邮电大学软件设计.pdf
《南京邮电大学软件设计.pdf》由会员分享,可在线阅读,更多相关《南京邮电大学软件设计.pdf(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、南 京 邮 电 大 学软 件 设 计 报 告学号:姓名:专业:2014年 06月 2 3 日2014年 07月 0 4 日目 录第一章 软件设计介绍 1第二章软件开发平台简介.2第三章软件设计的内容.33.1 分数统计软件(A1).33.1.1 设计题目及要求.33.1.3 逻辑功,程.43.1.4 调试运行结果.63.1.5 问题与改进、完善方向.83.2 打字软件(A2).93.2.2 设计思想及程序流程框图.93.2.3 逻辑功能程序.103.2.4 调试运行结果.123.2.5 问题与改进、完善方向.133.3 文本编辑器(A3).1 43.3.1 设计题目及要求.143.3.2 鸟计
2、思号及程序流程框图.143.4 加密软件(A4)1.2 03.4.1 设计题目及要求.203.4.2 设计思想及程序流程框图.203.4.3 逻辑功能程序.213.4.4 调试运行结果.243.4.5 完善方向.253.5 进制转换器(A5).2 63.5.1 设计题目及要求.263.5.2 设计思想及程序流程框图.263.5.3 逻辑功能程序.273 5 4调试运行结果.313.5.5 问题与改进完善方向.323.6 学生成绩核算系统的设计与实现(BD.333.6.1 设计题目及要求.333.6.2 设计思想及程序流程框图.333 6 3逻辑功能程序.343.6.4 调试运行结果.403 6
3、 5完善方向 423.7 模血电信计费系统的设计与实现(B2).4 33.7.1 设计题目及要求.433.7.2 设计思想及程序流程框图.443.7.3 逻辑功能程序.4 53.7.4 调试运行结果.523.7.5 完善方向.54第四章心得体会.57第一章软件设计介绍一、软件设计的性质、目的本课程是一门技能训练课,为在校学生的必修课程。通过设计培养学生良好的编程习惯,使学生掌握编程的基本步骤,规范学生的编写程序的格式,锻炼学生编写程序的能力,为将来编写较大程序的打好基础。二、软件设计的任务通过集中时间上机实验,使学生充分发挥已有的编程能力,熟悉编译环境,选择若干课题,进行审题、分析、设计和调试
4、,并根据要求写出实验报告。三、实验内容软件设计课题共分A、B两档。A档 共5题,第一周完成;B档共2题,第二周完成。四、考核办法考核采取程序验收和面试的方法进行。其中,程序验收及面试占50%,实验报告占50%。在考核过程中,若发现抄袭程序者,所抄袭的程序按零分记。注:如有以下情况,视为抄袭:1、与已验收的程序明显雷同;2、面试时不能解释程序中的某些基本功能,或对所写程序一无所知。第二章软件开发平台简介M i c r o s o f t V i s u a l C+是 M i c r o s o f t 公司推出的开发 W i n 32 环境程序,面向对象的可视化集成编程系统。它不但具有程序框架
5、自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、0LE 2,W i n S o c k网络、3D控制界 面。它 以 拥 有“语法高亮”,In t e它i S e n s e(自动编译功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。这些特征明显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显著。2第三章 软件设计的内容3.1 分数统计软件(A
6、1)3.1.1 设计题目及要求题目:分数统计要求:(1)输入某班级学生的姓名、分数;(2)对(1)的分数进行降基排列并输出;(3)具有输入输出界面。3.1.2 设计思想及程序流程框图设计思想:先输出程序菜单,然后按照菜单选项进行操作,选择选项一:即先输入要排序的学生人数,然后利用循环语句按次输入学生姓名和成绩,直至将学生姓名和分数全输入,输入完后按enter后,在程序界面上显示刚才输入的内容。选择选项二:则运行程序中的按照成绩的降序功能输出排序后的学生学号、学生姓名和学生成绩。选择选项三:则程序正常退出。33.1.3逻辑功能程序要求:(1)输入某班级学生的姓名、分数;(2)对(1)的分数进行降
7、幕排列并输出;(3)具有输入输出界面。源代码:#include#include#include#includeint num;人数struct studentchar ClassJD20;班级学号char name20;姓名float score;成绩stu100;void menu。;菜单显示函数void choose();菜单选择void input_information();学生信息输入函数void output_information();学生信息显示函数void rank();学生成绩降序排列void number();控制学生人数函数void main()while(1)int
8、i;char ch;menu();choose();ch=getchar();/*/void menu()getchar();printf(nprintf(printf(n 分数统计程序 nn);nn);nnH);4)/*选择*/printf(M录入学生数据-请输入:1nnn);printf(显示学生数据-请输入:2nnn);printf(n成绩降序排列-请输入:3nnn);printf(Hprintf(t请正确选择(如:退 出 程 序-请 输 入:41,2,3 或贝J 4)nnM);void choose()char choos;do scanf(u%c&choos);while(choos
9、,4,);switch(choos)case Tcase 2case 3case 4number();input_information();break;output_information();break;rank();output_information();break;printf(nnr);exit(l);)/*输入*/void input_information()int i;for(i=0;inum;i+)printf(t班级学号:printf(”t 姓名:”);printf(t 成绩:);printf(n,);scanf(M%sn,&stui.Class_ID);scanf(%s
10、n,&stui.name);scanf(f”,&stui.score);)/*输出*/void output_information()(inti;printf(t学生成绩统计如下:n);printf(t班级学号 t姓名 t成绩n);for(i=0;inum;i+)printf(nt%s,stui.Class_ID);printf(nt%s,stui.name);printf(Mt%3.lfstuij.score);printfCXn1);printf(Mnu);5void rank()(int i,j,max,n=num;struct student temp;for(i=0;in-l;i+
11、)max=i;for(j=i+l;jstu max.score)max=j;if(max!=i)temp=stui;stui=stumax;stumax=temp;void number()printf(nt请输入学生人数:”);scanf(%d”,&num);printf(nnn);)3.1.4程序调试结果:1、录入学生数据:班级学号:B11020102旌 得 李 四成 绩:86请输入学生人数:3入示绩.录显脸2,1鹫生生序程曲/刀日事降,贝3二F青主星星QE1234A=A:A=请 正 确 选 择(如:A=_甘二二 舞牖号:B11020101:张三s 90半::B11020103:王五:98
12、62、显示学生数据:3 C:UserszhuzhongbaoDesktopiiDebugone.exe|D|回班级孥号B11020101B11020102B110201031.,.姓重王.T.口D女女1方录显螯2,即T-:2某生生序程4/刀事降藐入示绩斓分序.里入入入入-t主or主or主or主or1234半:3、排 名 显 不:名三四五绩.0.0.0力“068万9893 C:UserszhuzhongbaoDesktop璇件设ifDebugone.exeI o II 回班级挈号B11020103B11020101B11020102:下口D女文录入差生婺居一度感绩降序除罚一请,逾 出 程 序 一
13、 请!2,3或则4):31234半:4退出程序:名五三四姓王室责000.Z/-戈806口9987同 C:Us e r s zh u zh o n g b a o De s k t o p 1 i t t-De b u g o n e.e xe 上 米.2步,I H O A1A|显小学生数:感绩降序和遗 出 程 月请正确 选 择(如:1.2.3或则4)C:UserszhuzhongbaoDesktop.u!|回Press any key to continue.nr情输入姓名:请输入成绩:3.1.5:编程时候遇到的问题及解决方案网题:#includestruct student char nam
14、e20J;int score;);void main()struct student boy3;int i;char ch;for(i=0;i3;i+)printf(”请 输 入 姓 名:);gets(boyi.name);printf(”请输入成 绩:”);scanf(%dH,&boyi.score);printf(Mnu);printf(u 姓名 成绩 n);for(i=0;l3;i+)printf(u%s%dboyij.name,boyi.score);)如运行调试图片所示:当 第 二i+之 后,一回车就直接到达成绩输入 了,这就将导致无法正常数据输入。问 题 出 现 原 因:在后面该输
15、入的忖候直接跳过的原因是,在 结 束 前 一 个scanf输入时输入的回 车 被 后 一 个gets输入时接 受,也就是说前一个地方输入的“数据+回车”分别被两个地方接 受。解 决 方 法:scanf(%c,&a);getchar();8g e t s(S);就是将个空把那两个函数隔断,这样就是的前两个接受“数据+回车”,这样对第三个就没有影响了。3.1.6完善方向:本程序界面美观,通过程序优化,在输入菜单选择项时即使输入的是很长的混乱字符,程序也会提示你输入错误,不会发生程序崩溃的现象。同理,输入学生人数也一样,保证了程序的稳定可靠。如果程序可以中途停止,并自动保存刚输入的数据,待下次运行时
16、正常调出,则程序将更加完整,更具有实用性。3.2打字软件(A2)3 2 1 设计题目及要求题目:打字程序要求:(1)随即产生一字符串,每次产生的字符串内容、长度都不同;(2)根 据(1)的结果,输入字符串,判断输入是否正确,输出正确率;(3)具有输入输出界面。3.2.2设计思想及程序流程框图设计思想:先设计一个欢迎进入打字程序的菜单,然后就由程序随机产生一个任意长度的字符串(大小写的英文字母),然后由用户输入字符串里显示的字母,输入完后按e n t e r结束输入,最后程序输出用户打字的正确率。接着一个选项,询问用户是否继续进行打字练习。选择是则打字练习继续上述的操作;选择退出程序则退出程序。
17、程序流程框图:3 2 3逻辑功能程序程序名称:打字程序要求:(1)随机产生一字符串,每次产生的字符串内容、长度都不同;(2)根 据(1)的结果,输入字符串,判断输入是否正确,输出正确率;(3)具有输入输出界面。-*/#include#include#i nc 1 ude#include#include#define N 20 定义产生的字符串最长为10个字符int i,j,length;char ch,aN,bN;aN为输入,bN为随机产生void menu();void choose();void right(char*a,char*b,int length);void input(char
18、*a,int length);void found(char*b,int length);void main()menu();srand(time(NULL);length=1 +rand()%N;10while(l)choose();printf(nnt 请继续选择:);void menu()(Iprintf(n);printf(打字程序 n);printf(nn);printfC,产生随机字符串-请输入:1n);printf(n输入产生字符串-请输入:2n);printf(M正确率计算输出 请输入:3n);printf(n退 出 程 序-请 输 入:4n);printf(t请正确选择(如:
19、1,2,3 或贝IJ 4)void choose()char choos;do scanf(u%cn,&choos);while(choos,4,);switch(choos)case T:found(b,length);break;case 2:input(a,length);break;case 3:right(a,b,length);break;case 4:printf(n);exit(1);)void found(char*b,int length)(printf(HtH);for(i=0;i90&element97);ch=element;bij=ch;11printf(%c,el
20、ement);void input(char*a,int length)printf(”t请输入上面的字符串:”);fflush(stdin);清理缓冲区for(j=0;jlength;j+)scanf(n%c,&aj);void right(char*a,char*b,int length)ini numbers=0;double rate;for(i=0;ilength;i+)if(ai-bi)=0)numbers=numbers+1;)rate=1 OO.O*numbers/length;printf(t 正确率为:%4.2f%u,rate);)3.2.4结果及完善方向运行结果:n.ex
21、e请继矮选择:3正确率为:100.00Z请继续诿择:金R主0E主0E苴A产输正退O:文2确MQ资正MG继输请FJ请请择面S-K选上串符字4J选1234A=A=A:A:半:下1事二二:甄WW序4)花字字算程或i机生计,3随产去田,2生人确i12C:UserszhuzhongbaoDesktop、老子自己编Debugeight_ten.exeI d II 123寄C:UserszhuzhongbaoDesktop调试DebugsuiyL.|o|入、主目主目主月土X,t Tk kIV Ik%Tk事二二:明序4)代爰子算程或才机生计,3随产次田,2生入确11234A:A=A:A=1fH予.-距Ms序4
22、)田定于算程或才机生计,3随产志田,2生入确1产输正退4遒继续选择:3正确率为:0.00Z请继续链择:产输正退D:、卜攵2择择面选Q选上确fu贾正oe继输本DEW本目比目请继续选择:3正确率为:28.57%请继续选择:4Press any key to continue_=_.仝月苴DE仝0E主R3.2.5:编程时候遇到的问题及解决方案lj /*宇*萃 字 萃 *豕 豕 萃 萃 *豕 豕 萃/void input(char*a,int length)IIIprintf(nt请输入上面的字符串:”);for(j=0;jlength;j+)scanf(%c,&a|j);/*计算输入正确率*/voi
23、d right(char*a,char*b,int length)int numbers=0;double rate;for(i=0;ilength;i+)if(ai-bi)=0)numbers=numbers+1;)rate=100.0*numbers/length;printf(t 正确率为:%4.2f%H,rate);运行的时候总是出现计算正确率为0.00%,如图所示。问题原因:在输入字符串前没有清空缓冲区,这倒是出现错误。13解决方案:在输入scanf函数前先清空缓冲区,保证读入无误。326完善方向:这个程序在编写做成中遇到的麻烦不只是这一个,但是最值得注意的就是在输入字符串之前要清空
24、缓冲区。除此之外,对函数参数传值也是一个应该注意的地方。程序比较简明,逻辑严明,界面美观,可以通过宏定义控制N来调节输入的长度。3.3 文本编辑器(A3)3.3.1 设计题目及要求题目:文本编辑器要求:(1)编辑文本;(2)保存、打开指定位置的文本文件;(3)具有输入输出界面。3.3.2 设计思想及程序流程框图设计思想:先显示一个功能菜单。然后由用户选择是编辑文本还是读取文本或者退出程序。如果选择编辑文本的话就在某位置建立一个文本文档,然后向文本文件里写入你要写的东西。读文本文件的话就在见文本的位置读该文本,先判断文本是否存在,如果不存在则显示打开文本失败;如果存在则读取文本中的信息。选择退出
25、程序则退出程序。程序流程框图:输入n3.3.3逻辑功能程序程序名称:文本编辑器要求:(1)编辑文本:(2)保存、打开指定位置的文本文件;(3)具有输入输出界面。-*/#include#include#includevoid menu();void create_file(FILE*fp,char*fname);void write_file(FILE*fp,char*fname);void read_file(FILE*fp,char*fname);int main()(FILE*fp;int count=0;char numflOO;int flagl,flag2,flag3;char F_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南京 邮电大学 软件设计
限制150内