南邮软件设计Word格式.docx
《南邮软件设计Word格式.docx》由会员分享,可在线阅读,更多相关《南邮软件设计Word格式.docx(53页珍藏版)》请在冰豆网上搜索。
2.4.2课题要求:
2.4.3设计思想及程序流程框图 18
2.4.4源程序 19
2.4.5运行结果 22
2.5进制转换器(A5) 23
2.5.1课题内容:
23
2.5.2课题要求:
2.5.3设计思想及程序流程框图 23
2.5.4源程序 24
2.5.5运行结果 28
2.6学生成绩核算系统的设计与实现(B1) 29
2.6.1课题内容:
29
2.6.2课题要求:
2.6.3设计思想及程序流程框图 29
2.6.4源程序 31
2.6.5运行结果 38
2.7模拟电信计费系统的设计与实现(B2) 39
2.7.1课题内容:
39
2.7.2课题要求:
2.7.3设计思想及程序流程框图 39
2.7.4源程序 43
2.7.5运行结果 52
第三章 心得体会 53
40
第一章 软件设计介绍
1.1、软件设计的目的
通过集中时间上机实验,对学生的程序设计能力进行一次综合训练,使学生充分发挥已有的编程能力,熟悉编译环境。
选择若干课题,进行审题、分析、设计和调试,在程序准备、程序实现、完成文档、答辩验收过程中,将全面巩固已学过的编程知识,全面提高编程技能,在编程风格、调试器的使用、测试技术等方面得到全面训练。
学生在程序设计过程中,学生需要查找各种资料获取有用信息解决实际问题,自学相关知识,提高文档书写能力,加强团队合作意识,提高口头表达能力。
1.2、软件设计的任务
《软件设计》课题共分A、B两档。
A档共5题,题目较简单,第一周完成;
B档共
2题,题目是综合性的,较复杂,第二周完成。
1.3、报告要求
报告以电子版形式递交,要求书写规范、文字简练、语句通顺、图表清晰,见本大纲最后的一个软件设计报告样例。
1.4、主要仪器设备
硬件:
微型计算机
软件:
C、C++、VisualC++等
第二章软件设计内容
2.1分数统计软件(A1)
设计一个分数统计程序。
包括学生信息的输入输出以及排序。
通过该课题全面熟悉数组、字符串、文件的使用,掌握程序设计的基本方法及友好界面的设计。
(1)输入某班级学生的姓名、分数;
(2)对
(1)的分数进行降幂排列并输出;
(3)具有输入输出界面。
程序流程框图:
开
始
输出开始菜单
输入选项
a
a=1
a=2
a=3
输入学
生人数n
用程序将学生
分数排序
结 束
输入学生姓名
和分数
输出排序
设计思想:
先输出程序菜单,然后按照菜单选项进行操作,选择选项一:
即先输入要排序的学生人数,然后利用循环语句按次输入学生姓名和成绩,直至将学生姓名和分数全输入,输入完后按enter后,在程序界面上显示刚才输入的内容。
选择选项二:
则运行程序中的按照成绩的降序功能输出排序后的学生学号、学生姓名和学生成绩。
选择选项三:
则程序正常退出。
#include<
stdio.h>
#include<
stdlib.h>
string.h>
math.h>
structstudent
{
intID;
charname[10];
//学生姓名floatscore;
//学生成绩
}stu[100];
intnum;
voiddis_menu();
//菜单显示函数voidset_menu();
//菜单设置程序voidset_inf();
//学生信息输入函数voiddis_inf();
//学生信息显示函数voiddec_sort();
//学生成绩降序排列voidXD_transfer();
intmain()
while
(1)
}
return0;
dis_menu();
set_menu();
voiddis_menu()
printf("
\t****************************************************************\n"
);
\t* 分数统计程序 *\n"
printf("
\t*
*\n"
1、输入学生数据
2、成绩降序排列
3、退出程序
\t* *\n"
\t请选择你要进行的操作:
"
voidset_menu()
charn[100];
scanf("
%s"
n);
if(strlen(n)>
1)
else
printf("
\t输入错误!
请重新输入:
switch(*n)
case'
1'
:
XD_transfer();
set_inf();
dis_inf();
break;
case'
2'
dec_sort();
3'
printf("
\t"
exit
(1);
default:
voidset_inf()
inti;
for(i=0;
i<
num;
i++)
stu[i].ID=i+1;
\t学号:
%d\n"
stu[i].ID);
\t姓名:
stu[i].name);
\t成绩:
%f"
&
stu[i].score);
\n"
voiddis_inf()
\t学生成绩统计如下:
\t%-s\t%-10s\t%-8s\t\n"
"
学号"
姓名"
成绩"
\t%-d\t%-10s\t%-8g\t\n"
stu[i].ID,stu[i].name,stu[i].score);
voiddec_sort()
inti,j,max_index,n=num;
structstudentstu_temp;
n-1;
max_index=i;
for(j=i+1;
j<
n;
j++)
if(stu[j].score>
stu[max_index].score)max_index=j;
if(max_index!
=i)
stu_temp=stu[i];
stu[i]=stu[max_index];
stu[max_index]=stu_temp;
voidXD_transfer()
chartemp[100],ch;
inti=0,flag=1,count=0;
while(flag)
i=0;
flag=0;
count=0;
fflush(stdin);
//清空输入缓冲区,确保读入无错
\t请输入学生人数:
while((ch=getchar())!
='
\n'
)
if(ch<
'
0'
||ch>
9'
\t输入数字有误!
flag=1;
break;
temp[i]=ch;
count++;
i++;
temp[i]='
\0'
;
//输入正确八进制结束
for(i=0;
count;
num=num+(temp[i]-'
)*(int)pow(10,(count-i-1));
//计算值
2.2打字程序(A2)
设计一个打字程序。
包括随机产生字符串,以及字符串比较和统计。
通过此课题,熟练掌握数组、格式输出、字符串处理等。
(1)随机产生一字符串,每次产生的字符串内容、长度都不同;
(2)根据
(1)的结果,输入字符串,判断输入是否正确,输出正确率;
2.2.3设计思想及程序流程框图
先设计一个欢迎进入打字程序的菜单,然后就由程序随机产生一个任意长度的字符串(大小写的英文字母),然后由用户输入字符串里显示的字母,输入完后按
enter结束输入,最后程序输出用户打字的正确率。
接着一个选项,询问用户是否继续进行打字练习。
选择是则打字练习继续上述的操作;
选择退出程序则退出程序。
输出欢迎菜单
输出随机产
生的字符串
输入字符串
输出打字正确率
yesorno
结束
2.2.4源程序
time.h>
#definemax_len40 //定义产生的字符串最长为40个字符voidrand_str(char*p,intlength);
doublecompare(char*p,char*s,intlength);
voiddisplay();
charch[20];
intlength;
doubleflag;
srand(time(NULL));
display();
do
charp[80]="
chars[80]="
\n\t \n"
length=1+rand()%max_len;
rand_str(p,length);
\t请输入上面的字母:
//减少不必