C语言课程设计报告(学生成绩管理系统)
c语言学生成绩管理系统设计报告
c语言学生成绩管理系统设计报告C语言是计算机领域最为重要的编程语言之一,用于许多应用系统的开发。
这里我将围绕C语言学生成绩管理系统的设计报告,分步骤阐述该系统的设计与实现。
第一步:需求分析在进行设计之前,必须先进行需求分析,明确系统所需的功能和性能。
针对学生成绩管理系统,我们需要实现以下功能:1. 学生信息管理:包括学生姓名,学号等信息。
2. 成绩信息管理:包括课程分数,总分、平均分等信息。
3. 数据录入和修改:教师可以输入学生的成绩信息,并对已有的信息进行修改。
4. 成绩查询功能:学生可以查询自己的成绩情况。
第二步:系统设计根据需求分析,我们可以对系统进行具体设计。
该系统主要分为以下模块:1. 学生信息管理模块:用于录入和管理学生的信息。
2. 成绩信息管理模块:用于录入和管理学生的成绩信息。
3. 数据操作模块:用于操作学生和成绩信息的增删改查。
4. 用户管理模块:用于管理系统用户,包括学生和教师。
第三步:系统实现在进行系统实现时,我们需要注意以下几个方面:1. 界面设计:尽量简洁明了,易于使用。
2. 数据库设计:需要对数据进行分类储存,便于操作。
3. 数据库连接:需要通过C语言的数据库API来连接数据库。
4. 代码编写:需要根据设计要求进行代码编写,并进行测试调整,确保系统的稳定性和性能。
第四步:系统测试完成系统的设计和实现后,就需要对系统进行测试。
测试主要包括以下几个方面:1. 单元测试:对系统各个功能模块进行单独测试,确保每个模块的运行效果。
2. 集成测试:对系统各个模块进行集成测试,确保各个模块之间的相互交互正常。
3. 用户测试:邀请用户来测试系统,听取他们的反馈和建议,进行调整和改进。
总结:本文围绕C语言学生成绩管理系统的设计报告,分步骤阐述了系统的设计、实现和测试。
这对于开发人员在进行类似系统开发时具有一定的指导意义。
不过,由于每个系统都具有其独特性和特点,因此具体实现还需根据具体情况而定。
C语言课程设计报告学生成绩管理系统(广工)
一、课程设计题目:学生成绩管理二、需求分析给出n个学生的m门考试的成绩表,每个学生的信息由学号、姓名、性别以及各科成绩组成。
对学生的考试成绩进行有关统计:按总数高低次序,打印出名次表,分数相同的为同一名次;按名次打印出每个学生的学号、姓名、总分以及各科成绩,并打印统计表。
三、概要设计程序要有的功能:1。
输入记录2。
用指定格式显示全部记录3。
根据姓名查找记录4。
根据姓名删除记录5. 保存记录到文件6。
按序号显示记录7。
按姓名由小到大的顺序排序程序运行当中,通过选择对应的功能序号来实现所需功能。
对输入的数据要有事先的分析,如果用户输入的数据与实际不相符如输入成绩的数值为负,则程序应输出相应的提示:“您输入的数据有误,请核实!”。
再者就是,当再输入完相应的数据后,程序作出相应的提示,询问用户是否要保存数据。
在排列学生成绩时候,如果出现成绩相同的情况,程序自动作出处理。
最后,在程序可以正确运行的基础上,再增加一些功能,如在排列的时候,自动输出最高分与最低分。
与及格成绩作比较,输出及格人数等相关信息。
流程图:四、详细设计源程序:#include ”stdio。
h”#include "stdlib.h”#include "string。
h”int shoudsave=0;/* */struct student{char num[10];/*学号*/char name[20];char sex[4];int cgrade;int mgrade;int egrade;int totle;int ave;char neartime[10];/*最近更新时间*/};typedef struct node{struct student data;struct node *next;}Node,*Link;void menu(){printf(”*********************************主菜单*****************************************”);printf(”\t1登记学生资料\t\t\t\t\t2删除学生资料\n”);printf(”\t3查询学生资料\t\t\t\t\t4修改学生资料\n”);printf(”\t5保存学生资料\t\t\t\t\t0退出系统\n”);printf(”********************************************************************************\n");}void printstart(){printf(”-————---—-——————--——----———-—-—-————--————--—--—--—-————---—-—————--———\n”);}void Wrong(){printf(”\n=====>提示:输入错误!\n”);}void Nofind(){printf("\n=====〉提示:没有找到该学生!\n");}void printc()/*本函数用于输出中文*/printf(”学号\t 姓名性别英语成绩数学成绩C语言成绩总分平均分\n”); }void printe(Node *p)/* 本函数用于输出英文*/{printf("%—12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p—〉data。
学生成绩管理系统c语言课程设计报告
学生成绩管理系统c语言课程设计报告一、引言学生成绩管理系统是一个为学校或教育机构提供学生学业成绩管理的重要工具。
通过该系统,可以方便地记录和查询学生的各项成绩,帮助教师和学生了解学生的学业表现,及时作出教学和学习的调整和改进。
本文将介绍一个基于C语言的学生成绩管理系统的设计与实现。
二、需求分析1. 学生信息管理:包括学生基本信息的录入、修改和删除。
2. 成绩信息管理:包括成绩的录入、修改和删除。
3. 成绩查询与统计:可以按照学生学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份:能够将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
三、系统设计1. 学生信息管理模块:设计一个结构体来存储学生的基本信息,包括学号、姓名、性别、年龄等。
通过菜单选择,可以实现学生信息的录入、修改和删除功能。
2. 成绩信息管理模块:设计一个结构体来存储学生的成绩信息,包括科目名称和成绩。
通过菜单选择,可以实现成绩信息的录入、修改和删除功能。
3. 成绩查询与统计模块:通过学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份模块:设计文件操作函数,将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
四、系统实现1. 使用C语言编写程序代码,通过结构体和数组等数据结构实现学生信息和成绩信息的存储。
2. 利用文件操作函数实现数据的读取和存储,包括学生信息和成绩信息的存储和备份。
3. 设计菜单界面,通过用户选择来实现各个功能模块的调用。
五、系统测试与优化1. 针对各个功能模块进行测试,验证系统的正确性和稳定性。
2. 根据测试结果优化程序代码,提高系统性能和用户体验。
3. 完善系统功能,考虑异常情况的处理,提高系统的容错性和健壮性。
六、总结与展望通过本次课程设计,我们成功实现了一个基于C语言的学生成绩管理系统。
该系统能够方便地记录和查询学生的成绩信息,帮助教师和学生进行教学和学习的分析和改进。
C语言学生成绩管理系统设计报告
物理与电子信息学院C语言课程设计(科创实验)报告学生成绩管理系统专业年级学生姓名学号指导教师2021年 1 月 4 日目录1 设计任务 (1)2 需求分析 (1)2.1基础功能 (1)2.2扩展功能 (2)3系统设计概要 (2)3.1开发与运行环境 (2)3.2数据结构设计 (2)3.2总体设计 (3)4系统详细设计 (3)5 系统测试 (4)6 总结与反思 (8)参考文献 (8)附录 (9)1.设计任务设计一个系统,使其能够记录学生的学号、姓名、专业和5门课程的成绩。
该系统能够实现添加、删除、修改功能。
并且能够计算某学生的总分和平均成绩,能够按照总分排序输出。
2.需求分析学生成绩管理系统主要是提供成绩查询,方便管理的网上的信息查阅平台,学生可以通过该系统查阅与自己相关信息。
教师可以通过成绩管理系统查阅学生成绩信息。
系统管理员可以实现以上的所有功能,还有对学生的添加、删除、修改、教师的添加、删除、修改。
根据开发要求,学生成绩管理系统主要应用于教育系统,完成对日常的教学、教务、教师以及学生的计算机化的管理。
开发学生成绩管理系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理,以及国家各部门关于信息化的步伐,使各项管理更加规范化。
目前,学校工作繁杂、资料重多。
目前,管理信息系统已进入高校,但还未普及,而对于学生成绩管理来说,目前还没有一套完整的、统一的系统。
因此,开发一套适和大众的、兼容性好的系统是很有必要的。
2.1基础功能该系统所具有的基础功能有能够记录学生的学号、姓名、专业和5门课程的成绩。
该系统能够实现添加、删除、修改功能。
并且能够计算某学生的总分和平均成绩,能够按照总分排序输出。
2.2扩展功能该系统在原有的基础功能上还增加了查询不及格学生的记录、按照单科成绩排序、添加学生信息后可以写进文件。
3.系统概要设计3.1开发与运行环境3.1.1开发环境1.开发语言为C语言。
C语言程序设计学生成绩管理系统实验报告
移通学院C语言程序设计报告书设计名称:学生成绩管理系统专业:指导老师:班级:姓名:学号:座号:时间一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;3.培养初步编程的能力,为以后的学习奠定基础;二、实验内容运用所学的C语言知识编辑一个应用程序:学习成绩管理系统三.系统软件环境:本程序主要运行在: Visual C++ 6.0Turbo C/C++ 3.0四.课程设计题目:学生成绩管理系统程序说明:有N个学生,每个学生的数据包含学号不重复、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:1主菜单2各菜单项功能①成绩录入:输入学生的学号、姓名及三门课的成绩;②成绩查询:按学号查询学生记录;③成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;④退出系统:退出整个系统即主菜单;五.数据结构设计描述:↓int num; /定义学号,变量为整型/char name; /定义姓名,变量为字符型/int score; /定义课程的成绩,变量为整型/float average; /定义平均分,变量为浮点型/七.系统各函数的功能,、相互调用关系1.函数实现功能说明:1menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择;2input函数是定义用于输入学生信息;3select 函数是定义用于查询学生信息;包括学号、姓名及各科成绩;4statistics 函数计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序输出;2.相互调用关系:Main函数调用menu函数;Menu 函数可以调用input 函数、select函数和statistics 函数八.心得体会C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距;我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序; 九.程序:include <stdio.h>include <stdlib.h>include <conio.h>define N 3 /学生人数/define M 3 /课程门数/struct student{int num; /学号/char name20; /姓名/int score3; /三门课成绩/float average;}stuN; /学生数/void input; /查询/void select; /统计/void menu;void input{int i,j;printf"\t\t①成绩录入\n\n";fori=0;i<N;i++{printf"请输入学号:";scanf"%d",&stui.num;printf"请输入姓名:";scanf"%s",&;forj=0;j<M;j++{printf"第%d门成绩的分数:",j+1;scanf"%d",&stui.scorej;}printf"\n\n";}printf"\n\n";printf"输入完毕按任意键返回主菜单";}/2.查询/void selectint no{int i;printf"学生%d号: \n",no; printf"学号: %d\n",stuno-1.num; printf"姓名: %s\n",;for i=0;i<M;i++{printf"第%d门课程的成绩为: ",i+1; printf"%d\n",stuno-1.scorei;}printf"\n按任意键返回主菜单";getch;}/3.统计/void statistics{float temp=0;int i=0;/学生成绩平均分/temp=0;printf"\t\t③成绩统计\n\n";forj=0;j<N;j++{fori=0;i<M;i++{temp=temp+stuj.scorei;}stuj.average=temp/N;printf"\n学生%s的成绩平均成绩为:",;printf"%0.2f分",stuj.average;temp=0;}/排序/for j=0;j<N;j++fori=0;i<N-j-1;i++ifstui.average<stui+1.average{ temp=stui.average;stui.average=stui+1.average;stui+1.average=temp;}printf"\n\n学生平均成绩前三名:";fori=0;i<3;i++{printf"\n第%d名:%0.2f分",i+1,stui.average;}printf"\n\n按任意键返回主菜单";getch;}void menu{ int num=0;int n=0;printf"\n\t\t\t学生成绩管理系统\n\n";printf"\n\t\t\t①成绩录入\n\t\t\t②成绩查询\n\t\t\t③成绩统计\n\t\t\t④退出系统\n";printf"\t\t\tchoose:";scanf"%d",#switchnum{case 1:system"cls";input;break;case 2:system"cls";printf"\t\t②成绩查询\n\n"; printf"请输入要查询的学生号1~3:";scanf"%d",&n;selectn;break;case 3:system"cls";statistics;break;case 4:exit0;default:;}}void main{while1{system"cls"; /清屏/menu;}}。
C语言课程设计—学生成绩管理系统
#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语言课程设计报告(一)学生成绩管理系统C语言课程设计报告摘要本文介绍了一款学生成绩管理系统的C语言课程设计报告。
该系统可实现学生信息的录入、成绩的计算和管理等功能。
本报告详细介绍了系统的需求分析、概要设计和实现细节等内容。
系统需求分析功能需求•系统管理员可以进行学生信息的录入、删除和修改操作。
•系统可以根据已有的学生成绩进行排名,并输出排名列表。
•系统可以查询某个学生的成绩和排名。
•系统可支持标准输出数据、文件存储数据两种方式,并提供相应的查询功能。
性能需求•系统应该能够在1秒内响应用户的操作请求。
•系统的数据存储应该具有较高的可靠性和安全性。
界面需求•系统的界面应该易于操作和友好。
•界面的色彩搭配应该符合用户的视觉需求。
概要设计总体设计•系统分为两个主要模块:学生信息管理模块和成绩查询排名模块。
•学生信息管理模块包括对学生信息的增删改查等操作。
•成绩查询排名模块可以查询学生的成绩并输出排名列表。
•数据存储采用文件存储方式,具有较高的可靠性和安全性。
数据结构设计•采用结构体的方式存储学生信息,包括学生ID、姓名、性别、年龄和成绩等信息。
struct Student{int id; //学生IDchar name[20]; //学生姓名char sex[5]; //学生性别int age; //学生年龄float score; //学生成绩};约束条件•系统仅支持标准C语言的编写。
实现细节数据存储•学生信息存储在文件中,每个学生的信息存储在一行中。
•系统启动时初始化学生信息的文件。
•系统在每次修改或录入学生信息后自动保存信息到文件中。
功能实现•学生信息管理模块实现学生信息的增删改查等操作,并将操作结果输出到文件和屏幕上。
•成绩查询排名模块实现了对某个学生的单独查询和对所有学生的排名查询,并将查询结果输出到文件和屏幕上。
总结本文针对学生成绩管理系统的C语言课程设计报告进行了介绍。
从需求分析、概要设计到实现细节,本文详细地介绍了该系统的开发过程。
c语言成绩管理系统课程设计报告
c语言成绩管理系统课程设计报告一、引言:成绩管理系统是一种可以有效管理学生课程成绩的工具。
通过该系统,教师可以方便地录入、修改和查询学生的成绩,而学生和家长也可以方便地查看自己的成绩情况。
本次课程设计旨在设计一个基于C语言的成绩管理系统,实现对学生课程成绩的录入、修改和查询等功能。
二、系统设计:1. 数据结构设计:为了实现成绩管理系统的各项功能,需要设计相关的数据结构。
对于学生信息,可以设计一个结构体,包含学号、姓名、性别等字段;对于课程成绩,可以设计一个结构体,包含学号、课程名称、成绩等字段。
2. 功能设计:(1) 学生信息录入功能: 教师可以通过输入学生的学号、姓名、性别等信息,将学生信息录入系统中。
(2) 成绩录入功能: 教师可以通过输入学生的学号和课程名称,将学生的课程成绩录入系统中。
(3) 成绩修改功能: 教师可以根据学生的学号和课程名称,修改学生的课程成绩。
(4) 成绩查询功能: 学生和家长可以通过输入学生的学号,查询学生的课程成绩。
三、系统实现:1. 用户界面设计:使用C语言中的控制台窗口,通过菜单的方式显示系统功能选项,用户可以通过键盘输入选择对应的功能。
2. 数据存储设计:使用文件存储学生信息和课程成绩。
通过读取和写入文件的方式,实现数据的持久化存储。
3. 功能实现:(1) 学生信息录入功能的实现: 用户输入学生的学号、姓名、性别等信息后,将学生信息写入文件。
(2) 成绩录入功能的实现: 用户输入学生的学号、课程名称和成绩后,将成绩信息写入文件。
(3) 成绩修改功能的实现: 用户输入学生的学号、课程名称和新的成绩后,根据学号和课程名称找到对应的成绩信息并修改。
(4) 成绩查询功能的实现: 用户输入学生的学号后,根据学号在文件中查找对应的成绩信息并显示在控制台窗口。
四、系统测试:对于每一个功能,设计相应的测试用例,验证系统的正确性和稳定性。
例如,录入一个学生信息后,查询该学生的信息是否正确;录入一门课程成绩后,修改该成绩并查询是否修改成功等。
原创c语言成绩管理系统课程设计报告
原创C语言成绩管理系统课程设计报告一、引言本文档旨在介绍一种基于C语言开发的成绩管理系统的设计与实现。
该系统旨在帮助教师管理学生的成绩信息,提高成绩管理的效率和准确性。
本课程设计报告将从需求分析、系统设计、系统实现以及系统测试等方面进行阐述和讨论。
二、需求分析成绩管理系统的主要需求如下:1.存储学生信息:系统需要能够记录学生的基本信息,包括学号、姓名、性别等。
2.成绩录入和查询:系统需要实现成绩的录入和查询功能,教师可以根据学号或姓名查询学生的成绩。
3.成绩统计和分析:系统需要具备成绩统计和分析功能,例如计算学生的平均成绩、最高成绩、最低成绩等。
4.成绩排序:系统需要能够按照成绩进行排序,方便教师进行排名比较。
5.成绩报表生成:系统需要能够生成成绩报表,通过打印或保存成文件的方式输出结果。
6.用户权限管理:系统需要具备用户权限管理功能,不同的用户拥有不同的操作权限。
三、系统设计3.1 系统结构成绩管理系统采用模块化设计结构,主要包括以下几个模块:•用户管理模块:负责用户登录和权限管理。
•学生信息管理模块:负责学生信息的录入、查询、修改和删除。
•成绩管理模块:负责成绩的录入、查询、统计和分析。
•报表生成模块:负责生成成绩报表。
•排序模块:负责成绩排序功能的实现。
3.2 数据结构设计系统使用链表数据结构来存储学生信息和成绩信息,在链表的每个节点中存储学生的基本信息和成绩信息。
3.3 界面设计系统的界面采用命令行交互方式,通过菜单选择来进行操作。
四、系统实现系统的实现主要基于C语言,采用模块化编程的方式。
具体实现步骤如下:•定义结构体:定义学生和成绩信息的结构体。
•用户登录和权限管理:实现用户登录和用户权限管理功能,不同用户登录后只能操作有权限的功能。
•学生信息管理模块:实现学生信息的录入、查询、修改和删除功能,通过链表数据结构来管理学生信息。
•成绩管理模块:实现成绩的录入、查询、统计和分析功能,通过链表数据结构来管理成绩信息。
C语言课程设计报告(学生成绩管理系统)
C语言课程设计报告:学生成绩管理系统系统需求一、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息。
二、学生成绩查询: 输入一个学号,在文件中查找此学生, 若找到则输出此学生的全部信息和成绩;若找不到则输出查找失败的信息。
同时也可以全部把各科的平均成绩,最高和最低分输出.三、新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来.四、输出全部学生信息和全部学生成绩。
五、退出系统.六、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找。
总体设计一、仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。
2、查询模块:可用stu *lookdata(stu *p1)来实现。
找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。
3、插入模块:可用insert( )函数来实现。
其中通过学号的大小来比较的,并且以此来排序.4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage()、maverage()、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。
5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
二、系统主模块结构图:详细设计一、界面设计此系统界面采用图形和数字化菜单设计。
主界面设计如下:学生成绩管理系统请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统二、数据结构设计:程序设计中用到的结构体类型:学生信息结构体类型:typedef struct student{char name[MAX];int num[MAX];char sex[MAX];int chinese;int mathematic;int english;int computer;struct student *next;}程序代码://原始密码是123456#include"stdio.h”#include"stddef.h"#include"stddef。
C语言学生成绩管理系统课程设计报告
C语言课程设计报告一 .问题描述:题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单要求:使用二进制文件方式存储数据,系统以菜单方式工作学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
要求使用二进制文件方式存储数据,系统以菜单方式工作,实现对学生成绩的录入,修改,统计,排序,查询,输出等功能。
二 .设计目的设计“学生成绩管理系统”使其具有以下功能:(1)能完成对学生成绩的录入(2)能按班级统计学生的成绩,求学生的总分及平均分,排序(3)能按班级,学期输出学生的成绩单和不及格科目及学生名单(4)能查询单个学生成绩(5)能修改单个学生信息三 . 要求系统以菜单方式工作四 . 功能1 输入功能:可以一次完成无数条信息的输入。
2 输出功能:能按班级输出学生的成绩单。
3 修改功能:完成对单个学生成绩的修改。
4 查找功能:完成对单个学生信息查找,并显示。
5 排序功能:按学生成绩进行排序,并显示。
六 . 详细内容整个系统除了主函数外,另外还有5个函数,实现六大功能:输入功能、输出功能、修改功能,查找并显示功能、排序并显示功能。
各个函数的详细设计说明分别如下:1 . 定义结构体及宏定义#include <stdlib.h>#include <stdio.h>#include <string.h>#define NUM 100struct student{ int term;int num;int classes;char name[10];int score[4];int sum;float average;}stu[NUM];2.主函数 main()利用无限次循环for(;;)和swithch()进行菜单选择来实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
C语言课程设计报告-学生成绩管理系统(vc)
一、实践的目的和要求加深对《C语言》课程所学知识的理解,进一步巩固C语言语法规则。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力。
二、实践内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。
进一步掌握各种函数的应用,包括时间函数、绘图函数,以及文件的读写操作等。
三、实践任务1.欢迎画面2.学生成绩管理系统(自己设计界面)3.异或加密与解密(1)文件加密(2)文件解密说明:将某一已知文件的内容以字符形式读出,与密钥(用户从键盘输入)的对应字符进行异或操作即可,解密同样如此。
如:设原文为ab1234,密钥为56,则有ab1234565656按二进制进行异或操作即可得到密文(乱码)。
4.移位加密与解密(1)文件加密(2)文件解密说明:将某一已知文件的内容(限于英文字母)以字符形式读出,根据密钥k(用户从键盘输入)将对应字符进行移位操作即可,解密时移动方向相反。
如:设原文为abcdef,密钥为5,则有abcdef 每个字母按字母表向后移动位(注:z后接a)fghijkl 可得到密文(乱码)。
5.辅助运算(1)整数N模m的乘法逆t要求:输入整数N和m,求出t,若t不存在,给出信息。
提示:这三个数满足:N*t%m=1,使用穷举法。
例如:当N为11,m为26时,由于(11×19)%26=1,所以11模26的乘法逆为19。
(2)统计字母个数要求:输入一段英文字母,统计各个字母的个数,并按个数从大到小排序输出。
提示:字母大小写等价。
输出格式为:字母:个数。
(3)OTP加密要求:输入同等长度的原文x和密钥k(英文字母),根据公式c=(x+k) %26 得到密文,并输出。
提示:将26个字母按0~25编号,将原文字母和对应位置的密钥字母的编号按上述公式进行计算后得到一个新的字母。
C语言课程设计报告(学生成绩管理系统)
C语言课程设计报告需求分析a.设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融合贯穿的程度。
通过课程设计,学生在下述各方面的能力应该得锻炼:1)对于给定的设计题目,如何进行分析,理清思路。
2)掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。
3)熟练掌握C语言的基本语法,灵活运用各种数据类型。
4)进一步掌握在集成环境下如何调试程序和修改程序。
b.设计题目:大学生成绩管理系统主要功能:1)信息录入录入学生成绩信息(包括学生学号、姓名、各门课程的成绩等)。
2)信息查询输入学号或姓名,查询学生各门课程的成绩及所有课程的平均成绩;查询所有学生各门课程的成绩,并按可选的自定义规则进行排序。
3)信息删除与修改输入学号,删除该学生的成绩信息;输入学号,查询并显示该学生的成绩信息,并在此基础上进行修改。
4)信息保存将学生的学号、姓名及各门课程的成绩等信息保存于外部存储器的文件中。
一.系统设计1.数据录入:数据录入的功能是将需要的数据进行录入,用于后面的各项操作。
实现:用输入函数对数据进行录入,先确定学生的个数,再用一个循环进行输入,选修课程数量亦然。
2. 数据插入:数据插入的主要功能是在数据录入之后,为防止数据输入的遗漏,实现:分为两个部分,第一个是插入第一个位置,第二是插入第一个位置之后,把当前的位置赋给后面的加以实现。
3.数据查询:数据查询的主要功能是在数据输入之后进行分类再现,实现:分为输出所有数据,按学号查询,按姓名查询,当输入的数据满足条件时即输出所要求的。
4. 数据删除:数据删除的主要功能是在数据录入、数据插入和数据修改完成之后对无用数据进行删除,实现:输入学号,满足条件时即把后一个数值赋给前一个数值,达到删除的目的。
5.平均值计算:平均值计算的主要功能是求平均值,再对其进行排序,实现:用公式进行计算求平均值,之后便是排序问题,求最大值,然后依次输出各最大值,即实现了排序功能。
c语言课程设计报告学生成绩管理系统
c语言课程设计报告学生成绩管理系统一、教学目标本课程旨在让学生掌握C语言的基本语法和编程技巧,通过实现一个学生成绩管理系统,培养学生运用C语言解决实际问题的能力。
具体目标如下:1.知识目标:–掌握C语言的数据类型、运算符、控制结构、函数等基本语法。
–理解结构体和文件操作等相关知识。
2.技能目标:–能够运用C语言编写简单的程序。
–学会使用C语言实现数据的输入、输出和处理。
–掌握使用结构体创建学生成绩数据结构,并实现对成绩的增删改查等操作。
3.情感态度价值观目标:–培养学生对编程的兴趣,增强自信心。
–培养学生的团队协作能力和解决问题的能力。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、文件操作等。
具体安排如下:1.C语言基本语法:数据类型、变量、运算符、控制结构、函数等。
2.数据结构:结构体、数组、指针等。
3.文件操作:文件的打开、关闭、读写等。
4.学生成绩管理系统:实现一个学生成绩管理系统,包括学生的增删改查、成绩的排序、统计等功能。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。
1.讲授法:用于讲解C语言的基本语法和概念。
2.案例分析法:通过分析实际案例,让学生学会运用C语言解决实际问题。
3.实验法:让学生动手实践,编写程序,培养实际编程能力。
四、教学资源1.教材:《C程序设计语言》或《C语言入门教程》。
2.参考书:《C Primer Plus》、《C语言编程思想》等。
3.多媒体资料:教学PPT、视频教程等。
4.实验设备:计算机、网络等。
五、教学评估本课程的评估方式包括平时表现、作业、考试等。
评估方式应客观、公正,能够全面反映学生的学习成果。
具体安排如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、小组讨论等。
2.作业:占课程总评的30%,包括课后练习、编程作业等。
3.考试:占课程总评的40%,包括期中考试和期末考试。
六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节进行教学,确保在有限的时间内完成教学任务。
学生成绩管理系统c语言课程设计报告
学生成绩管理系统c语言课程设计报告一、项目概述本项目是一个基于C语言的学生成绩管理系统,旨在实现对学生信息及其成绩的录入、查询、修改和删除等功能。
通过该系统,可以方便地管理学生的个人信息和成绩情况,提高教学效率和管理水平。
二、项目功能1. 学生信息录入:包括学生姓名、性别、年龄、学号、班级等基本信息的录入。
2. 成绩录入:包括语文、数学、英语等科目的成绩录入。
3. 学生信息查询:按照学号或者姓名进行学生信息的查询。
4. 成绩查询:按照学号或者姓名进行学生成绩的查询。
5. 学生信息修改:对学生信息进行修改,包括姓名、性别、年龄、学号、班级等。
6. 成绩修改:对学生成绩进行修改,包括语文、数学、英语等科目。
7. 学生信息删除:删除指定学生的个人信息及其成绩记录。
8. 成绩统计:针对所有学生的各科成绩进行统计,包括总分、平均分、最高分、最低分等。
三、开发环境和工具1. 操作系统:Windows 102. 编程语言:C语言3. 集成开发环境:Dev-C++ 5.11四、项目实现1. 学生信息和成绩的存储方式采用结构体数组的方式进行学生信息和成绩的存储,通过循环遍历的方式可以方便地对学生信息和成绩进行操作。
2. 功能模块的实现(1) 学生信息录入模块:通过键盘输入的方式逐条录入学生信息,并将其存储到结构体数组中。
```void input(Student stu[], int n){for(int i = 0; i < n; i++){printf("请输入第%d个学生的信息:", i+1);printf("姓名:");scanf("%s", &stu[i].name);printf("性别:");scanf("%s", &stu[i].sex);printf("年龄:");scanf("%d", &stu[i].age);printf("学号:");scanf("%d", &stu[i].num);printf("班级:");scanf("%d", &stu[i].class);}}```(2) 成绩录入模块:通过键盘输入的方式逐条录入学生成绩,并将其存储到结构体数组中。
学生成绩管理系统(C语言)
学生成绩管理系统(C语言)C语言课程设计报告一、实践的目的和要求加深对《C语言程序设计》课程所学知识的理解,进一步巩固C语言讲法规则。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力二、实践内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);函数的使用,结构体和文件的操作等。
三、设计说明学生成绩管理系统建立一个学生成绩管理系统。
程序运行时显示一个简单的菜单。
例如:1.信息输入(INPUT)2.信息的删除与修改3.显示当前学生成绩的记录信息,若无记录,则给出提示信息4.学生或者各个班级各门课程总分、平均分、最低分、最高分等的统计5.可以按照班级、姓名、性别、分数(可以有区间)等方式进行查询6.具有良好的交互功能7.能使用图形函数进行简单的界面设计8.具有良好的纠错功能9.退出等等程序:#include <stdio.h> /*文件操作(读文件)*/#include<dos.h>#include<stdlib.h> /*其它说明*/#include<string.h> /*字符串函数*/#include<mem.h> /*内存操作函数*/#include<conio.h> /*屏幕操作函数*/#include<ctype.h> /*字符操作函数*/#include<alloc.h> /*动态地址分配函数*/#include<time.h>#define LEN sizeof(STUDENT)#define N 3typedef struct stu /*定义结构体数组用于缓存数据*/{char grade[6];char name[5];char sex[4] ;int score[N];int sum;float average;int order;struct stu *next;}STUDENT;/*以下是函数原型*/STUDENT *init(); /*初始化函数*/STUDENT *create(); /*创建链表*/STUDENT *delete(STUDENT *head); /*删除记录*/STUDENT *sort(STUDENT *head); /*按平均分排序*/void print(STUDENT *head); /* 显示所有记录*/void name(STUDENT *head); /*姓名查找*/void grade(STUDENT *head); /*班级查找*/void sex(STUDENT *head); /*性别查找*/void average(STUDENT *head); /*按平均分查找在那个分数里*/STUDENT *statistciam(STUDENT *head);/*统计记录*/void save(STUDENT *head); /*保存文件*/STUDENT *load(); /*读文件*/STUDENT *insert(STUDENT *head,STUDENT *new); /*插入记录*/int menu_select(); /*菜单函数*/int menu_search(); /*查询菜单*/void code(); /*密码验证*//*主函数界面*/main(){int i,j,n,m;STUDENT *head,new; /*链表定义头指针*/randomize();/*开启扬声器,发出声音*/while(!bioskey(1)){j=rand()*5000;sound(j);delay(10);}nosound();/*关闭声音文件*/code();/*密码输入*/clrscr(); /*清屏*/for(;;) /*无限循环*/{switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/{ /*值不同,执行的函数不同,break 不能省略*/case 0:head=init();break; /*执行初始化*/case 1:head=create();break; /*创建链表*/case 2:head=delete(head);break; /*删除记录*/case 3:print(head);break; /*显示全部记录*/case 4:loop:printf("sreach:\n 1.grade\n \n 3.sex\n 4.average\n 5.quit\n Enter you choice(0~5):");scanf("%d",&n);switch(n){case 1:grade(head);goto loop;case 2:name(head);goto loop;case 3:sex(head);goto loop;case 4:average(head);goto loop;case 5: break;}break;/*查找记录*/case 5:sort(head);break; /*排序*/case 6:save(head);break; /*保存文件*/case 7:head=load(); break; /*读文件*/case 8:head=insert(head,&new); break; /*插入记录*/case 9:head=statistciam(head); break; /*统计记录*/case 10:exit(0); /*如菜单返回值为10程序结束*/}}}/*密码输入*/void code(){int i;char number[20];const w=10;printf("\n\t\t\t--------------------------------------------------");printf("\n\t\t\tBecause this system is busywork,Code is: 123456");printf("\n\t\t\t----------------------------------------------- ");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n\t*********************************");printf("\n\t Please Enter The Code : ");printf("\n\t*********************************\n");scanf("%s",number);printf("\n\t\t\tExamining!");for(i=0;i<=w;i++){printf("*");}if(strcmp(number,"123456")==0){printf("\n\t\t\tCode is right!press any key enter menu......");clrscr();}else{printf("\n\t\t\tCode is wrong!Please enter again : ");clrscr();code();}}/*初始化函数*/STUDENT *init(){return NULL; /*返回空指针*/}/*菜单选择函数*/menu_select(){char *menu[]={"********************************************", " Welcome to "," The student score manage system!","*****************MENU***********************", /*定义菜单字符串数组*/" 0. Init list", /*初始化*/" 1. Input list", /*输入记录*/" 2. Delete a record from list", /*从表中删除记录*/" 3. Print list ", /*显示当前学生成绩的记录信息*/" 4. Search record ", /*查询学生记录*/" 5. Sort to make new a file ", /*排序*/" 6. Save the file", /*将单链表中记录保存到文件中*/" 7. Load the file", /*从文件中读入记录*/" 8. insert record to list ", /*插入记录到表中*/" 9. statistciam record to list ", /*统计记录到表中*/" 10. Quit", /*退出*/"********************************************"," Producer:ZengWenyan ZhaoJingxiu "," Faculty Adviser:XiaoFengrui ",}; /*退出*/char s[3]; /*以字符形式保存选择号*/int c,i; /*定义整形变量*/textbackground(MAGENTA); /*设置背景颜色为粉色*/gotoxy(1,50); /*移动光标*/printf("press any key enter menu......\n"); /*压任一键进入主菜单*/getch(); /*输入任一键*/clrscr(); /*清屏幕*/gotoxy(1,1); /*移动光标*/textcolor(YELLOW); /*设置文本显示颜色为黄色*/textbackground(BLUE); /*设置背景颜色为蓝色*/gotoxy(15,2); /*移动光标*/putch(0xc9); /*输出左上角边框┏*/for(i=1;i<44;i++)putch(0xcd); /*输出上边框水平线*/putch(0xbb); /*输出右上角边框┓*/for(i=3;i<23;i++){gotoxy(15,i);putch(0xba); /*输出左垂直线*/gotoxy(59,i);putch(0xba);} /*输出右垂直线*/gotoxy(15,22);putch(0xc8); /*输出左上角边框┗*/for(i=1;i<44;i++)putch(0xcd); /*输出下边框水平线*/putch(0xbc); /*输出右下角边框┛*/window(16,3,58,21); /* 制作显示菜单的窗口,大小根据菜单条数设计*/clrscr(); /*清屏*/for(i=0;i<18;i++) /*输出主菜单数组*/{gotoxy(1,i+1);cprintf("%s",menu[i]);}textbackground(BLACK); /*设置背景颜色为黑色*/window(1,1,80,25); /*恢复原窗口大小*/gotoxy(10,23); /*移动光标*/do{printf("\n Enter you choice(0~10):"); /*在菜单窗口外显示提示信息*/scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整形数*/}while(c<0||c>10); /*选择项不在0~10之间重输*/return c; /*返回选择项,主程序根据该数调用相应的函数*/}/*输入函数*/STUDENT *create(){int i,s;STUDENT *head=NULL,*p; /* 定义函数.此函数带回一个指向链表头的指针*/clrscr();textbackground(MAGENTA);textcolor(BLUE);for(;;){p=(STUDENT *)malloc(LEN); /*开辟一个新的单元*/if(!p) /*如果指针p为空*/{printf("\nOut of memory."); /*输出内存溢出*/return (head); /*返回头指针,下同*/}printf("Enter the grade(0:list end):");scanf("%s",p->grade);if(p->grade[0]=='0') break; /*如果班级首字符为0则结束输入*/printf("Enter the name:");scanf("%s",p->name);do{printf("Enter the sex(M or W):");scanf("%s",&p->sex[0]);if(p->sex[0]!='M'&&p->sex[0]!='W')printf("Data error,please enter again.\n");}while(p->sex[0]!='M'&&p->sex[0]!='W');printf("Please enter the %d scores\n",3); /*提示开始输入成绩*/s=0; /*计算每个学生的总分,初值为0*/for(i=0;i<N;i++) /*3门课程循环3次*/{do{printf("score%d:",i+1);scanf("%d",&p->score[i]);if(p->score[i]<0 || p->score[i]>100) /*确保成绩在0~100之间*/printf("Data error,please enter again.\n");}while(p->score[i]<0 || p->score[i]>100);s=s+p->score[i]; /*累加各门成绩*/}p->sum=s; /*将总分保存*/p->average=(float)s/3; /*先用强制类型转换将s转换成float 型,再求平均值*/p->order=0; /*未排序前此值为0*/p->next=head; /*将头结点做为新输入结点的后继结点*/head=p; /*新输入结点为新的头结点*/}return(head);}/*删除记录函数*/STUDENT *delete(STUDENT *head){int n;STUDENT *p1,*p2; /*p1为查找到要删除的结点指针,p2为其前驱指针*/char c,s[6]; /*s[6]用来存放班级,c用来输入字母*/clrscr();textbackground(MAGENTA);textcolor(BLUE);printf("Please enter the deleted grade: ");scanf("%s",s);p1=p2=head; /*给p1和p2赋初值头指针*/while(strcmp(p1->grade,s) && p1 != NULL) /*当记录的班级不是要找的,或指针不为空时*/{p2=p1; /*将p1指针值赋给p2作为p1的前驱指针*/ p1=p1->next; /*将p1指针指向下一条记录*/}if(strcmp(p1->grade,s)==0) /*班级找到了*/{printf("**************************************FOUND******** ****************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Grade | Name | sc1 | sc2 | sc3 | Sum | Ave | Order |\n");printf("-------------------------------------------------------------------------------\n");printf("| %4s | %4s | %3d | %3d | %3d | %3d | %4.2f | %-5d |\n", p1->grade,p1->name,p1->score[0],p1->score[1],p1->score [2],p1->sum,p1->average,p1->order);printf("-------------------------------------------------------------------------------\n");printf("***************************************END************ **************************\n");printf("Are you sure to delete the student Y/N ?"); /*提示是否要删除,输入Y删除,N则退出*/for(;;){scanf("%c",&c);if(c=='n'||c=='N') break; /*如果不删除,则跳出本循环*/if(c=='y'||c=='Y'){if(p1==head) /*若p1==head,说明被删结点是首结点*/ head=p1->next; /*把第二个结点地址赋予head*/elsep2->next=p1->next; /*否则将一下结点地址赋给前一结点地址*/n=n-1;printf("\nNum %s student have been deleted.\n",s);printf("Don't forget to save.\n");break; /*删除后就跳出循环*/}}}elseprintf("\nThere is no num %s student on the list.\n",s); /*找不到该结点*/return(head);}/* 显示全部记录函数*/void print(STUDENT *head){int i=0; /* 统计记录条数*/STUDENT *p; /*移动指针*/clrscr();textbackground(MAGENTA);textcolor(BLUE);p=head; /*初值为头指针*/printf("\n************************************STUDENT******* *****************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Rec | Grade | Name | Sc1 | Sc2 | Sc3 | Sum | Ave | Order |\n");printf("-------------------------------------------------------------------------------\n");while(p!=NULL){i++;printf("| %3d | %4s | %-4s | %3d | %3d | %3d | %3d | %4.2f| %-5d |\n",i,p->grade,p->name,p->score[0],p->score[1],p->score[2],p->su m,p->average,p->order);p=p->next;}printf("-------------------------------------------------------------------------------\n");printf("**************************************END************* *************************\n");}/*姓名查找记录函数*/void name(STUDENT *head){STUDENT *p; /* 移动指针*/char s[5]; /*存放姓名用的字符数组*/clrscr();textbackground(MAGENTA);textcolor(BLUE);printf("Please enter name for searching.\n");scanf("%s",s);p=head; /*将头指针赋给p*/while(strcmp(p->name,s) && p != NULL) /*当记录的姓名不是要找的,或指针不为空时*/p=p->next; /*移动指针,指向下一结点*/if(p!=NULL) /*如果指针不为空*/{printf("\n*************************************FOUND******* *****************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Grade | Name | sc1 | sc2 | sc3 | Sum | Av e | Order |\n");printf("-------------------------------------------------------------------------------\n");printf("| %4s | %4s | %3d | %3d | %3d | %3d | %4 .2f | %-5d|\n",p->grade,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("-------------------------------------------------------------------------------\n");printf("***************************************END************ **************************\n");}elseprintf("\nThere is no name %s student on the list.\n",s); /*显示没有该学生*/}/*班级查找记录函数*/void grade(STUDENT *head){STUDENT *p; /* 移动指针*/char s[6]; /*存放班级用的字符数组*/clrscr();textbackground(MAGENTA);textcolor(BLUE);printf("Please enter grade for searching.\n");scanf("%s",s);p=head; /*将头指针赋给p*/while(strcmp(p->grade,s) && p != NULL) /*当记录班级不是要找的,或指针不为空时*/p=p->next; /*移动指针,指向下一结点*/if(p!=NULL) /*如果指针不为空*/{printf("\n*************************************FOUND******* *****************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Grade | Name | sc1 | sc2 | sc3 | Sum | Av e | Order |\n");printf("-------------------------------------------------------------------------------\n");printf("| %4s | %4s | %3d | %3d | %3d | %3d | % 4.2f | %-5d |\n",p->grade,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("-------------------------------------------------------------------------------\n");printf("***************************************END************ **************************\n");}elseprintf("\nThere is no grade %s student on the list.\n",s); /*显示没有该学生*/}/*性别查找记录函数*/void sex(STUDENT *head){STUDENT *p; /* 移动指针*/char s[4]; /*存放性别用的字符数组*/clrscr();textbackground(MAGENTA);textcolor(BLUE);printf("Please enter sex for searching.\n");scanf("%s",s);p=head; /*将头指针赋给p*/while(strcmp(p->sex,s) && p != NULL) /*当记录的性别不是要找的,或指针不为空时*/p=p->next; /*移动指针,指向下一结点*/if(p!=NULL) /*如果指针不为空*/{printf("\n*************************************FOUND******* *****************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Grade | Name | sc1 | sc2 | sc3 | Sum | Av e | Order |\n");printf("-------------------------------------------------------------------------------\n");printf("| %4s | %4s | %3d | %3d | %3d | %3d | % 4.2f | %-5d |\n",p->grade,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("-------------------------------------------------------------------------------\n");printf("***************************************END************ **************************\n");}elseprintf("\nThere is no sex %s student on the list.\n",s); /*显示没有该学生*/}/* 用平均分进行分数段查找 */void average(STUDENT *head){STUDENT *p; /* 移动指针*/clrscr();textbackground(MAGENTA);textcolor(BLUE);p=head; /*将头指针赋给p*/if(p!=NULL&&p->average<60&&p->average>0) /*如果指针不为空且平均分在0-60之间*/{printf("\n**********************************notpass************************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Grade | Name | sc1 | sc2 | sc3 | Sum | Av e | Order |\n");printf("-------------------------------------------------------------------------------\n");printf("| %4s | %4s | %3d | %3d | %3d | %3d | % 4.2f | %-5d |\n",p->grade,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("-------------------------------------------------------------------------------\n");printf("***************************************END************ **************************\n");}elseif(p!=NULL&&p->average<70&&p->average>=60) /*如果指针不为空且平均分在60-70之间*/{printf("\n**********************************60-70************************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Grade | Name | sc1 | sc2 | sc3 | Sum | Av e | Order |\n");printf("-------------------------------------------------------------------------------\n");printf("| %4s | %4s | %3d | %3d | %3d | %3d | % 4.2f | %-5d |\n",p->grade,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("-------------------------------------------------------------------------------\n");printf("***************************************END************ **************************\n");}else if(p!=NULL&&p->average<80&&p->average>=70) /*如果指针不为空且平均分在70-80之间*/{printf("\n**********************************70-80************************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Grade | Name | sc1 | sc2 | sc3 | Sum | Av e | Order |\n");printf("-------------------------------------------------------------------------------\n");printf("| %4s | %4s | %3d | %3d | %3d | %3d | % 4.2f | %-5d |\n",p->grade,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("-------------------------------------------------------------------------------\n");printf("***************************************END************ **************************\n");}elseif(p!=NULL&&p->average<90&&p->average>=80) /*如果指针不为空且平均分在80-90之间*/{printf("\n**********************************80-90************************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Grade | Name | sc1 | sc2 | sc3 | Sum | Av e | Order |\n");printf("-------------------------------------------------------------------------------\n");printf("| %4s | %4s | %3d | %3d | %3d | %3d | % 4.2f | %-5d |\n",p->grade,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("-------------------------------------------------------------------------------\n");printf("***************************************END************ **************************\n");}else if(p!=NULL&&p->average<100&&p->average>=90) /*如果指针不为空且平均分在90-100之间*/{printf("\n**********************************90-100************************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Grade | Name | sc1 | sc2 | sc3 | Sum | Av e | Order |\n");printf("-------------------------------------------------------------------------------\n");printf("| %4s | %4s | %3d | %3d | %3d | %3d | %4 .2f | %-5d |\n",p->grade,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("-------------------------------------------------------------------------------\n");printf("***************************************END************ **************************\n");}elseprintf("\nThere is not average student on the list.\n"); /*显示没有该学生*/}/*保存数据到文件函数*/void save(STUDENT *head){FILE *fp; /*定义指向文件的指针*/STUDENT *p; /* 定义移动指针*/char outfile[10];printf("Enter outfile name,for example c:\\score\n");scanf("%s",outfile);if((fp=fopen(outfile,"wb"))==NULL) /*为输出打开一个二进制文件,为只写方式*/{printf("Cannot open the file\n");return; /*若打不开则返回菜单*/}printf("\nSaving the file......\n");p=head; /*移动指针从头指针开始*/while(p!=NULL) /*如p不为空*/{fwrite(p,LEN,1,fp); /*写入一条记录*/p=p->next; /*指针后移*/}fclose(fp); /*关闭文件*/printf("Save the file successfully!\n");}/* 从文件读数据函数*/STUDENT *load(){STUDENT *p1,*p2,*head=NULL; /*定义记录指针变量*/FILE *fp; /* 定义指向文件的指针*/char infile[10];printf("Enter infile name,for example c:\\score\n");scanf("%s",infile);if((fp=fopen(infile,"rb"))==NULL) /*打开一个二进制文件,为只读方式*/{printf("Can not open the file.\n");return(head);}printf("\nLoading the file!\n");p1=(STUDENT *)malloc(LEN); /*开辟一个新单元*/if(!p1){printf("Out of memory!\n");return(head);}head=p1; /*申请到空间,将其作为头指针*/while(!feof(fp)) /*循环读数据直到文件尾结束*/{if(fread(p1,LEN,1,fp)!=1) break; /*如果没读到数据,跳出循环*/p1->next=(STUDENT *)malloc(LEN); /*为下一个结点开辟空间*/if(!p1->next){printf("Out of memory!\n");return (head);}p2=p1; /*使p2指向刚才p1指向的结点*/p1=p1->next; /*指针后移,新读入数据链到当前表尾*/}p2->next=NULL; /*最后一个结点的后继指针为空*/fclose(fp);printf("You have success to read data from the file!\n");return (head);}/*按平均分排序函数*/STUDENT *sort(STUDENT *head){int i=0; /*保存名次*/STUDENT *p1,*p2,*t,*temp; /*定义临时指针*/temp=head->next; /*将原表的头指针所指的下一个结点作头指针*/head->next=NULL; /*第一个结点为新表的头结点*/ while(temp!=NULL) /*当原表不为空时,进行排序*/ {t=temp; /*取原表的头结点*/temp=temp->next; /*原表头结点指针后移*/p1=head; /*设定移动指针p1,从头指针开始*/p2=head; /*设定移动指针p2做为p1的前驱,初值为头指针*/while(t->average<p1->average&&p1!=NULL) /*作成绩平均分比较*/{p2=p1; /*待排序点值小,则新表指针后移*/p1=p1->next;}if(p1==p2) /*p1==p2,说明待排序点值大,应排在首位*/ {t->next=p1; /*待排序点的后继为p*/head=t; /*新头结点为待排序点*/}else /*待排序点应插入在中间某个位置p2和p1之间,如p为空则是尾部*/{t->next=p1; /*t的后继是p1*/p2->next=t; /*p2的后继是t*/}}p1=head; /*已排好序的头指针赋给p1,准备填写名次*/ while(p1!=NULL) /*当p1不为空时,进行下列操作*/{i++; /*结点序号*/p1->order=i; /*将结点序号赋值给名次*/p1=p1->next; /*指针后移*/}printf("Sorting is sucessful.\n"); /*排序成功*/return (head);}/*插入记录函数*/STUDENT *insert(STUDENT *head,STUDENT *new){STUDENT *p0,*p1,*p2;int n,sum1,i;p1=head; /*使p1指向第一个结点*/p0=new; /*p0指向要插入的结点*/printf("\nPlease enter a new record.\n"); /*提示输入记录信息*/printf("Enter the grade:");scanf("%s",new->grade);printf("Enter the name:");scanf("%s",new->name);do{printf("Enter the sex(M or W):");scanf("%s",&new->sex[0]);if(new->sex[0]!='M'&&new->sex[0]!='W')printf("Data error,please enter again.\n");}while(new->sex[0]!='M'&&new->sex[0]!='W');printf("Please enter the %d scores.\n",3);sum1=0; /*保存新记录的总分,初值为0*/for(i=0;i<3;i++){do{printf("score%d:",i+1);scanf("%d",&new->score[i]);if(new->score[i]>100||new->score[i]<0)printf("Data error,please enter again.\n");}while(new->score[i]>100||new->score[i]<0);sum1=sum1+new->score[i]; /*累加各门成绩*/}new->sum=sum1; /*将总分存入新记录中*/new->average=(float)sum1/3;new->order=0;if(head==NULL) /*原来的链表是空表*/{head=p0;p0->next=NULL;} /*使p0指向的结点作为头结点*/ else{while((p0->average<p1->average)&&(p1->next!=NULL)) {p2=p1; /*使p2指向刚才p1指向的结点*/p1=p1->next; /*p1后移一个结点*/}if(p0->average>=p1->average){if(head==p1)head=p0; /*插到原来第一个结点之前*/else p2->next=p0; /*插到p2指向的结点之后*/p0->next=p1;}else{p1->next=p0;p0->next=NULL;} /*插到最后的结点之后*/}n=n+1; /*结点数加1*/head=sort(head); /*调用排序的函数,将学生成绩重新排序*/printf("\nStudent %s have been inserted.\n",new->name);printf("Don't forget to save the new file.\n");return(head);}/*统计学生成绩函数*/STUDENT *statistciam(STUDENT *head){floatsum1=0,sum2=0,sum3=0,ave1=0,ave2=0,ave3=0,max=0,min;STUDENT *p;int x,y=0,i=0;p=head;printf("1.sum and average\n2.single of average\n3.max of sum\n4.min of sum\n");scanf("%d",&x);getchar();switch(x)/*用switch语句实现功能选择*/{case 1: if(head==NULL){printf("\n There are not anyone's information !\n");return(head);}/*链表为空*/else{printf("---------------------------------------------------------\n");printf("|Grade\t|Name\t|Sc1\t|Sc2\t|Sc3\t|Sum\t|Ave\t|\n");printf("---------------------------------------------------------\n");/*打印表格域*/while(p!=NULL){sum1=p->score[0]+p->score[1]+p->score[2]; /*计算个人总分*/ave1=sum1/3;/*计算个人平均分*/printf("|%s\t|%s\t|%.1d\t|%.1d\t|%.1d\t|%.1f\t|%.1f\t|\n",p-> grade,p->name,p->score[0],p->score[1],p->score[2],sum1,ave1);/*打印结果*/printf("---------------------------------------------------------\n");/*打印表格域*/p=p->next;}}return(head);case 2: if(head==NULL){printf("\nThere are not anyone's information !\n");return(head);}/*链表为空*/while(p!=NULL){sum1=sum1+p->score[0];sum2=sum2+p->score[1];sum3=sum3+p->score[2];/*计算总分*/y=y+1;ave1=sum1/y;ave2=sum2/y;ave3=sum3/y;/*计算平均分*/p=p->next;/*使p指向下一个结点*/}printf("score1 average is%.1f\n",ave1);printf("score2 average is%.1f\n",ave2);printf("score3 average is%.1f\n",ave3);/*打印结果*/return(head);case 3:if(head==NULL){printf("\nThere are not anyone's information !\n");return(head);}/*链表为空*/max=p->score[0]+p->score[1]+p->score[2];while(i<N){i=i+1;sum1=p->score[0]+p->score[1]+p->score[2]; /*计算个人总分*/if(max<sum1)max=sum1;p=p->next;}printf("max of sum:%.1f",max);printf("\n");return(head);case 4: if(head==NULL){printf("\nThere are not anyone's information !\n");return(head);}/*链表为空*/while(p!=NULL){min=p->score[0]+p->score[1]+p->score[2];while(p!=NULL){sum2=p->score[0]+p->score[1]+p->score[2];if(min>sum2)min=sum2;p=p->next;}}printf("min of sum:%.1f",min);printf("\n");return(head);default :printf("Data error,please enter again!\n"); }return(head);}。
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语言开发的应用程序,旨在帮助学校或教育机构有效管理学生的成绩信息。
本报告将涵盖系统需求分析、设计思路、关键功能模块和实现细节等方面,并对系统的功能和性能进行评估。
1. 引言学生成绩管理系统的开发旨在解决传统成绩管理方式中存在的问题,提高管理效率和准确性。
通过利用计算机技术和数据库管理系统,该系统能够方便地记录、查询和分析学生的成绩信息。
2. 需求分析在需求分析阶段,我们与教育机构的教师和管理人员进行了沟通和讨论,明确了系统的功能需求。
主要功能包括学生信息管理、成绩录入、成绩查询和统计分析等。
3. 设计思路基于需求分析结果,我们采用了模块化设计的思路来构建学生成绩管理系统。
系统主要分为以下几个模块:学生信息管理模块、成绩录入模块、成绩查询模块和统计分析模块。
每个模块都具有清晰的功能和接口,便于系统的扩展和维护。
4. 系统实现我们使用C语言作为系统的开发语言,并采用了MySQL数据库管理系统来存储学生的成绩信息。
在系统实现过程中,我们利用C语言提供的文件操作和数据库连接库来实现各个功能模块的代码编写。
5. 关键功能模块5.1 学生信息管理模块:实现学生信息的录入、修改和删除等功能,保证学生信息的完整性和准确性。
5.2 成绩录入模块:教师可以通过该模块录入学生的成绩信息,并将其存储到数据库中。
5.3 成绩查询模块:学生和教师可以通过该模块查询学生的成绩信息,包括单个学生和全班学生的成绩查询。
5.4 统计分析模块:根据学生的成绩信息,实现成绩的统计分析功能,包括平均成绩、最高成绩、最低成绩等统计指标的计算。
6. 系统评估为了评估学生成绩管理系统的功能和性能,我们进行了一系列测试和调优。
测试结果表明系统能够准确地录入和查询学生的成绩信息,并具有良好的用户界面和响应速度。
7. 结论通过本次课程设计,我们成功地设计和实现了学生成绩管理系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言课程设计报告:学生成绩管理系统系统需求一、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息.二、学生成绩查询: 输入一个学号, 在文件中查找此学生, 若找到则输出此学生的全部信息和成绩; 若找不到则输出查找失败的信息. 同时也可以全部把各科的平均成绩,最高和最低分输出。
三、新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来。
四、输出全部学生信息和全部学生成绩。
五、退出系统.六、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找。
总体设计一、仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。
2、查询模块:可用stu *lookdata(stu *p1) 来实现。
找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。
3、插入模块:可用insert( )函数来实现。
其中通过学号的大小来比较的,并且以此来排序。
4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。
5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
二、系统主模块结构图:详细设计一、界面设计此系统界面采用图形和数字化菜单设计。
主界面设计如下:学生成绩管理系统请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统二、数据结构设计:程序设计中用到的结构体类型:学生信息结构体类型:typedef struct student{char name[MAX];int num[MAX];char sex[MAX];int chinese;int mathematic;int english;int computer;struct student *next;}程序代码://原始密码是123456#include"stdio.h"#include"stddef.h"#include"stddef.h"#include"string.h"#define MAX 10typedef struct student{ /*定义结构体*/char name[MAX]; /*姓名*/int num[MAX]; /* 学号*/char sex[MAX]; /*性别*/int chinese; /*语文*/int mathematic; /* 数学*/int english; /*英语*/int computer; /*计算机*/struct student *next; /*结构体指针*/}stu;stu *head; /*头指针*/void print() /*显示或打印函数*/ {system("cls");printf("\t\t\tScore Manage System\n"); /*成绩管理系统*/printf("<1>Enter Record\t"); /*输入数据*/printf("<2>Display\t"); /*显示*/printf("<3>Insert\t"); /*插入数据*/printf("<4>Quest\t"); /*访问数据*/printf("<5>Update\t"); /*以前数据*/printf("<6>Save\t"); /*保留数据*/printf("<7>Fresh\t"); /*更新数据*/printf("<8>Chinese Average\t"); /*语文平均成绩*/printf("<9>Math Average\t"); /*数学平均成绩*/printf("<10>English Average\t"); /*英语平均成绩*/printf("<11>Computer Average\t"); /*计算机平均成绩*/printf("<12>Quit\t\n"); /*退出*/}void cin(stu *p1) /*输入相关数据的函数*/ { printf("Enter name:\n");scanf("%s",&p1->name);printf("Enter num:\n");scanf("%d",&p1->num);printf("Enter sex:\n");scanf("%s",&p1->sex);printf("Enter score:\n");printf("Enter chinese:\n");scanf("%d",&p1->chinese);printf("Enter math:\n");scanf("%d",&p1->mathematic);printf("Enter English:\n");scanf("%d",&p1->english);printf("Enter Computer:\n");scanf("%d",&p1->computer);}stu *cindata() /*其他数据是否继续输入的函数*/ { stu *p1,*p2;int i=1;char ch;p1=(stu *)malloc(sizeof(stu));head=p1;while(i){cin(p1);printf("Do you Want to Continue?yes or no"); /*是否继续输入数据*/ch=getchar();ch=getchar();if(ch=='n'||ch=='N'){ i=0;p1->next=NULL;}else{ p2=p1;p1=(stu *)malloc(sizeof(stu));p2->next=p1;}}return(p1->next);}stu *lookdata(stu *p1) /*查看数据的函数*/{while(p1!=NULL){ printf("Num:%d\t",p1->num);printf("Name:%s\t",p1->name);printf("Sex:%s\t",p1->sex);printf("\n");printf("Chinese:%d\t",p1->chinese);printf("Math:%d\t",p1->mathematic);printf("English:%d\t",p1->english);printf("\n");p1=p1->next;}return p1;}void insert() /*通过比较学号来插入数据的函数*/ { stu *p1,*p3,*p2;char ch;p1=head;p3=(stu *)malloc(sizeof(stu));p3->next=NULL;if(head==NULL){ head=p3; return;}cin(p3);while(p1!=NULL&&(p1->num<p3->num)) /*通过学号的比较来插入*/{ p2=p1;p1=p1->next;}if(p2==head) {p3->next=head; head=p3; return;}p3->next=p1;p2->next=p3;}find(stu *p2) /*通过姓名查找查看数据的函数*/ { char name[20];int b=0;printf("Enter the name of the student you want to find:"); /*通过姓名查看*/scanf("%s",name);while(p2!=NULL){if(strcmp(name,p2->name)==0){printf("The data you want has be found\n");printf(" Name:%s\t",p2->name);printf("Num:%d\t",p2->num);printf("sex%s\t",p2->sex);printf("\n");printf("Chinese:%d\t",p2->chinese);printf("Math:%d\t",p2->mathematic);printf("English:%d\t",p2->english);printf("\n");b=1;}else if(b==0)printf("sorry not find data!");p2=p2->next;}if(b==1){print();printf("Find one\n");}else{print();printf("Not find\n");}}void caverage() /*求各学生语文平均分、最高和最低分成绩的函数*/{ stu *p1;int i;float max=0.0,min=200.0;float sum=0.0,aver=0;p1=head;if(p1==NULL)printf("not data!");else{for(i=0;p1!=NULL;i++,p1=p1->next)sum+=p1->chinese;aver=sum/i;p1=head;for(i=0;p1!=NULL;i++,p1=p1->next){if(max<p1->chinese)max=p1->chinese;}p1=head;for(i=0;p1!=NULL;i++,p1=p1->next)if(min>p1->chinese)min=p1->chinese;}printf("Chinese Average:%f",aver);printf("Chinese Max:%f",max);printf("Chinese Min:%f",min);}void maverage() /*求各学生数学平均分、最高和最低分成绩的函数*/{ stu *p1;int i;float max=0.0,min=200.0;float sum=0.0,aver=0;p1=head;if(p1==NULL)printf("not data!");else{for(i=0;p1!=NULL;i++,p1=p1->next)sum+=p1->mathematic;aver=sum/i;p1=head;for(i=0;p1!=NULL;i++,p1=p1->next){if(max<p1->mathematic)max=p1->mathematic;}p1=head;for(i=0;p1!=NULL;i++,p1=p1->next)if(min>p1->mathematic)min=p1->mathematic;}printf("Mathe Average:%f",aver);printf("Mathe Max:%f",max);printf("Mathe Min:%f",min);}void eaverage() /*求各学生英语平均分、最高和最低分成绩的函数*/ { stu *p1;int i;float max=0.0,min=200.0;float sum=0.0,aver=0;p1=head;if(p1==NULL)printf("not data!");else{for(i=0;p1!=NULL;i++,p1=p1->next)sum+=p1->english;aver=sum/i;p1=head;for(i=0;p1!=NULL;i++,p1=p1->next){if(max<p1->english)max=p1->english;}p1=head;for(i=0;p1!=NULL;i++,p1=p1->next)if(min>p1->english)min=p1->english;}printf("English Average:%f",aver);printf("English Max:%f",max);printf("English Min:%f",min);}void comaverage() /*求各学生计算机平均分、最高和最低分成绩的函数*/ { stu *p1;int i;float max=0.0,min=200.0;float sum=0.0,aver=0;p1=head;if(p1==NULL)printf("not data!");else{for(i=0;p1!=NULL;i++,p1=p1->next)sum+=p1->computer;aver=sum/i;p1=head;for(i=0;p1!=NULL;i++,p1=p1->next){if(max<p1->computer)max=p1->computer;}p1=head;for(i=0;p1!=NULL;i++,p1=p1->next)if(min>p1->computer)min=p1->computer;}printf("Computer Average:%f",aver);printf("Computer Max:%f",max);printf("Computer Min:%f",min);}update(stu *p2) /*通过姓名查找来更新数据*/{char name[10]; /*p2为指向结构体struct student的指针*/ int b=0;printf("Enter The Name"); /*输入姓名*/scanf("%s",name);while(p2!=NULL){if(strcmp(name,p2->name)==0){printf("Find you data\n");scanf("Name:%s",p2->name);scanf("Num:%s",p2->num);scanf("Sex:%s",p2->sex);scanf("Chinese:%d",p2->chinese);scanf("Math:%d",p2->mathematic);scanf("english:%d",p2->english);scanf("Computer:%d",p2->computer);printf("Success!");b=1;}else if(b==0)printf("Sorry not Find data!");p2=p2->next;}if(b==0){print();printf("Sorry not Find data!");}else{print();printf("Finish!");}}save(stu *p2) /*保留数据函数*/{FILE *fp;char file[10];printf("Enter file name"); /*输入文件名*/scanf("%s",file);fp=fopen(file,"w");while(p2!=NULL){fprintf(fp,"%s",p2->name);fprintf(fp,"%s",p2->num);fprintf(fp,"%s",p2->sex);fprintf(fp,"%d",p2->chinese);fprintf(fp,"%d",p2->mathematic);fprintf(fp,"%d",p2->english);fprintf(fp,"%d",p2->computer);p2=p2->next;}fclose(fp);}char password[7]="123456"; /*定义初始密码*/void main() /*主函数*/{ int choice;stu *p2;char s[8];int flag=0,i; /*标志项*/int n=3;do{ printf("Enter password:\n");scanf("%s",s);if(!strcmp(s,password)) /*进行密码匹配验证*/{ printf("PASS\n\n\n");flag=1;break;}else{printf("Error Enter again:\n");n--;}}while(n>0);if(!flag){printf("you have Enter 3 times!"); /*输入密码超过了3次!!*/exit(0); /*自动退出*/}/*密码验证成功后进入的界面*/printf("~~~~~~~~~~\t\t\t~~~~~~~~~~~~\n"); /*操作界面*/printf("\t\tWelcom to the Mis\n");printf("Author:-----\tClass:------\tNum:------\n"); /*作者,班级和号码*/printf("Adress:HG\n"); /*地址*/printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");printf("\t\tEnter OP:\n");printf("\n\n\n\n");printf("==============\t\t==============\n");printf("==============\t\t==============\n");printf("\t\tEnter the MIS yes or no\n"); /*问进入系统与否*/scanf("%d",&choice);if(choice=='n'||choice=='N')exit(1);print();while(1){printf("Enter choice:");scanf("%d",&i);if(i<1||i>13){printf("Enter num from 1 to 13:\n"); /*再从1-13中进行选择*/exit(1);}switch(i){ case 1:p2=cindata(); /*其他数据是否继续输入的函数*/break;case 2:p2=lookdata(head); /*查看数据的函数*/break;case 3:insert(); /*通过比较学号来插入数据的函数*/break;case 4:find(head); /*通过姓名查找查看数据的函数*/break;case 5:update(head); /*通过姓名查找来更新数据*/break;case 6:save(head); /*保留数据函数*/break;case 7:print(); /*显示或打印函数*/break;case 8:caverage(); /*求各学生语文平均分、最高和最低分成绩的函数*/break;case 9:maverage(); /*求各学生数学平均分、最高和最低分成绩的函数*/break;case 10:eaverage(); /*求各学生英语平均分、最高和最低分成绩的函数*/break;case 11:comaverage(); /*求各学生计算机平均分、最高和最低分成绩的函数*/break;case 12:; /*空操作*/case 13:exit(1); /*退出*/break;}scanf("%d",&i);}}程序中出现的问题及解决方法问题一、学生初始信息模块:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。