软件设计报告_第1页
软件设计报告_第2页
软件设计报告_第3页
软件设计报告_第4页
软件设计报告_第5页
免费预览已结束,剩余59页可下载查看

下载本文档

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

文档简介

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 逻辑功能程序

2、 153.3.4 结果及完善方向 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 模拟电信计费系统的设计与

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

4、固已学过的编程知识,全面提高编程技能,在编程风格、调试器的使用、测试技术等方面得到全面训练。学生在程序设计过程中, 学生需要查找各种资料获取有用信息解决实际问题,自学相关知识,提高文档书写能力,加强团队合作意识,提高口头表达能力。任务: 软件设计课题共分A 、 B 两档。 A 档共 5 题,题目较简单,第一周完成;B档共 2 题,题目是综合性的,较复杂,第二周完成。三、 考核及报告要求1. 考核根据学生平时的上机出勤情况、为上机所作的准备情况、上机时的表现、程序的完成情况、验收答辩时的表现、报告的完成情况等综合打分。等级为:优秀、良好、中等、及格、 不及格。2. 报告要求报告以电子版形式递交,

5、要求书写规范、文字简练、语句通顺、图表清晰,见本大纲最后的一个软件设计报告样例。四、主要仪器设备硬件: 微型计算机软件:C、 C+、 Visual C+ 等五、参考书参考书【 1】朱立华,王立柱C 语言程序设计北京:人民邮电出版社,2009【 2】朱立华,朱建,俞琼面向对象程序设计及C+ 北京:人民邮电出版社,200820073】张引等C 程序设计基础课程设计浙江:浙江大学出版社,第二章软件开发平台简介本次实验所用的开发软件是Microsoft Visual C+ 6.0 。Visual C+ 是一个功能强大的可视化软件开发工具。自 1993 年 Microsoft 公司推出VisualC+1

6、.0 后, 随着其新版本的不断问世,Visual C+ 已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了Visual C+.NET(Visual C+7.0) ,但它的应用的很大的局限性,只适用于 Windows 2000,Windows XP和 Windows NT4.0。所以实际中,更多的是以 Visual C+6.0 为平台。VC+6集成开发环境中集成了编辑器、编译器、连接器以及调试程序,覆盖了的开发应 用程序的整个过程,与开发其他高级语言的程序一样,开发一个C/C+语言程序包括编辑、编译、链接和运行几个步骤。1编辑编辑是将编写好的C/C+语言源程序通过输入设备录入到计算机保存

7、,生成扩展名为.c(或.cpp)的源程序文件。编辑源程序的方法有两种:一种是选用C+集成开发环境中的编辑器,这是最常用的方法;另一种是使用计算机中的其他文本编辑器,如写字板、记事本 等。2编译编译是将已生成的C/C+语言源程序代码转换为机器可识别的目标代码(即二进制代码) ,生成相应的扩展名为.obj 的目标文件。编译又包括预处理和编译两个子过程,先执行程序中的以#开头的预处理命令进行预处理,然后再进行正常的编译过程。在编译过程中主要进行词法和语法分析,发现有不符合的,及时以 error 或 warning 信息提示用户,用户必须重新修改源程序文件直至编译正确才能进行下面的步骤。3链接链接是在

8、编译生成的目标代码中加入某些系统提供的库文件代码,进行必要的地址链接,最后生成扩展名为.exe 的可执行文件。4运行生成了可执行文件后就可以运行程序。运行程序的方法很多,最常用是选择集成环境中的“运行”命令来运行可执行文件;另一种方法是在MS-DO求示符后直接键入可执行文件名(如果主函数有形式参数,则应提供实在参数),按回车确认。运行后在显示器上显示结果。需要说明的是,在以上 4 个过程中都有可能出错,无论是哪一个阶段出了错,都应该回到编辑步骤,因为如果源文件有错,就无法保证后面各步生成正确的文件。如果是运行期出错,则程序存在逻辑上的错误,要借助调试器找出错误才能保证源程序的修改正确。C语言程

