C语言程序设计-学生成绩管理系统
C语言课程设计学生成绩管理系统
C语言课程设计学生成绩管理系统在当今数字化的时代,学生成绩管理系统对于学校和教育机构来说至关重要。
它不仅能够提高教学管理的效率,还能为教学决策提供有力的数据支持。
本次 C 语言课程设计的目标就是创建一个功能齐全、操作便捷的学生成绩管理系统。
一、系统需求分析首先,明确系统需要实现的基本功能。
包括学生信息的录入,如姓名、学号等;课程信息的设置,如课程名称、学分等;成绩的录入、修改和查询;以及成绩的统计分析,如计算平均分、排名等。
同时,系统应具备良好的用户界面,操作简单易懂,方便教师和管理人员使用。
对于数据的存储和管理,要保证数据的安全性和完整性,防止数据丢失或被篡改。
二、系统设计(一)数据结构设计选择合适的数据结构来存储学生、课程和成绩信息。
可以使用结构体来定义学生和课程的数据类型,使用数组或链表来存储多个学生和课程的信息。
例如,定义学生结构体如下:```ctypedef struct student {int id;char name50;float scores10; //假设最多 10 门课程} Student;```(二)功能模块设计将系统划分为多个功能模块,如录入模块、查询模块、修改模块、统计模块等。
每个模块负责完成特定的功能,模块之间相互独立,便于代码的维护和扩展。
录入模块负责接收用户输入的学生、课程和成绩信息,并进行合法性检查。
查询模块可以根据用户输入的条件,如学号、姓名、课程名称等,查询相应的学生成绩信息。
修改模块允许用户对已录入的成绩进行修改,但需要进行权限验证。
统计模块用于计算学生的平均分、总分,并进行排名。
(三)界面设计设计简洁明了的用户界面,使用菜单选项让用户选择不同的功能。
可以使用控制台输入输出的方式,也可以考虑使用图形界面库来实现更友好的界面。
三、系统实现(一)数据输入与存储使用文件来存储学生成绩数据,便于数据的持久化。
在程序启动时,读取文件中的数据;在程序结束时,将修改后的数据保存回文件。
c语言程序设计之学生成绩管理系统精华版
// 111.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"#include<stdlib.h>#include<conio.h>#include<string.h>#define A Ls->s[i].kaoshi*0.7+Ls->s[i].pingshi*0.3#define B Ls->s[i].kaoshi1*0.7+Ls->s[i].pingshi1*0.3#define MAX 1000#include <Windows.h>BOOL SetConsoleColor(WORD wAttributes){HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);if (hConsole == INVALID_HANDLE_VALUE)return FALSE;return SetConsoleTextAttribute(hConsole, wAttributes);}//使用色彩typedef struct{char name[20];int num;int classes;int age;char sex[10];int bianhao;char mingcheng[20];int xuefen;int kaoshi;int pingshi;int bianhao1;char mingcheng1[20];int xuefen1;int kaoshi1;int pingshi1;}student;typedef struct{student s[MAX];int length;}Lstudent;void welcome()/*界面函数*/{SetConsoleColor(FOREGROUND_RED);printf(" ◢▇▇▇▇▇▇▇▇▇▇▇▇◣\n");printf(" ▇欢迎进入成绩管理系统▇\n");printf(" ◥▇▇▇▇▇▇▇▇▇▇▇▇◤\n");printf(" \n"); SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); printf(" ◢▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇◣\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(" ◥▇▇▇▇9.存储信息▇▇▇▇◤\n");printf(" ◥▇▇▇10.退出成绩管理系统▇▇▇◤\n");printf(" ◥▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇◤\n");}void read(Lstudent *Ls,FILE *fp){system("cls");if((fp=fopen("score system.txt","rt+"))==NULL){printf("无法打开此文件\n");printf("请按回车键返回主界面");getchar();}else{while(!feof(fp))putchar(getc(fp));printf("按回车键返回主界面");getchar();getchar();}fclose(fp);}void input(Lstudent *Ls)/*输入学生的成绩*/{ int n;int i;system("cls");printf(" 请输入学生数:");scanf("%d",&n);Ls->length=n;for(i=0;i<n;i++){printf(" 输入第%d个学生的数据:\n",i+1); printf(" 姓名:");scanf("%s",&Ls->s[i].name);printf(" 学号:");scanf("%d",&Ls->s[i].num);printf(" 班级:");scanf("%d",&Ls->s[i].classes);printf(" 年龄:");scanf("%d",&Ls->s[i].age);printf(" 性别:");scanf("%s",&Ls->s[i].sex);printf(" 课程编号:");scanf("%d",&Ls->s[i].bianhao);printf(" 课程名称:");scanf("%s",&Ls->s[i].mingcheng);printf(" 学分:");scanf("%d",&Ls->s[i].xuefen);printf(" 考试成绩:");scanf("%d",&Ls->s[i].kaoshi);printf(" 平时成绩:");scanf("%d",&Ls->s[i].pingshi);printf(" 课程编号:");scanf("%d",&Ls->s[i].bianhao1);printf(" 课程名称:");scanf("%s",&Ls->s[i].mingcheng1);printf(" 学分:");scanf("%d",&Ls->s[i].xuefen1);printf(" 考试成绩:");scanf("%d",&Ls->s[i].kaoshi1);printf(" 平时成绩:");scanf("%d",&Ls->s[i].pingshi1);}printf("录入成绩完成,请按回车键返回主界面"); getchar();getchar();}void output(Lstudent *Ls)/*输出学生的成绩信息*/ {int i;system("cls");for(i=0;i<Ls->length;i++){printf("┏━━━┳━━━┳━━━┳━━━┳━━━┳\n");printf("┃姓名┃学号┃班级┃年龄┃性别┃\n");printf("┣━━━╋━━━╋━━━╋━━━╋━━━╋\n");printf("┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-6.6s┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].classes,Ls->s[i].age,Ls->s[i].sex);printf("┣━━━╋━━━╋━━━╋━━━╋━━━┫\n");printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");printf("┃课程1编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao,Ls->s[i].mingcheng,Ls->s[i].xuefen,Ls->s[i].kaoshi,Ls->s[i].pingshi,A);printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");printf("┃课程2编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao1,Ls->s[i].mingcheng1,Ls->s[i].xuefen1,Ls->s[i].kaoshi1,Ls->s[i].pingshi1,B);printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★");}printf("请按回车键回到主界面");getchar();getchar();}void insert(Lstudent *Ls)/*插入学生成绩信息*/{int n,i,l;system("cls");l=Ls->length;printf(" 请输入要插入的学生数:");scanf("%d",&n);for(i=0;i<n;i++){printf(" 请输入插入第%d个学生的数据:\n",i+1);printf(" 姓名:");scanf("%s",&Ls->s[i+1].name);printf(" 学号:");scanf("%d",&Ls->s[i+1].num);printf(" 班级:");scanf("%d",&Ls->s[i+1].classes);printf(" 年龄:");scanf("%d",&Ls->s[i+1].age);printf(" 性别:");scanf("%s",&Ls->s[i+1].sex);printf(" 课程编号:");scanf("%d",&Ls->s[i+1].bianhao);printf(" 课程名称:");scanf("%s",&Ls->s[i+1].mingcheng);printf(" 学分:");scanf("%d",&Ls->s[i+1].xuefen);printf(" 考试成绩:");scanf("%d",&Ls->s[i+1].kaoshi);printf(" 平时成绩:");scanf("%d",&Ls->s[i+1].pingshi);printf(" 课程编号:");scanf("%d",&Ls->s[i+1].bianhao1);printf(" 课程名称:");scanf("%s",&Ls->s[i+1].mingcheng1);printf(" 学分:");scanf("%d",&Ls->s[i+1].xuefen1);printf(" 考试成绩:");scanf("%d",&Ls->s[i+1].kaoshi1);printf(" 平时成绩:");scanf("%d",&Ls->s[i+1].pingshi1);}Ls->length+=n;printf("插入成绩完成,请按回车键返回主界面"); getchar();getchar();}void delet(Lstudent *Ls)/*按学号删除*/{int i=0,j,x;system("cls");printf(" 请输入要删除的学生的学号:"); scanf("%d",&x);while((i<Ls->length)&&(Ls->s[i].num!=x))i++;if(i<Ls->length){for(j=i;j<Ls->length;j++)Ls->s[j]=Ls->s[j+1];Ls->length--;printf(" 已成功删除");}elseprintf(" 对不起,无此学生成绩,无法删除\n");printf("请按回车键返回主界面");getchar();getchar();}void search(Lstudent *Ls)/*按学号查找*/{int i=0,x;system("cls");printf(" 请输入要查找学生的学号:");scanf("%d",&x);while((i<Ls->length)&&(Ls->s[i].num!=x))i++;if(i<Ls->length){printf("┏━━━┳━━━┳━━━┳━━━┳━━━┳\n");printf("┃姓名┃学号┃班级┃年龄┃性别┃\n");printf("┣━━━╋━━━╋━━━╋━━━╋━━━╋\n");printf("┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-6.6s┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].classes,Ls->s[i].age,Ls->s[i].sex);printf("┣━━━╋━━━╋━━━╋━━━╋━━━┫\n");printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");printf("┃课程1编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao,Ls->s[i].mingcheng,Ls->s[i].xuefen,Ls->s[i].kaoshi,Ls->s[i].pingshi,A);printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");printf("┃课程2编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao1,Ls->s[i].mingcheng1,Ls->s[i].xuefen1,Ls->s[i].kaoshi1,Ls->s[i].pingshi1,B);printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★");}elseprintf(" 未找到此学生\n");printf("请按回车键回到主界面");getchar();getchar();}void save(Lstudent *Ls,FILE *fp)/*将学生成绩信息存储在文件score system.txt中*/{int i;system("cls");if((fp=fopen("score system.txt","wt+"))==NULL)printf("无法打开此文件\n");elsefor(i=0;i<Ls->length;i++){fprintf( fp,"┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━┳\n");fprintf( fp,"┃姓名┃学号┃班级┃年龄┃性别┃\n");fprintf( fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━╋\n");fprintf( fp,"┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-6.6s┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].classes,Ls->s[i].age,Ls->s[i].sex);fprintf( fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━┫\n");fprintf( fp,"┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");fprintf( fp,"┃课程1编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");fprintf( fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");fprintf( fp,"┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao,Ls->s[i].mingcheng,Ls->s[i].xuefen,Ls->s[i].kaoshi,Ls->s[i].pingshi,A);fprintf( fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");fprintf( fp,"┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");fprintf( fp,"┃课程2编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");fprintf( fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");fprintf( fp,"┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao1,Ls->s[i].mingcheng1,Ls->s[i].xuefen1,Ls->s[i].kaoshi1,Ls->s[i].pingshi1,B);fprintf( fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");fprintf( fp,"☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★");} //注中括号在循环语句中的使用printf("信息已存储在名为“score system.txt的文件中”,按回车键返回主界面");fclose(fp);getchar();getchar();}void aver(Lstudent *Ls)//计算平均分并排序{int i=0,n,j,k;float a[20],t;for(i=0;i<Ls->length;i++)//逐个赋值,千万不能少{a[i]=(A+B)/2;}system("cls");for(k=0;k<Ls->length;k++) //此处为冒泡排序法for(j=1;j<Ls->length;j++)for(i=0;i<Ls->length-j;i++)if(a[i]<a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("┏━━━┳━━━┳━━━━┳\n");printf("┃名次┃姓名┃平均分┃\n");printf("┣━━━╋━━━╋━━━━╋\n");for(i=0;i<Ls->length;i++)// 已输入学生长度为Ls->length{ printf("┃%-4d ┃%-6.6s┃%-4.1f ┃\n",i+1,Ls->s[i].name,a[i]);printf("┣━━━╋━━━╋━━━━╋\n");//注意有调用顺序问题}getchar();getchar();}void nopass(Lstudent *Ls)//? 列出不及格学生清单(学号、姓名、不及格的课程和成绩){int n;system("cls");int i;printf("不及格学生信息\n");for(i=0;i<Ls->length;i++){if(A<60){printf("┏━━━┳━━━━━┳━━━┳━━━━┳\n");printf("┃姓名┃学号┃课程┃考试成绩┃\n");printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n");printf("┃%-6.6s┃%-4d ┃%-6.6s┃%-4.1f ┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].mingcheng,A);printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n"); }if(B<60){ printf("┏━━━┳━━━━━┳━━━┳━━━━┳\n");printf("┃姓名┃学号┃课程┃考试成绩┃\n");printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n");printf("┃%-6.6s┃%-4d ┃%-6.6s┃%-4.1f ┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].mingcheng1,B);}printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n");}printf("请按回车键回到主界面");getchar();getchar();}void change(Lstudent *Ls)//修改成绩{int i=0,n;printf("请输入要修改的学号:");scanf("%d",&n);if(Ls->s[i].num==n){printf("\n 请输入学生姓名:");fflush(stdin);scanf("%s",&Ls->s[i].name);printf("\n 请输入学生班级:");fflush(stdin);scanf("%s",&Ls->s[i].classes);printf("\n 请输入学生年龄:");fflush(stdin);scanf("%d",&Ls->s[i].age);printf("\n 请输入学生性别:");fflush(stdin);scanf("%s",&Ls->s[i].sex);printf("\n 请输入课程1编号:");fflush(stdin);scanf("%d",&Ls->s[i].bianhao);printf("\n 请输入课程名称:");fflush(stdin);scanf("%s",&Ls->s[i].mingcheng);printf("\n 请输入课程学分:");fflush(stdin);scanf("%d",&Ls->s[i].xuefen);printf("\n 请输入课程考试成绩:");fflush(stdin);scanf("%d",&Ls->s[i].kaoshi);printf("\n 请输入课程平时成绩:");fflush(stdin);scanf("%d",&Ls->s[i].pingshi);printf("\n 请输入课程2编号:");fflush(stdin);scanf("%d",&Ls->s[i].bianhao1);printf("\n 请输入课程名称:");fflush(stdin);scanf("%s",&Ls->s[i].mingcheng1);printf("\n 请输入课程学分:");fflush(stdin);scanf("%d",&Ls->s[i].xuefen1);printf("\n 请输入课程考试成绩:");fflush(stdin);scanf("%d",&Ls->s[i].kaoshi1);printf("\n 请输入课程平时成绩:");fflush(stdin);scanf("%d",&Ls->s[i].pingshi1);printf("修改成功!");printf("\n");}elseprintf("未找到该学号\n");printf("请按回车键回到主界面");getchar();getchar();return;}int _tmain(int argc, _TCHAR* argv[]){printf("=====================================================\n");printf(" === 学生成绩管理系统===\n");printf(" === ===\n");printf(" === 设计者:===\n");printf(" === ===\n");printf(" === 指导老师:===\n");printf(" === ===\n");printf(" === 中南大学信息科学与工程学院===\n");printf(" === ===\n");printf(" === 2011级===\n");printf(" === ===\n");printf(" === 2012年6月===\n");printf("=====================================================\n");getchar();int choice;Lstudent Ls;FILE *fp=NULL;while(1){system("cls");welcome();printf("请选择您要的操作:");scanf("%d",&choice);switch(choice){case 0:read(&Ls,fp);break;case 1:input(&Ls);break;case 2:output(&Ls);break;case 3:insert(&Ls);break;case 4:delet(&Ls);break;case 5:search(&Ls);break;case 6: change (&Ls);break;case 7:nopass (&Ls);break;case 8:aver(&Ls);break;case 9:save(&Ls,fp);break;//修改成绩case 10:printf("谢谢使用!\n");exit(0); default:printf("选择有误,请重新输入\n"); }}return 0;}。
C语言课程设计_学生成绩管理系统
部署步骤:安装 操作系统、安装 数据库、安装应 用软件等
维护方案:定期 备份数据、定期 检查系统、定期 更新软件等
系统维护方案
定期备份数据: 确保数据安全, 防止数据丢失
定期更新系统: 确保系统安全, 防止病毒和恶意 软件攻击
定期检查硬件: 确保硬件正常运 行,防止硬件故 障
定期培训员工: 确保员工熟悉系 统操作,提高工 作效率
06 系统测试与优化
单元测试
目的:验证单个模块或功能的正确 性
测试内容:功能测试、性能测试、 兼容性测试、安全性测试
添加标题
添加标题
添加标题
添加标题
测试方法:白盒测试、黑盒测试、 灰盒测试
测 试 工 具 : JU n it 、 Te s t NG 、 Selenium等
集成测试
目的:验证系统各模块间的接口和交互是否正常 测试方法:黑盒测试、白盒测试、灰盒测试 测试内容:功能测试、性能测试、安全测试、兼容性测试 测试工具:JMeter、Selenium、Appium等
系统性能优化
性能测试:使用自 动化工具进行性能 测试,如JMeter、 LoadRunner等
性能瓶颈分析:分 析性能测试结果, 找出性能瓶颈,如 数据库查询、网络 延迟等
性能优化:针对性 能瓶颈进行优化, 如优化数据库查询 、减少网络延迟等
性能监控:建立性 能监控体系,实时 监控系统性能,及 时发现和解决性能 问题
学生成绩管理系统是一个用 于管理学生成绩的软件系统
Байду номын сангаас
系统采用模块化设计,易于 维护和扩展
系统支持多种数据格式,如 Excel、CSV等,方便数据
导入和导出
系统目标
提高学生成绩管理效率 方便教师查询、统计和分析学生成绩 提供个性化学习建议和指导 促进家校沟通,提高家长对学生成绩的了解
学生成绩管理系统c语言代码(供参考)
C程序学生管理系统以下是用C语言编写的学生成绩管理系统的简单代码,可以用vc运行(供参考)#include"stdio.h"#include”stdlib。
h"#include"string。
h”typedefstruct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedefstruct unit//定义接点{studentdate;struct unit*next;}unit;unit大build()//建立链表并返回指针{unit*p;if((p=(unit*)malloc(sizeof(unit)))==NULL){printf("二>初始化失败!”);return0;}else{p—>next=NULL;p-〉date.number=O;//头结点存放学生人数printf("初始化成功!\n");return p;}}void add(unit大head)//增加学生{unit*p,*q;int m,n=0;q=head-〉next;p=(unit*)malloc(sizeof(unit));printf(”二〉请输入新生姓名!\n");gets(p—>);fflush(stdin);printf("二〉请输入学号!\n");while(n==0){scanf("%d",&m);fflush(stdin);if(q二二NULL)n二1;while(q){if(q->date.number==m){prinTf("二>你输入的学号与已有同学的学号相同,请重新输入!\n");q=head-〉next;break;}else{q=q->next;if(q==NULL)n=1;}}}p一〉date。
C语言课程设计—学生成绩管理系统
#include ”stdio.h”#include ”string.h”#include "stdlib.h"#include "conio.h"#include ”string.h”#include "fcntl。
h"typedef struct student{int num;char grade[10];char classroom[10];char name[10];float score_math;float score_chinese;float score_english;float average;float sum;}STU;typedef struct Node{STU data;struct Node *next;}*linklist;void menu();char *loginpassword(char password[],int n);//登录验证密码函数声明//linklist createstulist(linklist head);//创建学生链表即学生信息录入函数声明// void printstulist(linklist head);//学生信息输出函数声明//void searchstu_namelist(linklist head);//学生信息查询函数声明(按姓名)// void searchstu_numlist(linklist head);//学生信息查询函数声明(按学号) linklist modifystulist(linklist head);//学生信息修改函数声明//linklist delatestulist(linklist head);//学生信息删除函数声明//void savestulist(linklist head);//学生信息保存到文件函数声明// linklist loadstulist();//从文件中读取学生信息函数声明// void sortstulist(linklist head); //成绩排名函数(按年级)声明//void sort(STU stu[],int flag); //学生分班函数声明//void sortstuclass(linklist head); //成绩排名函数(按班级)声明////*************************************//void main(){char admin[]=”zhangqiong";char password[]=”123456";char person[20];char password1[10];int i;printf(”********************************************************************************\n”);printf("\t\t **********欢迎来到学生成绩管理系统**********\n\n");printf(”********************************************************************************\n\n”);printf(”\t\t\t\t用户登录\n\n\n\n");for(i=0;i<3;i++){printf("用户名:”);gets(person);fflush(stdin);printf(”\n\n\n”);loginpassword(password1,10);printf("\n\n\n”);if(strcmp(admin,person)==0&&strcmp(password,password1)==0){printf(”\t\t\t\t成功登录,亲!\n”);printf("\n\n”);printf(”按任意键继续!”);getch();menu();break;}elseprintf("\t用户名或者密码输入错误\n”);}if(i==3)printf("\t对不起,您今天输入次数太多,已被强制退出!\n”);}//**********************************************************////**********************************************************//char *loginpassword(char password[],int n)//登录密码函数,隐藏密码可见//{int i=0;int m=0;char ch;printf("用户密码:”);while((ch=getch())!='\r’&&m〈n){password[i++]=ch;printf(”*");}password[i]='\0';return password;}//***************************************************// void menu()//主界面函数//{system("cls");linklist L;L=(linklist)malloc(sizeof(Node));L—>next=NULL;int ch;do{printf(”\t -——-----—-******——--——--—---******—————-————-******-—-—-—-—-—\n\n");printf("\t\t\t**********学生成绩管理系统***********\n\n”);printf("\t ——----——--******-—-——------—******—---———--—-******—---———-——\n\n\n\n\n");printf("\t1。
C语言课程设计-学生成绩管理系统-完整版
#include<stdio.h> #include<stdlib.h>#include<io.h> #include<string.h> /* strcmp 函数原型包含 */#define N 100 /* 定义最大学生人数为 100*/ struct student /* 学生结构体定义 */ char no[11]; /* 学号 ,10 位 */ char name[10];/* 姓名, 3 个汉字 */ char grade[10];/* 班级 */ char pro[20];/* 专业 */float score[5];/* 储存 5 门功课的成绩 */ float ave;/* 储存平均分 */ int year;/* 入学年 *//* 通过 i 的值,判断信息要查找的信息是否存在 *//* 输出学生成绩函数(公共函数) */ /* 系统初始化函数 */ /* 建立新的数据文件 *//* 从数据文件中读取数据 */ /* 维护界面函数 */ /* 新增一个学生成绩函数 */ /* 修改学生成绩 */ /* 修改成绩 *//* 删除学生信息函数 */ /* 统计界面函数 */ /* 计算每个学生平均分 */ /* 计算每门课程的平均分 */ /* 排序函数 */ /* 按学号排序 */ /* 按平均分排序 */ /* 按单科成绩排序 *//* 交换结构体数组中的两个记录 *//* 选择输出单科成绩 */ /* 查找界面函数 */ /* 按学号查找 */ int findname(char cname[]);/* 按姓名查找 */ void findyear(int cyear); /* 按入学年查找 */ void save(); /* 保存文件 */ void stop(); /* 停顿函数 */void stop()/* 停顿函数 (公共函数) */{printf("Press Any Key To Continue...\n"); getchar();}}stu[N]; int num; void panduani(int); void output(); voidinit(); void newfile(); void read1(); void weihu(); void new1(); void xiugai(); void xgcj(int); void delete1(); void tongji(); void tongji1(); void tongji2(); void paixu1(); void paino(); void paiave(); void paidkcj(); voidchange(int,int); void outputx(int); void find1(); int find(char sno[]);void output() /* 输出学生成绩函数(公共函数) */{int i,j;printf("===================================================================\n");printf(" 学号姓名班级专业入学年 C 语言高数大物电路模电\n");printf("===================================================================\n");for(i=0;i<num;i++){printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year) Jfor(j=0;j<5;j++)printf(" %.1f",stu[i].score[j]);printf("\n");}stop();}void init() /* 系统初始化函数*/{if(access("stu.dat",0)) /* 判断文件是否存在*/newfile(); /* 若不存在,新建数据文件*/elseread1(); /* 若存在,读取数据*/}void newfile() /* 建立新的数据文件*/{int i;FILE *fp;if((fp=fopen("stu.dat","wb"))==NULL) /* 创建二进制文件*/{printf(" 创建文件失败,请重新运行程序.\n"); /* 显示" 创建文件失败,请重新运行程序"*/exit(0); /* 终止程序*/}printf(" 初次运行,进行数据初始化...\n");/* 显示" 初次运行,进行数据初始化..."*/ stop();printf(" 请输入学生人数:");/* 显示"请输入学生人数:"*/ scanf("%d",&num);for(i=0;i<num;i++){printf(" 请输入第%d 个学生的学号:",i+1); /* 显示"请输入第i+1 个学生的学号:"*/ getchar(); /* 吃回车*/gets(stu[i].no);printf(" 姓名:"); /* 显示"姓名:"*/gets(stu[i].name);printf(" 班级:"); /* 显示"班级:"*/gets(stu[i].grade);printf(" 专业:"); /* 显示"专业:"*/gets(stu[i].pro);printf(" 入学年n:");/* 显示" 入学年"*/scanf("%d",&stu[i].year);printf("C 语言成绩:");/* 显示"C 语言成绩"*/ scanf("%f",&stu[i].score[0]);printf(" 高数成绩:");/* 显示"高数成绩"*/ scanf("%f",&stu[i].score[1]);printf(" 大物成绩:");/* 显示" 大物成绩"*/ scanf("%f",&stu[i].score[2]);printf(" 电路成绩:");/* 显示" 电路成绩"*/ scanf("%f",&stu[i].score[3]);printf(" 模电成绩:");/* 显示" 模电成绩"*/scanf("%f",&stu[i].score[4]);fwrite(&stu[i],1,sizeof(struct student),fp); /* 把第i+1 名学生成绩写入文件*/ }fclose(fp);printf("========================\n");printf(" 刚才输入的%d 个数据为:\n",num); /*显示"刚才输入的num 个数据为:"*/ printf("========================\n\n");output();}void read1() /* 从数据文件中读取数据*/{FILE *fp;num=0; /*num 为数据文件中实际存储的学生人数*/fp=fopen("stu.dat","r");if(fp==NULL) /* 数据文件不存在*/{printf(" 文件打开失败!重新运行程序\n"); /* 显示"文件打开失败!重新运行程序"*/ exit(0);}while(!feof(fp)) /* 文件结束检测"*/{fread(&stu[num],1,sizeof(struct student),fp); num++;}num--; fclose(fp); printf("\t\t\t=======================================\n"); printf(" \t\t\t现有 %d 个学生的成绩: \n",num); /* 显示 "现有 NUM 个学生的成绩: "*/printf("\t\t\t=======================================\n\n"); output();}void weihu() /* 维护界面函数 */{char c1; while(1){getchar(); if(c1=='9') break; switch(c1) { case '1': new1(); break; case '2': delete1(); case '3': xiugai(); break; default:printf(" 选择有误,请重选! \n");/*" 选择有误,请重选! "*/} } }void new1() /* 新增一个学生成绩函数 */{printf(" 请输入学号 :"); /* 显示 "请输入学号 :"*/ gets(stu[num].no);printf("\t\t\t* 维护*\n");printf("\t\t\t* 1. 新增 *\n"); /*新增 */printf("\t\t\t* 2. 删除 *\n"); /* 删除(按学号)*/printf("\t\t\t* 3. 修改 *\n"); /* 修改 */ printf("\t\t\t*9. 返回*\n"); /* 返回 */printf("\t\t\t************************\n");printf("\t\t\t 请选\n");/* 请选*/printf("\n\n\n\t\t\t* ********************* **\n"); c1=getchar();printf(" 姓名:"); /* 显示"姓名:"*/ gets(stu[num].name);printf(" 班级:"); /* 显示" 班级:"*/ gets(stu[num].grade);printf(" 专业:"); /* 显示"专业:"*/ gets(stu[num].pro);printf(" 入学年:");/* 显示"入学年"*/ scanf("%d",&stu[num].year);printf("C 语言成绩:");/* 显示"C 语言成绩"*/ scanf("%f",&stu[num].score[0]); printf(" 高数成绩:");/* 显示"高数成绩"*/ scanf("%f",&stu[num].score[1]);printf(" 大物成绩:");/* 显示" 大物成绩"*/ scanf("%f",&stu[num].score[2]);printf(" 电路成绩:");/* 显示" 电路成绩"*/ scanf("%f",&stu[num].score[3]);printf(" 模电成绩:");/* 显示" 模电成绩"*/ scanf("%f",&stu[num].score[4]);num++; printf("\n======================================\n");"*/ printf(" 现有%d 个学生的成绩:\n",num); /* 显示"现有NUM 个学生的成绩:printf("======================================\n\n");output();}void xiugai() /* 修改学生成绩*/{char xg[11];int i;printf("\n 请输入要修改学生的学号 :\n\n"); gets(xg);for(i=0;i<num;i++)if(strcmp(stu[i].no,xg)==0)break; if(i==num){printf("\n 数据文件无该生信息 !\n\n 请重新输入学号 .\n\n"); stop(); return;}xgcj(i);} void xgcj(int x)/* 修改成绩 */{ char xueke[5][10]={"C 语言","高数 ","物理","电路","模电"}; char (*p)[10],c; int j,k; p=xueke; for(;;){**\n\n"); printf("\t\t\t 成绩 printf("\t\t\t 1.C 语言 printf("\t\t\t 2.高数printf("\t\t\t 3.物理 printf("\t\t\t 4.电路 printf("\t\t\t5.模电 printf("\t\t\t9.返回printf("\n");printf("\t\t\t** ******************************** printf("\t\t\t** ******************************** \n");\n"); /*C 语言 */ \n"); /*高数 */\n"); /* 大学物理 */ \n"); /*电路 */ \n"); /*模电 */ \n\n"); /* 返回上级 */**\n\n"); printf("\t 请选择要修改的成绩 (按 1.2.3.4.5.9):\n"); c=getchar(); getchar();if(c=='9')break; else if (c>='1'&&c<='5'){k=c-49;printf("\n 请输入 %s 成绩 :\n",p+k); scanf("%f",&stu[x].score[k]); printf("\n 修 息为 :\n");printf(" 学号 姓名 班级 专业 入学年 C 语言 高数 大物电路模电printf("===================================================================\n");printf("%s %s %s %s %d",stu[x].no,stu[x].name,stu[x].grade,stu[x].pro,stu[x].ye ar);for(j=0;j<5;j++)printf(" %.1f",stu[x].score[j]);printf("\n");}else printf("\n 选择有误,请重选!\n\n");stop();}}int find(char sno[]) /* 按学号查找*/{int i;for(i=0;i<num;i++)if(strcmp(stu[i].no,sno)==0) /* 判断两个字符串相等*/return i;/* 查找成功*/return -1;/* 查找失败*/}void delete1() /* 删除学生信息函数*/{char cno[11];int i,j;printf(" 请输入要删除的学生学号:"); /*" 请输入要删除的学生学号"*/gets(cno);i=find(cno);if(i!=-1){for(j=i;j<num;j++)stu[j]=stu[j+1];num--;printf(" 现有%d 个学生的成绩:\n",num); /* 显示" 现有NUM 个学生的成绩:"*/ output();}else {printf(" 请输入正确的学号. \n");stop();}}void tongji(){int i;char c2; while(1) {printf("\t\t\t 请选择 :\n");/* 请选择: */ c2=getchar(); getchar(); if(c2=='9') break; switch(c2){case '1': tongji1();printf("\n\n 学生平均分为 :\n");printf("===========================================\n"); printf(" 学号 姓名 入学年 平均分 \n");printf("===========================================\n"); for(i=0;i<num;i++)printf("%s %s %d %.2f\n",stu[i].no,stu[i].name,stu[i].year,stu[i].ave); stop(); break; case '2': tongji2(); break; default:printf(" 选择有误,请重选 \n");/*" 选择有误,请重选! "*/ }} }void tongji1() /* 计算每个学生平均分 */ { int i,j;for(i=0;i<num;i++){stu[i].ave=0; for(j=0;j<5;j++)stu[i].ave+=stu[i].score[j]; stu[i].ave=stu[i].ave/5;}}void tongji2()/* 计算每门课程的平均分 */{int i,j; float sum;printf("\t\t\t* 统计 *\n");printf("\t\t\t*1. 学生平均分 *\n"); /* 计算学生平均分 */ printf("\t\t\t*2. 课程平均分 *\n"); /* 计算每门课程平均分 */ printf("\t\t\t*9. 返回*\n"); /* 返回 */printf("\n\n\n\t\t\t ***************************** **\n"); printf("\t\t\t* **************************** **\n"); /* 统计界面函数 */float avec[5]; /* 储存每门课的平均分*/ for(j=0;j<5;j++){sum=0;for(i=0;i<num;i++)sum+=stu[i].score[j];avec[j]=sum/num;}printf("\n\n 各科平均分:\n");/*" 各科平均分:"*/printf("===================================\n"); printf("C 语言高数大物电路模电\n"); printf("===================================\n"); for(i=0;i<5;i++)printf("%-7.1f",avec[i]);printf("\n");stop();}void paixu1() /* 排序界面*/{char c3;for(;;){printf("\n\n\n");printf("\t\t\t***********************************\n");printf("\t\t\t* 排序* \n");printf("\t\t\t* 1. 按学号排序* \n"); /* 按学号排序*/printf("\t\t\t* 2. 按平均分排序* \n"); /* 按平均分排序*/printf("\t\t\t* 3. 按单科成绩排序* \n"); /* 按单科成绩排序*/printf("\t\t\t* 9. 返回* \n"); /* 返回*/printf("\t\t\t***********************************\n\n");printf("\t 请选(按 1.2.3.9):\n");/* 请选择:*/c3=getchar();getchar();if(c3=='9') break;switch(c3){case '1':paino();break;case '2':paiave();break;case '3':paidkcj();break; default:printf("\n 选择有误,请重选!\n\n");/* 选择有误,请重选!*/ stop();}}}void paino() /* 按学号排序*/{ /* 按学号从低到高冒泡法排序*/int i,j;for(i=0;i<num;i++)for(j=0;j<num-1-i;j++)if(strcmp(stu[j].no,stu[j+1].no)>0) change(j,j+1);printf("\n 排序后为:\n"); /*" 排序后为:"*/output();}void paiave() /* 按平均分排序*/{ /* 按平均分从高到低冒泡法排序*/int i,j;tongji1(); /* 计算平均成绩*/ for(i=0;i<num;i++) for(j=0;j<num-i-1;j++)if(stu[j].ave<stu[j+1].ave) change(j,j+1);printf("\n\t 排序后为:\n"); /*" 排序后为:"*/printf("\t===============================================\n"); printf("\t 学号姓名入学年平均分排名\n");printf("\t===============================================\n"); for(i=0;i<num;i++) printf("\t%s %s %d %.2f %4d\n",stu[i].no,stu[i].name,stu[i].year,stu[i].ave,i+1); stop();void paidkcj() /* 按单科成绩排序*/ {char c;int i,j,k;while(1){printf("\n");printf("\t\t\t************************************\n\n");printf("\t\t\t 单科成绩\n");printf("\t\t\t 1.C 语言\n"); /*C 语言*/printf("\t\t\t 2.高数\n"); /*高数*/printf("\t\t\t 3.物理\n"); /* 大学物理*/printf("\t\t\t 4.电路\n"); /*电路*/printf("\t\t\t 5.模电\n"); /*模电*/printf("\t\t\t 9.返回\n\n"); /* 返回上级*/printf("\t\t\t************************************\n\n");( 按 1.2.3.4.5.9):\n");printf("\t 请选择:c=getchar();getchar();else if (c>='1'&&c<='5'){k=c-49;for(i=0;i<num;i++) for(j=0;j<num-1-i;j++) if(stu[j].score[k]<stu[j+1].score[k])change(j,j+1);outputx(k);}else printf("\n 选择有误,请重选!\n\n"); stop();}}void change(int i,int j)/* 交换结构体数组中的两个记录*/{struct student temp; temp=stu[i]; stu[i]=stu[j]; stu[j]=temp;}void outputx(int k) /* 选择输出单科成绩*/char xueke[5][10]={"C 语言","高数 ","物理","电路","模电"}; char (*p)[10]; /* 定义一个指向包含 10 个字符型元素的一维数组的指针变量 */int i;p=xueke;printf("\n\t 排序后为 :\n");printf("\t===============================================\n"); printf("\t 学号 姓名入学年 %s 排名 \n",p+k);printf("\t===============================================\n"); for(i=0;i<num;i++)printf("\t%-11s% -10s%-11d%-6.1f%5d\n",stu[i].no, stu[i].name,stu[i].year,stu[i].score[k],i+1);}void find1() /* 查找界面函数 */{char c4;char cno[11],cname[10]; int i,cyear; while(1){printf("\t\t\t* ************************************\n"); printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t请选择 :\n");/* 请选择:*/ c4=getchar();getchar(); if(c4==57) break; switch(c4){case '1':printf(" 输入学号 :\n");/*" 输入学号: "*/ gets(cno); i=find(cno); panduani(i); break; case '2':printf(" 输入姓名 :\n");/*" 输入姓名: "*/ gets(cname);i=findname(cname); panduani(i); break; case '3':printf(" 输入入学年 :\n");/*" 输入入学年 "*/ scanf("%d",&cyear);查找1. 按学号查找2. 按姓名查找3. 按入学年查找 9. 返回************************************\n");*\n");*\n"); /* 按学号查找 */ *\n"); /* 按姓名查找 */ *\n"); /* 按入学年查找 */findyear(cyear);stop();break;default:printf(" 选择有误,请重选!\n");/*" 选择有误,请重选!"*/}}} int findname(char cname[]) /* 按姓名查找*/{int i;for(i=0;i<num;i++)if(strcmp(stu[i].name,cname)==0) /* 判断两个字符串相等*/return i; /* 查找成功*/return -1; /* 查找失败*/}void findyear(int cyear){int i,j,flag=0;for(i=0;i<num;i++)if(stu[i].year==cyear){ flag=1;break;}if(flag==0){printf(" 要查找的学生不存在\n");stop(); }else{printf(" 查找到的学生信息为:\n");/*" 查找到的学生信息为:"*/printf(" 学号姓名班级专业入学年 C 语言高数大物电路模电\n");printf("================================================================ ===\n");for(i=0;i<num;i++){if(stu[i].year==cyear) /* 判断两个数值相等*/{printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year); for(j=0;j<5;j++) printf(" %.1f",stu[i].score[j]); printf("\n");}}}}void panduani(int i) /* 通过i 的值,判断信息要查找的信息是否存在*/{int j;if(i==-1){printf(" 要查找的学生不存在\n");/* 要查找的学生不存在*/ stop();}else{printf(" 查找到的学生信息为:\n");/*" 查找到的学生信息为:"*/ printf(" 学号姓名班级专业入学年 C 语言高数大物电路模电\n");printf("================================================================ ===\n");printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year)Jfor(j=0;j<5;j++)printf(" %.1f",stu[i].score[j]);printf("\n");stop();}}void save() /* 保存文件*/{int i;FILE *fp;if((fp=fopen("stu.dat","wb"))==NULL) /* 创建二进制文件*/{printf(" 创建文件失败,请重新运行程序.\n"); /* 显示" 创建文件失败,请重新运行程序"*/exit(0); /* 终止程序*/}for(i=0;i<num;i++)fwrite(&stu[i],1,sizeof(struct student),fp); /* 将I+1 名学生成绩写入文件*/ fclose(fp);}void main() /* 主控菜单*/{char c;init();while(1){printf("\t\t 请选择 :\n");/* 请选择: */ c=getchar(); getchar(); switch(c){case '1': weihu(); break; case '2': tongji(); break; case '3': paixu1(); break; case '4': find1(); break; case '9': save(); exit(0); break; default:printf(" 选择有误,请重选 !\n");/*" 选择有误,请重选! "*/printf("\n\t\t***制作:王清珍,陈超,路梓裕,卢诚知,****\n"); printf("\n\t\t*************************************************\n");printf("\t\t* 、 t t • I 、/, 主菜单*\n");printf("\t\t* 1. 维护 *\n"); /* 维护 */ printf("\t\t* 2. 统计 *\n"); /* 统计 */ printf("\t\t* 3. 排序 *\n"); /* 排序 */ printf("\t\t*4. 查找*\n"); /* 排序 */ printf("\t\t*9. 存盘退出*\n"); /* 存盘退出printf("\t\t************* 欢迎登陆学生成绩管理系统 ************\n"); printf("\t\t** ********************************************* **\n");。
C语言程序设计报告 ---学生成绩管理系统
C语言程序设计报告 ---学生成绩管理系统一、背景学生的学习成绩是一起重要的信息,为了管理好学生的学习成绩,学校及老师在教学过程中,需要有一个对学生成绩进行统计与记录,用于注册成绩,查询发放证书等工作,需要一个学生成绩管理系统来进行辅助操作。
本文主要介绍我校用C语言实现的学生成绩管理系统。
二、系统概述学生成绩管理系统主要由三个模块组成,即:数据录入模块、数据处理模块和数据输出模块。
数据录入模块:将每个学生的个人资料、成绩数据及相关信息,用户图形用户界面录入进系统;数据处理模块:利用程序能实现学生的成绩,统一的处理成绩,例如排名、查找,等;数据输出模块:该模块是整个系统的核心模块,将输出内容包括:学生基本信息、每门课程的各项成绩、平均成绩、综合排名等相关信息,通过程序。
三、系统功能介绍1.数据录入:学生的基本信息及考试成绩等信息的输入,用于后续数据处理及学生成绩的查询。
2.成绩查询:具备基本的查询功能,可以根据学生的学号及姓名查询学生的成绩,以及详细的学生考试成绩。
3.信息统计:可以进行全体学生的各项考试成绩信息综合统计,统计分析每个班级、每个专业、每门课程的考试情况,以及学生的排名,让用户知道整体的学习情况及有效管理学生的学习。
4.安全设置:系统具备安全设置功能,确保用户的信息安全,保证用户的登录权限,为系统及用户提供足够的安全保障,确保系统的数据安全。
四、系统分析系统分析阶段主要包含了分析及设计的步骤,为了更好的实现学生成绩管理的功能,系统分析中分析出学生信息、班级信息、考试信息等相关信息,以便为系统设计提供理论依据。
系统设计是系统分析的一个重要环节,通过设计,能够实现系统的功能,系统设计中定义出系统的基本流程及外部接口,使得系统能够正常运行。
五、系统实现六、系统测试学生成绩管理系统在功能测试过程中,通过实际的操作来测试学生成绩管理系统,测试的主要内容是系统的基本功能及系统的数据安全性,通过实际的操作,测试员可以详细的检查系统是否符合预期的功能,以及系统的正确度,从而保证系统的可靠性及安全性。
C语言课程设计学生成绩管理系统
PART THREE
学生信息包括:姓名、学号、性别、班级、成绩等 学生信息录入方式:手动输入、文件导入、数据库查询等 学生信息录入界面设计:简洁明了,易于操作 学生信息录入注意事项:确保信息准确无误,避免重复录入
查询结果:显示学生的基本 信息、成绩、课程等信息
系统故障分类:硬件故障、软件故障、网络故障等 故障处理流程:发现故障、分析原因、采取措施、恢复系统 应急预案:制定应急预案、定期演练、及时更新 数据备份与恢复:定期备份数据、灾难恢复计划
汇报人:
,a click to unlimited possibilities
汇报人:
CONTENTS
PART ONE
PART TWO
目标:实现学 生成绩的高效
管理
功能:学生信 息管理、成绩 录入、成绩查 询、成绩统计、 成绩分析、成
绩排名等
系统用户:学生、教师、管理员
权限设置:学生只能查看自己的成绩,教师可以查看和管理所有学生的成绩,管理员可以管理所有用户和权限
查询和报表的界面设计:简 洁明了,易于操作
查询和报表的数据处理:高效、 准确,保证数据的一致性和完 整性
PART SIX
数据备份:定期备份数据,防止数据丢失 数据恢复:在数据丢失或损坏时,能够快速恢复数据 备份策略:制定合理的备份策略,确保数据的完整性和一致性 备份工具:使用专业的备份工具,提高备份效率和可靠性
删除方式:通过学生ID进行 删除
删除条件:学生信息存在且 未被删除
删除操作:在数据库中执行 删除语句
删除结果:学生信息从数据库 中被删除,系统提示删除成功
PART FOUR
c语言课程设计学生成绩管理系统
C语言课程设计:学生成绩管理系统简介学生成绩是学校管理中至关重要的一项工作。
为了更好地管理学生成绩,提高教学质量,我们设计了一个基于C语言的学生成绩管理系统。
该系统可以帮助教师轻松地录入、查询和统计学生成绩,提供全面的学生成绩管理功能。
功能概述学生成绩管理系统主要包括以下功能:1.学生信息管理:可以添加、查询、修改、删除学生信息。
每个学生包括学号、姓名、性别、年龄等基本信息。
2.课程信息管理:可以添加、查询、修改、删除课程信息。
每门课程包括课程编号、课程名称、学分等基本信息。
3.成绩录入:可以根据学号和课程编号录入学生的课程成绩。
成绩包括平时成绩、期中成绩、期末成绩等。
4.成绩查询:可以根据学号或姓名查询学生的成绩,包括总成绩和各项成绩。
5.成绩统计:可以统计每门课程的平均成绩、最高成绩、最低成绩等统计数据。
6.成绩排序:可以按照总成绩对学生进行排序,以便了解学生的学习情况。
7.成绩报表:可以生成学生的成绩报表,以便于打印或导出。
系统设计学生成绩管理系统主要由以下几个模块组成:1.学生信息管理模块:通过该模块可以实现学生信息的添加、查询、修改和删除操作。
学生信息可以存储在文件中,使用文件读写函数实现对学生信息的操作。
2.课程信息管理模块:通过该模块可以实现课程信息的添加、查询、修改和删除操作。
课程信息可以存储在文件中,使用文件读写函数实现对课程信息的操作。
3.成绩录入模块:通过该模块可以根据学号和课程编号录入学生的课程成绩。
成绩信息可以存储在文件中,使用文件读写函数实现对成绩信息的操作。
4.成绩查询模块:通过该模块可以根据学号或姓名查询学生的成绩。
查询结果可以显示在屏幕上。
5.成绩统计模块:通过该模块可以统计每门课程的平均成绩、最高成绩、最低成绩等统计数据。
统计结果可以显示在屏幕上。
6.成绩排序模块:通过该模块可以按照总成绩对学生进行排序。
排序结果可以显示在屏幕上。
7.成绩报表模块:通过该模块可以生成学生的成绩报表,以便于打印或导出。
C语言程序课程设计--学生成绩管理系统
C语言程序课程设计--学生成绩管理系统
学生成绩管理系统是一种利用计算机程序来储存、处理和管理学生成绩信息的系统。
它可以收集、整理学生的相关成绩信息,如学生的学号、姓名、年级及其对应的期末考试
成绩,实现对这些成绩的存储、修改、查询和汇总统计等功能。
它可以不仅可以查询当前
成绩,还可以查询学生在不同学期的前若干学期的成绩状况,方便学校管理者和老师快速
了解到学生的学习状况。
首先,学生成绩管理系统需要建立学生信息数据库,储存学生的基本信息,以及课程、考试成绩的数据表,用以储存和查询学生的考试成绩。
比如有学生信息表:学号,姓名,
班级、学科成绩表:报考科目,期末考试成绩,考试时间等等。
接着,学生成绩管理系统需要实现一些基本功能用于操作这些数据表。
根据学校成绩
管理的需要,系统可以实现新增学生、新增科目成绩、查询学生成绩、修改学生成绩等功能,为学校提供必要的成绩管理支持。
其次,学生成绩管理系统还可以进行学生成绩的统计分析。
可以对学生在各科考试中
的情况进行统计分析,分析学生的表现,以便学校更方便、更全面地了解学生的学习状况。
最后,学生成绩管理系统为管理者和老师提供更便捷、高效的管理效率,减少管理者
管理工作时间,节约学校的人力资源,有助于改善学子的学习水平。
综上所述,学生成绩管理系统对于教育管理者而言,无疑是一个非常重要的系统,为
学校管理者和老师提供了快速准确的学生成绩信息,帮助他们更好地了解学生的成绩状况,进而提高教育管理的精准性和质量。
C语言程序设计课程设计-学生成绩管理系统
C语言程序设计课程设计-—班级成绩管理系统院系:****学院专业:****专业班级: * 级*班姓名: ***学号:*********导师:***目录1.设计目的2.设计任务3.设计内容与步骤3—1.实现的功能3-2.数据存储方式3-3.功能目录3—4.程序流程图3—5.测试与评价3—6.体会与收获4.参考文献5.附录5—1.用户手册5—2.源代码清单1.设计目的(1)熟练掌握C 语言的基本知识和技能(2) 基本掌握结构化程序设计的思路和方法(3)熟练掌握指针的用法和用链表存储数据的方法(4)能够利用所学的基本知识和技能,发挥自学能力和查找资料的能力,解决稍微复杂的结构化程序设计问题(5) 培养创新能力和良好的思维能力。
2.设计任务(1)编写一个班级成绩管理系统,以文件形式保存班级学生的基本信息。
(2)能运用自己编写的程序对学生信息进行一定的处理.从设计目的之后奇数页开始撰写。
调试环境:VC6。
0完成人:***3.设计内容与步骤3.1实现的功能a。
学生成绩登记b。
学生信息删除c.学生信息修改d.学生信息查询e。
学生成绩排序f。
密码功能3.2数据存储方式用结构数组存储数据,以可执行文件形式保存学生信息。
3.3功能目录本系统首先设计出了主函数,然后根据去要实现的功能分别设计了密码系统,学生信息录入、显示、查询、删除、修改、添加功能的子函数。
在显示的函数设计过程中首先运用拉文件的读取等必要的知识通过把文件的内容读取到内存然后打印出来。
删除函数的设计是首先从文件内找到要删除的人,然后通过写一个实现删除目的的FOR循环将该人从内存里删除,然后再用写的方式打开文件,将内存内的信息写入文件,实现删除。
查找也是先打开文件,用一个字符串对比的方法找出用户要查找的人,然后打印出来。
修改也大体和删除相同,添加函数在设计时通过申请一片空间,然后通过指针将需要添加的信息添加进去,从而实现添加功能。
3—4.程序流程图3-5.测试与评价1.运行进入程序主菜单主选单具有所有函数的功能实现的选择功能,通过主选单的操作进入各个功能。
C课程设计学生成绩管理系统
系统功能模块设计
课程管理模块:课程添加、 修改、删除等
成绩管理模块:成绩录入、 修改、查询等
统计分析模块:成绩统计、 成绩分析等
用户管理模块:用户注册、 登录、修改密码等
系统设置模块:系统参数设 置、系统日志管理等
Part Five
系统实现
系统开发环境与工具
开发语言:Java 开发工具:Eclipse 数据库:MySQL
单击添加章节标题
Part Two
系统概述
系统的目标与功能
目标:提高学生成绩管理效率,方便教师 和学生查询成绩
功能:成绩录入、成绩查询、成绩统计、 成绩分析、成绩排名等
系统的用户群体
学生:查询个人成绩、查看课程安排、提交作业等 教师:发布课程信息、查看学生成绩、布置作业等 管理员:管理用户权限、维护系统数据、统计分析等 家长:了解孩子学习情况、与教师沟通等
C课程设计学生成绩管理 系统
,a click to unlimited possibilities
汇报人:
目录
01 添 加 目 录 项 标 题 03 系 统 需 求 分 析 05 系 统 实 现 07 总 结 与 展 望
02 系 统 概 述 04 系 统 设 计 06 系 统 评 估 与 优 化
Part One
可扩展性:系统在增加用户或负载时, 性能的变化情况
用户体验:用户对系统的满意度和易用 性评价
系统优化建议与方案
性能优化:提 高系统响应速 度,优化数据
库查询效率
用户体验优化: 简化界面设计, 提高用户操作
便捷性
功能优化:增 加用户自定义 功能,满足个
性化需求
安全性优化: 加强数据加密 和访问控制, 确保数据安全
c语言课程设计学生成绩管理系统
c语言课程设计学生成绩管理系统一、课程目标知识目标:1. 理解C语言编程的基本概念,掌握数据类型、变量、运算符、控制结构等基础知识。
2. 学习使用数组、函数和指针等C语言特性进行程序设计。
3. 掌握文件操作,实现对数据的保存和读取。
技能目标:1. 能够运用C语言编写学生成绩管理系统的各个功能模块,如录入、查询、修改和删除成绩。
2. 培养学生运用结构体处理复杂数据结构的能力。
3. 提高学生分析问题、设计程序、调试程序和解决问题的能力。
情感态度价值观目标:1. 培养学生认真负责、细心严谨的学习态度,养成良好的编程习惯。
2. 激发学生创新意识,鼓励合作交流,提高团队协作能力。
3. 培养学生面对挫折和困难时,保持积极心态,勇于克服问题。
本课程针对高年级学生,结合C语言课程知识,以学生成绩管理系统为实际案例,注重理论与实践相结合。
在教学过程中,充分考虑学生的认知特点,由浅入深,逐步引导学生掌握C语言编程技能,培养实际编程能力。
课程目标明确,分解为具体学习成果,便于教学设计和评估。
通过本课程的学习,使学生能够独立完成学生成绩管理系统的设计与实现,提高编程水平和实践能力。
二、教学内容1. C语言基础知识回顾:数据类型、变量、常量、运算符、表达式、控制结构(条件语句、循环语句)。
相关教材章节:第一章至第三章。
2. 函数与数组:函数定义、调用、传参;一维数组、二维数组的应用。
相关教材章节:第四章、第六章。
3. 指针与结构体:指针的概念、操作;结构体的定义、初始化、使用。
相关教材章节:第七章、第八章。
4. 文件操作:文件打开、关闭、读写操作;文件存储结构。
相关教材章节:第十章。
5. 学生成绩管理系统设计与实现:a. 功能需求分析:录入、查询、修改、删除成绩。
b. 数据结构设计:学生信息结构体、成绩结构体、链表或数组实现。
c. 功能模块实现:各功能模块的详细设计与编程实现。
d. 系统测试与调试:单元测试、集成测试、性能优化。
c语言课程设计报告学生成绩管理系统
c语言课程设计报告学生成绩管理系统一、课程目标知识目标:1. 学生能理解并掌握C语言基础,包括变量定义、数据类型、运算符、控制结构等。
2. 学生能运用C语言实现学生成绩管理系统的基本功能,如添加、删除、修改、查询学生成绩。
3. 学生了解并掌握文件操作在C语言中的应用,实现对数据的持久化存储。
技能目标:1. 学生能够运用结构体数组管理大量数据,培养数据组织和管理的实际操作能力。
2. 学生通过编程实践,掌握模块化编程方法,提高代码的复用性和可维护性。
3. 学生通过团队协作,培养沟通与协作能力,共同完成学生成绩管理系统的设计与实现。
情感态度价值观目标:1. 学生通过解决实际问题,培养对编程的兴趣,激发探究精神。
2. 学生在团队协作中,学会尊重他人意见,培养合作精神,提高解决问题的信心。
3. 学生认识到编程在生活中的实际应用,增强对计算机科学的认识和热爱。
课程性质:本课程为实践性较强的学科,结合C语言编程知识,以项目驱动的方式进行教学。
学生特点:学生为高中一年级学生,已具备一定的计算机操作能力,对编程有一定了解,但实际操作经验不足。
教学要求:教师需引导学生掌握C语言基础知识,注重实践操作,鼓励学生主动探究、团队协作,培养解决实际问题的能力。
在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。
二、教学内容根据课程目标,教学内容分为以下三个部分:1. C语言基础知识:- 变量定义、数据类型、常量与变量- 运算符、表达式、语句- 控制结构:顺序、选择、循环- 函数的定义与调用- 指针与数组2. 学生成绩管理系统功能实现:- 结构体的定义与使用- 结构体数组操作- 系统功能模块划分:添加、删除、修改、查询学生成绩- 函数调用关系分析,实现模块化编程3. 文件操作与数据持久化:- 文件打开、关闭、读写操作- 学生成绩数据的存储与读取- 文件错误处理与异常处理教学大纲安排:第一周:C语言基础知识复习,学习结构体和结构体数组第二周:学生成绩管理系统功能设计,编写添加、删除、修改、查询功能的代码第三周:文件操作学习,实现学生成绩数据的持久化存储,优化系统性能第四周:项目测试、调试与优化,总结交流教学内容与教材关联性:本教学内容与教材《C语言程序设计》相关章节紧密关联,涵盖第3章至第6章的知识点,以及第8章文件操作部分。
C语言程序设计-学生成绩管理系统
C语言上机实验程序设计报告课程名称c语言上机实践设计题目学生管理系统学生姓名张记函学号3201100121专业班级自动化(交通信息与控制)指导教师王秋才年月日一、设计目的二、课程设计的要求与数据三、成绩管理系统主要功能四、界面设计五、程序源码六、心得体会一、设计目的进一步加深、巩固学生所学专业课程(《C语言》)的基本理论知识,理论联系实际,进一步培养学生综合分析问题和解决问题的能力。
掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能。
二、课程设计的要求与数据1、用C语言实现系统;2、对学生信息(包括学号、姓名、性别、高数、英语、C语言、平均分)进行管理,包括学生成绩的信息输入、显示、添加、删除、修改、查询、退出.。
3、学生信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能:(1)每一条记录包括一个学生的学号、姓名、性别、3门课成绩.(2)成绩信息显示浏览功能:完成全部学生记录的显示。
(3)可以添加后来学生的信息。
(4)成绩信息的删除:按学号进行删除某学生的成绩.(5)可以修改某学生的信息.(6)查询功能:完成按姓名查找学生记录,并显示。
(7)应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!三、成绩管理系统主要功能1. 输入记录2. 用指定格式显示全部记录3。
根据姓名查找记录4. 根据姓名删除记录5. 保存记录到文件6。
按序号显示记录7. 按姓名由小到大的顺序排序四、界面设计此系统界面采用图形和数字化菜单设计。
主界面设计如下:-—-——--—-——--—---——-——--————-—---——--——————-———--——---——---—-----——--—-—----—----—-—--—-—欢迎进入学生成绩管理系统*********************** *主菜单* *********************1. 登记学生资料2. 删除学生资料3。
c语言程序设计-学生成绩管理系统
实验题目:学生成绩管理系统一、实验目的1.熟悉c语言的编译连接和运行过程。
2.掌握c语言的数据类型,熟悉整型、实型、字符型变量的定义方式及如何给它们赋值。
3.掌握if语句及switch语句的运用方法及嵌套应用方法.4.掌握实现循环结构的三种语句while、do—while。
、for 的使用。
5.掌握函数的定义方法和调用方法。
6.能够采用模块化思想调试程序。
二.实验内容1.编写程序并进行调试运行。
2.输入学生资料,并保存于文件.每个学生包含信息如:姓名、学号、性别、物理成绩、数学成绩、英语成绩、计算机成绩。
3.对已存入的学生信息进行更新操作,包括更新学生信息信息、删除某个学生信息和修改学生信息.4.通过按学生姓名的方式查询学生信息.5。
输入某学生各门成绩进行统计。
6 对学生物理成绩排序。
7.最后输出学生信息,供需要时打印。
二、需求分析1.该程序可用于对学生的基本信息的存储、更新、查询、输出、统计、排序等操作。
2.其中更新功能包括:添加信息、删除信息、修改信息、可根据需要添加一个或多个学生信息,也可对个别学生信息进行适当的删除或修改.以便随时更新学生信息.3.程序中设计的查询功能可根据需要从若干数据中查询某信息,四、概要设计1、方案设计对系统进行分析,给出结构图分析:系统要求实现许多的功能,因此遵循结构化程序设计思想来进行本系统的设计—自顶向下、逐步细化,将系统设计任务分解出许多子功能模块进行设计结构图如下:五功能模块的说明1 输入初始学生信息:其中包括学生姓名,学号,性别,物理数学英语计算机成绩等相关信息;可用函数cin(stu *p1)来实现此操作。
2 查询模块:可用stu *lookdata(stu *p1)来实现。
找到就输出此学生全部信息包括学生物理数学英语计算机的成绩。
3 插入模块:可用insert()来实现.其中通过学号的大小比较的,并且以此来排序。
4 输出学生的信息及成绩:通过学生的姓名来查看学生的语文数学英语计算机的有关成绩,同时也可以分别通过paverage() maverage() eaverage() comaverage()来输出物理数学英语计算机等成绩的平均分最高分最低分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目学生成绩管理系统一、功能1.每一条记录包括一个学生的学号、姓名、语数外3门成绩、平均成绩2.输入功能:可以一次完成有限(不大于2000)条记录的输入3.显示功能:完成全部学生记录的显示4.查找功能:完成按学号或姓名查找学生记录,并显示5.排序功能:按学生学号或平均成绩进行排序6.保存功能:将学生记录保存在Information.txt文件中7.读取功能:将保存在文件中的学生记录读取出来8.有一个清晰美观界面来调用各个功能二、要求1.整个系统均用C语言实现2.利用指针、结构体数组或链表来实现学生成绩的数据结构设计3.系统具有输入、显示、查询、修改、删除、排序、保存、读取等基本功能4.系统的各个功能模块都用函数的形式来实现5.可以将学生成绩信息保存在文件中6.可以将学生信息从文件中读取出来三、设计内容整个学生成绩管理系统由主函数及12个子函数构成,实现学生成绩录入、显示、查询、排序、修改、保存、读取和删除共8项功能,各函数功能相信说明如下:1.主函数int main()利用无限次循环while和switch实现对各个函数的调用,使用时根据输入的数字来调用相应的函数2. 显示主菜单函数void DispMainMenu()这是一个无参函数,用来显示程序主菜单,用户通过输入对应功能前的数字来实现相应的功能3. 学生成绩录入函数int InformationInput(STUDENT stu[],int cn)这是一个有返回值的有参函数,形参STUDENT stu[]为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int cn为当前学生人数,返回值为当前学生人数。
其作用是输入有限个学生的成绩信息。
算法:定义3个变量,num用来存放本次录入学生人数,i、j为循环变量。
由键盘输入学生人数赋值给num,判断num是否大于MAX_NUM(2000),若大于,则提示输入人数太多,函数返回值0;若不大于,则依次输入num个学生信息。
4. 显示所有学生信息函数void DispInformation(STUDENT stu[],int MAX)这是一个无返回值的有参函数,形参STUDENT stu[]为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int MAX为为当前学生人数。
其作用是现实当前所有学生成绩信息。
5. 查找指定学号的学生的信息函数int FindStudentnumber(STUDENTstu[],int findnumber,int MAX)这是一个有返回值的有参函数,形参STUDENT stu[]为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int MAX为当前学生人数。
其作用是根据指定学号查询学生成绩信息,若查找到指定学号学生信息,则返回该学生学号,否则返回-1。
算法:6. 查找指定姓名的学生的信息函数int FindStudentname(STUDENTstu[],char findname[],int MAX)这是一个有返回值的有参函数,形参STUDENT stu[]为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int MAX为当前学生人数。
其作用是根据指定姓名查询学生成绩信息,若查找到指定姓名学生信息,则返回该学生学号,否则返回-1。
算法:7. 学生信息查询函数void QueryInformation(STUDENT stu[],int MAX)这是一个无返回值的有参函数,形参STUDENT stu[]为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int MAX为当前学生人数。
其作用是可以根据学号或姓名查找到指定学生的成绩信息。
算法:定义查询方式字符变量select,指定学号整型变量findnumber,指定姓名字符串数组findname[10],整型变量i,循环变量j。
调用函数时,屏幕提示选择查询方式,若选择按学号查询,则输入学号后调用查找指定学号的学生的信息函数int FindStudentnumber(STUDENT stu[],int findnumber,int MAX)将返回值赋给变量i,若变量i不为-1,则查找成功,输出学生信息,否则在屏幕显示“输入学号不存在”;若选择按姓名查询则输入姓名后调用查找指定姓名的学生的信息函数int FindStudentname(STUDENT stu[],char findname[],int MAX)将返回值赋给i,若变量i不为-1,则查找成功,输出学生信息,否则在屏幕显示“输入学号不存在”。
若在选择查询方式时输入除“1”、“2”外的其他字符,则提示“选择错误”。
N-S图8. 修改学生信息函数void EditInformation(STUDENT stu[],int MAX)这是一个无返回值的有参函数,形参STUDENT stu[]为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int MAX为当前学生人数。
其作用是修改或删除指定学生的成绩信息。
算法:定义整型变量i、j,j为循环变量;浮点型变量sum,用来寻访总成绩;整形变量findnum用来存放需要修改信息的学生学号;字符变量select用来存放修改方式代号。
输入学号后调用查找指定学号的学生的信息函数int FindStudentnumber(STUDENT stu[],int findnumber,int MAX)将返回值赋给变量i,若变量i不为-1,则存在该学号学生。
在屏幕提示选择修改方式,若选择修改信息,则先在屏幕输出原信息,后按提示依次修改信息;若选择删除信息,则调用删除信息函数void Delete(STUDENT stu[],int n,int MAX)删除该学号学生信息。
若未查找到指定学号,则在屏幕输出“您输入的学号不存在”。
N-S图9. 按学号排序函数void SortNum(STUDENT stu[],int MAX)这是一个无返回值的有参函数,形参STUDENT stu[]为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int MAX为当前学生人数。
其作用是用冒泡法将学生成绩信息按学号由小到大排列。
算法:定义循环变量i、j,结构体变量p作为中间变量。
冒泡法完成排序后,调用显示所有学生信息函数void DispInformation(STUDENT stu[],int MAX)在屏幕打印出排序后的学生成绩信息。
N-S图10. 按平均成绩排序函数void SortScore(STUDENT stu[],int MAX)这是一个无返回值的有参函数,形参STUDENT stu[]为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int MAX为当前学生人数。
其作用是用冒泡法将学生成绩信息按平均成绩由大到小排列。
算法:定义循环变量i、j,结构体变量p作为中间变量。
冒泡法完成排序后,调用显示所有学生信息函数void DispInformation(STUDENT stu[],int MAX)在屏幕打印出排序后的学生成绩信息。
N-S图11. 保存数据到文件函数void Save(STUDENT stu[],int MAX)这是一个无返回值的有参函数,形参STUDENT stu[]为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int MAX为当前学生人数。
其作用是将存放在结构体数组中的学生成绩信息保存到文件Information.txt中。
算法:定义整型变量i,文件指针*fp。
若成功打开文件Information.txt,则用fwrite()将存放在结构体数组中的学生成绩信息保存到文件Information.txt中;若打开失败,则在屏幕输出“can not open file”。
N-S图12. 打开数据文件函数int Read(STUDENT stu[])这是一个有返回值的有参函数,形参STUDENT stu[]为结构体数组指针,表示存有学生信息的结构体数组的头指针,返回值为读取到的学生信息个数,即学生人数。
其作用是将存放在文件Information.txt中的学生成绩信息存放到结构体数组中。
算法:定义整型变量i,文件指针*fp。
若成功打开文件Information.txt,则计数变量赋值为0,每完成一次读取,i自加1。
若打开失败,则在屏幕输出“can not open file”。
N-S图13.删除信息函数void Delete(STUDENT stu[],int n,int MAX)这是一个无返回值的有参函数,形参STUDENT stu[]为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int n表示血药删除的学生序号,形参int MAX为当前学生人数。
其作用是删除第n个学生的信息。
算法:定义循环变量i、j,文件指针*fp。
打开存有学生成绩信息的文件Information.txt,在屏幕显示源信息。
然后将存放在结构体数组中的信息,从第n个开始,之后每一组数据覆盖前一组数据,以达到删除信息的同时又保证结构体数组中信息连续的目的。
之后当前学生人数自减1,重新保存数据到文件Information.txt,在屏幕输出当前所有学生信息。
N-S图五、调试分析1.运行时输入信息没有按照scanf()函数格式输入,导致程序无法正常继续运行。
2.按照正确格式输入完信息后按回车键后出现“烫烫烫烫”字样的乱码,后经检查发现在学生成绩输入函数int InformationInput(STUDENT stu[],int cn)中调用了显示所有学生信息函数void DispInformation(STUDENT stu[],int MAX),而显示所有学生信息函数void DispInformation(STUDENT stu[],int MAX)中,语句for (i=0;i<MAX;i++)后误按了一个“;”导致不能正常执行循环体,后经考虑,决定删除输入完后显示学生信息和排序的语句。
3.经2修改后再次运行,出现了运行结果一闪而过的情况,所以上网查找解决方法。
先开始查到的方法是需要添加头文件#include<conio.h>并且在需要停留的地方输入语句“getch();”,再次运行发现运行结果还是一闪而过。
再次查询后,将getch()改为“system("pause");”。
再次运行能正常显示。
4.经3修改后再次运行,在排序部分,发现按照平均成绩排序时是由小到大排序的,不符合实际应用中最常用的由大到小排序,遂进行修改。
5.经4修改后,在修改信息时,结果不能正常输入学号,检查代码后发现语句“scanf("%d",&stu[i].number);”中“stu[i].number”前漏掉了取地址符号“&”。