C语言程序的设计报告-学生成绩记录簿
C语言编一个成绩记录簿
1. 设计要求:成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分。
在程序中可以输入新的成绩记录,可以按学号或姓名查询一个学生的所有成绩,和已完成的总学分。
也可以按课程编号查出一个班的成绩表,班成绩表后面要统计平均分,和及格率。
2. 提高水平在程序中增加将数据写入文本文件和从文件中读入数据的功能,文件名由用户输入。
3. 提示在没有使用文件时,数据可以保存在一个大的数组中,要注意的数据项的类型。
知识范围;C程序设计第三版谭浩强答案一// 包含必须的头文件#include<stdio.h>#include<stdlib.h>#include<string.h>// 定义课程的结构体struct course{int num; //课程编号char name[20]; // 课程名字int result; // 学生的成绩float credit; // 学分};// 定义成绩记录簿的结构体,每个学生修了4门课struct scorelist{int num; //学号char name[10]; //学生姓名struct course subject[4]; //课程相关的数据。
意思是一个学生修了4门课};int n=0; // n用来存储一共有多少个学生struct scorelist score[200]; //初始化成绩记录簿,上限为200条学生成绩// 查询课程的函数void queryclass(){int number,i,j,max=0,count=0;float average;//平均分float pass=0; //及格人数printf("*********请输入要查询的课程编号:");scanf("%d",&number);// 遍历所有的学生,打印每个学生修的课程成绩for(i=0;i<n;i++) // 遍历所有学生{ for(j=0;j<4;j++) // 遍历当前学生所修的4门课{if(score[i].subject[j].num==number) // 如果符合此条件,说明当前条目即为用户查询的课程{printf("学号:%d 姓名:%s %s:%d\n",score[i].num,score[i].name,score[i].subject[j].name,score[i].subject[j].res ult);if(score[i].subject[j].result>=60)pass++;max+=score[i].subject[j].result;count++;}}}if(count!=0){average=(float)max/count;pass=pass/count;printf("平均分:%f\n",average);printf("及格率:%.2f%c\n\n",pass*100,37);}}// 查询学生信息void querystudent(){ char xm[10];int i,flag=0,j,a,xh;printf("*********请输入要查询的项目: 1.学号 2.姓名;");scanf("%d",&a);if(a==1) scanf("%d",&xh);else scanf("%s",xm);// 根据用户输入判定用户是根据学号还是姓名查询switch(a){// 根据学号查询case 1:// 遍历查找用户所输入的学号for(i=0;i<n;i++)if(score[i].num==xh){j=i;flag=1;}if(flag==0) printf("*****抱歉没有找到.******"); // 没有找到,跳出else //找到了用户输入的学号,打印{ printf("学号:%d 姓名: %s\n",score[j].num,score[j].name);printf("**课程编号课程名称课程成绩课程学分**\n");for(i=0;i<4;i++){printf("%d %s %d %5.2f\n",score[j].subject[i].num,score[j].subject[i].name,score[j].subject[i].result,score[j].subject[i].credit);}}break;// 根据姓名查询case 2:// 遍历查找用户输入的姓名for(i=0;i<n;i++)if(strcmp(score[i].name,xm)==0){j=i;flag=1;}if(!flag) printf("*****抱歉没有找到.******");else // 找到了用户输入的学生姓名,打印{ printf("学号:%d 姓名: %s\n",score[j].num,score[j].name);printf("课程编号课程名称课程成绩课程学分\n");for(i=0;i<4;i++){printf("%d %s %d %f\n",score[j].subject[i].num,score[j].subject[i].name,score[j].subject[i].result,score[j].subject[i].credit);}}break;default:printf("****输入错误!!****");}}// 删除一条学生记录void del(){ char xm[10];int i,flag=0,j,a,xh;printf("****请输入要删除的项目: 1.学号 2.姓名:");scanf("%d",&a);// 根据用户输入进行不同的查找switch(a){// 接收用户输入为学号case 1:scanf("%d",&xh);// 查找此学号的记录for(i=0;i<n;i++)if(score[i].num==xh) // 找到{for(j=i;j<n-1;j++) //进行删除,策略是用后一项覆盖前一项,达到删除目的score[j]=score[j+1];n=n-1;flag=1;}if(!flag)printf("*****抱歉没有找到.******\n");break;// 接收用户输入为姓名。
C语言程序设计报告-学生成绩记录簿
2.2结构流程图
2.3功能
2.4性能
2.5输入输出项信息
3功能模块说明
3.1流程逻辑
3.2算法
4程序测试,运行结果及说明
5课程设计总结
6附录(参考文献,原代码解析,限制条件,程序测试)
6.1参考文献
6.2原代码解析
6.3限制条件
1.概述
1.1 题目
成绩记录簿
1.2程序描述
本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。
(2)按学号查询
4.查询班级成绩
5.写入文本文件
6.读取文本文件
4课程设计总结
短短的俩周已经过去了,在此我将交出我一周的成果,我真是百感交错
1.原先写程序直接编,条理性太差。如果先做一个流程图就条理很多。
2.学会了将文件存入和读取,并学会在文件中加入信息和删除信息。
3.我在查找学生姓名时遇到困难,从课本上找到了一个函数strcmp,解决了问题
1.建立一个主界面
2.用switch语句进行分类讨论
3.分别进入录入,查询,删除,求平均值等子函数。
4.将子函数与主函数相连即可。
1.3程序性能
该程序可以建立学生的成绩记录。可以方便老师和同学方便的查阅成绩;
这个程序有录入和删除的功能;
还可以求出平均成绩,并排序
2课题分析
2.1程序系统的结构
2.2程序流程图
按平均值排序只要加一个排序函数即可。
C语言程序设计学生成绩管理系统实验报告
移通学院C语言程序设计报告书设计名称:学生成绩管理系统专业:指导老师:班级:姓名:学号:座号:时间一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;3.培养初步编程的能力,为以后的学习奠定基础;二、实验内容运用所学的C语言知识编辑一个应用程序:学习成绩管理系统三.系统软件环境:本程序主要运行在: Visual C++ 6.0Turbo C/C++ 3.0四.课程设计题目:学生成绩管理系统程序说明:有N个学生,每个学生的数据包含学号不重复、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:1主菜单2各菜单项功能①成绩录入:输入学生的学号、姓名及三门课的成绩;②成绩查询:按学号查询学生记录;③成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;④退出系统:退出整个系统即主菜单;五.数据结构设计描述:↓int num; /定义学号,变量为整型/char name; /定义姓名,变量为字符型/int score; /定义课程的成绩,变量为整型/float average; /定义平均分,变量为浮点型/七.系统各函数的功能,、相互调用关系1.函数实现功能说明:1menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择;2input函数是定义用于输入学生信息;3select 函数是定义用于查询学生信息;包括学号、姓名及各科成绩;4statistics 函数计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序输出;2.相互调用关系:Main函数调用menu函数;Menu 函数可以调用input 函数、select函数和statistics 函数八.心得体会C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距;我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序; 九.程序:include <stdio.h>include <stdlib.h>include <conio.h>define N 3 /学生人数/define M 3 /课程门数/struct student{int num; /学号/char name20; /姓名/int score3; /三门课成绩/float average;}stuN; /学生数/void input; /查询/void select; /统计/void menu;void input{int i,j;printf"\t\t①成绩录入\n\n";fori=0;i<N;i++{printf"请输入学号:";scanf"%d",&stui.num;printf"请输入姓名:";scanf"%s",&;forj=0;j<M;j++{printf"第%d门成绩的分数:",j+1;scanf"%d",&stui.scorej;}printf"\n\n";}printf"\n\n";printf"输入完毕按任意键返回主菜单";}/2.查询/void selectint no{int i;printf"学生%d号: \n",no; printf"学号: %d\n",stuno-1.num; printf"姓名: %s\n",;for i=0;i<M;i++{printf"第%d门课程的成绩为: ",i+1; printf"%d\n",stuno-1.scorei;}printf"\n按任意键返回主菜单";getch;}/3.统计/void statistics{float temp=0;int i=0;/学生成绩平均分/temp=0;printf"\t\t③成绩统计\n\n";forj=0;j<N;j++{fori=0;i<M;i++{temp=temp+stuj.scorei;}stuj.average=temp/N;printf"\n学生%s的成绩平均成绩为:",;printf"%0.2f分",stuj.average;temp=0;}/排序/for j=0;j<N;j++fori=0;i<N-j-1;i++ifstui.average<stui+1.average{ temp=stui.average;stui.average=stui+1.average;stui+1.average=temp;}printf"\n\n学生平均成绩前三名:";fori=0;i<3;i++{printf"\n第%d名:%0.2f分",i+1,stui.average;}printf"\n\n按任意键返回主菜单";getch;}void menu{ int num=0;int n=0;printf"\n\t\t\t学生成绩管理系统\n\n";printf"\n\t\t\t①成绩录入\n\t\t\t②成绩查询\n\t\t\t③成绩统计\n\t\t\t④退出系统\n";printf"\t\t\tchoose:";scanf"%d",#switchnum{case 1:system"cls";input;break;case 2:system"cls";printf"\t\t②成绩查询\n\n"; printf"请输入要查询的学生号1~3:";scanf"%d",&n;selectn;break;case 3:system"cls";statistics;break;case 4:exit0;default:;}}void main{while1{system"cls"; /清屏/menu;}}。
c语言学生成绩记录簿
C语言学生成绩记录簿一、引言学生成绩的记录与管理是学校教育工作的重要环节。
为了便于教师和学生对学生成绩进行及时、准确的统计和分析,开发一个C语言学生成绩记录簿是非常必要的。
本文将详细介绍该学生成绩记录簿的设计和实现。
二、需求分析2.1 学生信息管理在学生成绩记录簿中,首先需要实现学生信息的管理。
每个学生的信息包括学号、姓名、性别、年龄等基本信息。
为了方便查询和排序,还需要提供按学号和姓名进行查询的功能。
2.2 课程信息管理除学生信息外,还需要管理课程信息。
每门课程包括课程编号、课程名称和学分等基本信息。
同样地,为了方便查询和排序,也需要提供按课程编号和课程名称进行查询的功能。
2.3 学生成绩录入学生成绩录入是学生成绩记录簿的核心功能。
每个学生的成绩包括学号、课程编号和成绩等信息。
成绩信息的录入应具备以下特点:•提供学号和课程编号的输入框,保证输入的学生和课程有效存在。
•提供合法的成绩输入框,只接受0-100之间的整数或浮点数。
•录入的成绩会自动计算对应学生的平均成绩,并显示在学生信息中。
2.4 成绩查询与分析学生成绩记录簿还应提供按照学号、课程编号以及各种组合条件进行成绩查询的功能。
此外,还需要统计并展示每门课程的最高分、最低分、平均分以及及格人数等分析结果。
2.5 数据存储为了保证数据的持久性,学生成绩记录簿需要提供数据存储的功能。
可以使用文件方式将学生信息、课程信息和成绩信息保存在磁盘上。
同时,还需要提供载入数据和保存数据的功能,以便在程序启动和关闭时进行数据的读取和保存。
三、设计与实现3.1 学生信息管理模块3.1.1 添加学生信息根据用户输入的学生信息,创建一个学生对象,并将其存储在学生信息集合中。
3.1.2 修改学生信息根据用户输入的学号,查找对应的学生对象,并提供修改学生信息的选项。
用户可以修改学生的姓名、性别、年龄等信息。
3.1.3 删除学生信息根据用户输入的学号,从学生信息集合中移除对应的学生对象。
C语言程序设计报告材料-学生成绩记录簿簿
应用技术学院课程设计2011 ~ 2012学年第 2 学期设计题目成绩记录簿院(系)计算机科学与信息工程专业网络工程班级 11104301 学号 1110430115学生 xx设计时间 2012.06.25~2012.07.06指导教师 xxx提交日期 2012.07.06目录1. 概述1.1 题目1.2程序简述1.3程序性能2 课题分析2.1程序系统的结构2.2 结构流程图2.3功能2.4 性能2.5 输入输出项信息3 功能模块说明3.1 流程逻辑3.2 算法4 程序测试,运行结果及说明5课程设计总结6 附录(参考文献,原代码解析,限制条件,程序测试)6.1参考文献6.2原代码解析6.3限制条件1.概述1.1 题目成绩记录簿1.2程序描述本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。
本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。
我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。
1.建立一个主界面2.用switch语句进行分类讨论3.分别进入录入,查询,删除,求平均值等子函数。
4.将子函数与主函数相连即可。
1.3程序性能该程序可以建立学生的成绩记录。
可以方便老师和同学方便的查阅成绩;这个程序有录入和删除的功能;还可以求出平均成绩,并排序2课题分析2.1程序系统的结构2.2程序流程图课程编号2.3功能成绩记录簿中记录以下数据:学号、、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分;输入信息时要检查数据项学号、课程编号、成绩、学分的合法性,学号:8位数字;课程编号:5位数字;成绩:0 ~ 100 之间的整数,学分:1~ 5之间的实型数。
添加成绩:需要输入学生的学号或、课程编号及成绩,如已有该门课程成绩给出提示;查询(班级或个人)成绩:查询个人成绩:以学号或作为关键字,可查询一个学生的所有成绩,和已完成的总学分。
c语言程序设计学生成绩管理系统报告
c语言程序设计学生成绩管理系统报告C语言程序设计学生成绩管理系统报告一、引言随着计算机技术的不断发展,计算机在教育领域中的应用也越来越广泛。
学生成绩管理系统是一种基于计算机技术的教育管理工具,可以方便、快捷地管理学生的成绩信息。
本报告介绍了一种基于C语言的学生成绩管理系统的设计与实现。
二、系统设计1.需求分析学生成绩管理系统需要实现以下功能:(1)录入学生信息:包括学生姓名、学号、性别、年龄等基本信息。
(2)录入学生成绩:包括语文、数学、英语等科目的成绩。
(3)查询学生成绩:可以按照学号、姓名等条件查询学生成绩。
(4)修改学生成绩:可以修改学生的成绩信息。
(5)删除学生成绩:可以删除学生的成绩信息。
2.系统设计(1)数据结构设计本系统采用结构体来存储学生信息和成绩信息。
结构体的定义如下:typedef struct student{char name[20]; //姓名char id[20]; //学号char sex[10]; //性别int age; //年龄float chinese; //语文成绩float math; //数学成绩float english; //英语成绩}STUDENT;(2)界面设计本系统采用命令行界面,用户可以通过输入数字选择相应的功能。
(3)功能实现本系统实现了录入学生信息、录入学生成绩、查询学生成绩、修改学生成绩和删除学生成绩等功能。
具体实现方法如下:① 录入学生信息用户输入学生的基本信息,程序将信息存储到结构体中。
② 录入学生成绩用户输入学生的学号,程序查找该学生的信息并录入成绩。
③ 查询学生成绩用户输入学号或姓名,程序查找学生的信息并输出成绩。
④ 修改学生成绩用户输入学号,程序查找该学生的信息并修改成绩。
⑤ 删除学生成绩用户输入学号,程序查找该学生的信息并删除成绩。
三、系统实现本系统采用C语言编写,具体实现方法如下:(1)定义结构体typedef struct student{char name[20]; //姓名char id[20]; //学号char sex[10]; //性别int age; //年龄float chinese; //语文成绩float math; //数学成绩float english; //英语成绩}STUDENT;(2)录入学生信息void input_student(STUDENT *stu) {printf("请输入学生姓名:");scanf("%s", stu->name);printf("请输入学生学号:");scanf("%s", stu->id);printf("请输入学生性别:");scanf("%s", stu->sex);printf("请输入学生年龄:");scanf("%d", &stu->age);}(3)录入学生成绩void input_score(STUDENT *stu) {printf("请输入学生学号:");char id[20];scanf("%s", id);if(strcmp(stu->id, id) == 0){printf("请输入语文成绩:");scanf("%f", &stu->chinese);printf("请输入数学成绩:");scanf("%f", &stu->math);printf("请输入英语成绩:");scanf("%f", &stu->english);}}(4)查询学生成绩void search_score(STUDENT *stu){printf("请输入学号或姓名:");char id[20];scanf("%s", id);if(strcmp(stu->id, id) == 0 || strcmp(stu->name, id) == 0){printf("姓名:%s 学号:%s 性别:%s 年龄:%d 语文成绩:%.2f 数学成绩:%.2f 英语成绩:%.2f\n", stu->name, stu->id, stu->sex, stu->age, stu->chinese, stu->math, stu->english);}}(5)修改学生成绩void modify_score(STUDENT *stu) {printf("请输入学号:");char id[20];scanf("%s", id);if(strcmp(stu->id, id) == 0){printf("请输入语文成绩:"); scanf("%f", &stu->chinese); printf("请输入数学成绩:"); scanf("%f", &stu->math);printf("请输入英语成绩:"); scanf("%f", &stu->english); }}(6)删除学生成绩void delete_score(STUDENT *stu) {printf("请输入学号:");char id[20];scanf("%s", id);if(strcmp(stu->id, id) == 0){stu->chinese = 0;stu->math = 0;stu->english = 0;}}四、系统测试本系统经过测试,能够正常运行,并且实现了所有功能。
成绩记录薄的C语言设计程序
#include<stdio.h>#include<string.h>#include<stdlib.h>#define MAX 100typedef struct{char num[100];//char name[100];int grade;}Student;Student stu[MAX];int n;main(){void Input();void Display();void Readfile();void Find();void Modify();void Save();void Dis();int choose;do{printf("1输入学生信息并存档\n");printf("2读取学生信息并显示\n");printf("3按学号或姓名查询成绩\n");printf("4修改(删除)指定姓名或学号的学生的成绩并可存盘\n"); printf("5显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息\n");printf("退出(其他数字)\n");scanf("%d",&choose);if(choose==1) {Input();Save();}else if(choose ==2) {Readfile();Display();}else if(choose ==3) {Readfile();Find(1);}else if(choose==4) {Readfile();Find(0);}else if(choose==5) {Readfile();Dis();}}while(1);}void Dis(){int i;printf("60分以下的:\n");for(i=0;i<n;i++){if(stu[i].grade<60)printf("%s %s %d\n",stu[i].num,stu[i].name,stu[i].grade);}printf("60~79分的:\n");for(i=0;i<n;i++){if(stu[i].grade<80&&stu[i].grade>=60) printf("%s %s %d\n",stu[i].num,stu[i].name,stu[i].grade);}printf("80~89分的:\n");for(i=0;i<n;i++){if(stu[i].grade<90&&stu[i].grade>=80) printf("%s %s %d\n",stu[i].num,stu[i].name,stu[i].grade);}printf("90分的:\n");for(i=0;i<n;i++){if(stu[i].grade>=90)printf("%s %s %d\n",stu[i].num,stu[i].name,stu[i].grade);}}void Modify(int t){int choose;int i;printf("1.删除\n");printf("other.修改\n");scanf("%d",&choose);if(choose==1){for(i=t;i<n-1;i++){stu[i]=stu[i+1];}n--;}else{printf("请重新输入该学生的信息:\n");scanf("%s %s %d",stu[t].num,stu[t].name,stu[t].grade);}Save();}void Find(int p){int i;int choose,t;char ans[100];do{printf("1.按学号查找\n");printf("2.按姓名查找\n");printf("返回主菜单(其他数字)\n");scanf("%d",&choose);if(choose==1||choose==2){scanf("%s",ans);t=-1;if(choose==1){for(i=0;i<n;i++)if(strcmp(ans,stu[i].num)==0) {t=i;break;}}else{for(i=0;i<n;i++)if(strcmp(ans,stu[i].name)==0) {t=i;break;}}if(t==-1) printf("不存在该学生信息\n");else{if(p==1)printf("%s %s %d\n",stu[t].num,stu[t].name,stu[t].grade);elseModify(t);}}else return;}while(1);}void Display(){int i;printf("学号姓名成绩:\n");for(i=0;i<n;i++){printf("%s %s %d\n",stu[i].num ,stu[i].name ,stu[i].grade);}}void Readfile(){FILE *fp;if((fp=fopen("student.dat","r"))==NULL) return ;n=0;while(!feof(fp)){fscanf(fp,"%s%s%d",stu[n].num,stu[n].name,&stu[n].grade);n++;}fclose(fp);}void Input(){n=0;do{printf("请输入第%d个学生信息,输入exit结束输入(输入格式:学号姓名成绩)\n",n+1);scanf("%s",stu[n].num);if(strcmp(stu[n].num,"exit")==0) break;scanf("%s%d",stu[n].name,&stu[n].grade);n++;}while(1);}void Save(){int i;FILE* fp;if((fp=fopen("student.dat","a"))==NULL)fp=fopen("student.dat","w");for(i=0;i<n;i++){fprintf(fp,"%s %s %d\n",stu[i].num,stu[i].name,stu[i].grade);}fclose(fp);}。
c语言课程设计学生成绩管理系统报告(一)
c语言课程设计学生成绩管理系统报告(一)C语言课程设计学生成绩管理系统报告介绍•学生成绩管理系统的设计背景•项目的目的和意义系统需求分析•功能需求–学生信息录入–成绩管理–查询与统计•性能需求–系统响应速度–数据存储和读取效率系统设计•系统结构•数据库设计•模块功能划分技术选型•编程语言选择:C语言•数据库选择:SQLite 实现步骤•搭建开发环境•创建学生信息录入模块•创建成绩管理模块•创建查询与统计模块•进行系统集成和测试系统遇到的问题与解决方案•内存管理问题•数据库操作问题•用户界面设计问题系统改进与优化•提升性能•增加功能•修复bug结果与展望•成果总结•可能的进一步发展方向参考资料•《C语言程序设计》•《数据库系统概念》•网上开源学生成绩管理系统案例介绍本文将介绍一款基于C语言的学生成绩管理系统的设计与开发。
学生成绩管理系统是一种用于方便高校或学校管理学生成绩的工具。
本项目的目的是提供一个简单易用、功能全面的学生成绩管理系统。
系统需求分析功能需求学生成绩管理系统需具备以下功能:1.学生信息录入:能够方便地录入学生的基本信息,包括姓名、学号、班级等。
2.成绩管理:能够记录学生的各科成绩,并能对成绩进行增、删、改、查等操作。
3.查询与统计:能够根据学号、姓名等条件进行查询,还能对成绩进行统计,包括总分、平均分等。
性能需求为确保学生成绩管理系统的良好使用体验,有以下性能需求:1.系统响应速度:系统应具备快速响应用户操作的能力,避免出现卡顿现象。
2.数据存储和读取效率:系统应能高效地存储和读取学生信息和成绩数据,以保证系统的稳定性和可靠性。
系统设计系统结构学生成绩管理系统采用前后端分离的设计方式,前端使用C语言编写,后端使用SQLite数据库进行数据存储和读取。
系统结构由三个主要模块组成:学生信息录入模块、成绩管理模块和查询与统计模块。
数据库设计系统使用SQLite数据库进行数据存储和读取。
数据库设计包括学生表和成绩表,学生表存储学生的基本信息,成绩表存储学生的各科成绩。
C语言程序的设计学生成绩记录簿
课程实验报告本程序是非数值计算型算法设计,我设计出了学生成绩记录簿系统的基本功能,并设计了简单的界面。
本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。
我设计的这个成绩记录簿系统也初步实现了学生成绩信息的显示、输入、删除、查找等必要的功能。
1.建立一个主界面2.用switch语句进行分类讨论3.分别进入录入,查询,删除,等子函数。
4.将子函数与主函数相连即可。
该程序可以建立学生的成绩记录。
可以方便老师和同学方便的查阅成绩;这个程序有录入和删除的功能;还可以求出平均成绩,并排序成绩记录簿中记录以下数据:学号、、课程编号、课程名称、成绩、学分 添加成绩:需要输入学生的学号或、课程编号及成绩,如已有该门课程成绩给出提示;查询(班级或个人)成绩:查询个人成绩:以学号或作为关键字,可查询一个学生的所有成绩,和已完成的总学分。
查询班级成绩:以课程编号为关键字,成绩表后面要统计平均分、及格率及全班同学不同课程在不同分数段分布的人数及百分比。
拓展功能:a) 程序启动时先从文件读入数据,如果文件中没有数据则给出提示;实验界面截图2、添加3、查询4、查询成绩5、写文本6、读取算主程序提供一个界面,允许用户选择。
使用switch语句,用时直接输入数字即可。
增加函数,功能是插入学生成绩。
使用一个无穷循环,直到录入”n”时结束。
删除函数,功能是删除,分为两步,先找后删。
找,用strcmp函数来。
C语言程序设计报告-学生成绩记录簿.docx
上海应用技术学院课程设计2011 ~ 2012 学年第 2学期设计题目成绩记录簿院(系)计算机科学与信息工程专业网络工程班级学号 15学生姓名xx设计时间指导教师xxx提交日期目录1.概述题目程序简述程序性能2课题分析程序系统的结构结构流程图功能性能输入输出项信息3功能模块说明流程逻辑算法4程序测试,运行结果及说明5课程设计总结6附录(参考文献,原代码解析,限制条件,程序测试)6.1参考文献6.2原代码解析限制条件1.概述题目成绩记录簿程序描述本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。
本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。
我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。
1.建立一个主界面2.用 switch 语句进行分类讨论3.分别进入录入,查询,删除,求平均值等子函数。
4.将子函数与主函数相连即可。
程序性能该程序可以建立学生的成绩记录。
可以方便老师和同学方便的查阅成绩;这个程序有录入和删除的功能;还可以求出平均成绩,并排序课题分析程序系统的结构主函数添加成绩求平均值删除成绩查询按平均值排序退出程序流程图课程编号添加成绩查询成绩添添添添查查加加加加询询学学课学学班生生程生生级学姓编成成成号名号绩绩绩查询学生成绩查询班级成绩课程功能学姓编号名号查查询询成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分;输入信息时要检查数据项学号、课程编号、成绩、学分的合法性,学号:8位数字;课程编号: 5 位数字;成绩: 0 ~ 100 之间的整数,学分:1~ 5 之间的实型数。
添加成绩:需要输入学生的学号或姓名、课程编号及成绩,如已有该门课程成绩给出提示;查询(班级或个人)成绩:查询个人成绩:以学号或姓名作为关键字,可查询一个学生的所有成绩,和已完成的总学分。
学生成绩管理系统C程序设计报告
学生成绩管理系统C程序设计汇报一、设计规定:1. 规定运用C语言面向过程旳编程思想来完毕系统旳设计;2. 突出C语言旳函数特性,以多种函数实现每一种子功能;3. 画出功能模块图;4. 进行简朴界面设计,可以实现友好旳交互;5. 具有清晰旳程序流程图和数据构造旳详细定义;6. 纯熟掌握C语言对文献旳多种操作。
二、设计旳作用、目旳通过程序设计,提高编程爱好与编程水平。
设计一种学生成绩管理系统,上学期旳本班旳学习成绩进行管理,可以用数组设计这个程序,具有查询和检索功能,并且可以对指定文献操作,也可将多种文献构成一种文献。
通过对此程序旳设计纯熟掌握c语言。
三、课题分析输入N个学生旳学号和每个学生考试三门功课(数学、英语、计算机基础)旳成绩。
编程计算出每个学生旳总分和平均分,并按学生成绩优劣排序。
规定:具有:登记学生资料、删除学生资料、查询学生资料、修改学生资料、保留学生资料、退出系统等各项功能。
四、设计旳详细实现1、系统旳构成模块构造及功能(1)、目前学生信息:通过构造体struct student 来保留学生旳姓名,学号,性别,语文,数学,英语和计算机等等有关信息,并且通过cin函数来进行给目前学生输入初始信息.详细使用旳程序构造如下:printstart();printc();printe(s);printstart();printf("\n");return;}s=s->next;}p=(Node *)malloc(sizeof(Node)); strcpy(p->data.num,num);printf("请你输入姓名:");scanf("%s",p->); getchar();printf("请你输入性别:");scanf("%s",p->data.sex); getchar();printf("请你输入c语言成绩:"); scanf("%d",&p->data.cgrade); getchar();printf("请你输入数学成绩:"); scanf("%d",&p->data.mgrade); getchar();printf("请你输入英语成绩:");scanf("%d",&p->data.egrade);getchar();p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;p->data.ave=p->data.totle / 3;/* 信息输入已经完毕 */(2)、学生成绩查询: 输入一种学号, 在文献中查找此学生, 若找到则输出此学生旳所有信息和成绩; 若找不到则输出查找失败旳信息. 同步也可以所有把各科旳平均成绩,最高和最低分输出。
C语言程序设计学生成绩记录簿
for (i = 0; i < StudentCount; i++)
{
if (0==strcmp(S[i].Name,a))
{
printf("\n学号:%s\t姓名:%s\n", S[i].Number, S[i].Name);
printf("\n课程编号\t课程名称\t课程成绩\t课程学分\n");
C语言程序设计学生成绩记录簿
课程实验报告
课程名称
C语言程序设计
班级
13新能源2班
实验日期
2013年8月1号
姓名
许鑫
学号
6
实验成绩
实验名称
学生成绩记录簿系统
实
验
题
目
描
述
本程序是非数值计算型算法设计,我设计出了学生成绩记录簿系统的基本功能,并设计了简单的界面。本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。我设计的这个成绩记录簿系统也初步实现了学生成绩信息的显示、输入、删除、查找等必要的功能。
增加函数,功能是插入学生成绩。使用一个无穷循环,直到录入”n”时结束。
删除函数,功能是删除,分为两步,先找后删。找,用strcmp函数 来做如果找到记录i值,反之记为-1;删除可以从i项开始将数组的后一项赋值给前一项。前一项自动被删掉。这样完成删除。
查询函数与之类似,将删除改为输出即可;
求平均值函数与查询类似只是输出时只输出平均值而已。
printf("\n| 6、读取文本文件 |\n");
printf("\n| 0、退出 |\n");
C语言程序设计报告-学生成绩记录簿
上海应用技术学院课程设计2011 ~ 2012 学年第 2 学期设计题目成绩记录簿院(系)计算机科学与信息工程专业网络工程班级11104301 学号1110430115学生姓名xx设计时间2012.06.25~2012.07.06指导教师xxx提交日期2012.07.06目录1. 概述1.1 题目1.2程序简述1.3 程序性能2 课题分析2.1程序系统的结构2.2结构流程图2.3功能2.4性能2.5输入输出项信息3 功能模块说明3.1 流程逻辑3.2 算法4 程序测试,运行结果及说明5 课程设计总结6附录(参考文献,原代码解析,限制条件,程序测试)6.1 参考文献6.2原代码解析2.限制条件1.4概述2.6题目成绩记录簿2.7程序描述本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。
本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。
我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。
3.3建立一个主界面3.4用switch 语句进行分类讨论3.5分别进入录入,查询,删除,求平均值等子函数。
3.6将子函数与主函数相连即可。
2.8程序性能该程序可以建立学生的成绩记录。
可以方便老师和同学方便的查阅成绩;这个程序有录入和删除的功能;还可以求出平均成绩,并排序2课题分析3.程序系统的结构主函数添加成绩删除成绩按平均值排序求平均值查询退出4.程序流程图课程编号添加成绩查询成绩添添添添查查加加加加询询学学课学学班生生程生生级学姓编成成成号名号绩绩绩查询学生成绩查询班级成绩课程学姓编号名号查查询询5.功能成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分;输入信息时要检查数据项学号、课程编号、成绩、学分的合法性,学号:8位数字;课程编号:5位数字;成绩:0 ~ 100 之间的整数,学分:1~ 5 之间的实型数。
c语言程序设计学生成绩管理系统报告
C语言程序设计学生成绩管理系统报告引言随着计算机技术的发展,C语言作为一种高级程序设计语言,被广泛应用于各个领域。
在教育领域中,C语言的学习也越来越重要。
为了提高学生在C语言程序设计方面的能力,快速准确地管理学生成绩,我们设计了一个C语言程序设计学生成绩管理系统。
设计目标•实现学生成绩的录入、查询、修改和删除功能。
•提供直观、友好的用户界面,操作简便明了。
•保证系统的安全性,仅授权用户可进行操作。
•能够生成学生成绩报告和统计信息,方便教师和学生进行分析和参考。
系统设计与实现数据结构为了实现学生成绩的管理,我们采用了以下的数据结构:1.学生信息结构体–学号–姓名–年龄–性别–成绩typedef struct {int student_id;char name[20];int age;char gender[10];float score;} Student;2.学生信息链表–指向学生信息的指针–指向下一个学生信息的指针typedef struct Node {Student* student_info;struct Node* next;} StudentNode;功能实现录入学生信息1.输入学生信息,并验证合法性(如学号是否已存在)。
2.将学生信息加入学生信息链表中。
查询学生信息1.输入学号或姓名进行查询。
2.在学生信息链表中查找匹配的学生信息。
3.显示查找到的学生信息。
修改学生信息1.输入学号或姓名进行查询。
2.在学生信息链表中查找匹配的学生信息。
3.若找到匹配的学生信息,则修改其中的字段内容。
删除学生信息1.输入学号或姓名进行查询。
2.在学生信息链表中查找匹配的学生信息。
3.若找到匹配的学生信息,则删除该节点。
生成报告和统计信息1.遍历学生信息链表,计算平均分、最高分和最低分。
2.根据指定条件(如按性别、按年龄段)进行筛选和排序。
3.根据筛选结果生成学生成绩报告和统计信息。
用户界面设计为了提供友好的用户界面,我们采用了命令行界面(CLI)的设计,用户可通过键盘输入命令进行操作。
C语言程序设计学生成绩记录簿
课程实验报告以自己的电脑为主要的实验平台,运用Visual C++ 6.0 这个软件进行反复的编写实验。
实验环境1、开始时实验界面截图2、添加精品文档5、写文本6、读取主程序提供一个界面,允许用户选择。
使用 switch 语句,用时直接输 入数字即可。
增加函数,功能是插入学生成绩。
使用一个无穷循环,直到录入”n ”时结束。
删除函数,功能是删除,分为两步,先找后删。
找,用strcmp 函数 来 做如果找到记录i 值,反之记为-1 ;删除可以从i 项开始将数组的后一项赋 值给前一项。
前一项自动被删掉。
这样完成删除。
查询函数与之类似,将删除改为输出即可; 求平均值函数与查询类似只是输出时只输出平均值而已。
按平均值排序只要加一个排序函数即可。
退出函数什么都不写,即可。
程序流程图法 描 述 及 实 验步骤添添添 加加加学学课 生生程查询成绩添加成绩生查 询查 询 级调试过程及实验结果经过一个多星期的编译原理课程设计, 总设计。
结通过该课程设计,掌握了编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程及其相关的技术,对课本上的知识也有了更深的理解。
老师常说,课本上的知识是机械的, 表面的,要学会去运用,要举一反三。
现在终于深刻的了解了这句话。
经过这次的课程设计,发现书本上很深奥的知识变的在我的努力下,顺利完成该课程更为简单,同样,对实验原理也了有更深的理解。
知道和理解了该理论在计算机中是怎样执行的,对该理论在实践中的应用有深刻的理解。
通过该课程设计,把死板的课本知识变得生动有趣,激发了学习的积极性。
能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。
课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除。
除了课堂外,课程设计是最能学到东西的,最考验人精品文档11欢迎下载}void Printin terface() { int n;while (1){ prin tf("\n ---欢迎使用学生成绩记录簿系统 --- prin tf("\n| 1、添加 |\n"); prin tf("\n| 2、删除 |\n"); prin tf("\n| 3、查学生成绩 |\n"); prin tf("\n| 4、查班成绩表 |\n"); prin tf("\n| 5、与入文本文件 |\n"); prin tf("\n| 6 、读取文本文件|\n"); prin tf("\n| 0 、退出 |\n");prin tf("\n -------- ---------------- ");prin tf("\n选择操作:"); scanf("%d",&n); switch( n){case 1:if (Stude nt_In sert())printf("\n添加成功...回车继续\n");elseprintf("\n添加失败...回车继续\n"); break;case 2:Stude nt_Delete(); break; case 3:Stude nt_Select(); break; case 4:Class_Select();break;case 5:WriteFile();break;case 6:ReadFile();。
学生成绩簿设计实验报告
学生成绩簿设计目录一、实训的目的与要求 (1)二、题目说明 (1)三、总体设计 (2)3.1.主函数流程图 (2)3.2.子函数流程图及其他 (3)四、详细设计和实施 (4)4.1 模块1 (4)五、遇到的问题和解决方法 (5)六、实训总结 (6)七、参考文献 (6)附录(源程序代码) (6)一、实训的目的与要求1. C语言课程设计的主要目的是培养学生综合运用C语言程序设计课程所学到的知识,编写C程序解决实际问题的能力,以及严谨的工作态度和良好的程序设计习惯。
2.通过课程设计的训练,学生应该能够了解程序设计的基本开发过程,掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。
3. C语言程序设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试C语言程序及编写设计报告。
二、题目说明编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。
具体功能:(1)创建学生信息并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的成绩;(3)按学号或姓名查询成绩;(4)添加成绩记录;(5)修改指定姓名或学号的学生的成绩并可存盘;(6)显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息(可选项)。
三、总体设计3.1.主函数流程图图1主函数流程图3.2.子函数流程图及其他流程图图2 子函数流程图图3 删除信息流程图图3查找信息流程图图4修改信息流程图四、详细设计和实施4.1 模块1步骤1:根据数字提示从1-5中选择要操作的功能,如图5所示:图5步骤2:按1键,会出现提示“插入信息”,按2,会出现“删除信息”,按3,“修改信息”,按4,会出现“查看信息”,按5,“保存”,按q 键即可退出,如图6所示:图6 步骤3:键入1回车,会出现提示“请输入要删除学生信息”,现在就可以删除学生信息,如图7所示:图7步骤4:键入2及Enter键,会出现提示“请输入要查找的学生信息”,然后根据提示将该学生的信息删除,如图8所示:图8五、遇到的问题和解决方法大多的语法错误在通过书本参考下能够修改。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
应用技术学院课程设计2011 ~ 2012学年第 2 学期设计题目成绩记录簿院(系)计算机科学与信息工程专业网络工程班级 11104301 学号 1110430115学生 xx设计时间 2012.06.25~2012.07.06指导教师 xxx提交日期 2012.07.06目录1. 概述1.1 题目1.2程序简述1.3程序性能2 课题分析2.1 程序系统的结构2.2 结构流程图2.3 功能2.4 性能2.5 输入输出项信息3 功能模块说明3.1 流程逻辑3.2 算法4 程序测试,运行结果及说明5课程设计总结6附录(参考文献,原代码解析,限制条件,程序测试)6.1参考文献6.2原代码解析6.3限制条件1.概述1.1 题目成绩记录簿1.2程序描述本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。
本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。
我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。
1.建立一个主界面2.用switch语句进行分类讨论3.分别进入录入,查询,删除,求平均值等子函数。
4.将子函数与主函数相连即可。
1.3程序性能该程序可以建立学生的成绩记录。
可以方便老师和同学方便的查阅成绩;这个程序有录入和删除的功能;还可以求出平均成绩,并排序2课题分析2.1程序系统的结构2.2程序流程图课程编号2.3功能成绩记录簿中记录以下数据:学号、、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分;输入信息时要检查数据项学号、课程编号、成绩、学分的合法性,学号:8位数字;课程编号:5位数字;成绩:0 ~ 100 之间的整数,学分: 1~ 5之间的实型数。
添加成绩:需要输入学生的学号或、课程编号及成绩,如已有该门课程成绩给出提示;查询(班级或个人)成绩:查询个人成绩:以学号或作为关键字,可查询一个学生的所有成绩,和已完成的总学分。
查询班级成绩:以课程编号为关键字,成绩表后面要统计平均分、及格率及全班同学不同课程在不同分数段分布的人数及百分比。
拓展功能:a) 程序启动时先从文件读入数据,如果文件中没有数据则给出提示;b) 每次修改的数据写入文件2.4性能方便,灵活,直观,易用2.5 输入输出项信息输入项:char name[10] 设置学生名称long int id 定义学号为长整型float avg 平均分为实数输出项int m1,m2,m3,score,xf; 定义整型float avg; 以浮点型输出平均分3 功能模块说明3.1 .................................. 流程逻辑主程序提供一个界面,允许用户选择。
使用switch语句,用时直接输入数字即可。
增加函数,功能是插入学生成绩。
使用一个无穷循环,直到录入”n”时结束。
删除函数,功能是删除,分为两步,先找后删。
找,用strcmp函数来做如果找到记录i值,反之记为-1;删除可以从i项开始将数组的后一项赋值给前一项。
前一项自动被删掉。
这样完成删除。
查询函数与之类似,将删除改为输出即可;求平均值函数与查询类似只是输出时只输出平均值而已。
按平均值排序只要加一个排序函数即可。
退出函数什么都不写,即可。
3.2 算法本程序参考了冒泡法其代码结构为:For(i=0;i<k;i++){For(j=i;j<k;j++){If(a>b){}}}其中也多次用到了循环和判断结构3运行结果及说明1.开始时2.添加3.删除4.查询学生成绩(1)按名字查询(2)按学号查询4.查询班级成绩5.写入文本文件6.读取文本文件4课程设计总结短短的俩周已经过去了,在此我将交出我一周的成果,我真是百感交错1.原先写程序直接编,条理性太差。
如果先做一个流程图就条理很多。
2.学会了将文件存入和读取,并学会在文件中加入信息和删除信息。
3.我在查找学生时遇到困难,从课本上找到了一个函数 strcmp,解决了问题困难:我在定义学生的学号时首先用整型%d。
发现输出与录入不同。
改用长整型%ld 仍然不行。
但是字符型%s却可以做到。
!事实上,与过去相比,我认为这短短的一周给我的感悟更为强烈。
在此,首先我要感老师,是老师把我带进了这一门,俗话说的好“万丈高楼平地起”,所以说,基础很重要。
而老师讲课认真,讲也很透彻,使我们能较好的理解这门课,可以跟紧课堂进度,是我们有机会能打下结实良好的基础。
而且老师在平时也鼓励我们多提问,在我们遇到问题时,富有耐心地为我们解答。
在此再次感老师对我们不辞操劳的讲解!!一开始,当我第一眼看到这课程设计的时候,我感到十分的“痛苦”,老实说,在还未进行编程之前,我就感到这与我们之前的编程完全不一样,与这次相比,以前的上机实验就像是小孩子玩得,一点技术含量也没有。
以前的那些实验只要看看书,花上一二个小时,基本就可以完成了,而且以前的小程序最多也不过二三十行,不像这次要百来行。
从中可见它的难度,从而联想到那些专业编程员,我更深刻感到自己的不足。
由于之前从未进行过如此大的编程,所以一开始根本没头绪,后来只好用死办法,像写作文一样,首先先在纸上列出大致的提纲,然后再一个个慢慢延伸展开,最后再输入计算机,用它来运行。
可惜不运行还好,一运行只见一片的红色错误提示。
有些错误很简单,很好改,是由于自己的粗枝大叶引起的,比如:有些字符未定义,漏了一个“;”等。
但也有些高深莫测的问题,例如:当我好不容易把程序运行出来后,却发现当我选择删除这一项时,会发现不论我选择是按学号删除还是按删除都不会出现我所要删除的容,而是直接询问确定删除请按1~~。
又或者是当我添加时是添加了三个同学的成绩,但当我查询全班成绩时,却只有两位同学的成绩。
后来在百思不得其解之下,我只好向周围同学寻求帮助,最终在大家的帮助之下才解决的,诸如此类的问题还不少!有的已经解决,但有些还未,可惜时间不够,也只能如此。
经过这一周的课程设计,我发现我懂得了很多,它使我在编程时更仔细了,也使我学会了向周围人求教,培养了我自我学习,独立思考。
并且,使我更体会到了和高中的不一样,一切靠自觉,没有人会跟在你后面一直催你,告诉你该怎样怎样。
同时,我也更加了解到自己的不足,基础严重不扎实。
虽然这门课快结束了,但我会努力在假期中把自己的基础补好,期待在下次的课程设计时能够得心应手!6附录(参考文献,原代码解析,限制条件,程序测试)参考文献:[1]谭浩强. C程序设计(第三版) . :清华大学, 2005[2]谭浩强. C程序设计题解与上机指导(第三版) . :清华大学, 2005[3] Herbert Schildt. C语言大全(第四版). :电子工业, 2004[4]Samuel P.Harbison Ⅲ,Guy L.Steele. C语言参考手册(第5版). :机械工业,2003[5]建勋. C语言程序设计教程. :清华大学, 2008.2[6]武子. C程序设计教程(第2版). :清华大学, 2007.6(第2版)[7]K.N.King.C语言程序设计:现代方法(第2版).:人民邮电,2010原代码解析:#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX 1000struct Lesson{char LessonName[100];char LessonNumber[100];int LessonMark;float LessonCredit;};struct Student{char Name[100];char Number[100];int LessonCount;struct Lesson L[100];};struct Student S[MAX];int StudentCount = 0;void PrintInterface();int Student_Insert();int Student_Delete();void Student_Select();void Class_Select();void WriteFile();void ReadFile();int main(){int n;{PrintInterface();scanf("%d", &n);}}void PrintInterface(){int n;while (1){printf("\n -------------------------- ");printf("\n| 1、添加 |\n");printf("\n| 2、删除 |\n");printf("\n| 3、查学生成绩 |\n");printf("\n| 4、查班成绩表 |\n");printf("\n| 5、写入文本文件 |\n");printf("\n| 6、读取文本文件 |\n");printf("\n| 0、退出 |\n");printf("\n -------------------------- ");printf("\n选择操作:");scanf("%d",&n);switch(n){case 1:if (Student_Insert())printf("\n添加成功...回车继续\n"); elseprintf("\n添加失败...回车继续\n"); break;case 2:Student_Delete();break;case 3:Student_Select();break;case 4:Class_Select();break;case 5:WriteFile();break;case 6:ReadFile();break;case 0:exit(1);break;default:printf("无此功能,请重新选择,按回车确定\n");}}return 0;}int Student_Insert(){int i,j,n;printf("\n请输入所添加的学生人数:");scanf("%d", &n);if (StudentCount + n >= MAX)return 0;for (i = StudentCount; i < StudentCount + n; ++i){printf("\n\t第%d个学生:\n", i - StudentCount + 1);printf("\n\t学生学号:");scanf("%s", &S[i].Number);if(strlen(S[i].Number)!=8){printf("输入错误,请重新输入");return 0;}printf("\n\t学生:");scanf("%s", S[i].Name);printf("\n\t该学生所修课程数:");scanf("%d", &S[i].LessonCount);for (j = 0; j < S[i].LessonCount; ++j){printf("\n\t第%d门课:\n", j + 1);printf("\n\t\t课程编号:");scanf("%s", S[i].L[j].LessonNumber);if(strlen(S[i].L[j].LessonNumber)!=5){printf("输入错误,请重新输入!");return 0;}printf("\n\t\t课程名称:");scanf("%s",S[i].L[j].LessonName);printf("\n\t\t课程成绩:");scanf("%d", &S[i].L[j].LessonMark);if(S[i].L[j].LessonMark<0 || S[i].L[j].LessonMark>100) {printf("输入错误,请重新输入!");return 0;}printf("\n\t\t课程学分:");scanf("%f", &S[i].L[j].LessonCredit);if(S[i].L[j].LessonCredit<1 || S[i].L[j].LessonCredit>5){printf("输入错误,请重新输入!");return 0;}if (S[i].L[j].LessonMark < 60)S[i].L[j].LessonCredit = 0;}}StudentCount += n ;return 1;}int Student_Delete(){char a[100];char b[100];int i, j;printf("\n删除学生:\n");printf("\n学生:");scanf("%s",a);printf("\n学生学号:");scanf("%s",b);if(strlen(b)!=8){printf("输入错误请重新输入");return 0;}for (i = 0; i < StudentCount; i++){if (0==strcmp(S[i].Name, a) && 0==strcmp(S[i].Number, b)) {printf("\n找到,删除\n");for (j = i + 1; j < StudentCount; j++){S[j - 1] = S[j];}break;}}if (i == StudentCount || i > StudentCount){printf("\n未找到该学生\n\n");return 0;}else{StudentCount--;return 1;}}void Student_Select(){int x;char y[100];char a[100];int i, j;printf("\n输入所查学生信息(1. 2.学号)选择:");scanf("%d", &x);if (x == 1 || x == 2){if (x == 1){printf("\n:");fflush(stdin);gets(a);for (i = 0; i < StudentCount; i++){if (0==strcmp(S[i].Name,a)){printf("\n学号:%s\t:%s\n", S[i].Number, S[i].Name);printf("\n课程编号\t课程名称\t课程成绩\t课程学分\n");printf("-----------------------------------------------------\n");for (j = 0; j < S[i].LessonCount; j++){printf("%s\t\t%s\t\t%d\t\t%f\n",S[i].L[j].LessonNumber,S[i].L[j].LessonName, S[i].L[j].LessonMark, S[i].L[j].LessonCredit);printf("-----------------------------------------------------\n");}printf("\n\n");}}}else{printf("\n学号:");fflush(stdin);gets(y);for (i = 0; i < StudentCount; i++){if (strcmp(S[i].Number,y)==0){printf("\n学号:%s\t:%s\n", S[i].Number, S[i].Name);printf("\n课程编号\t课程名称\t课程成绩\t课程学分\n");printf("-----------------------------------------------------\n");for (j = 0; j < S[i].LessonCount; j++){printf("%s\t\t%s\t\t%d\t\t%f\n",S[i].L[j].LessonNumber,S[i].L[j].LessonName,S[i].L[j].LessonMark,S[i].L[j].LessonCredit);printf("-----------------------------------------------------\n");}printf("\n\n");break;}}}printf("查找完毕...回车继续\n");getchar();}else{printf("选择错误...回车继续\n");getchar();return;}}void Class_Select(){char a[100];double x=0,y=0,z=0;int i, j;printf("\n请输入课程编号:");fflush(stdin);scanf("%s",a);printf("学号\t\t课程名称\t课程成绩\t课程学分\n");printf("----------------------------------------------------\n"); for (i = 0; i < StudentCount; i++){for (j = 0; j < S[i].LessonCount; j++){if (strcmp(S[i].L[j].LessonNumber,a)==0){printf("%s\t%s\t%s\t\t%d\t\t%f\n",S[i].Number, S[i].Name, S[i].L[j].LessonName, S[i].L[j].LessonMark, S[i].L[j].LessonCredit);printf("----------------------------------------------------\n");z+=S[i].L[j].LessonMark;x++;if (S[i].L[j].LessonMark >= 60)y++;break;}}}printf("\n平均分:%f\t及格率:%f%%\n\n", z/x, y/x*100);printf("\n查找完毕...回车继续\n");getchar();}void WriteFile(){FILE *fp;int i, j;char a[100];printf("\n请输入写入的文件地址:\n\n地址输入格式:例如d:\\\\Student.txt:");scanf("%s",&a);printf("\n写入中......\n");if (fp = fopen(a,"w")){fprintf(fp,"%d\n",StudentCount);for (i = 0; i < StudentCount; i++){fprintf(fp,"%s\t%s\t%d\n",S[i].Number, S[i].Name,S[i].LessonCount); for (j = 0; j < S[i].LessonCount; j++){fprintf(fp,"%s\t%s\t%d\t%f\n",S[i].L[j].LessonNumber,S[i].L[j].LessonName,S[i].L[j].LessonMark,S[i].L[j].LessonCredit);}}printf("\n写入完成...回车继续\n");fclose(fp);}else{printf("\n写入失败...回车继续\n");}getchar();}void ReadFile(){FILE *fp;int i, j;char a[100];printf("\n请输入读取的文件地址:\n\n地址输入格式:例如d:\\\\student.txt:");scanf("%s",&a);printf("\n读取中......\n");if (fp = fopen(a,"r")){fscanf(fp,"%d",&StudentCount);for (i = 0; i < StudentCount; i++){fscanf(fp,"%s%s%d",&S[i].Number, &S[i].Name,&S[i].LessonCount);for (j = 0; j < S[i].LessonCount; j++){fscanf(fp,"%s%s%d%f",&S[i].L[j].LessonNumber,&S[i].L[j].LessonName,&S[i].L[j].LessonMark,&S[i].L[j].LessonCredit);}}printf("\n读取成功...回车继续\n");fclose(fp);}else{printf("\n读取失败...回车继续\n");}getchar();}6.3限制条件1.开始写程序时未使用链表,程序冗杂。