C语言课程设计-学生成绩管理系统

合集下载

C语言课程设计学生成绩管理系统

C语言课程设计学生成绩管理系统

C语言课程设计学生成绩管理系统在当今数字化的时代,学生成绩管理系统对于学校和教育机构来说至关重要。

它不仅能够提高教学管理的效率,还能为教学决策提供有力的数据支持。

本次 C 语言课程设计的目标就是创建一个功能齐全、操作便捷的学生成绩管理系统。

一、系统需求分析首先,明确系统需要实现的基本功能。

包括学生信息的录入,如姓名、学号等;课程信息的设置,如课程名称、学分等;成绩的录入、修改和查询;以及成绩的统计分析,如计算平均分、排名等。

同时,系统应具备良好的用户界面,操作简单易懂,方便教师和管理人员使用。

对于数据的存储和管理,要保证数据的安全性和完整性,防止数据丢失或被篡改。

二、系统设计(一)数据结构设计选择合适的数据结构来存储学生、课程和成绩信息。

可以使用结构体来定义学生和课程的数据类型,使用数组或链表来存储多个学生和课程的信息。

例如,定义学生结构体如下:```ctypedef struct student {int id;char name50;float scores10; //假设最多 10 门课程} Student;```(二)功能模块设计将系统划分为多个功能模块,如录入模块、查询模块、修改模块、统计模块等。

每个模块负责完成特定的功能,模块之间相互独立,便于代码的维护和扩展。

录入模块负责接收用户输入的学生、课程和成绩信息,并进行合法性检查。

查询模块可以根据用户输入的条件,如学号、姓名、课程名称等,查询相应的学生成绩信息。

修改模块允许用户对已录入的成绩进行修改,但需要进行权限验证。

统计模块用于计算学生的平均分、总分,并进行排名。

(三)界面设计设计简洁明了的用户界面,使用菜单选项让用户选择不同的功能。

可以使用控制台输入输出的方式,也可以考虑使用图形界面库来实现更友好的界面。

三、系统实现(一)数据输入与存储使用文件来存储学生成绩数据,便于数据的持久化。

在程序启动时,读取文件中的数据;在程序结束时,将修改后的数据保存回文件。

C语言课程设计--学生成绩管理系统

C语言课程设计--学生成绩管理系统

*题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。

主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单要求:使用二进制文件方式存储数据,系统以菜单方式工作源代码:#include<stdio.h>#include<ctype.h>#include<stdlib.h>#include<string.h>struct Student{int cls;char nam[10];char num[10];int chinese;int english;int computer;int math;}stud1[100],stud2[100];{char a;while(a>'7'||a<'0'){system("cls");printf(" 欢迎使用学生成绩管理系统\n");printf(" 制作人:章建\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(" 0.储存学生资料并退出系统\n");printf("********************************************************************* *\n");printf("请选择(0-7)\n");a=getchar();}return(a-'0');}/******************************************************************************int Input(Student stud[],int n) //输入数据(第一学期)。

c语言成绩管理系统课程设计

c语言成绩管理系统课程设计

c语言成绩管理系统课程设计一、教学目标本课程的目标是使学生掌握C语言编程的基本技能,能够运用C语言设计简单的成绩管理系统。

通过本课程的学习,学生将能够理解C语言的基本语法和数据结构,掌握函数的定义和调用,学会使用指针和数组,以及熟练运用条件语句和循环语句。

此外,学生还将培养编程思维和解决问题的能力,提高团队合作和沟通的能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数、指针、数组、控制语句等。

具体包括以下几个方面的内容:1.C语言的基本语法:包括变量、常量、运算符、表达式等。

2.数据结构:包括整型、浮点型、字符型等基本数据类型,以及数组、结构体、指针等复杂数据类型。

3.函数:包括函数的定义、声明和调用,以及函数的参数传递和返回值。

4.指针:包括指针的概念、指针的运算、指针与数组的关系等。

