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

C语言课程设计学生成绩管理系统在当今数字化的时代,学生成绩管理系统对于学校和教育机构来说至关重要。
它不仅能够提高教学管理的效率,还能为教学决策提供有力的数据支持。
本次 C 语言课程设计的目标就是创建一个功能齐全、操作便捷的学生成绩管理系统。
一、系统需求分析首先,明确系统需要实现的基本功能。
包括学生信息的录入,如姓名、学号等;课程信息的设置,如课程名称、学分等;成绩的录入、修改和查询;以及成绩的统计分析,如计算平均分、排名等。
同时,系统应具备良好的用户界面,操作简单易懂,方便教师和管理人员使用。
对于数据的存储和管理,要保证数据的安全性和完整性,防止数据丢失或被篡改。
二、系统设计(一)数据结构设计选择合适的数据结构来存储学生、课程和成绩信息。
可以使用结构体来定义学生和课程的数据类型,使用数组或链表来存储多个学生和课程的信息。
例如,定义学生结构体如下:```ctypedef struct student {int id;char name50;float scores10; //假设最多 10 门课程} Student;```(二)功能模块设计将系统划分为多个功能模块,如录入模块、查询模块、修改模块、统计模块等。
每个模块负责完成特定的功能,模块之间相互独立,便于代码的维护和扩展。
录入模块负责接收用户输入的学生、课程和成绩信息,并进行合法性检查。
查询模块可以根据用户输入的条件,如学号、姓名、课程名称等,查询相应的学生成绩信息。
修改模块允许用户对已录入的成绩进行修改,但需要进行权限验证。
统计模块用于计算学生的平均分、总分,并进行排名。
(三)界面设计设计简洁明了的用户界面,使用菜单选项让用户选择不同的功能。
可以使用控制台输入输出的方式,也可以考虑使用图形界面库来实现更友好的界面。
三、系统实现(一)数据输入与存储使用文件来存储学生成绩数据,便于数据的持久化。
在程序启动时,读取文件中的数据;在程序结束时,将修改后的数据保存回文件。
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.第1-2课时:C语言概述,基本数据类型和输入输出语句。
2.第3-4课时:控制结构,包括条件语句和循环语句。
3.第5-6课时:函数的定义和调用,掌握函数的参数传递和返回值。
4.第7-8课时:数组和字符串的处理,实现成绩管理系统的数据存储。
5.第9-10课时:指针的概念和应用,优化成绩管理系统的数据处理。
6.第11-12课时:结构体和文件操作,完善成绩管理系统的功能。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用讲授法、讨论法、案例分析法和实验法等多种教学方法。
1.讲授法:用于讲解C语言的基本语法和概念。
2.讨论法:通过分组讨论,让学生深入理解程序设计中的问题。
3.案例分析法:分析成绩管理系统的实现过程,让学生了解实际应用。
4.实验法:让学生动手编写和调试程序,提高编程能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等。
1.教材:选用《C程序设计语言》作为主要教材,辅以《C语言编程实例教程》进行实践指导。
2.参考书:提供《C语言程序设计》等参考书,供学生深入研究。
3.多媒体资料:制作课件和教学视频,方便学生复习和自学。
4.实验设备:提供计算机实验室,让学生进行编程实践。
五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。
c课程设计成绩管理系统