9、序的开发在特定的集成开发环境下进行。集成环境中提供了编辑器、编译器、链接器、 调试器等多种工具,使得程序员从源程序的编辑到最后的运行均可在集成环境中完成。第三章软件设计的内容3.1 分数统计软件(A1)3.1.1设计题目及要求课题内容:设计一个分数统计程序。包括学生信息的输入输出以及排序。通过该课题全面熟悉结构体数组、字符串的使用以及排序的方法,掌握程序设计的基本方法及友好界面的设计。课题要求:(1)输入某班级学生的姓名、分数;(2)对(1)的分数进行降哥排列并输出;(3)具有输入输出界面。3.1.2设计思想及程序流程框图设计思想(1)建立一个student结构体,包含数据成员姓名、 分数,分

10、别用于存放学生的姓名和分数。(2)输入学生人数和基本信息。(3)采用选择排序法对学生分数进行排序,通过循环比较ai.score和sj.score的大小并交换顺序实现分数的降序排列。(4)通过菜单选择程序的功能。程序流程图1 .系统整体框图退出系统2 .排序过程3 .1.3逻辑功能程序#include<stdio.h>#include<string.h>#include<stdlib.h>struct Studentchar name20;double grades;;typedef struct Student Student;void Display。pr

11、intf("*主菜单*n");printf("0、退出 1、输入学生信息 2、降序输出成绩n");printf("n");printf("* 请选择 (0/1/2):");int Input(Student *pa)int m,i,p=1;printf("* 请输入学生人数:");scanf("%d",&m);for(i=0;i<m;i+)printf("*name(%d):",p);scanf("%s",&pai

12、.name);printf("grades(%d):",p);scanf("%Lf",&pai.grades);p+;printf(" 输入完毕n");return m;void SelectSort(Student *pa,int n)int i,j,max,k;Student temp;for(i=0;i<n-1;i+)max=i;for(j=i+1;j<n;j+)if(paj.grades>pamax.grades) max=j;if(max!=i)temp=pai;pai=pamax;pamax=te