5.数组:包括一维数组和多维数组的定义和使用。

6.控制语句:包括条件语句和循环语句的语法和应用。

三、教学方法本课程将采用讲授法、案例分析法和实验法等多种教学方法相结合的方式进行教学。

1.讲授法:通过教师的讲解,使学生掌握C语言的基本语法和数据结构,理解函数的定义和调用,以及掌握指针和数组的使用方法。

2.案例分析法:通过分析实际案例,使学生学会运用C语言解决实际问题,培养编程思维和解决问题的能力。

3.实验法:通过实验操作,使学生熟练掌握C语言编程的技巧和方法,提高编程能力。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等。

1.教材:选用《C程序设计语言》作为主要教材,为学生提供系统的C语言知识体系。

2.参考书:提供《C Primer Plus》等参考书,供学生自主学习和拓展知识。

3.多媒体资料:制作PPT课件,通过图片、动画等形式展示C语言编程的概念和实例。

4.实验设备:提供计算机实验室,供学生进行编程实验和实践。

五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面客观地评价学生的学习成果。

c语言学生成绩管理系统课程设计

c语言学生成绩管理系统课程设计

c语言学生成绩管理系统课程设计一、课程目标知识目标:1. 学生能理解C语言在开发学生成绩管理系统中的应用,掌握基本的程序结构和语法。

2. 学生能运用C语言实现对学生成绩的录入、查询、修改、删除和排序等功能。

3. 学生了解并掌握数组、结构体、文件操作等C语言核心知识在学生成绩管理系统中的运用。

技能目标:1. 学生能够独立设计并编写简单的C语言程序,实现学生成绩管理系统的基本功能。

2. 学生能够运用调试工具对程序进行调试,找出并修正程序中的错误。

3. 学生能够通过分析实际需求,提出合理的解决方案,提高编程解决问题的能力。

情感态度价值观目标:1. 学生通过学习C语言学生成绩管理系统,培养对计算机编程的兴趣和热情。

2. 学生在团队协作中,学会沟通、分享、合作,培养良好的团队精神和编程习惯。

3. 学生通过解决实际问题,体会编程带来的成就感,增强自信心,培养积极向上的学习态度。

课程性质:本课程属于实践性较强的课程,旨在让学生通过动手实践,掌握C 语言编程技能,并能够应用于实际问题的解决。

学生特点:学生已经具备一定的C语言基础,对编程有一定的了解,但对复杂程序的设计和开发尚处于起步阶段。

教学要求:结合学生特点和课程性质,本课程要求教师注重实践操作,引导学生通过动手实践掌握编程技能,并在实践中提高解决问题的能力。

同时,注重培养学生的团队协作和沟通能力,提高学生的综合素质。

通过本课程的学习,使学生能够达到上述课程目标,并为后续相关课程的学习打下坚实基础。

二、教学内容1. C语言基础知识回顾:包括数据类型、运算符、控制结构等,为后续课程打下基础。

(对应教材章节:1-3章)- 数据类型、变量定义- 运算符、表达式- 顺序结构、分支结构、循环结构2. 数组与函数:介绍数组的使用以及函数的定义与调用,为成绩管理系统提供数据存储和处理方法。

(对应教材章节:4-5章)- 一维数组、二维数组- 函数的定义、调用、参数传递- 递归函数3. 结构体与文件操作:讲解结构体的定义和使用,以及文件操作的基本方法,为成绩管理系统提供数据存储和读取功能。

C语言课程设计_学生成绩管理系统

C语言课程设计_学生成绩管理系统

