成绩管理系统V6.0
- 格式:doc
- 大小:247.50 KB
- 文档页数:20
学生成绩管理系统数据流程图及数据字典一、数据流程图学生成绩管理系统是一个用于管理学生的课程成绩的系统。
下面是该系统的数据流程图,展示了数据在系统中的流动和处理过程。
1. 学生信息管理流程:- 输入:学生信息(学生姓名、学号、性别、年级等)- 处理:将学生信息存储到学生信息表中- 输出:无2. 课程信息管理流程:- 输入:课程信息(课程名称、课程编号、学分等)- 处理:将课程信息存储到课程信息表中- 输出:无3. 成绩录入流程:- 输入:学生课程成绩信息(学号、课程编号、成绩)- 处理:将成绩信息存储到成绩表中- 输出:无4. 成绩查询流程:- 输入:学号- 处理:根据学号在学生信息表中查找学生姓名,并在成绩表中查询该学生的所有成绩信息- 输出:学生姓名及其对应的成绩信息5. 成绩统计流程:- 输入:课程编号- 处理:根据课程编号在课程信息表中查找课程名称,并在成绩表中统计该课程的平均成绩、最高成绩和最低成绩- 输出:课程名称及其对应的平均成绩、最高成绩和最低成绩二、数据字典数据字典是对系统中使用的数据元素进行定义和描述的文档。
下面是学生成绩管理系统的数据字典,包含了系统中使用的各个数据元素及其属性。
1. 学生信息表(StudentInfo):- 学号(StudentID):学生的惟一标识符,数据类型为整数- 学生姓名(StudentName):学生的姓名,数据类型为字符串- 性别(Gender):学生的性别,数据类型为字符串- 年级(Grade):学生所在的年级,数据类型为字符串2. 课程信息表(CourseInfo):- 课程编号(CourseID):课程的惟一标识符,数据类型为整数- 课程名称(CourseName):课程的名称,数据类型为字符串- 学分(Credit):课程的学分,数据类型为浮点数3. 成绩表(Score):- 学号(StudentID):学生的惟一标识符,数据类型为整数- 课程编号(CourseID):课程的惟一标识符,数据类型为整数- 成绩(Grade):学生在该课程中的成绩,数据类型为浮点数通过以上的数据流程图和数据字典,学生成绩管理系统可以实现学生信息的录入和管理、课程信息的录入和管理、成绩的录入、查询和统计等功能。
《C语言程序设计》课程教学大纲课程编号:T1032080课程名称:C语言程序设计课程英文名称:THE C LANGUAGE PROGRAMMING学时:60 讲课学时:30 实验学时:习题课学时:上机学时:30学分:3开课单位:计算机科学与技术学院授课对象:全校非计算机、理工科专业本科生先修课程:大学计算机基础课程要求:必修课程分类:计算机公共基础课一、课程教学目的C语言程序设计是高等工科院校中非计算机专业的一门计算机公共基础课。
设置本课程的主要目的是培养学生的程序设计、实现及调试能力。
通过本课程的学习,使学生学会用计算机处理问题的思维方法,增强解决问题的编程实践能力,为将来从事软件开发及后继课程的学习和解决工程问题、科学技术问题奠定基础。
二、教学内容及学时安排1 基础知识(1学时)C语言的发展历程;软件开发的基本过程;编程的基础知识。
2C数据类型(1学时)常量与变量;简单的屏幕输出;基本数据类型;计算变量或数据类型所占内存空间的字节数;变量的赋值和赋值运算符;程序的开发环境(Visual C++6.0和Code:Blocks)简介。
3 简单的算术运算和表达式(2学时)算术运算符和表达式;复合的赋值运算符;增1和减1运算符;宏常量与宏替换;const 常量;自动类型转换;强制类型转换运算符;常用的标准数学函数。
4 键盘输入和屏幕输出(2学时)字符常量;单个字符的输入输出;数据的格式化屏幕输出;数据的格式化键盘输入。
5 选择控制结构(2学时)生活中的问题求解方法;计算机问题求解的基本特点;算法的概念和描述方法;关系运算符与关系表达式;逻辑运算符和逻辑表达式;选择控制结构;条件语句;switch语句。
6 循环控制结构(4学时)循环控制结构;循环语句;计数控制的循环;条件控制的循环;嵌套循环;流程的转移控制(goto语句,break语句,continue语句);结构化程序设计的核心思想。
7 函数(4学时)分而治之与信息隐藏;函数的定义;函数调用;函数原型;向函数传递简单变量的值;从函数返回一个值;递归函数;变量的作用域与存储类型;自顶向下、逐步求精的模块化程序设计方法。
总第254期2010年第12期计算机与数字工程C om pu t er8LD i gi t al Engi nee r i ngV oL38N o.12201中职院校学生管理信息系统的研究与设计‘高雅侠”邹海荣孙(陕西省商业学校”汉中723000)(陕西理工学院2’汉中723000)摘要针对目前中等职业院校学生年龄偏小、自控能力低、综合素质较差的特点,以及中职院校办学规模、办学模式和办学层次等问题,导致“学生难管,学业难教”的现象。
通过对中职院校学生管理体系调查分析,采用面向对象的设计思想和V FP(V i s ual FoxP r o6.o)开发工具,设计与实现了学生管理信息系统。
使学校学生管理部门的工作效率得到了提高。
关键词管理信息系统(M I S);数据库;V FP;D FD中图分类号TP391R e se ar ch and D e si gn of St udent I nf or m at i on M a nage m ent Sys t emi n V ocat i onal School sG a o Y ax i al’Z o u H ai r on92’(S haa nxi C om m er cial Sch ool",H anzho ng723000)(Shaa nxi I ns t i t ut e of Tec hnol ogy2’,H anzhong723000)A b s t ra ct S t ude nt s i n s ec onda r y vocat i onal i ns t i tut i ons f or t he cu r r en t a ge of sm al l。
l ow sel f-c ont r ol。
t h e char act er i s t i cs of poor over al l qual i t y,as w el l as i n vocat i onal sc hool s i n scho ol si z e,school i s s ues suc h as pat t e r ns and edu cat i onal le vels,l ea di ngt o”di f f i cul t t O cont r ol st udent s。
一、选择题一、选择题1.在设计应用程序时,可以查看到应用程序工程中的所有部分的窗口是(.在设计应用程序时,可以查看到应用程序工程中的所有部分的窗口是( )。
A.窗体设计.代码C.属性D.工程资源管理器窗口.工程资源管理器窗口 >> 答案:d 2.窗体的Load事件的触发时机是(事件的触发时机是( )。
A.用户单击窗体时B.窗体被加载时C.窗体显示之后D.窗口被卸载时.窗口被卸载时 >> 答案:b答案:b3.与传统的程序设计语言相比,Visual Basuc最突出的特点是(最突出的特点是( )。
A.结构化程序设计B.程序开发环境C.事件驱动编程机制D.程序调试技术.程序调试技术答案:C 4.VB6.0集成开发环境的主窗口不包括(集成开发环境的主窗口不包括( )。
A.标题栏.状态栏 D.工具栏.工具栏.标题栏 B.菜单栏.菜单栏 C.状态栏答案:c 5.如果对象的名称为Mytext,而且对象有一个属性Text,那么在代码中引用该属性的正确格式是( )。
格式是(A.Text.Mytext B.Mytext.text C.Mytext.(Text)D.Mytext*Text 答案:b 6.下列可以激活属性窗口的操作是(.下列可以激活属性窗口的操作是( )。
A.用鼠标双击窗体的任何部位命令 C.按Ctrl+F4 用鼠标双击窗体的任何部位 B.执行“工程”菜单中的“属性窗口”命令D.按F4键答案: b d 答案:7.假定已在窗体上画了多个控件,并有一个控件是活动的,为了在属性窗口中设置窗体的属性,预先应制造的操作是( )。
属性,预先应制造的操作是(A.单击窗体上没有控件的地方.不执行任何操作 D.双击窗体.单击任一个控件 C.不执行任何操作.单击窗体上没有控件的地方 B.单击任一个控件的标题栏的标题栏答案:a 8.如果在文本框中键入字符时,应设置文本框的(()属性。
只显示某个字符,如星号(*),应设置文本框的如果在文本框中键入字符时,只显示某个字符,A.Caption B.PasswordChar C.Text D.Char 答案:b 9.如果想让文本框中的内容在运行时不能编辑,需将文本框的(.如果想让文本框中的内容在运行时不能编辑,需将文本框的( )属性设置为True。
引言概述学绩信息管理系统是一个用于管理学生学业成绩的系统,可以帮助学校或教育机构更好地管理和分析学生的成绩数据。
本文是学绩信息管理系统系列的第二篇,将重点介绍五个主要方面的内容,包括:数据录入与管理、成绩查询与统计、学绩分析、教师评价与反馈、系统安全与保密。
正文内容一、数据录入与管理1.1学生基本信息录入:包括学生姓名、学号、班级等基本信息的录入和管理,确保学生信息的准确性和完整性。
1.2成绩录入与管理:教师可以将学生的考试成绩录入系统,并对成绩进行统一管理。
系统提供成绩批量导入功能,方便教师进行成绩录入。
1.3课程信息录入:教师可以录入和管理不同课程的相关信息,包括课程名称、学分、考试时间等,以便后续的成绩统计和分析。
1.4学生选课管理:系统可以记录学生的选课情况,并与成绩管理进行关联,确保成绩与选课的一致性。
1.5学绩修正:在录入成绩后,教师和学生可以提出成绩修正的申请,经过审核后,系统可以进行相应的成绩修正。
二、成绩查询与统计2.1学绩查询:学生可以通过系统查询自己的成绩,包括单科成绩、总成绩等。
系统提供多种查询方式,如按学号、班级等查询。
2.2班级成绩统计:系统可以对整个班级的成绩进行统计分析,包括平均分、最高分、最低分等指标。
教师可以利用这些统计数据进行班级教学进度的调整和评估。
2.3课程成绩统计:系统可以对不同课程的成绩进行统计分析,促进学校对教师教学质量的评估和优化。
2.4学期成绩统计:系统可以对学生每个学期的成绩进行统计汇总,提供学生学业发展的全面评估。
2.5综合排名统计:系统可以根据学生的成绩进行排名统计,帮助学校评估学生的学业水平,并为学生提供激励和奖励。
三、学绩分析3.1学绩趋势分析:系统可以通过学生历次成绩的对比和分析,帮助学生和教师了解学生的成绩变化趋势,并及时采取相应的教学和学习策略。
3.2学科成绩分析:系统可以对学生在不同学科上的成绩进行分析,帮助学生发现自身在不同学科上的学习优势和不足。
云南省初中信息技术学业水平考试系统(卓帆V6:0:8版本)使用说明云南省初中信息技术学业水平考试系统(卓帆V6:0:8版本)使用说明一、系统简介1.1 系统概述1.2 系统功能1.2.1 学生管理1.2.2 考试管理1.2.3 成绩管理1.2.4 数据统计1.2.5 系统设置1.3 系统环境要求1.3.1 操作系统要求1.3.2 硬件要求1.3.3 软件要求二、系统安装2.1 系统2.2 安装步骤2.2.1 安装包2.2.2 解压安装包 2.2.3 运行安装程序 2.2.4 安装完成2.3 安装注意事项三、系统登录与账号管理3.1 系统登录3.2 修改密码3.3 添加用户3.4 删除用户四、学生管理4.1 学生信息录入4.2 学生信息修改4.3 学生信息删除4.4 学生信息查询五、考试管理5.1 考试科目设置5.2 考试时间设置5.3 考试试卷管理5.4 考试安排5.5 考试成绩发布六、成绩管理6.1 成绩录入6.2 成绩修改6.3 成绩查询6.4 成绩统计七、数据统计7.1 学生总数统计7.2 各科平均成绩统计 7.3 各班级成绩对比统计7.4 学绩排名统计八、系统设置8.1 学校信息设置8.2 学科参数设置8.3 系统权限设置8.4 数据库备份与恢复附件:1:安装包2:系统使用手册3:数据库备份文件法律名词及注释:1:学业水平考试:全面了解学生在学科学习中掌握的各项知识、技能和能力的考试,以促使学生全面发展。
2:考试科目:学生需要参加的考试科目,如语文、数学、英语等。
3:考试成绩:学生在各个考试科目中取得的分数。
4:数据统计:对学生人数、各科平均成绩等进行统计分析。
5:系统权限:对用户在系统中所能进行的操作的限制和控制。
Harbin Institute of TechnologyC语言实验大作业课程名称: C语言程序设计报告类型:程序设计报告实验题目:学生成绩管理系统v6.0实验类型:(综合设计型/创新研究型)所在院系:航天学院电子信息类学生类别:本科生指导教师:郭萍学生姓名:王福海班级和学号:电子信息五班 1162100527 实验时间: 2017.5.20成绩评定:哈尔滨工业大学1实验目的将教材中所包含的内容系统化考察,考察一维、二维数组,函数的调用,排序、查找、统计分析等常用算法,指针,动态数组以及结构体的应用。
2实验内容和要求1.实验内容学生成绩管理系统V6.0。
某班有最多不超过30人(具体人数由键盘输入)参加最多不超过六门的考试(具体门数由键盘输入),定义结构体类型,用结构体数组作函数参数,编程实现学生成绩的管理。
2.实验要求采用自顶向下、逐步求精的模块化设计思想设计小型数据库管理系统,对学生成绩进行管理。
要求按系统的需求分析、系统设计(总体设计、各个模块的设计)、系统实现(各个模块的实现)、系统测试等过程组织报告内容,说明采用了什么数据结构和算法,遇到哪些问题,这些问题是如何解决的,本设计的亮点和难点在哪里,实验结果如何,有哪些收获和学习体会。
3.系统功能需求分析本系统主要实现下面的功能:(1)录入每个学生的学号和考试成绩;(2)计算每门课程的总分和平均分;(3)计算每个学生的总分和平均分;(4)按成绩由高到低排出名次表;(5)按成绩由低到高排出名次表;(6)按学号由小到大排出成绩表;(7)按姓名字典的排序排出成绩表;(8)按学号查询学生排名及其考试成绩;(9)按姓名查询学生排名及其考试成绩;(10)按优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)5个类别,统计每个类别的人数以及所占的百分比;(11)输出每个学生学号姓名各科成绩及每门考试的总分平均分;(12)将每个学生信息写入文件;(13)从文件中读取每个学生信息并显示;4.实验环境采用win10操作系统,使用软件Dev-c++。
3 系统设计1.系统功能模块划分2. 主要算法排序:进行学生成绩的排序从而出现排名表查找:通过多种方式如学号,姓名查找特定学生的成绩3. 数据结构4.各模块(函数)的功能和接口设计:4系统实现1.系统的总流程图:显示菜单——>输入用户的选择——>根据用户的输入选择不同的操作 case 1:Readscore(stu,n,m);break;case 2:Aversumofeverystudent(stu ,n,m);case 3:Aversumofeverycourse(stu ,n,m); break;case 4:Sortbyscore(stu ,n,m,Descending); printf("\n成绩降序排序\n");Printscore( stu ,n, m);break;case 5:Sortbyscore(stu ,n,m,Ascending); printf("\n成绩升序排序\n");Printscore( stu ,n, m);break;case 6:Assortbynum( stu , n, m);printf("\n学号升序排序\n");Printscore( stu ,n, m);break;case 7:Sortbyname( stu , n, m);printf("\n姓名升序排序\n");Printscore( stu ,n, m);break;case 8:Searchbynum( stu , n, m);break;case 9:Searchbyname( stu , n, m);break;case 10:StatisticAnlysis( stu , n, m);break;case 11:Printscore( stu ,n, m);break;case 12:Writetofile(stu,n,m);break;case 13:Readfromfile(stu,&n,&m);break;case 0:printf("End of program!\n ");2.程序的全部源代码:1#include <stdio.h>2#include <stdlib.h>3#include <string.h>4typedef struct student5{6 long num;7 char name[10];8 float score[6];9 float sum;10 float aver;11}STU;12int Menu(void);13void ReadScore(STU stu[],int n, int m);14void AverSumofEveryStudent(STU stu[],int n,int m);15void AverSumofEveryCourse(STU stu[],int n,int m);16void SortbyScore(STU stu[],int n,int m,int (*compare)(float a,floatb));17int Ascending(float a,float b);18int Descending(float a,float b);19void SwapFloat(float *x,float *y);20void SwapLong(long *x,long *y);21void SwapChar (char x[],char y[]);22void AsSortbyNum(STU stu[],int n,int m);23void SortbyName(STU stu[],int n,int m);24void SearchbyNum(STU stu[],int n,int m);25void SearchbyName(STU stu[],int n,int m);26void StatisticAnalysis(STU stu[],int n,int m);27void PrintScore(STU stu[],int n,int m);28void WritetoFile(STU stu[],int n,int m);29void ReadfromFile(STU stu[],int *n,int *m);30int main()31{32 char ch;33 int n=0,m=0;3435 STU stu[30];3637 printf("Input student number:(less than 30)\n");38 scanf("%d",&n);3940 printf("Input course number:(less than 6)\n");41 scanf("%d",&m);4243 while(1)44 {45 ch = Menu();46 switch(ch)47 {48 case 1: ReadScore(stu,n,m);49 break;50 case 2: AverSumofEveryCourse(stu,n,m);51 break;52 case 3: AverSumofEveryStudent(stu,n,m);53 break;54 case 4: SortbyScore(stu,n,m,Descending);55 printf("\nSort in descending order by score:\n");56 PrintScore(stu,n,m);57 break;58 case 5: SortbyScore(stu,n,m,Ascending);59 printf("\nSort in ascending order by score:\n");60 PrintScore(stu,n,m);61 break;62 case 6: AsSortbyNum(stu,n,m);63 printf("\nSort in ascending order by number:\n");64 PrintScore(stu,n,m);65 break;66 case 7: SortbyName(stu,n,m);67 printf("\nSort in dictionary order by name:\n");68 PrintScore(stu,n,m);69 break;70 case 8: SearchbyNum(stu,n,m);71 break;72 case 9: SearchbyName(stu,n,m);73 break;74 case 10:StatisticAnalysis(stu,n,m);75 break;76 case 11:PrintScore(stu,n,m);77 break;78 case 12:WritetoFile(stu,n,m);79 break;80 case 13:ReadfromFile(stu,&n,&m);81 break;82 case 0: printf("End of program!\n");83 exit(0);8485 default:printf("Input error!\n");87 }88 return 0;89}90/*Menu:显示菜单并获得用户键盘输入的选项 */91int Menu(void)92{93 int a;9495 printf("Management for Students'scores\n");96 printf("1.Input record\n");97 printf("2.Caculate total and average score of every course\n");98 printf("3.Caculate total and average score of every student\n");99 printf("4.Sort in descending order by score\n");100 printf("5.Sort in ascending order by score\n");101 printf("6.Sort in ascending order by number\n");102 printf("7.Sort in dictionary order by name\n");103 printf("8.Search by number\n");104 printf("9.Search by name\n");105 printf("10.Statistic analysis\n");106 printf("11.List record\n");107 printf("12.Write to a file\n");108 printf("13.Read from a file\n");109 printf("0.Exit\n");110 printf("Please Input your choice:");111112 scanf("%d",&a);113114 return a;115116}117/*input:输入每个学生每门课的成绩*/118void ReadScore(STU stu[],int n,int m)119{120 int i,j,k;121122printf("Input student's ID,name and score:\n");123124 for(i=0;i<n;i++)125 {126127 scanf("%ld %s",&stu[i].num,stu[i].name);128129 for(j=0;j<m;j++)131 scanf("%f",&stu[i].score[j]);132 }133134 }135}136/* AverSumofEveryStudent:计算每个学生每门课的总分和平均分*/137void AverSumofEveryStudent(STU stu[],int n,int m)138{139 int i,j;140141 for(i=0;i<n;i++)142 {143 stu[i].sum = 0;144145 for(j=0;j<m;j++)146 {147 stu[i].sum = stu[i].sum + stu[i].score[j];148 }149150 stu[i].aver = m>0 ? stu[i].sum/m:-1;151152 printf("student %d:sum=%.0f,aver=%.0f\n",i+1,stu[i].sum,stu[i].aver);153 }154}155/*AverSumofEveryCourse:计算每门课程的总分和平均分*/156void AverSumofEveryCourse(STU stu[],int n,int m)157{158 int i,j;159 float sum[6],aver[6];160161 for(j=0;j<m;j++)162 {163 sum[j] = 0;164165 for(i=0;i<n;i++)166 {167 sum[j]=sum[j]+stu[i].score[j];168 }169170 aver[j] = n>0?sum[j]/n : -1;171172 printf("course %d:sum=%.0f,aver=%.0f\n",j+1,sum[j],aver[j]);173 }174}175/* SortbyScore:将每个学生按总成绩排序*/176void SortbyScore(STU stu[],int n, int m,int(*compare)(float a,float b)) 177{178 int i,j,k,t;179180 for(i=0;i<n-1;i++)181 {182 k=i;183184 for(j=i+1;j<n;j++)185 {186 if((*compare)(stu[j].sum,stu[k].sum))187k=j;188 }189190 if(k!=i)191 {192 for(t=0;t<m;t++)193 {194 SwapFloat(&stu[k].score[t],&stu[i].score[t]);195 }196197 SwapFloat(&stu[k].sum,&stu[i].sum);198 SwapFloat(&stu[k].aver,&stu[i].aver);199 SwapLong(&stu[k].num,&stu[i].num);200 SwapChar(stu[k].name,stu[i].name);201 }202 }203}204/* Ascending:按照升序*/205int Ascending(float a,float b)206{207 return a<b;208}209/* Descending:按照降序 */210int Descending(float a,float b)211{212 return a>b;213}214/* SwapFloat:交换单精度浮点型数据 */215void SwapFloat(float *x,float *y)216{217 float temp;218219 temp = *x;220 *x = *y;221 *y = temp;222}223/* SwapLong交换长整形数据 */224void SwapLong(long *x,long *y)225{226 long temp;227228 temp = *x;229 *x = *y;230 *y = temp;231}232/* SwapChar交换字符型数据 */233void SwapChar(char x[],char y[])234{235 char temp[10];236237 strcpy(temp,x);238 strcpy(x,y);239 strcpy(y,temp);240}241/* AsSortbyNum:将学生按照学号顺序排列 */242void AsSortbyNum(STU stu[],int n,int m)243{244 int i,j,k,t;245246 for(i=0;i<n-1;i++)247 {248 k=i;249 for(j=i+1;j<n;j++)250 {251 if(stu[j].num<stu[k].num)252k=j;253 }254 if(k!=i)255 {256 for(t=0;t<m;t++)257 {258 SwapFloat(&stu[k].sum,&stu[i].sum);259 }260261 SwapFloat(&stu[k].sum,&stu[i].sum);262 SwapFloat(&stu[k].aver,&stu[i].aver);263 SwapLong(&stu[k].num,&stu[i].num);264 SwapChar(stu[k].name,stu[i].name);265 }266 }267}268/* SortbyName:将学生按照字典顺序排列 */269void SortbyName(STU stu[],int n,int m)270{271 int i,j,t;272273 for(i=0;i<n-1;i++)274 {275 for(j=i+1;j<n;j++)276 {277 if(strcmp(stu[j].name,stu[i].name)<0)278 {279 for(t=0;t<m;t++)280 {281 SwapFloat(&stu[i].score[t],&stu[j].score[t]);282 }283284 SwapFloat(&stu[i].sum,&stu[j].sum);285 SwapFloat(&stu[i].aver,&stu[j].aver);286 SwapLong(&stu[i].num,&stu[j].num);287 SwapChar(stu[i].name,stu[j].name);288 }289 }290 }291}292/* SearchbyNum:按学号查找并打印学生成绩 */293void SearchbyNum(STU stu[],int n,int m)294{295 long number;296 int i,j;297298 printf("Input the number you want to search");299 scanf("%ld",&number);300301 for(i=0;i<n;i++)302 {303 if(stu[i].num == number)304 {305 printf("%ld\t%s\t",stu[i].num,stu[i].name); 306307 for(j=0;j<m;j++)308 {309 printf("%.0f\t",stu[i].score[j]);310 }311312 printf("%.0f\t%.0f\n",stu[i].sum,stu[i].aver); 313314 return;315 }316 }317318 printf("\nNot found! \n");319}320/* SearchbyName:按名字查找并打印学生成绩 */321void SearchbyName(STU stu[],int n,int m)322{323 char x[10];324 int i,j;325326 printf("Input the name you want to search");327 scanf("%s",x);328329 for(i=0;i<n;i++)330 {331 if(strcmp(stu[i].name,x)==0)332 {333 printf("%ld\t%s\t",stu[i].num,stu[i].name); 334335 for(j=0;j<m;j++)336 {337 printf("%.0f\t",stu[i].score[j]);338 }339340 printf("%.0f\t%.0f\n",stu[i].sum,stu[i].aver); 341342 return;343 }344 }345346 printf("\nNot found!\n");347}348/* StatisticAnalysis:统计各分段的学生及其所占百分比 */349void StatisticAnalysis(STU stu[],int n,int m)350{351 int i,j,total,t[6];352353 for(j=0;j<m;j++)354 {355 printf("For course %d:\n",j+1);356357 memset(t,0,sizeof(t)); /*将数组t的元素全部初始化为0*/358359 for(i=0;i<n;i++)360 {361 if(stu[i].score[j]>=0&&stu[i].score[j]<60) t[0]++;362 else if(stu[i].score[j]<70) t[1]++;363 else if(stu[i].score[j]<80) t[2]++;364 else if(stu[i].score[j]<90) t[3]++;365 else if(stu[i].score[j]<100) t[4]++;366 else if(stu[i].score[j]==100) t[5]++;367 }368369 for(total=0,i=0;i<=5;i++)370 {371 total=total+t[i];372 }373374 for(i=0;i<=5;i++)375 {376 if(i==0)377printf("<60\t%d\t%.2f%%\n",t[i],(float)t[i]/n*100); 378379 else if(i==5)380printf("%d\t%d\t%.2f%%\n",(i+5)*10,t[i],(float)t[i]/n*100);381382 else383printf("%d-%d\t%d\t%.2f%%\n",(i+5)*10,(i+5)*10+9,t[i],(float)t[i]/n*100 );384 }385 }386}387/* PrintScore:打印输出学生成绩 */388void PrintScore(STU stu[],int n,int m)389{390 int i,j;391392 for(i=0;i<n;i++)393 {394 printf("%ld\t%s\t",stu[i].num,stu[i].name);395396 for(j=0;j<m;j++)397 {398 printf("%.0f\t",stu[i].score[j]);399 }400 printf("%.0f\t%.0f\n",stu[i].sum,stu[i].aver);401 }402}403/* WritetoFile:写入程序 student.txt */404void WritetoFile(STU stu[],int n,int m)405{406 FILE *fp;407 int i,j;408409 if((fp=fopen("student.txt","w")) == NULL)410 {411 printf("Failure\n");412 exit(0);413 }414415fprintf(fp,"%d\t%d\n",n,m);416417 for(i=0;i<n;i++)418 {419 fprintf(fp, "%10ld%10s",stu[i].num,stu[i].name);420 for(j=0;j<m;j++)421 {422 fprintf(fp,"%10.0f",stu[i].score[j]);423 }424 fprintf(fp,"%10.0f%10.0f\n",stu[i].sum,stu[i].aver);425 }426 fclose(fp);427}428/* ReadfromFile:读取文件 */429void ReadfromFile(STU stu[],int *n,int *m)430{431 FILE *fp;432 int i,j;433 if((fp=fopen("student.txt","r"))==NULL)434 {435 printf("Fail\n");436 exit(0);437 }438439 fscanf(fp,"%d\t%d",n,m);440441 for(i=0;i<*n;i++)442 {443 fscanf(fp,"%10ld",&stu[i].num);444 fscanf(fp,"%10s",stu[i].name);445 for(j=0;j<*m;j++)446 {447 fscanf(fp,"%10f",&stu[i].score[j]);448 }449 fscanf(fp,"%10f",&stu[i].sum,&stu[i].aver);450 }451 fclose(fp);452}5系统测试1.程序调试中遇到的问题和解决方法及思路对于文件读入部分不熟练,多次纠错与尝试都不能使文件正常运行,最后在班内同学于多方查阅下,熟悉了导出与读入文件的流程,使程序正常运行。