资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C 程序程序设计设计 实验报实验报告告编号: 姓名院系学号 任课教师于萧指导教师 实验地点实验时间 实验名称文件操作文件操作 同 组 人无 预习报告(对实验主要内容的认识)得分 实验目的: 练习使用 C 语言的标准 I/O 函数系列处理文件熟悉二维数组的操作函数、模块化程序设计以及增量测试方法 熟悉结构体类型、结构体数组、写钩体数组函数参数、体会结构体类型代替普通的数组类型实 现数据库管理的优越性 熟悉文件的基本操作以及增量的测试方法实验内容(问题,思路,程序,结果)得分 一、一、设计思路:设计思路: 仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数) 1、 输入初始的学生信息:其中包括学生的学号、姓名、数学、物理、英语成绩等相关信息;使用 for 循环,以及结构体成员调用一次录入每个学生的成绩等学生信息 2、 计算平均和总分模块:利用两层 for 循环,计数变量 i 累加一次循环一个学生、计数变量 j 进 行与科目次数相同的累加循环每个科目的成绩进行累加。 3、 按照学生成绩以及姓名字典排序模块:比较学生成绩的高低以及姓名字典的大小,使用选择法 进行排序 4、 查询模块:遍历结构体数组,如果姓名相同则循环输出学生的信息。 5、 写文件模块:使用 fopen 函数打开文件以后进行循环写入。一直到最后一个学生。 6、 读文件操作模块:打开文件以后,进行循环输出,一直循环的文件的最末尾。利用 feof() 。 7、 退出函数,使用 exit 函数进行操作。 将整个程序模块化编写之后,在主函数中使用 while 循环调用,使用 switc 函数进行选择相应的函数功 能。为了防止用户不按照正常的操作流程操作,不进行学生成绩的输入就进行后续操作导致的系统报 错或者弹出错误,在调用函数之前使用 while 循环增加一段容错代码,如果用户第一次选择的不是输入 功能则提示用户选择错误并返回循环重新要求用户选择功能,直到用户输出成绩为止,跳出容错的处 理循环进行正常的功能选择循环。最后进行相应的用户使用界面的设计和优化。 二、二、菜单设计菜单设计 *欢迎进入学生成绩管理系统欢迎进入学生成绩管理系统* *programmed by Menglingxin 131110412*菜单菜单* 1、录入每个学生的学号,姓名,和各科考试成绩!、录入每个学生的学号,姓名,和各科考试成绩! * 2、计算每个学生的总分和平均分!、计算每个学生的总分和平均分! * 3、按每个学生的总分和平均分从高到低排出名次表!、按每个学生的总分和平均分从高到低排出名次表!* 4、按姓名的字典顺序排出成绩!、按姓名的字典顺序排出成绩! * 5、按姓名查询学生学生排名和考试成绩!、按姓名查询学生学生排名和考试成绩! * 6、输出每个学生的学号,姓名,各科成绩!、输出每个学生的学号,姓名,各科成绩! * 7、将每个学生的信息写入文件!、将每个学生的信息写入文件! * 8、从文件读取信息并显示!、从文件读取信息并显示! * 9、退出程序!、退出程序! * * 三、三、退出界面退出界面* 谢谢您的使用谢谢您的使用 * * 四、四、错误提示界面错误提示界面 * 请先录入学生信息和成绩请先录入学生信息和成绩 * * 五、五、函数代码函数代码 1、主函数主函数 /*编编 程:孟令鑫程:孟令鑫 131110412时时 间:间:2013 年年 12 月月 24 日日内内 容;结构体实现学生成绩管理系统容;结构体实现学生成绩管理系统*/ #include #include #define COURSE 3 #define STUD_N 30 #include “lab1.h“ #include “lab2.h“ #include “lab3.h“ #include “lab4.h“ #include “lab5.h“ #include “lab6.h“ #include “lab7.h“ int main() int choice,n,pos,j;STUDENT stuSTUD_N;char x10,ch;/定义一个十个字节的字符数组用来存放要查找的姓名定义一个十个字节的字符数组用来存放要查找的姓名printf(“ *欢迎进入学生成绩管理系统欢迎进入学生成绩管理系统*n“);printf(“ *programmed by Menglingxin 131110412*n“);printf(“ *菜单菜单*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(“ * 9、退出程序!、退出程序! *n“);printf(“ *n“);while(1)/用来处理用户的错误输入用来处理用户的错误输入printf(“请输入您要进行的操作:请输入您要进行的操作:t“);scanf(“%d“,if (choice=1)n = InputScore(stu,3);/调用录入函数调用录入函数printf(“分数录入完毕!分数录入完毕!n“);break;/如果用户正确的先录入了学生成绩则跳出该错误处理循环如果用户正确的先录入了学生成绩则跳出该错误处理循环else if (choice=9)printf(“ *n“);printf(“ * 谢谢您的使用谢谢您的使用 *n“);printf(“ *n“);exit(0);else/如果没有先录入成绩用户直接进行其他操作则提示用户请先录入学生成绩并反复循环。如果没有先录入成绩用户直接进行其他操作则提示用户请先录入学生成绩并反复循环。printf(“ *n“);printf(“ * 请先录入学生信息和成绩请先录入学生信息和成绩 *n“);printf(“ *n“);while(1)/用用 while 循环实现功能循环操作循环实现功能循环操作printf(“请输入您要进行的操作:请输入您要进行的操作:t“);scanf(“%d“,switch(choice)case 1:n = InputScore(stu,3);/调用录入函数调用录入函数printf(“分数录入完毕!分数录入完毕!n“);break;case 2:AverforStudent(stu,n,COURSE);/调用平均数函数调用平均数函数printf(“平均分计算完毕!平均分计算完毕!n“);break;case 3:AverforStudent(stu,n,COURSE);/调用平均数函数调用平均数函数sortbystudentsumS(stu,n);/调用排序调用排序printf(“按学生平均分进行降序排序:按学生平均分进行降序排序:n“);Print(stu,n,COURSE);break;case 4:AverforStudent(stu,n,COURSE);SortbyName(stu,n);printf(“按姓名字典输出:按姓名字典输出:n“);Print(stu,n,COURSE);break;case 5:AverforStudent(stu,n,COURSE);doprintf(“请输入您要查找的姓名:请输入您要查找的姓名:n“);scanf(“%s“,x);pos = LinrSearch(stu,x,n);if(pos != -1)/循环输出学生的成绩和学号等循环输出学生的成绩和学号等printf(“%ld%8s“,stupos.studentID,stupos.studentName);for(j=0;j #include #define COURSE 3 #define STUD_N 30 typedef struct student/定义学生的信息结构体定义学生的信息结构体 long studentID;char studentName10;int score3;float averS;int sumS; STUDENT; /函数
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号