部署步骤:安装 操作系统、安装 数据库、安装应 用软件等
维护方案:定期 备份数据、定期 检查系统、定期 更新软件等
系统维护方案
定期备份数据: 确保数据安全, 防止数据丢失
定期更新系统: 确保系统安全, 防止病毒和恶意 软件攻击
定期检查硬件: 确保硬件正常运 行,防止硬件故 障
定期培训员工: 确保员工熟悉系 统操作,提高工 作效率
06 系统测试与优化
单元测试
目的:验证单个模块或功能的正确 性
测试内容:功能测试、性能测试、 兼容性测试、安全性测试
添加标题
添加标题
添加标题
添加标题
测试方法:白盒测试、黑盒测试、 灰盒测试
测 试 工 具 : JU n it 、 Te s t NG 、 Selenium等
集成测试
目的:验证系统各模块间的接口和交互是否正常 测试方法:黑盒测试、白盒测试、灰盒测试 测试内容:功能测试、性能测试、安全测试、兼容性测试 测试工具:JMeter、Selenium、Appium等
系统性能优化
性能测试:使用自 动化工具进行性能 测试,如JMeter、 LoadRunner等
性能瓶颈分析:分 析性能测试结果, 找出性能瓶颈,如 数据库查询、网络 延迟等
性能优化:针对性 能瓶颈进行优化, 如优化数据库查询 、减少网络延迟等
性能监控:建立性 能监控体系,实时 监控系统性能,及 时发现和解决性能 问题
学生成绩管理系统是一个用 于管理学生成绩的软件系统
Байду номын сангаас
系统采用模块化设计,易于 维护和扩展
系统支持多种数据格式,如 Excel、CSV等,方便数据
导入和导出
系统目标
提高学生成绩管理效率 方便教师查询、统计和分析学生成绩 提供个性化学习建议和指导 促进家校沟通,提高家长对学生成绩的了解

C语言课程设计-学生成绩管理系统-完整版

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. 学生能理解C语言在开发学生成绩管理系统中的应用和重要性。

2. 学生掌握C语言中的基本数据类型、运算符、控制结构等基础知识,并能运用到成绩管理系统的设计与实现中。

3. 学生能掌握文件操作、数组、结构体等C语言高级特性,用以存储、查询和管理学生成绩。

技能目标:1. 学生能够运用所学知识,设计并编写一个简单的学生成绩管理系统。

2. 学生通过实际操作,培养解决问题的能力,包括分析需求、设计算法、编写程序和测试代码。

3. 学生通过小组合作,提升团队协作能力和项目管理的实践技能。

情感态度价值观目标:1. 学生在学习过程中培养对编程的兴趣和热情,增强对信息技术的认同感。

2. 学生通过解决实际问题,体会编程带来的成就感,激发进一步学习的动力。

3. 学生在团队合作中学会相互尊重、倾听和沟通,培养积极向上的情感态度。

课程性质:本课程是计算机科学与技术学科的一门实践性课程,强调理论与实践相结合,注重培养学生的实际操作能力和创新思维。

学生特点:高年级学生对C语言有一定的基础知识,具备一定的编程能力和问题解决能力。

教学要求:课程要求学生在理解基本概念的基础上,通过项目驱动的教学方式,动手实践,将理论知识转化为实际应用。

通过课程学习,学生应达到以上设定的知识、技能和情感态度价值观目标,为后续的深入学习打下坚实基础。

二、教学内容本课程教学内容主要包括以下几部分:1. C语言基础知识回顾:数据类型、变量、运算符、控制结构等,确保学生具备扎实的编程基础。

2. 文件操作:文件打开、关闭、读写等操作,为成绩管理系统中的数据持久化提供支持。

3. 数组与字符串:数组的使用、字符串处理,用于存储和管理学生成绩信息。

4. 结构体:自定义结构体类型,用于表示学生信息和成绩。

5. 函数:模块化编程,提高代码可读性和可维护性。

6. 项目实践:设计并实现一个学生成绩管理系统,涵盖以下功能:- 录入学生信息- 修改学生信息- 删除学生信息- 查询学生信息- 成绩排名- 成绩统计分析7. 教学大纲:- 第一周:C语言基础知识回顾,数组与字符串操作- 第二周:结构体、函数,文件操作- 第三周:项目需求分析,设计系统框架- 第四周:编写代码,实现各功能模块- 第五周:系统测试,优化代码,撰写项目报告教学内容与教材关联性:本课程教学内容紧密结合教材中的相关章节,如数据类型、控制结构、文件操作等,确保学生所学知识的系统性和科学性。