13、mp;printf(" 降序排列为:n");for(k=0;k<n;k+)printf("%s:%gn",,pak.grades);void main() int choice;int a=0;Student *sa;sa = (struct Student *)malloc(a * sizeof(struct Student);printf("*欢迎进入学生成绩统计系统*n");printf("n");Display。;scanf("%d",&choice);sw

14、itch(choice)case 1:a=Input(sa);printf("n");Display。;scanf("%d",&choice);if(choice!=2) break;elsecase 2:SelectSort(sa,a);break;case 0:printf("退出 n");printf("* 谢谢使用 n");4 .1.4结果及完善方向主菜单: 堤序受口小吟灶启面 ;二:=彳I o |回 卜欢迎进入学生成绩统计系统”二事主菜单*卜退出1、输入学生信息2.降序输出魔卜请选择选择1,输入学

15、生信息:若再选择2,降序输出学生成绩:C0/lz2>continue主菜单.K输入学生信息2.降序输出成绩*主菜单餐0.退出工、输入学生信息,垢降序输出成绩;请选择 £0/1,2 5: 1输入学生人数:口b*name<l> :.'、红*n Ante2,二 nHdfls<2>:&7 *nar»e<3>:,口白 :jrAdec <3> :55 输入完毕DtDe bugl .ex*若再选择其他,则退出系统:程序分析:此程序功能上满足基本的题目要求,能够做到输入学生的姓名和成绩,能够按成绩降哥排列并输出。完善方向

16、基本功能已实现,对于实际的系统,接下来完善的功能的是能够选择不同的科目进行输 入,能够选择进行降哥或者升哥排序 ,同时能添加或删除学生信息 ,对于成绩相同的学生进行 并列排名.3.2打字软件(A2)3.2.1 设计题目及要求课题内容:设计一个打字程序。包括随机产生字符串,以及字符串比较和统计。通过此课题,熟练 掌握数组、格式输出、字符串处理等。课题要求:(1)随机产生一字符串,每次产生的字符串内容、长度都不同;(2)根据(1)的结果,输入字符串,判断输入是否正确,输出正确率;(3)具有输入输出界面。3.2.2设计思想及程序流程框图设计思想:(1)利用随机函数产生随机数作为产生的字符串长度;(2

17、)利用随机函数产生随机数 0、1,用于控制产生小写字母、大写字母的随机性,并产生随机字符串;(3)建立新的数组,用户输入字符串;(4)用户输入字符串与随机字符串对比统计:若两者字符个数相同, 则直接计算出正确率,否则提示字符串长度不对,退出系统。程序流程图:1.系统整体框图2、正确率统计流程图3.2.3 逻辑功能程序#include<string.h>#include<stdlib.h>#include<stdio.h>#include<time.h>int main()char origin20;char guess20;int length

18、,int flag;int right=0;float r;int k,j,i,n;srand(time(NULL);length=rand()%15+1;printf("*欢迎进入打字程序系统*n");printf("n");printf("the string's length is:%dn",length);for(j=0;j<length;j+)flag=rand()%2;if(flag)originj='a'+rand()%26;else/随机输入26 个字母大小写任意originj='

19、A'+rand()%26;printf("the original string is:");for(i=0;i<length;i+)printf("%c",origini);printf("nplease guess the string:");scanf("%s",guess);k = strlen(guess);if (k != length)printf("length error!n");return 0;for(n=0;n<length;n+)if(originn

20、=guessn) right+;printf("the right number is:%dn",right);r= (float)right/length;printf(" 你的正确率是%fn",r);printf(" 谢谢使用!n");return 0;3.2.4 结果及完善方向打字前的界面:'D 程序 2'. bdg2.exe"*欢迎进入打字程序系指*二the string1 s length is :14tJ-ic 口i*土日土na 1 .七NJing is « FlaKoOwToCZMUl

21、LB rplease guess the string :输入正确长度的字符串,显示正确率:'HD'-.2D«bug2,exe'f 欢迎进人打字程序系统一the aitrinar, a length 13*14the original string is:FLKeOwTeCZxWLBploaoo frucboa the ofc ring :FLKoknjFjdmw i&the piglht number is -4你院正旗率是0.2晒7m谢谢使用!Press 盛G" k旧y 上口 conf; inue半: 输入的字符串长度错误,显示“leng

22、th error! "口.理序纯近咱2次 *欢或选人打字程序系统E*Lhe string' S Itsiiy tli 1雅:5 tl*e1 st ri rqi i 身 rlqn/mjjlease gues£ the stFing-kjjhhggg length errsr!duy kt±% Lu con l li me程序结果分析:此程序功能上满足题目的基本要求:能够产生随机的字符串,每次产生的字符串内容、 长度都不同;能够判断输入是否正确,能够输出正确率。程序完善方向:对于这个程序,不足的就是可以添加计时功能,在打字前,可以询问用户是否进行计时,还 可以

23、添加功能,由用户自己选择可从从其他文件导入一段字符串。3.3文本编辑器(A3)3.3.1 设计题目及要求课题内容:设计一个简单的文本编辑器,通过此课题,熟练掌握文本文件的操作及用字符数组或字 符指针实现字符串操作的功能。课题要求:(1)编辑文本;(2)保存、打开指定位置的文本文件;(3)具有输入输出界面。3.3.2设计思想及程序流程框图 系统整体框图3.3.3逻辑功能程序#include<stdio.h>#include<stdlib.h>int main()int choice;char 30;char ch;FILE *fp;printf("*欢迎进入文本

24、编辑器系统*nn");printf("0、退出系统1、写入并保存文件2读取文件n");printf("请选择(0/1/2):");scanf("%d",&choice);switch(choice)case 1:printf("请输入文件路径:");scanf("%s",);fp=fopen(,"w+");/以写的方式建立一个新的文本文件if(!fp)printf("文件没有正常打开!n");exit(1);/文件没有正常打开printf

25、(" 请输入内容(以 #结束)n");ch=getchar();while(ch!='#')fputc(ch,fp);ch=getchar();fclose(fp);printf("n 文件已保存!n");break;case 2:printf(" 请输入文件路径: ");scanf("%s",);/ 输入路径fp=fopen(,"r");if(!fp)printf(" 文件没有正常打开!n");exit(1);printf("n 文件内容如下:n&

26、quot;);rewind(fp);/ 返回文件首,输出整个文件的内容doch=fgetc(fp);putchar(ch);while(ch!=EOF);fclose(fp);break;case 0:printf(" 退出系统n");break;printf("n 谢谢使用此系统n");3.3.4结果及完善方向 进入系统的界面:选才i 1,输入文件路径,写入文件内容并保存: *:'理序以*漱迎进 久 文 本编辑器系统*三”普出系统1,写入并保存文件?读取文件耀撞氏支件路径请输入内容小结束123456querttt*件已保存七M谢使用此系统Pre

27、ss Huy key to cantiniLe选才i 2,读取文件内容:选择0,退出系统: 口,胡式 Debugs士叫*欢迎进入文本编辑器系杭*三1幺工出系统八耳人并俣存文件2读取文件睛诜屋(0/1/2 1 0退出系统谢谢使用此系烧Press any key tc continue程序结果分析:此程序在功能上基本满足要求,能实现文本文档的的写入、保存和读取。程序完善方向:没能实现文档的插入,删除,查找等功能,软件用起来会不方便。3.4加密软件(A4)3.4.1 设计题目及要求课题内容:设计一个加密程序。包括明文与密钥的转换。通过此课题,熟练掌握数组、格式输出、 字符串处理、类型转换等。课题要求

28、:(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.程序整体框图3.4.3 逻辑功能程序#include<stdio.h>#include<string.h>#include<stdlib.h>void jiami(char *a)char c100

29、;int i,k,l;l=strlen(a);printf(" 输入密钥=");scanf("%d",&k);for(i=0;i<l;i+)ci=ai+k;cl='0'printf(" 加密结果:");printf("%sn",c);void jiemi(char *b)char d100;int i,l,k;l=strlen(b);printf(" 输入密钥=");scanf("%d",&k);for(i=0;i<l;i+)di=

30、bi-k;dl='0'printf(" 解密结果:");puts(d);int main()int choice;char a100,b100;printf("* 欢迎进入加密系统*nn");printf("0 、退出系统1 、加密2、解密n");printf(" 请输入你的选择:");scanf("%d",&choice);switch(choice)case 1: printf(" 请输入原文:");getchar(); gets(a); jiam

31、i(a); break;case 2: printf("输入密文:"); getchar();gets(b); jiemi(b); break;case 0: printf("退出系统");break; printf("n 谢谢使用!"); return 0;3.4.4 结果及完善方向选才i 2,解密:*欢迎王人力密系 所*I退出系统人加密引解密请蒯卓系的诜择:2输入密文:qt«rQWER897强人密自力解曲结具n * ucpOU CPC 75谢谢僵尸,Pi*8 any key to cont inue选才? 1,加密:选;

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

33、进制按照字符串方式输入;(2)输入一个进制后,首先验证它的合法性;(3)验证合法之后首先转为一个十进制的数,再根据这个十进制的数输出其他进制的数。整体结构流程图3.5.3 逻辑功能程序#include<stdio.h>#include<string.h>#include<stdlib.h>void zhuan2(int k)/ 十进制转换成二进制数int b30;int i=0;while(k)bi=k%2;/ 取余数k=k/2;/ 取相除的整数商i+;i-;printf(" 二进制 :");if(k=0)printf("%d&

34、quot;,0);while(i>=0)printf("%d",bi-);/输出二进制数printf("n");void display()printf("* 欢迎进入进制转换系统*n");printf("n");printf("1 二进制n");printf("2 八进制n");printf("3 十进制n");printf("4 十六进制n");printf("0 退出n");printf("n&

35、quot;);printf("* 请选择:");int main()char m100;int x,f=0;int n=0;int choice;int i=0;display();scanf("%d",&choice);switch(choice)case 1: f=0;while(!f)i=0;f=1;printf(" 请输入二进制数:");scanf("%s",m);getchar();while(mi!='0') if(mi!='1' && mi!=&

36、#39;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;case

37、2: f=0;while(!f)f=1;i=0;printf(" 请输入八进制数:");scanf("%s",m);getchar();while(mi!='0') if(mi>'7' | mi<'0')f=0;i+;if(!f)printf(" 输入数值错误,不是八进制数i=0;while(mi!='0')n=n*8;n=n+mi-48;i+;printf("n 八进制数%s 转换为其他进制结果如下:zhuan2(n);printf(" 十进制:%

38、dn",n);printf(" 十六进制:%xn",n);break;case 3: printf(" 请输入十进制数:");scanf("%d",&x);printf("n 十进制数%d 转换为其他进制结果如下:zhuan2(x);printf(" 十进制:%dn",x);printf(" 十六进制:%xn",x);break;case 4: f=0;while(!f)i=0;f=1;printf(" 请输入十六进制数:");scanf(&quo

39、t;%s",m);getchar();while(mi!='0'&&f)if(mi<='9' && mi>='0')f=1;else if(mi>='a'&&mi<='f') f=1;else if(mi>='A'&&mi<='F') f=1;else f=0;if(!f)! 请重输n");n",m);n",x);printf(" 输入

40、数值错误,不是十六进制数!请重输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+;printf("n十六进制数s转换为其他进制:n",m);zhuan2(n);pr

41、intf("八进制:on",n);printf("十进制:dn",n);break;case 0: printf("退出 n");break;printf("n谢谢使用!n");return 0;3.5.4结果及完善方向选择1,输入的是二进制:" DA星序 5'.Debd 孰5 exe"制 手制勺进 进进过一八出12 3 4 0RS1 用一送 逸即心刖娄:能进番六二八丰1234不是二进制数!请重输! niriu 11R10转换为其他遵朱.结果如下322bla渐附使月,ress anuke

42、y to continue请输AJI法制数:12343.谢使用!Press ony hey to coninmcD.st5.Debug-,5-x#'112 3 4 0选遇进7VJ出选才? 2,输入的是八进制:八率期数12343转换为其他进制结具如b :二进,,1 二8£ 010011100011十进去:E347/匍:14e3选才¥ 3,输入的是十进制:1267转换为其他强制培里如下. 01001111901112674f3to continue射源使用,'i*ess anyD;*W5Dfbug5.Hi=i 12)3数, J制 制制制进 进进进六制利勺进 进进

43、进六中 -选择含3Si人十法制数:12G选才¥4,输入的是十六进制:1234*bc转换为其他遴制.U10010101B016101 011 HOB11Q64E27419Q9010B:asdff是十六进制数,请重辅1234abeKeu to continue射谢使用T ress: any«欢迎进入进制转换系统”,Debug-5,exe'六逑进进司司进 进K进大出娄 制,制 违误法 4窜一八 多十值十 蝌入梓 2县里目选择0,退出系统:* 'D:.5Dehug5.e)ie"*欢迎进人选制转推导F程序结果分析:本程序基本实现功能,且能实现16以下的任意进

44、制间的相互转换,在输入非法进制数时能报错提醒,并可以多次转换。程序完善方向:本程序只能实现整数进制之间的转换,应对代码进行进一步优化,以实现小数进制间的相互转换;数字的大小受到一定的限制,可以尝试用数组解决大数间进制转换问题;题输出界面可以进一步美化。3.6 学生成绩核算系统的设计与实现(B1)3.6.1 设计题目及要求课题内容:设计一个学生成绩核算系统。能实现从文件中读取学生成绩资料,并提供成绩查询统计服务。通过此课题,熟练掌握文件、数组、结构体的各种操作以及友好界面的设计。课题要求:( 1 )按班级按课程从文件中读入相应的平时成绩、期中考试成绩和期末考试成绩。( 2)三个成绩对总评成绩的百

45、分比被定义为常数,各占总成绩的30%、 30%和 40%。( 3)计算每位学生的总评成绩。( 4)计算该班级本课程的总平均成绩。( 5) 计算处于优、良、 中、 及格、 不及格的学生人数以及占总人数的百分比。其中 100-90为优, 89-80 为良, 79-70 为中, 69-60 为及格,60 分以下为不及格。( 6)按要求输出成绩在优、良、中、及格、不及格各区间的学生学号、成绩。3.6.2 设计思想及程序流程框图设计思想:( 1 )建立一个stu 结构体,包含学生学号、平时成绩、期中成绩、期末成绩、总评成绩、等级结构体常量;( 2) 从文件中读出数据赋给结构体相应的变量,对数据进行计算得

46、出综合成绩、等级赋给相应结构体变量;( 3) 查询时, 通过不断比较结构体中的学号名与输入的学号找出该学号对应的的结构体变量,对期中的数据进行处理输出;程序流程图:1、程序系统框图2、查询部分程序流程(以查询学号为例)3、计算总评成绩和等级程序流程图i+3.6.3 逻辑功能程序#include<stdio.h>#include<stdlib.h>#include<string.h> #include<conio.h>struct stuchar code10; float s1,s2,s3; double score;char grade; te

47、mp;void set()printf(" 1、从文件读取数据n");printf(" 2、计算并显示成绩n");printf(" 3、按等级查询n");printf(" 4、按总评成绩排序n");printf(" 5、按学号查询n");printf("6 、等级列表n");printf(" 7、保存到文件n");printf(" 0、退出系统 nn");printf("请选择功能:");void display()

48、printf("*欢迎进入成绩核算系统*n");printf("*nn");*int read stu *list) int n;int i=0;FILE *fp;fp=fopen("D:note.dat.txt","r");fscanf(fp,"%d",&n);for(i=0;i<n;i+) (fscanf(fp,"%s %f %f %f",listi.code,&listi.s1,&listi.s2,&listi.s3); print

49、f("ni n");printf("1 学号 平时成绩I期中成绩I期末成绩I n");printf("In");for(i=0;i<n;i+)printf("%s %5.1lf%5.1lf%5.1lfn",listi.code,listi.s1,listi.s2,listi.s3); printf("1n");printf("nn读取文彳成功!按任意键继续 n");getch(); fclose(fp); return n; void view(struct stu *

50、list,int amount) (int i=0;double average=0;printf("n n");printf(" 1 学号 平时1期中1期末|总分1 等级1 n");printf(" I n");for(i=0;i<amount;i+) (average+=listi.score;printf(" %10s%6.1f%6.1f%6.1f%6.1f%cn",listi.code,listi.s1,listi.s2,listi.s3,listi.score,listi.grade); print

51、f(" 1 n");average/=amount; printf("本班总人数 %d 本班平均成绩 %.1fn",amount,average);printf("nnnnn* 按任意键继续 * n");getch();void paixu(struct stu *list,int amount)double temp;float temp3;char temp1;char temp210;int i,j;for(i=0;i<amount;i+)for(j=i+1;j<amount;j+)if(listj.score>

52、;listi.score) /比较分数 temp=listj.score;listj.score=listi.score;listi.score=temp;strcpy(temp2,listj.code);strcpy(listj.code,listi.code);strcpy(listi.code,temp2);temp3=listj.s1;listj.s1=listi.s1;listi.s1=temp3;temp3=listj.s2;listj.s2=listi.s2;listi.s2=temp3;temp3=listj.s3;listj.s3=listi.s3;listi.s3=temp

53、3;temp1=listj.grade;listj.grade=listi.grade;listi.grade=temp1; view(list,amount);void calculate(struct stu *list,int amount)int i=0;for(i=0;i<amount;i+)(listi.score=listi.s1*0.3+listi.s2*0.3+listi.s3*0.4;if (listi.score>=90)listi.grade='A'else if (listi.score>=80) listi.grade='B

54、'else if (listi.score>=70) listi.grade='C'else if (listi.score>=60) listi.grade='D'elselisti.grade='E'display();view(list,amount); void findgrade(struct stu *list,int amount)int i=0,j=0;char g;display();printf("nnn请选择查询的等级输入大写(A/B/C/D/E):");getchar();scanf

55、("%c",&g);printf("n1 n");printf(" 1 学号 平时1期中1期末|总分1 等级1 n");printf(" In");for(i=0;i<amount;i+) (if(listi.grade=g) (j+;printf("%10s%6.1f%6.1f%6.1f%6.1f%cn",listi.code,listi.s1,listi.s2,listi.s3,listi.score,listi.grade);printf(" 1n");printf("n等级为%c 总共有d 人, 总人数%d ,占总人数的.2lfn",g,j,amount,(double才/amount);printf("nn getch();*按任意键继续* n"void gradelist(struct

温馨提示

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

评论

0/150

提交评论