




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、山东建筑大学课 程 设 计 成 果 报 告题 目: 1.数组实现两个矩阵的相乘运算 2. 成绩分析问题课 程: 数据结构A课程设计院 (部): 管理工程学院专 业: 信息管理与信息系统 班 级: 信管*学生姓名:*学 号:*指导教师: *完成日期: 2016年12月29日目录目录2一、课程设计概述3二、课程设计题目一3用数组实现两个矩阵的相乘运算32.1问题描述32.2要求及提示:42.3详细设计42.4调试分析52.5运行结果及分析6三、课程设计题目二6成绩分析问题63.1问题描述63.2概要设计73.3存储结构73.4流程图73.5详细设计83.6调试分析83.7运行结果及分析22四、参考
2、文献:25一、课程设计概述本次数据结构课程设计共完成两个题:用数组实现两个矩阵相乘运算、成绩分析问题。使用语言:C编译环境:vc6.0二、课程设计题目一用数组实现两个矩阵的相乘运算2.1问题描述 #include “stdio.h” int r66; void mult(int a66 , int b66) main() int i,j; int num166,num266; printf(“请输入第一个矩阵的值:”,); for(i=1;i=6;i+) for(j=1;j=6;j+) scanf(“%d”,&num1ij); printf(“请输入第二个矩阵的值:”,); for(i=1;i
3、=6;i+) for(j=1;j=6;j+) scanf(“%d”,&num2ij); mult(num1,num2); printf(“n两个矩阵相乘后的结果为:”); for(i=1;i=6;i+) for(j=1;j=6;j+) printf(“%4d”,rij); printf(“n”);2.2要求及提示:1、 要求完善函数mult( ),2、 现有A,B两个矩阵,要求用上述程序求出A与B相乘后的运行结果, 4 1 3 6 9 0 3 1 0 1 2 4 7 3 1 4 2 1 1 3 1 0 5 2 0 1 0 2 9 1 1 9 2 1 3 0A= 4 1 0 2 6 0 B= 9
4、 1 2 4 0 0 1 2 1 0 1 5 3 0 0 1 0 1 3 0 0 5 1 2 2 1 0 6 8 92.3详细设计#include int r66;/得到的结果矩阵 void mult(int a66 , int b66) int i,j; int k; int sum; for (i = 0; i 6; i+) for (j = 0; j 6; j+) sum = 0; for (k = 0; k 6; k+) sum += aik*bkj; rij = sum; main() int i,j; int num166,num266; printf(请输入第一个6*6矩阵的值:
5、n); for(i=0;i6;i+) for(j=0;j6;j+) scanf(%d,&num1ij); printf(请输入第二个6*6矩阵的值:n); for(i=0;i6;i+) for(j=0;j6;j+) scanf(%d,&num2ij); mult(num1,num2); printf(n两个矩阵相乘后的结果为:n);for(i=0;i6;i+)for(j=0;j6;j+)printf(%4d ,rij);printf(n); 2.4调试分析问题一:现象:输入的时候输入七行共42个数据才到下一个矩阵的输入原因:在scanf的时候,scanf(%d,&num2ij);%d后面多了一
6、个空格2.5运行结果及分析三、课程设计题目二成绩分析问题3.1问题描述录入、保存一个班级学生多门课程的成绩,并对成绩进行分析。需求分析1.通过键盘输入各学生的多门课程的成绩,建立相应的文件input.dat2.对文件input.dat中的数据进行处理,要求具有如下功能:a.按各门课程成绩排序,并生成相应的文件输出b.计算每人的平均成绩,按平均成绩排序,并生成文件c.求出各门课程的平均成绩、最高分、最低分、不及格人数、6069分人数、7079分人数、8089分人数、90分以上人数d.根据姓名或学号查询某人的各门课成绩,重名也要能处理3.界面美观测试数据学号姓名数学英语计算机001王放787790
7、002张强896788003李浩566678004黄鹂兵898685005李浩678876006陈利风455467007尚晓7876703.2概要设计-=ADT=-void menu();/菜单void show(student stu,int n);/显示学生数据void read stu,int n);/读取数据void math(student stu,int n);/对数学成绩排序void english(student stu,int n);/对英语成绩排序void computer(student stu,int n);/对计算机成绩排序void average(student s
8、tu,int n);/对平均成绩排序int degree(int num);/等级分级void scoreAnalyse(student stu,int n);/成绩分析void search_no(student stu,int n);/按照学号查找void search_name(student stu,int n);/按照姓名查找void closeSystem();/关闭程序) 3.3存储结构typedef struct char no12;/学号char name16;/姓名int math;/数学成绩int english;/英语成绩int computer;/计算机成绩int a
9、verage;/平均成绩 student;3.4流程图 开始键盘输入学生信息,并保存到文件中从文件读取学生信息显示菜单执行功能 结束输入选项=0?NY3.5详细设计#include#include#define N 7static int num=0;/已录入的学生人数static int select=0;/输入选择的菜单项typedef structchar no12;/学号char name16;/姓名int math;/数学成绩int english;/英语成绩int computer;/计算机成绩int average;/平均成绩 student;student stuN;/定义结构
10、体数组student studN;/备份结构体数组用来排序/*菜单等方法的原型声明*void menu();/菜单void show(student stu,int n);/显示学生数据void write students,int n);/写入学生数据void read n);/读取学生数据void math(student stu,int n);/对数学成绩排序void english(student stu,int n);/对英语成绩排序void computer(student stu,int n);/对计算机成绩排序void average(student stu,int n);/对
11、平均成绩排序int degree(int num);/等级分级void scoreAnalyse(student stu,int n);/成绩分析void search_no(student stu,int n);/按照学号查找void search_name(student stu,int n);/按照姓名查找void closeSystem();/关闭程序/*主函数*void main()/定义学生体,存放键盘输入的学生信息student studentsN;/向文件输入学生的数据write);/从文件读取学生数据readFile(7);while(1)menu();/输入菜单项scanf
12、(%d,&select);switch(select)case 1:math(stu,7);break;case 2:english(stu,7);break;case 3:computer(stu,7);break;case 4:average(stu,7);break;case 5:scoreAnalyse(stu,7);break;case 6:search_no(stu,7);break;case 7:search_name(stu,7);break;case 8:show(stu,N);break;case 0:closeSystem();break;default:printf(错
13、误的数据 n);/*写入学生数据*void write students,int n)int i;FILE *fi;/键盘输入学生的成绩for(i=0;in;i+)printf(输入第%d个学生的学号,姓名,数学成绩,英语成绩,计算机成绩: ,i+1);scanf(%s %s %d %d %d,&stui.no,&,&stui.math,&stui.english,&puter);fi=fopen(D:VC6.0VC+6.0testinput.dat,wb);/以只写方式打开或新建一个二进制文件,只允许写数据。if(fi=NULL)printf(打开input
14、.dat文件失败n);exit(1);/exit(0)表示异常退出,exit(1)表示异常退出.for(i=0;in;i+)/将学生的成绩写入input.dat文件fwrite(&studentsi,sizeof(student),1,fi);printf(数据写入成功n);/*文件操作完成后,需要将文件关闭,一定要注意,否则会造成文件所占用内存泄露和在下次访问文件时出现问题。 *文件关闭后,需要将文件指针指向空,这样做会防止出现游离指针,而对整个工程造成不必要的麻烦,如fp = NULL。*/fclose(fi);/必须有,不然只能保存在缓冲区,数据不能存入system(pause);/等待
15、用户按一个键,然后返回/*读取学生数据*void read n)int i;FILE *fi;fi=fopen(D:VC6.0VC+6.0testinput.dat,rb);/以只读方式打开或新建一个二进制文件,只允许读取数据。if(fi=NULL)printf(打开input.dat文件失败n);exit(1);for(i=0;in;i+)fread(&stui,sizeof(student),1,fi);printf(读取input.dat文件成功n);/*菜单*void menu()printf(-n);printf(-欢迎进入学生成绩分析系统,输入相应的序号实现功能-n);printf
16、(-成绩分析菜单-n);printf( 0-退出系统n);printf( 1-按数学成绩排序,并生成相应的文件输出n);printf( 2-按英语成绩排序,并生成相应的文件输出n);printf( 3-按计算机成绩排序,并生成相应的文件输出n);printf( 4-按平均成绩排序,并生成文件n);printf( 5-各科成绩分布n);printf( 6-按学号查询n);printf( 7-按姓名查询n);printf( 8-显示新学生信息n);printf(-n);/*显示学生数据*void show(student stu,int n)int i;/system(cls);/清屏printf
17、(-学生成绩-n);printf(t学号|t姓名|t数学|t英语|t计算机 n);for(i=0;in;i+)printf(t%s|t%s|t%d|t%d|t%d| n,stui.no,,stui.math,stui.english,puter);printf(-n);system(pause);/等待用户按一个键,然后返回/*按数学成绩排序*void math(student stu,int n)FILE *fm;int i=0;int k,j;student t;/排序时用来当做临时变量for(i=0;in;i+)studi=stui;fm=fopen(D
18、:VC6.0VC+6.0testmath.txt,wb);/以只写方式打开或新建一个二进制文件,只允许写数据。if(fm=NULL)printf(打开math.txt文件失败n);exit(1);printf(打开math.txt文件成功n);for(k=0;kn-1;k+)/数学成绩从小到大排序法for(j=0;jstudj+1.math)t=studj;studj=studj+1;studj+1=t;printf(*按数学成绩排序*n);printf(t学号|t姓名|t数学|t英语|t计算机| n);fprintf(fm,t%st%st%st%st%s n,no,name,math,eng
19、lish,computer);for(i=0;in;i+)printf(t%s|t%s|t%d|t%d|t%d| n,studi.no,,studi.math,studi.english,puter);fprintf(fm,t%st%st%dt%dt%d n, studi.no,,studi.math,studi.english,puter);/将学生排序后的信息写入printf(-按数学成绩排序已录入-n);fclose(fm);system(pause);/*按英语成绩排序*void english(student
20、 stu,int n)FILE *fe;int i=0;int k,j;student t;/排序时用来当做临时变量for(i=0;in;i+)studi=stui;fe=fopen(D:VC6.0VC+6.0testenglish.txt,wb);/以只写方式打开或新建一个二进制文件,只允许写数据。if(fe=NULL)printf(打开english.txt文件失败n);exit(1);printf(打开english.txt文件成功n);for(k=0;kn-1;k+)/英语成绩从小到大排序法for(j=0;jstudj+1.english)t=studj;studj=studj+1;s
21、tudj+1=t;printf(*按英语成绩排序*n);printf(t学号|t姓名|t数学|t英语|t计算机| n);fprintf(fe,t%st%st%st%st%s n,no,name,math,english,computer);for(i=0;in;i+)printf(t%s|t%s|t%d|t%d|t%d| n,studi.no,,studi.math,studi.english,puter);fprintf(fe,t%st%st%dt%dt%d n, studi.no,,studi.math,studi.english,
22、puter);/将学生排序后的信息写入printf(-按英语成绩排序已录入-n);fclose(fe);system(pause);/*按计算机成绩排序*void computer(student stu,int n)FILE *fc;int i=0;int k,j;student t;/排序时用来当做临时变量for(i=0;in;i+)studi=stui;fc=fopen(D:VC6.0VC+6.0testcomputer.txt,wb);/以只写方式打开或新建一个二进制文件,只允许写数据。if(fc=NULL)printf(打开computer.txt文件失败n);ex
23、it(1);printf(打开computer.txt文件成功n);for(k=0;kn-1;k+)/计算机成绩从小到大排序法for(j=0;jstudj+1.computer)t=studj;studj=studj+1;studj+1=t;printf(*按计算机成绩排序*n);printf(t学号|t姓名|t数学|t英语|t计算机| n);fprintf(fc,t%st%st%st%st%s n,no,name,math,english,computer);for(i=0;in;i+)printf(t%s|t%s|t%d|t%d|t%d| n,studi.no,,stu
24、di.math,studi.english,puter);fprintf(fc,t%st%st%dt%dt%d n, studi.no,,studi.math,studi.english,puter);/将学生排序后的信息写入printf(-按计算机成绩排序已录入-n);fclose(fc);system(pause);/*按平均成绩排序*void average(student stu,int n)FILE *fa;int i=0;int k,j;student t;/排序时用来当做临时变量/计算每个人的平均成绩for(i=0;in;i
25、+)stui.average=(stui.math+puter+stui.english)/3;for(i=0;in;i+)studi=stui;fa=fopen(D:VC6.0VC+6.0testaverage.txt,wb);/以只写方式打开或新建一个二进制文件,只允许写数据。if(fa=NULL)printf(打开average.txt文件失败n);exit(1);printf(打开average.txt文件成功n);for(k=0;kn-1;k+)/平均成绩从小到大排序法for(j=0;jstudj+1.average)t=studj;studj=studj+1;stu
26、dj+1=t;printf(*按平均成绩排序*n);printf(t学号|t姓名|t数学|t英语|t计算机|t平均成绩 n);fprintf(fa,t%st%st%st%st%st%s n,no,name,math,english,computer,average);for(i=0;in;i+)printf(t%s|t%s|t%d|t%d|t%d|t%dn,studi.no,,studi.math,studi.english,puter,studi.average);fprintf(fa,t%st%st%dt%dt%dt%d n, studi.no,stu
27、,studi.math,studi.english,puter,studi.average);/将学生排序后的信息写入printf(-按平均成绩排序已录入-n);fclose(fa);system(pause);/*各门成绩分析*void scoreAnalyse(student stu,int n)int i;FILE *fscoreAnalyse;/0、平均成绩 1、最高分 2、最低分 3、不及格人数 4、6069分人数 5、7079分人数 6、8089分人数 7、90分以上人数int math8,english8,computer8;/分别用三个数组整合三
28、门课课程的分析结果并初始化int mathAnalyze;int englishAnalyze;int computerAnalyze;for(i=0;i8;i+)/初始化数据mathi=0;englishi=0;computeri=0;if(i=2)/最低成绩的默认值为第一个学生的成绩mathi=stu1.math;englishi=stu1.english;computeri=puter;/system(cls);fscoreAnalyse=fopen(D:VC6.0VC+6.0testscoreAnalyse.txt,wb);/以只写方式打开或新建一个二进制文件,只允许写
29、数据。if(fscoreAnalyse=NULL)printf(打开scoreAnalyse.txt文件失败n);exit(1);printf(打开scoreAnalyse.txt文件成功n);for(i=0;imath1)math1=stui.math;if(stui.englishenglish1)english1=stui.english;if(putercomputer1)computer1=puter;/各门课统计最低if(stui.mathmath2)math2=stui.math;if(stui.englishenglish2)english2=s
30、tui.english;if(putercomputer2)computer2=puter;/分段统计mathAnalyze=degree(stui.math);switch(mathAnalyze)case 0:math3+;break;/不及格人数case 1:math4+;break;/6069分人数case 2:math5+;break;/7079分人数case 3:math6+;break;/8089分人数case 4:math7+;break;/90分以上人数englishAnalyze=degree(stui.english);switch(eng
31、lishAnalyze)case 0:english3+;break;case 1:english4+;break;case 2:english5+;break;case 3:english6+;break;case 4:english7+;break;computerAnalyze=degree(puter);switch(computerAnalyze)case 0:computer3+;break;case 1:computer4+;break;case 2:computer5+;break;case 3:computer6+;break;case 4:computer7
32、+;break;/计算各门课的平均成绩math0=math0/n;english0=english0/n;computer0=computer0/n;/保存到文件中fprintf(fscoreAnalyse,t%st%st%st%st%st%st%st%st%s n,科目,平均成绩,最高分,最低分,不及格,6069,7079,8089,90以上);fprintf(fscoreAnalyse,t%st%dt%dt%dt%dt%dt%dt%dt%d n,数学, math0,math1,math2,math3,math4,math5,math6,math7);fprintf(fscoreAnalys
33、e,t%st%dt%dt%dt%dt%dt%dt%dt%d n,英语,english0,english1,english2,english3,english4,english5,english6,english7);fprintf(fscoreAnalyse,t%st%dt%dt%dt%dt%dt%dt%dt%d n,计算机,computer0,computer1,computer2,computer3,computer4,computer5,computer6,computer7);/输出printf(-以下为学生各门课程的分析统计所得分数以及人数-n);printf(t科目t平均t最高t最
34、低t不及格ttttn);/0、平均成绩 1、最高分 2、最低分 3、不及格人数 4、6069分人数 5、7079分人数 6、8089分人数 7、90分以上人数printf(t%st%dt%dt%dt%dt%dt%dt%dt%dn,数学,math0,math1,math2,math3,math4,math5,math6,math7);printf(t%st%dt%dt%dt%dt%dt%dt%dt%dn,英语,english0,english1,english2,english3,english4,english5,english6,english7);printf(t%st%dt%dt%dt%
35、dt%dt%dt%dt%dn,计算机,computer0,computer1,computer2,computer3,computer4,computer5,computer6,computer7);fclose(fscoreAnalyse);system(pause);int degree(int num)if(num60)return 0;if(num59)return 1;if(num69)return 2;if(num79)return 3;if(num89)return 4;elsereturn 4;/*按学号查找*void search_no(student stu,int n)/
36、system(cls);int i=0,flag=0;char no12;printf(请输入要查询的学生学号n);scanf(%s,&no);for(i=0;in;i+)if(strcmp(no,stui.no)=0)printf(t学号|t姓名|t数学|t英语|t计算机| n);printf(t%s|t%s|t%d|t%d|t%d|n,stui.no,,stui.math,stui.english,puter);flag=1;if(!flag)printf(没有该学生的信息n);system(pause);/*按姓名查找*void search_name(student stu,int n)/system(cls);int i=0,flag=0;char name16;printf(请输入要查询的学生姓名n);scanf(%s,&name);for(i=0;in;i+)if(strcmp(name,)=0)if(flag=0)printf(t学号|t姓名|t数学|t英语|t计算机| n);printf(t%s|t%s|t%d|t%d|t%d|n,stui.no,,stui.math,stui.english,puter);flag=1;if(!flag)pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设计与社会交流Photoshop试题及答案
- 2025年计算机二级C语言课程复习试题及答案
- 员工解骋合同协议书范本
- 软件生命周期模型与测试试题及答案
- 店铺租赁合同续签协议书
- 光伏入股合同协议书范本
- 软件应用技巧Photoshop试题及答案
- 社会工作者-社会工作综合能力(初级)真题库-7
- 掌握VFP核心知识的试题及答案
- 渔船买卖合同协议书
- 施工临时围挡施工方案
- 超市管理系统毕业论文
- 2023年浙江省高职单招数学考试题库及答案解析
- 工业建筑混凝土工程监理实施细则
- 0-6岁儿童发育行为评估表
- LY/T 3292-2021自然保护地生态旅游规范
- GB/T 24915-2010合同能源管理技术通则
- JGJT 223-2010 预拌砂浆应用技术规程
- 电力电缆基础知识专题培训课件
- 三级动火作业许可证
- 施工组织设计实训任务书
评论
0/150
提交评论