c语言学生成绩管理系统课程设计

c语言学生成绩管理系统课程设计

c语言学生成绩管理系统课程设计一、教学目标本课程的教学目标是使学生掌握C语言学生成绩管理系统的开发方法,培养学生的编程能力和实际应用能力。

具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据结构、函数、文件操作等编程知识,了解学生成绩管理系统的需求分析和系统设计方法。

2.技能目标:学生能够运用C语言独立完成一个学生成绩管理系统的设计和实现,具备一定的编程实践能力和问题解决能力。

3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,增强学生对技术改变生活的认识,培养学生的创新精神和团队合作意识。

二、教学内容教学内容以教材《C语言程序设计》为主线,结合实际应用需求,安排如下:1.C语言基础知识:数据类型、运算符、控制结构、数组、字符串等。

2.函数与模块化编程:函数定义与调用、局部变量与全局变量、递归、文件操作等。

3.数据结构:链表、栈、队列、树等。

4.学生成绩管理系统设计:需求分析、系统设计、模块划分、编程实现等。

5.调试与优化:调试方法、性能分析、代码优化等。

三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合,以激发学生的学习兴趣和主动性。

1.讲授法:用于传授C语言基本语法和编程原理,帮助学生建立扎实的理论基础。

2.案例分析法:通过分析实际案例,让学生了解学生成绩管理系统的需求分析和设计方法,提高学生的实际应用能力。

3.实验法:安排实验课,让学生动手编写代码,培养学生的编程实践能力和问题解决能力。

四、教学资源教学资源包括教材、多媒体资料、实验设备等,以支持教学内容和教学方法的实施,丰富学生的学习体验。

1.教材:《C语言程序设计》。

2.多媒体资料:教学PPT、视频教程、在线编程练习等。

3.实验设备:计算机、网络设备、编程环境等。