c 课程设计成绩管理系统一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握成绩管理系统的核心概念和基本原理,了解成绩管理系统的组成部分及其相互作用。
技能目标要求学生能够运用所学知识设计和实现一个简单的成绩管理系统,培养学生的实际操作能力和问题解决能力。
情感态度价值观目标要求学生树立正确的成绩观,认识到成绩管理的重要性,培养学生的责任感和使命感。
通过分析课程性质、学生特点和教学要求,明确课程目标,将目标分解为具体的学习成果,以便后续的教学设计和评估。
二、教学内容根据课程目标,选择和教学内容,确保内容的科学性和系统性。
本课程的教学内容主要包括成绩管理系统的概念、成绩管理系统的组成部分、成绩管理系统的实现方法等。
制定详细的教学大纲,明确教学内容的安排和进度。
教材的章节安排如下:1.成绩管理系统的概念:介绍成绩管理系统的定义、功能和作用。
2.成绩管理系统的组成部分:介绍成绩管理系统的主要模块,如成绩录入、成绩查询、成绩统计等。
3.成绩管理系统的实现方法:介绍成绩管理系统的开发方法和技术,如数据库设计、界面设计等。
三、教学方法选择合适的教学方法,如讲授法、讨论法、案例分析法、实验法等,以激发学生的学习兴趣和主动性。
结合本课程的特点和教学目标,采用以下教学方法:1.讲授法:用于讲解成绩管理系统的概念、原理和关键技术。
2.讨论法:用于引导学生探讨成绩管理系统的实现方法和问题解决策略。
3.案例分析法:用于分析实际成绩管理系统的应用案例,提高学生的实际操作能力。
4.实验法:用于让学生动手实践,设计和实现一个简单的成绩管理系统。
四、教学资源选择和准备适当的教学资源,包括教材、参考书、多媒体资料、实验设备等。
教学资源应该能够支持教学内容和教学方法的实施,丰富学生的学习体验。
1.教材:选用权威、实用的成绩管理系统教材,为学生提供系统的知识体系。
2.参考书:提供相关领域的参考书籍,拓展学生的知识视野。
学生成绩管理系统c语言课程设计报告

学生成绩管理系统c语言课程设计报告一、引言学生成绩管理系统是一个为学校或教育机构提供学生学业成绩管理的重要工具。
通过该系统,可以方便地记录和查询学生的各项成绩,帮助教师和学生了解学生的学业表现,及时作出教学和学习的调整和改进。
本文将介绍一个基于C语言的学生成绩管理系统的设计与实现。
二、需求分析1. 学生信息管理:包括学生基本信息的录入、修改和删除。
2. 成绩信息管理:包括成绩的录入、修改和删除。
3. 成绩查询与统计:可以按照学生学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份:能够将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
三、系统设计1. 学生信息管理模块:设计一个结构体来存储学生的基本信息,包括学号、姓名、性别、年龄等。
通过菜单选择,可以实现学生信息的录入、修改和删除功能。
2. 成绩信息管理模块:设计一个结构体来存储学生的成绩信息,包括科目名称和成绩。
通过菜单选择,可以实现成绩信息的录入、修改和删除功能。
3. 成绩查询与统计模块:通过学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份模块:设计文件操作函数,将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
四、系统实现1. 使用C语言编写程序代码,通过结构体和数组等数据结构实现学生信息和成绩信息的存储。
2. 利用文件操作函数实现数据的读取和存储,包括学生信息和成绩信息的存储和备份。
3. 设计菜单界面,通过用户选择来实现各个功能模块的调用。
五、系统测试与优化1. 针对各个功能模块进行测试,验证系统的正确性和稳定性。
2. 根据测试结果优化程序代码,提高系统性能和用户体验。
3. 完善系统功能,考虑异常情况的处理,提高系统的容错性和健壮性。
六、总结与展望通过本次课程设计,我们成功实现了一个基于C语言的学生成绩管理系统。
该系统能够方便地记录和查询学生的成绩信息,帮助教师和学生进行教学和学习的分析和改进。
C语言课程设计-学生成绩管理系统

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");/*“选择有误,请重选!”*/}}}。
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语言课程设计

学生成绩管理系统c语言课程设计1. 介绍学生成绩管理系统是一种可以帮助学校或教育机构管理学生的成绩信息的软件系统。
它能够记录和管理学生的各门课程的成绩,提供成绩查询、统计分析以及生成报表的功能。
在这个项目中,我们将使用C语言来设计和实现一个简单的学生成绩管理系统。
2. 功能需求2.1 学生信息管理•添加学生信息:输入学生的学号、姓名、性别、年龄等基本信息,并将其保存到系统中。
•修改学生信息:根据学生的学号或姓名,找到对应的学生信息,并允许修改其基本信息。
•删除学生信息:根据学生的学号或姓名,找到对应的学生信息,并从系统中删除。
2.2 成绩管理•录入学生成绩:输入学生的学号或姓名,根据学号或姓名找到对应的学生信息,并记录其各门课程的成绩。
•查询学生成绩:根据学生的学号或姓名,找到对应的学生信息,并显示其各门课程的成绩。
•统计学生成绩:计算学生的总分、平均分等统计信息,并按照成绩排名进行排序并显示。
•生成成绩报表:将学生的成绩信息按照一定的格式输出到文件中,以方便查阅和打印。
2.3 界面设计•主菜单:显示系统的功能选项,包括学生信息管理、成绩管理、退出等选项。
•学生信息管理菜单:显示学生信息管理的功能选项,包括添加学生信息、修改学生信息、删除学生信息等选项。
•成绩管理菜单:显示成绩管理的功能选项,包括录入学生成绩、查询学生成绩、统计学生成绩、生成成绩报表等选项。
•输入提示:在功能选项中,根据需要给出相应的输入提示,以引导用户正确地操作系统。
3. 设计思路3.1 数据结构设计为了实现学生成绩管理系统,我们需要设计合适的数据结构来存储学生信息和成绩。
在这个项目中,我们可以使用结构体来表示学生信息,如下所示:struct Student {int id; // 学号char name[20]; // 姓名char gender[10]; // 性别int age; // 年龄float grades[5]; // 各门课程成绩};3.2 模块设计为了实现功能需求中的各项功能,我们需要设计相应的模块来实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录——学生成绩管理程序题目要求 (2)设计目的 (2)总体设计 (3)详细设计 (3)调试与测试 (12)源程序 (14)总结 (30)学生成绩管理程序一.题目要求1.问题描述:对在校学生几门课程的考试成绩进行统一管理.每个学生记录包括学号,姓名,年龄,数学,英语,物理成绩,默认以学号为序存放.2.要求:(1)一个文件按以班为单位存储学生记录.(2)将允许的操作分为四种,以A,B ,C,D,E,F为标志:A:插入一个学生记录;B:修改学生记录;C:删除一个学生记录;D:查找一个学生记录;E:浏览学生成绩:F:退出3.计算学生的总成绩.4.按学号排序输出全班学生成绩表.二.设计目的根据题目要求,由于学生信息是存放在文件中,所以应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.三.总体设计根据上面的需求分析,可以将这个系统分为以下模块:输入模块,修改模块,删除模块,查找模块,显示模块.四.详细设计1.主函数:主函数一般设计得比较简单,只提供输入,处理和输出部分的函数调用,其中各功能模块用菜单方式选择.流程图:Y[程序]://#include "head.h"int menu_select(){char c;printf("\n\n");printf(" | 1. 增加学生记录 5.统计信息 |\n");printf(" | 2. 查询学生记录 6.打开文件 |\n");printf(" | 3. 修改学生记录 7.保存文件 |\n");printf(" | 4. 学生纪录排序 8.显示记录 |\n");printf(" | 0. 退出系统 |\n");printf("\n\n");printf("请选择(0-8):");c=getchar();getchar();return (c-'0');}2.输入模块:[分析]:单独看各数据信息,学号,姓名是字符型,可以采用字符型数组;分数为整数,采用整数;数据信息存放在文件中,一条记录对应一个学生,既符合习惯又方便信息管理.如果要存放若干学生信息就用结构体数组:void addrecord(student stud[]){int i=0,j,num;char str[5];if(numstus!=0){printf("已有记录存在是否覆盖?(y/n)\n");gets(str);if(str[0]=='Y'||str[0]=='y')i=0;else i=numstus;}printf("请输入增加的学生信息条目数:");scanf("%d",&num);if(i==0)numstus=num;else numstus+=num;if(numstus>lens){lens+=50;pointer=(student *)realloc(pointer,lens*LEN);}printf("请输入学生信息:\n");for(;i<numstus;i++){getchar();printf("请输入学号:");gets(pointer[i].number);printf("请输入姓名:");gets(pointer[i].name);printf("请输入性别(男/女 1/0):");gets(pointer[i].sex);if(pointer[i].sex[0]=='0') strcpy(pointer[i].sex,"女");else strcpy(pointer[i].sex,"男");printf("请输入各科成绩:(按“语文,数学,英语,历史,政治”的顺序):");stud[i].score=0;for(j=0;j<numsubs;j++){scanf("%f",&stud[i].subject[j]); /*计算总分*/stud[i].score+=stud[i].subject[j];}stud[i].average=stud[i].score/numsubs; /*计算平均分*/ }count(stud); /*附名次*/display(stud,0,numstus-1);getchar();}int numstus;int lens;student *pointer;void main(){int i=1;char str[2];lens=100;pointer=(student *)malloc(lens*LEN); /*分配内存*/numstus=0;welcome(); /*欢迎界面*/while(i>0){i=menu_select(); /*控制菜单*/switch(i){case 1:addrecord(pointer);break; /*增加学生信息*/case 2:findrecord(pointer);break; /*查询学生信息*/case 3:amendrecord(pointer);break; /*修改学生信息*/case 4:sort(pointer);break; /*学生信息排序*/case 5:statistic(pointer);break; /*统计信息*/case 6:openfile(pointer);break; /*打开文件*/case 7:writetotext(pointer);break; /*保存文件*/case 8:display(pointer,0,numstus-1);break; /*显示记录*/ case 0:if(numstus!=0) printf("是否保存当前记录?(y/n)");gets(str);if(str[0]=='y'||str[0]=='Y')writetotext(pointer);i=-1;break; /*退出系统*/default:printf("请输入数字0~8:\n");i=1; /*输入错误*/}}printf("\t\t欢迎再次使用本系统。
\n\n");display1();}3.修改模块:[分析]:用户输入要修改学生的学号,根据学生的学号等信息查找学生记录,并提示用户修改该记录的哪部分信息.根据用户选择修改相应的信息.[流程图]:[程序]:void xiugai(){if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL) /*检查是否出错*/{printf("Cannot open this file.\n");exit(0);}printf("\nPLease shuru xiugai xuehao:");scanf("%d",&i); getchar();while((fread(&data,sizeof(data),1,fp))==1){j=atoi(data.xuehao);if(j==i){printf("xuehao:%s\nmingzi:%s\nnianling:%s\n",data.xuehao,data.mingzi,data.nianl ing);printf("Please shuru mingzi:");gets(data.mingzi);printf("Please shuru shuxue score:");gets(temp);data.score[0]=atof(temp);printf("Please input yingyu score:");gets(temp);data.score[1]=atof(temp);printf("Please input wuli score:");gets(temp);data.score[2]=atof(temp);data.score[3]=data.score[0]+data.score[1]+data.score[2];} fwrite(&data,sizeof(data),1,fp1);}fseek(fp,0L,0); /*将位置指针移到离头文件0个字节处*/fseek(fp1,0L,0);while((fread(&data,sizeof(data),1,fp1))==1){fwrite(&data,sizeof(data),1,fp);}fclose(fp);fclose(fp1);}4.删除模块:[分析]:该模块的功能是,用户输入要删除的学生的学号,根据学生学号查找记录并删除.[流程图]:[程序]:void deleterecord(student stu[],int i) /*删除信息*/{int j;while(i>=0){for(j=i;j<numstus;j++)stu[j]=stu[j+1];numstus--;printf("删除成功!\n");}}void count(student stud[]){int i,j;for(i=0;i<numstus;i++){stud[i].index=1;for(j=0;j<numstus;j++)if(stud[j].score>stud[i].score)stud[i].index++;}}5.查找模块:[需求分析]:该模块的功能是根据输入的学生的姓名查找对应的记录,找到以后,显示相应的学生信息.[程序]://#include "head.h"int findrecord(student stud[]) /*查找信息*/{char str[2];int i,num;if(numstus==0){printf("没有可被查找的记录\n");return -1;}else{printf("以何种方式查找?\n1.学号\t2.姓名\t3.名次\n"); gets(str);if(str[0]=='1') /*按学号查找*/{printf("请输入学号:");gets(str);for(i=0;i<=numstus;i++)if(strcmp(str,stud[i].number)==0){display(stud,i,i);break;}else continue;}else if(str[0]=='2') /*按姓名查找*/{printf("请输入姓名:");gets(str);for(i=0;i<=numstus;i++)if(strcmp(str,stud[i].name)==0){display(stud,i,i);break;}else continue;}else if(str[0]=='3') /*按名次查找*/{printf("请输入名次:");scanf("%d",&num);getchar();for(i=0;i<=numstus;i++)if(num==stud[i].index){display(stud,i,i);break;}else continue;}if(i>numstus){printf("没有查找所要的信息。