五、教学评估教学评估是检验学生学习成果的重要手段,主要包括以下几个方面:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言课程设计-学生成绩管理系统#include<stdio.h>#include<string.h>/* strcmp函数原型包含*/#define N 100/*定义最大学生人数为100*/struct student /*学生结构体定义*/{char no[11]; /*学号,10位*/char name[10];/*姓名,3个汉字*/float score[5];/*储存5门功课的成绩*/float ave;/*储存平均分*/int year;/*入学年*/}stu[N];int num;int panduani(int); /*通过i的值,判断信息要查找的信息是否存在*/void output(); /*输出学生成绩函数(公共函数)*/void init(); /*系统初始化函数*/void newfile(); /*建立新的数据文件*/ void read1(); /*从数据文件中读取数据*/void weihu(); /*维护界面函数*/void new1(); /*新增一个学生成绩函数*/void xiugai(); /*修改学生成绩*/int xgcj(int); /*修改成绩*/void delete1(); /*删除学生信息函数*/ void tongji(); /*统计界面函数*/void tongji1(); /*计算每个学生平均分*/ void tongji2(); /*计算每门课程的平均分*/ void paixu1(); /*排序函数*/void paino(); /*按学号排序*/void paiave(); /*按平均分排序*/void paidkcj(); /*按单科成绩排序*/void change(int,int); /*交换结构体数组中的两个记录*/void outputx(int); /*选择输出单科成绩徐修楼编*/void find1(); /*查找界面函数*/int find(char sno[]); /*按学号查找*/int findname(char cname[]);/*按姓名查找*/void findyear(int cyear); /*按入学年查找*/void save(); /*保存文件*/void stop(); /*停顿函数*/void stop() /*停顿函数(公共函数)*/{printf("Press Any Key To Continue...\n");getch();}void output() /*输出学生成绩函数(公共函数)*/ {int i,j;printf("==================================== ===============================\n");printf("XueHao XingMing RuXueNian C GaoShu DaWu DianLu MoDian\n");printf("==================================== ===============================\n");for(i=0;i<num;i++){printf("%-11s%-10s%-11d",stu[i].no,stu[i].name,stu[i].year);for(j=0;j<5;j++)printf("% -7.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("Chuang Jian Shi Bai! Qing Chong Xin YunXing Cheng Xu.\n"); /*显示“创建文件失败,请重新运行程序”*/exit(0); /*终止程序*/}printf(" Chu Ci Yun Xing, Jin Xing Shu Ju Chu Shi Hua...\n");/*显示“初次运行,进行数据初始化...”*/ stop();clrscr();printf(" Qing Shu Ru Xue Sheng Ren Shu:");/*显示“请输入学生人数:”*/scanf("%d",&num);for(i=0;i<num;i++){printf("Qing Shu Ru Di %d Ge Xue Sheng De Xue Hao:",i+1); /*显示“请输入第i+1个学生的学号:”*/ getchar(); /*吃回车*/gets(stu[i].no);printf("Xing Ming:"); /*显示“姓名:”*/gets(stu[i].name);printf("Ru Xue Nian:");/*显示“入学年”*/scanf("%d",&stu[i].year);printf("C-YuYan Cheng Ji:");/*显示“C语言成绩”*/scanf("%f",&stu[i].score[0]);printf("GaoShu Cheng Ji:");/*显示“高数成绩”*/ scanf("%f",&stu[i].score[1]);printf("DaWu Cheng Ji:");/*显示“大物成绩”*/ scanf("%f",&stu[i].score[2]);printf("DianLu Cheng Ji:");/*显示“电路成绩”*/ scanf("%f",&stu[i].score[3]);printf("MoDian Cheng Ji:");/*显示“模电成绩”*/ scanf("%f",&stu[i].score[4]);fwrite(&stu[i],1,sizeof(struct student),fp); /*把第i+1名学生成绩写入文件*/}fclose(fp);clrscr();printf("==================================== ==\n");printf(" Gung Cai Shu Ru De %d Ge Shu Ju Wei:\n",num); /*显示“刚才输入的num 个数据为:”*/printf("==================================== ==\n\n");output();}void read1() /*从数据文件中读取数据*/{FILE *fp;num=0; /*num为数据文件中实际存储的学生人数*/fp=fopen("stu.dat","r");if(fp==NULL) /*数据文件不存在*/{printf("Wen Jian Da Kai Shi Bai! Chong Xin Yun Xing Cheng Xu\n"); /*显示“文件打开失败!重新运行程序”*/exit(0);}while(!feof(fp)){fread(&stu[num],1,sizeof(struct student),fp);num++;}num--;fclose(fp);printf("==================================== ===\n");printf(" Xian You %d Ge Xue Sheng De Cheng Ji:\n",num); /*显示“现有NUM个学生的成绩:”*/printf("==================================== ===\n\n");output();}void weihu() /*维护界面函数*/{char c1;while(1){clrscr();printf("\n\n\n\t\t\t*****************************\n") ;printf("\t\t\t* Wei Hu *\n"); printf("\t\t\t* 1. Xin Zeng *\n"); /*新增*/printf("\t\t\t* 2. Shan Chu *\n"); /*删除(按学号)*/printf("\t\t\t* 3. Xiu Gai *\n"); /*修改*/printf("\t\t\t* ESC. Fan Hui *\n"); /*返回*/printf("\t\t\t*****************************\n"); printf("\t\t\tQing Xuan Ze:\n");/*请选择:*/c1=getch();if(c1==27)break;switch(c1){case '1':new1();break;case '2':delete1();case '3':xiugai();break;default:printf("Xuan Zen You Wu,Qing Chong Xuan!\n");/*“选择有误,请重选!”*/}}}void new1() /*新增一个学生成绩函数*/{printf("Qing Shu Ru Xue Hao:"); /*显示“请输入学号:”*/getchar(); /*吃回车*/gets(stu[num].no);printf("Xing Ming:"); /*显示“姓名:”*/gets(stu[num].name);printf("Ru Xue Nian:");/*显示“入学年”*/scanf("%d",&stu[num].year);printf("C-YuYan Cheng Ji:");/*显示“C语言成绩”*/scanf("%f",&stu[num].score[0]);printf("GaoShu Cheng Ji:");/*显示“高数成绩”*/ scanf("%f",&stu[num].score[1]);printf("DaWu Cheng Ji:");/*显示“大物成绩”*/ scanf("%f",&stu[num].score[2]);printf("DianLu Cheng Ji:");/*显示“电路成绩”*/ scanf("%f",&stu[num].score[3]);printf("MoDian Cheng Ji:");/*显示“模电成绩”*/ scanf("%f",&stu[num].score[4]);num++;printf("\n================================== ====\n");printf(" Xian You %d Ge Xue Sheng De Cheng Ji:\n",num); /*显示“现有NUM个学生的成绩:”*/printf("==================================== ==\n\n");output();}void xiugai() /*修改学生成绩*/{char xg[11];int i;printf("\nQing shu ru yao xiu gai xue sheng de xue hao:\n\n");gets(xg);for(i=0;i<num;i++)if(strcmp(stu[i].no,xg)==0)break;if(i==num){printf("\nShu ju wen jian wu gai sheng xi xi!\n\nQing chong xin shu ru xue hao.\n\n");stop();return;}xgcj(i);}int xgcj(int x) /*修改成绩*/{char xueke[5][10]={"Cyuyan"," Gaoshu","Wuli","Dianlu","Modian"};char (*p)[10],c;int j,k;p=xueke;for(;;){clrscr();printf("\n");printf("\t\t\t************************************\n\n");printf("\t\t\t Cheng Ji \n");printf("\t\t\t 1.C Yu Yan \n"); /*C语言*/printf("\t\t\t 2.Gao Shu \n"); /*高数*/printf("\t\t\t 3.Wu Li \n"); /*大学物理*/printf("\t\t\t 4.Dian Lu \n"); /*电路*/printf("\t\t\t 5.Mo Dian \n"); /*模电*/printf("\t\t\t Esc.Fan Hui \n\n"); /*返回上级*/printf("\t\t\t************************************\n \n");printf("\tQing xuan ze yao xiu gai de cheng ji(press 1.2.3.4.5.Esc):\n");c=getch();if(c==27)break;else if (c>='1'&&c<='5'){k=c-49;printf("\nQing shu ru %s cheng ji:\n",p+k);scanf("%f",&stu[x].score[k]);printf("\nXiu gai hou gai xue sheng xin xi wei:\n");printf("XueHao XingMing RuXueNian C GaoShu DaWu DianLu MoDian\n");printf("==================================== ===============================\n");printf("%-11s%-10s%-11d",stu[x].no,stu[x].name,stu[x ].year);for(j=0;j<5;j++)printf("% -7.1f",stu[x].score[j]);printf("\n");}else printf("\nXuan Zen You Wu,Qing Chong Xuan!\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("Qing Shu Ru Yao Shan Chu De Xue Sheng Xue Hao:"); /*“请输入要删除的学生学号”*/gets(cno);i=find(cno);if(i!=-1){for(j=i;j<num;j++)stu[j]=stu[j+1];num--;printf("Xian You %d Ge Xue Sheng De Cheng Ji:\n",num); /*显示“现有NUM个学生的成绩:”*/ output();}else {printf("qing shu ru zheng que de xue hao. \n");stop();}}void tongji() /*统计界面函数*/{int i;char c2;while(1){clrscr();printf("\n\n\n\t\t\t******************************** ****\n");printf("\t\t\t* Tong Ji *\n");printf("\t\t\t* 1. Xue Sheng Ping Jun Fen*\n"); /*计算学生平均分*/printf("\t\t\t* 2. Ke Cheng Ping Jun Fen *\n"); /*计算每门课程平均分*/printf("\t\t\t* ESC. Fan Hui *\n"); /*返回*/printf("\t\t\t************************************\n ");printf("\t\t\tQing Xuan Ze:\n");/*请选择:*/c2=getch();if(c2==27) break;switch(c2){case '1':tongji1();printf("\n\nXue Sheng Ping Jun Fen Wei:\n");printf("==================================== =======\n");printf("XueHao XingMing RuXueNian PingJunFen\n");printf("===========================================\n");for(i=0;i<num;i++)printf("%-11s%-10s%-11d%-10.2f\n",stu[i].no,stu[i].name,stu[i].year,st u[i].ave);stop();break;case '2':tongji2();break;default:printf("Xuan Zen You Wu,Qing Chong Xuan!\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;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\nGe Ke Ping Jun Fen Wei:\n");/*“各科平均分:”*/printf("===================================\ n");printf("C GaoShu DaWu DianLu MoDian\n");printf("===================================\ n");for(i=0;i<5;i++)printf("%-7.1f",avec[i]);printf("\n");stop();}void paixu1() /*排序界面*/{char c3;for(;;){clrscr();printf("\n\n\n");printf("\t\t\t*************************************\ n");printf("\t\t\t* Pai Xu * \n");printf("\t\t\t* 1. An Xue Hao * \n"); /*按学号排序*/printf("\t\t\t* 2. An Ping Jun Fen * \n"); /*按平均分排序*/printf("\t\t\t* 3. An dan ke cheng ji * \n"); /*按单科成绩排序*/printf("\t\t\t* ESC. Fan Hui * \n"); /*返回*/printf("\t\t\t*************************************\ n\n");printf("\t\Qing Xuan Ze(press 1.2.3.Esc):\n");/*请选择:*/c3=getch();if(c3==27) break;switch(c3){case '1':paino();break;case '2':paiave();break;case '3':paidkcj();break;default:printf("\nXuan Zen You Wu,Qing Chong Xuan!\n\n");/*选择有误,请重选!*/stop();}}}void paino() /*按学号排序*/{ /*按学号从低到高冒泡法排序*/ int i,j,k;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("\nPai Xu Hou Wei:\n"); /*“排序后为:”*/ output();}void paiave() /*按平均分排序*/{ /*按平均分从高到低冒泡法排序*/ int i,j;struct student temp;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\tPai Xu Hou Wei:\n"); /*“排序后为:”*/printf("\t=================================== ============\n");printf("\tXueHao XingMing RuXueNian Ave Pai ming\n");printf("\t=================================== ============\n");for(i=0;i<num;i++)printf("\t%-11s%-10s%-11d%-6.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;for(;;){clrscr();printf("\n");printf("\t\t\t************************************\n \n");printf("\t\t\t Dan Ke Cheng Ji \n");printf("\t\t\t 1.C Yu Yan \n"); /*C语言*/printf("\t\t\t 2.Gao Shu \n"); /*高数*/printf("\t\t\t 3.Wu Li \n"); /*大学物理*/printf("\t\t\t 4.Dian Lu \n"); /*电路*/printf("\t\t\t 5.Mo Dian \n"); /*模电*/printf("\t\t\t Esc.Fan Hui \n\n"); /*返回上级*/printf("\t\t\t************************************\n \n");printf("\tQing xuan ze(press 1.2.3.4.5.Esc):\n");c=getch();if(c==27)break;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("\nXuan Zen You Wu,Qing Chong Xuan!\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) /*选择输出单科成绩*/{charxueke[5][10]={"Cyuyan","Gaoshu","Wuli","Dianlu"," Modian"};char (*p)[10]; /*定义一个指向包含10个字符型元素的一维数组的指针变量*/int i;p=xueke;printf("\n\tPai Xu Hou Wei:\n");printf("\t=================================== ============\n");printf("\tXueHao XingMing RuXueNian %s Pai Ming\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,j,cyear;while(1){clrscr();printf("\t\t\t************************************\n ");printf("\t\t\t* Cha Zhao *\n");printf("\t\t\t* 1. An Xue Hao *\n"); /*按学号查找*/printf("\t\t\t* 2. An Xing Ming *\n"); /*按姓名查找*/printf("\t\t\t* 3. An Ru Xue Nian *\n"); /*按入学年查找*/printf("\t\t\t* ESC. Fan Hui *\n"); /*返回*/printf("\t\t\t************************************\n ");printf("\t\t\tQing Xuan Ze:\n");/*请选择:*/c4=getch();if(c4==27) break;switch(c4){case '1':printf("Shu Ru Xue Hao:\n");/*“输入学号:”*/gets(cno);i=find(cno);panduani( i);break;case '2':printf("Shu Ru Xing Ming:\n");/*“输入姓名:”*/ gets(cname);i=findname(cname);panduani(i);break;case '3':printf("Shu Ru RU Xue Nian:\n");/*“输入入学年”*/scanf("%d",&cyear);findyear(cyear);stop();break;default:printf("Xuan Zen You Wu,Qing Chong Xuan!\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("Yao Cha Zhao De Xue Sheng Bu Cun Zai\n");stop(); }else{printf("Cha Zhao Dao De Xue Sheng Xin Xi Wei:\n");/*“查找到的学生信息为:”*/printf("XueHao XingMing RuXueNian C GaoShu DaWu DianLu MoDian\n");printf("==================================== ===============================\n");for(i=0;i<num;i++){if(stu[i].year==cyear) /*判断两个数值相等*/{printf("%-11s%-10s%-11d",stu[i].no,stu[i].name,stu[i].year);for(j=0;j<5;j++)printf("% -7.1f",stu[i].score[j]);printf("\n");}}}}int panduani(int i) /*通过i的值,判断信息要查找的信息是否存在*/{int j;if(i==-1){printf("Yao Cha Zhao De Xue Sheng Bu Cun Zai\n");/*要查找的学生不存在*/stop();}else{printf("Cha Zhao Dao De Xue Sheng Xin Xi Wei:\n");/*“查找到的学生信息为:”*/printf("XueHao XingMing RuXueNian C GaoShu DaWu DianLu MoDian\n");printf("==================================== ===============================\n");printf("%-11s%-10s%-11d",stu[i].no,stu[i].name,stu[i].year);for(j=0;j<5;j++)printf("% -7.1f",stu[i].score[j]);printf("\n");stop();}}void save() /*保存文件*/{int i;FILE *fp;if((fp=fopen("stu.dat","wb"))==NULL) /*创建二进制文件*/{printf("Chuang Jian Shi Bai! Qing Chong Xin Yun Xing Cheng Xu.\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){clrscr();printf("\n\n\n\t\t\t*****************************\n") ;printf("\t\t\t* MAIN MENU *\n");printf("\t\t\t* 1. Wei Hu *\n"); /*维护*/printf("\t\t\t* 2. Tong Ji *\n"); /*统计*/printf("\t\t\t* 3. Pai Xu *\n"); /*排序*/printf("\t\t\t* 4. Cha Zhao *\n"); /*查找*/printf("\t\t\t* ESC. SA VE & EXIT *\n"); /*存盘退出*/printf("\t\t\t*****************************\n"); printf("\t\t\tQing Xuan Ze:\n");/*请选择:*/c=getch();switch(c){case '1':weihu();break;case '2':tongji();break;case '3':paixu1();break;case '4':find1();break;case 27:save();exit(0);break;default:printf("Xuan Zen You Wu,Qing Chong Xuan!\n");/*“选择有误,请重选!”*/}}}。

相关文档
最新文档