学生管理系统平均成绩
⑴ 教务管理系统的成绩排名和平均绩点有变化吗
优秀学生自主选择转专业(大学一年级第二学期进行)
(一)政策规定
“优秀学生自主选择专业在第二学期进行。经过一个学期在校学习的在籍学生,符合以下条件的,可在全校范围内申请转专业:
(1)思想品德优良;
(2)所有修读课程中无不及格课程;
(3)第一学期已修课程平均学分绩点(不含公共体育课程)在3.0以上,且名列本专业前10%。
学校根据校内师资、教学管理与学生管理等具体情况,核定各专业每年允许专业调整的学生名额,公开发布当年转专业的具体指标。
符合转专业申请条件的学生在个人信息系统填写转专业志愿的同时,向所在学院提交书面申请,所在学院在审核、院内公示后,在学校分配指标内依学分绩点排名先后报教务处,教务处在审核后将符合转专业条件的申请转发学生申请转入专业的所属学院(接收学院),由接收学院按照成绩优先原则择优录取。接收学院可以根据具体情况,会同教务处组织相应的转专业考试或者面试。
对于符合转专业条件的学生,由教务处在公示后,报请校长批准,予以专业调整。”(《南京审计学院本科学生转专业实施细则(试行)》第六条)
(二)申请转专业学生的基本资格与条件
普通本科在籍学生满足以下条件者,均可自愿提出转专业申请:
(1)思想品德优良;
(2)所有修读课程中无不及格课程;
(3)达到转出专业最低学分绩点要求(见教务处相关通知)。学分绩点以学生个人信息系统中的为准,四舍五入并保留一位小数。
在入学时已被选拔到以下5个专业(方向)的学生不可再提出转专业申请:审计学(ACCA方向)、会计学(CGA方向)、会计学(CPA方向)、会计学(中澳合作项目)、国际经济与贸易(2+2)。
(三)全校各专业转入计划数及要求
学校根据校内师资、教学管理与学生管理等具体情况,确定各专业接收转入计划,各专业转入计划分配及要求见教务处相关通知。
(四)申请程序与时间进程安排
1、转出
(1)学生在教务处通知规定日期前在个人信息系统中填写转专业申请表,提交确认后,打印申请表,签名后交学生所在学院。逾期不再接受补报申请。
每个符合申请转专业条件的学生,可选择填报两个专业志愿。
(2)学生所在学院在规定日前按照《南京审计学院本科学生转专业实施细则(试行)》的规定对学生申请进行审核,学院做出审核意见后直接通知学生,并对确定转出人选进行公示,申请表经学生所在学院院长签署审定意见后,报学籍管理科。
各二级学院不得再另行制定其它选拔标准与条件。
2、转入
(1)各二级学院需要对申请转入学生进行面试的,应于规定日期前将明确的面试方案书面稿报教务处备案,逾期未报的,视为不再单独设置面试规则。
(2)学籍管理科汇总各学院同意转出学生名单,审核属实后转给学生第一志愿拟转入专业所在学院。
(3)各二级学院在规定日期前,按照专业培养要求对申请转入本专业的学生进行必要的审查(包括要求面试的进行面试),按学分绩点高者优先的原则进行审核,不同意接受的需注明理由。申请表经学院院长签署意见后,报学籍管理科。
(4)教务处按照学校关于转专业工作规定的要求,对各二级学院上报的材料进行审核并报学校领导批准,转专业名单经学校领导批准后在教务在线公示。
(5)教务处在公示期届满后,正式公布转专业审批结果。本学期结束前按相关要求办理转专业手续。
本次经批准转入会计学院、金融学院、经济学院、管理学院、数学与统计学院、政治与行政学院等6个学院各专业的学生,不可参加按大类招生的学院内转专业。
(五)转专业工作的具体要求
1.各转入专业如第一志愿人数不满,可调剂第二志愿的学生。
2.经批准转入新专业的学生于下学期正式参加转入专业的学习,本学期必须在原专业完成学习任务并参加考试。
3.转入新专业的学生执行新专业的培养计划,教学要求相同的课程的学分可相互抵认,转入专业中未取得学分的课程必须补修;原所在专业已学的课程在转入专业中不作要求的,其学分可计入跨学科选修课。
4.学生转专业申请被批准并办理完转入手续后,不可申请退转。
⑵ 2.学生成绩管理系统 (c语言做)
给你找一份类似的。不完全一致。做课程设计还是可行的。自己稍加修改即可!
总体设计
一、 仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)
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 10
typedef 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("Computer:%d\t",p1->computer);
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("Computer:%d\t",p2->computer);
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);
}
}
⑶ 1.学生成绩管理系统 要求: (1)由键盘输入每个学生的学号和四门课程的成绩; (2)计算每个学生的平均分
#include<iostream>
#include<cstring>
#include<iomanip>
#include<conio.h>
#include<cstdlib>
using namespace std;
#define SIZE 100
class STU
{
public:
void getdata(char Num[],char Name[],float &Chinese,float &Math,float &Eng,float Sum,float Ave);
void putdata(char Num[],char Name[],float &Chinese,float &Math,float &Eng,float Sum,float Ave);
void showdata();
float getave()
{
return ave;
}
private:
char num[10];
char name[10];
float chinese,math,eng;
float sum;
float ave;
};
void STU::showdata()
{
cout<<setw(-11)<<num<<setw(-11)<<name
<<setw(9)<<chinese<<setw(9)<<math<<setw(9)<<eng
<<setw(9)<<sum<<setw(10)<<ave<<endl;
}
void STU::getdata(char Num[],char Name[],float &Chinese,float &Math,float &Eng,float Sum,float Ave)
{
strcpy(Num,num);
strcpy(Name,name);
Chinese=chinese;
Math=math;
Eng=eng;
Sum=sum;
Ave=ave;
}
void STU::putdata(char Num[],char Name[],float &Chinese,float &Math,float &Eng,float Sum,float Ave)
{
strcpy(num,Num);
strcpy(name,Name);
chinese=Chinese;
math=Math;
eng=Eng;
sum=Sum;
ave=Ave;
}
int n;
STU stu[SIZE];
char num[10];
char name[10];
float chinese;
float math;
float eng;
float sum;
float ave;
void Input();
void Statistic();
void Order();
void Cls(){system("CLS");}
int main()
{
char x;
while(1){
Cls();
cout<<" **************欢迎来到学生管理系统**************"<<endl;
cout<<" 1录入成绩"<<endl;
cout<<" 2查询成绩"<<endl;
cout<<" 3排序成绩"<<endl;
cout<<" 0退出系统"<<endl;
cout<<" ************************************************"<<endl;
do
{
x=getch();
}while(x<'0'||x>'3');
switch(x)
{
case '1':Input();break;
case '2':Statistic();break;
case '3':Order();break;
case '0':goto END;break;
default :break;
}
}
END:Cls();return 0;
}
void Input()
{
Cls();
cout<<"\n 学号:";cin>>num;
cout<<" 姓名:";cin>>name;
cout<<" 语文:";cin>>chinese;
cout<<" 数学:";cin>>math;
cout<<" 英语:";cin>>eng;
sum=chinese+math+eng;
ave=sum/3;
stu[n].putdata(num,name,chinese,math,eng,sum,ave);
n++;
}
void Statistic()
{
Cls();
cout<<"学号"<<" "<<"姓名"
<<" "<<"语文"<<" "<<"数学"<<" "<<"英语"<<" "
<<"总分"<<" "<<"平均分"<<endl;
for(int i=0;i<n;i++)
{
stu[i].showdata();
}
getch();
}
void Order()
{
Cls();
STU *a[SIZE];
for(int i=0;i<n;i++)
{
a[i]=&stu[i];
}
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
{
if((a[i]->getave()) < (a[i]->getave()))
{
STU *p;
p=a[i];
a[i]=a[j];
a[j]=p;
}
}
cout<<"学号"<<" "<<"姓名"
<<" "<<"语文"<<" "<<"数学"<<" "<<"英语"<<" "
<<"总分"<<" "<<"平均分"<<endl;
for(int i=0;i<n;i++)a[i]->showdata();
getch();
}
⑷ C顺序表学生信息管理系统,需要补充代码增添 “算学生的平均成绩并按成绩由高到低排列“的功能
ASC 升序排列 DESC 是降序排列
数据库里面的sql语句加上这个就ok了
希望对你有所帮助
⑸ 1.学生成绩管理系统 要求: (1)由键盘输入每个学生的学号和四门课程的成绩; (2)计算每个学生的平均分
import java.util.Scanner;
public class Student {
public static void main(String[] args) {
s=new Scanner(System.in);
System.out.print("输入学生姓名:");
String name=s.nextLine();
System.out.print("输入语文成绩:");
int Chinese=s.nextInt();
System.out.print("输入数学成绩:");
int Math=s.nextInt();
System.out.print("输入英语成绩:");
int English=s.nextInt();
System.out.print("输入Java成绩:");
int Java=s.nextInt();
System.out.println(name+" "+"的成绩为:"+"\t"+"语文:"+Chinese+"\t"+"数学:"+Math+"\t"+"英语:"+English+"\t"+"Java:"+Java);
System.out.println("平均成绩为:"+(double)(Chinese+Math+English+Java)/4);
s.close();
}
}
⑹ 学生成绩管理系统 要求:可以求全班或单科的平均分,某个人的多门课的平均分。
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<conio.h>
#define D "%d"
#define F "%f"
#define S scanf
#define P printf
#define OK 1
#define ERROR 0
#define NULL 0
#define NC 3//每个学生课程总数
typedef int Status;
typedef int NUM;
typedef float CHINESE;
typedef float ENGLISH;
typedef float MATH;
typedef float EVE_Stusum;//EVE(everyone)
typedef float AVE_Stu;//AVE(average)每个学生平均分
typedef float AVE_Course;//每门课平均分
typedef struct LNode{//定义结点
NUM num;
CHINESE ch;
MATH math;
ENGLISH eng;
EVE_Stusum sum;//每个学生总分
AVE_Stu ave;//每个学生平均分
struct LNode *next;
}LNode,*LinkList;
typedef struct{
AVE_Course av_ch;
AVE_Course av_math;
AVE_Course av_eng;
}*Average,AVENode;
void CreatList_L(LinkList &L){//建立链表
LinkList p=NULL,p1=NULL;//p用来指向每一个新建立的结点,,p1做记录
p1=L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;//头结点
P("----请输入各学生学号和成绩(学号为零则输入截止)----\n");
p=(LinkList)malloc(sizeof(LNode));
P("请输入第一位学生学号:\n");
S(D,&p->num);
P("请输入分数:\n");
P("----语文 数学 英语(空格隔开)----\n");
S("%f%f%f",&p->ch,&p->math,&p->eng);
while(p->num)
{
p1->next=p;
p1=p;
p=(LinkList)malloc(sizeof(LNode));
P("请输入下一位学生学号:\n");
S(D,&p->num);
if(p->num==0) break;//学号为0则输入结束
P("请输入分数:\n");
P("----语文 数学 英语----\n");
S("%f%f%f",&p->ch,&p->math,&p->eng);
}
p1->next=NULL;
}
int Length_L(LinkList L)//求出带头结点的链表中除头结点外其余结点的数目
{
LinkList p=L;
int i=0;
while(p->next)
{
p=p->next;
i++;
}
return i;
}
Status GetNumI_L(LinkList &L,NUM num2){//在带头节点的链表中找出num2所在的位序,头结点后第一个结点为1,后依次为2,3,4.......
int i=1;
LinkList p=L->next;//此时p指向头结点后第一个结点
while(p&&p->num!=num2)
{
p=p->next;
i++;
}
if(!p) {P("没找到该学号--——\n");return ERROR; }
return i;
}
Status ListDelete_L(LinkList &L,int i){//在带头结点的单链表中删除第i个元素
LinkList p=L,q=NULL;
int j=0;
while(p->next&&j<i-1){//p最终指向第i-1个结点
p=p->next;
j++;
}
q=p->next;
p->next=q->next;
free(q);
return OK;
}
Status ListInsert_L(LinkList &L){//在带头结点的L学号顺序存放链表中插入新的学生信息
LinkList p=L,s=NULL,p1=NULL;
p1=p=p->next;
s=(LinkList)malloc(sizeof(LNode));
P("\n---请输入想要插入的学生信息---\n");
P(" 请输入学号:\n");
S(D,&s->num);
P("请输入分数:\n");
P("----语文 数学 英语----\n");
S("%f%f%f",&s->ch,&s->math,&s->eng);
if(s->num<=p->num){L->next=s;s->next=p;return OK;}
while(p&&s->num>=p->num) {p1=p;p=p->next;}
p1->next=s;
s->next=p;
return OK;
}
Status EveryStu_Sum(LinkList &L){//求每个学生总分
LinkList p=L;
p=p->next;
while(p)
{
p->sum=p->ch+p->eng+p->math;
p=p->next;
}
return OK;
}
Status EveryStu_EVE(LinkList L){//求每个学生平均分
LinkList p=L;
p=p->next;
while(p)
{
p->ave=(p->ch+p->eng+p->math)/NC;
p=p->next;
}
return OK;
}
Status AVE_Every(LinkList L,Average PJF){//求每门课平均分,存放在PJF所指结点
LinkList p=L;
int i=Length_L(L);
float sum1=0,sum2=0,sum3=0;
p=p->next;
while(p){
sum1+=p->ch;
sum2+=p->math;
sum3+=p->eng;
p=p->next;
}
PJF->av_ch=sum1/i;
PJF->av_math=sum2/i;
PJF->av_eng=sum3/i;
return OK;
}
Status TheMaxAVE(LinkList L){//找出平均分最高的学生
LinkList p=L;
LinkList p1=p;
p=p->next;
float max=0;
while(p)
{
if((p->ave)>max) {max=p->ave;p1=p;}
p=p->next;
}
p=p1;
P("平均分最高的学生学号为:%d 平均分:%4.2f\n",p->num,p->ave);
return OK;
}
Status Max_Every(LinkList L){//找出每门成绩最高分
LinkList p=L,p1=L,p2=L,p3=L;
p=p->next;
float max1=0,max2=0,max3=0;
while(p)
{
if(p->ch>max1){max1=p->ch;p1=p;}
if(p->math>max2){max2=p->math;p2=p;}
if(p->eng>max3){max3=p->eng;p3=p;}
p=p->next;
}
P("\n语文最高:\n学号:%d 成绩:%4.2f\n",p1->num,p1->ch);
P("数学最高:\n学号:%d 成绩:%4.2f\n",p2->num,p2->math);
P("英语最高:\n学号:%d 成绩:%4.2f\n",p3->num,p3->eng);
return OK;
}
Status Min_Every(LinkList L){//找出每门成绩最低分
LinkList p=L,p1=L,p2=L,p3=L;
p=p->next;
float min1=101,min2=101,min3=101;
while(p)
{
if(p->ch<min1){min1=p->ch;p1=p;}
if(p->math<min2){min2=p->math;p2=p;}
if(p->eng<min3){min3=p->eng;p3=p;}
p=p->next;
}
P("\n语文最低:\n学号:%d 成绩:%4.2f\n",p1->num,p1->ch);
P("数学最低:\n学号:%d 成绩:%4.2f\n",p2->num,p2->math);
P("英语最低:\n学号:%d 成绩:%4.2f\n",p3->num,p3->eng);
return OK;
}
void PrintAVE_EvryCourse(Average PJF){//打印每门课平均分
P(" 语文平均 数学平均 英语平均\n");
P(" %4.2f %4.2f %4.2f\n",PJF->av_ch,PJF->av_math,PJF->av_eng);
P("\n");
}
void Print_Sum(LinkList L){//打印每个学生总分
LinkList p=L;
p=p->next;
P(" 学号 总分\n" );
while(p)
{
P(" %d %4.2f \n",p->num,p->sum);
p=p->next;
}
}
void PrintEveryStu_EVE(LinkList L){//打印每个学生平均分
LinkList p=L;
p=p->next;
P(" 学号 平均分\n");
while(p)
{
P(" %d %4.2f\n",p->num,p->ave);
p=p->next;
}
}
void Print_L(LinkList L){//打印链表中所有元素
LinkList p=L;
p=p->next;
P(" ------学生信息如下-----\n");
P(" 学号 成绩\n");
P(" -----------------------------------------\n");
P(" || | 语文 数学 英语 || \n");
P(" -----------------------------------------\n");
while(p)
{
P(" ||%d | %4.2f %4.2f %4.2f||\n",p->num,p->ch,p->math,p->eng);
p=p->next;
}
P(" -----------------------------------------\n");
}
void menu(){//打印菜单
P("\n\n\n ------请选择操作------\n");
P(" **********MENU*********\n");
P(" ||0---统计学生总数-- ||\n");
P(" ||1---插入学生成绩---||\n");
P(" ||2---删除学生成绩---||\n");
P(" ||3---求每个学生总分-||\n");
P(" ||4---求每学生平均分-||\n");
P(" ||5---求每门课平均分-||\n");
P(" ||6---平均分最高学生-||\n");
P(" ||7---每门最高低分---||\n");
P(" ||8---退出-----------||\n");
P(" ***********************\n");
}
void main(){
LinkList L;//L指向链表头结点;
Average PJF;//PJF指向存放平均分的一个结点
PJF=(Average)malloc(sizeof(AVENode));//为存放各科平均分分配一块空间
NUM num1=0,num0=0;
int i=0;
char ch=0,cho=0;
CreatList_L(L);
Print_L(L);
while(1)
{
menu();
P(" your choice:");
cho=getche();//选择操作
P("\n");
switch(cho)
{
case '0':
P("学生总数为:%d\n",Length_L(L));
break;
case '1':
while(1)
{
ListInsert_L(L);
Print_L(L);
P("---q键退出上一层菜单,其他任意键继续---\n");
ch=getche();
if(ch=='q'||ch=='Q')break;
}
break;
case '2':
while(1)
{
P("请输入要删除的学号:\n");
S(D,&num1);
i=GetNumI_L(L,num1);
if(i==0) continue;
else
ListDelete_L(L,i);
Print_L(L);
P("---q键退出上一层菜单,其他任意键继续---\n");
ch=getche();
if(ch=='q'||ch=='Q')break;
}
break;
case '3':
EveryStu_Sum(L);//每个学生总分函数
Print_Sum(L);//打印每个学生总分函数
break;
case '4':
EveryStu_EVE(L);//求每个学生平均分
PrintEveryStu_EVE(L);//打印每个学生平均分
break;
case '5':
AVE_Every(L,PJF);
PrintAVE_EvryCourse(PJF);
break;
case '6':
EveryStu_EVE(L);
TheMaxAVE(L);break;
case '7':
Max_Every(L);
Min_Every(L);
break;
case '8':exit(0);
default:P("请重新选择:\n");break;
}
}
getch();
}
⑺ 学生成绩管理系统 变量 学号姓名性别专业班级4门课成绩总分, 平均分 应不少于50条记录
学生管理系统需要一个
⑻ 学生信息管理系统 学生信息包括:学号,姓名,课程成绩(5门),总分,平均成绩。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void init();//初始化
void brow();//浏览
void find();//查找
void find_by_num();//按学号查找
void find_by_pjf();//按平均分高于85的查找
void find_by_bjg();//按不及格的查找
void del ();//删除
void count ();//计算
void px ();//排序
void px_by_num ();//按学号排序
void px_by_zf ();//按总分排序
struct student
{
int num;//学号
char name[100];//姓名
int score1;//五门成绩
int score2;
int score3;
int score4;
int score5;
float zf;//总分
float pjf;//平均分
};
student st[10000],*pst;
int sm=0;
void main()
{
int x;
pst=st;
do
{
printf("\t\t\t\t 学生信息管理系统 \t\t\t\t\n");
printf("\t************************************************************\n");
printf ("\n");
printf("\t\t1--------------------------输入\n");
printf ("\n");
printf("\t\t2--------------------------浏览\n");
printf ("\n");
printf("\t\t3--------------------------查找\n");
printf ("\n");
printf("\t\t4--------------------------删除 \n");
printf ("\n");
printf("\t\t5--------------------------排序\n");
printf ("\n");
printf("\t\t0--------------------------退出\n");
printf ("\n");
printf("\t************************************************************\n");
printf ("\n");
printf ("请输入你的选择:");
scanf("%d",&x);
switch(x)
{
case 1:init();break;
case 2:brow();break;
case 3:find();break;
case 4:del();break;
case 5:px();break;
case 0:printf("谢谢使用,再见\n");break;
}
}
while(x!=0);
}
void init()//初始化学生信息
{
int i,n,t,j;
printf("请输入学生数量:");
scanf("%d",&n);
for (i=sm;i<n;i++)
{
printf ("请输入第%d个学生的信息:\n",i+1);
printf ("请输入学号:");
scanf ("%d",&st[i].num);
for (t=0;t<i;t++)
{
while (st[i].num==st[t].num)
{
printf ("该学生的学号已存在,请重新输入!\n");
scanf("%d",&st[i].num);
t=-1;
}
}
printf ("请输入姓名:");
scanf ("%s",st[i].name);
printf ("请输入第一门成绩:");
scanf("%d",&st[i].score1);
printf ("请输入第二门成绩:");
scanf("%d",&st[i].score2);
printf ("请输入第三门成绩:");
scanf("%d",&st[i].score3);
printf ("请输入第四门成绩:");
scanf("%d",&st[i].score4);
printf ("请输入第五门成绩:");
scanf("%d",&st[i].score5);
}
printf ("初始化完毕!\n");
sm+=n;
}
void brow ()//浏览学生信息
{
int i;
for (i=0;i<sm;i++)
{
printf ("第%d个学生信息\n",i+1);
printf ("学号:%4d \n",st[i].num);
printf ("姓名:%s \n",st[i].name);
printf ("第一门成绩:%d\n",st[i].score1);
printf ("第二门成绩:%d\n",st[i].score2);
printf ("第三门成绩:%d\n",st[i].score3);
printf ("第四门成绩:%d\n",st[i].score4);
printf ("第五门成绩:%d\n",st[i].score5);
printf ("\n");
}
}
void del()//删除信息
{
int num;
int i;
int y=1;
printf("\n 请输入想要删除的学生学号:");
scanf("%d",&num);
for (i=0;i<sm;i++)
{
if(num==st[i].num)
break;
}
if (i!=sm)
{
for(;i<sm-1;i++)
{
st[i].num=st[i+1].num;
strcpy(st[i].name,st[i+1].name);
st[i].score1=st[i+1].score1;
st[i].score2=st[i+1].score2;
st[i].score3=st[i+1].score3;
st[i].score4=st[i+1].score4;
st[i].score5=st[i+1].score5;
}
sm--;
printf("删除成功!o(≥v≤)o~~\n");
}
else
printf("\n 对不起,没有找到!\n");
}
void find()
{
int x;
do
{
printf("\t************************************************************\n");
printf ("\n");
printf("\t\t1--------------------------按学号查找\n");
printf ("\n");
printf("\t\t2--------------------------查找平均分>=85的同学\n");
printf ("\n");
printf("\t\t3--------------------------查找不及格同学\n");
printf ("\n");
printf ("\t\t0---------------------------退出\n");
printf ("\n");
printf("\t************************************************************\n");
printf ("\n");
printf ("请输入你的选择:");
scanf("%d",&x);
switch (x)
{
case 1:find_by_num();break;
case 2:find_by_pjf();break;
case 3:find_by_bjg();break;
case 0:;break;
}
}
while (x!=0);
}
void find_by_num()//按学号查询学生信息
{
int i,xh;
char c;
do
{
printf ("请输入你想查找的学号:");
scanf ("%d",&xh);
for (i=0;i<sm;i++)
{
if (xh==st[i].num)
{
printf ("学号:%4d \n",st[i].num);
printf ("姓名:%s \n",st[i].name);
printf ("第一门成绩:%3.1d \n",st[i].score1);
printf ("第二门成绩:%3.1d \n",st[i].score2);
printf ("第三门成绩:%3.1d \n",st[i].score3);
printf ("第四门成绩:%3.1d \n",st[i].score4);
printf ("第五门成绩:%3.1d \n",st[i].score5);
break;
}
}
if (i>=sm)
printf ("对不起,查无此人!/(ㄒoㄒ)/~~\n");
printf ("继续吗?(y/n)");
scanf ("%c",&c);
}
while (c=getchar()!='n');
}
void find_by_pjf()
{
int i;
count ();
printf ("平均分高于85的同学有:");
for (i=0;i<sm;i++)
{
if (st[i].pjf>=85)
printf ("学号:%d\n姓名:%s\n平均分:%f\n",st[i].num,st[i].name,st[i].pjf);
}
}
void find_by_bjg()
{
int i;
count ();
printf ("不及格的同学有:");
for (i=0;i<sm;i++)
{
if (st[i].pjf<60)
printf ("学号:%d\n姓名:%s\n平均分:%f\n",st[i].num,st[i].name,st[i].pjf);
}
}
void count()//学生成绩的计算
{
int i;
for(i=0;i<sm;i++)
{
st[i].zf=0;
st[i].pjf=0;
st[i].zf=st[i].score1+st[i].score2+st[i].score3+st[i].score4+st[i].score5;
st[i].pjf=st[i].zf/5;
}
}
void px()//排序
{
int x;
do
{
printf("\t************************************************************\n");
printf ("\n");
printf("\t\t1--------------------------按学号排序\n");
printf ("\n");
printf("\t\t2--------------------------按总分排序\n");
printf ("\n");
printf ("\t\t0---------------------------退出\n");
printf ("\n");
printf("\t************************************************************\n");
printf ("\n");
printf ("请输入你的选择:");
scanf("%d",&x);
switch (x)
{
case 1:px_by_num();break;
case 2:px_by_zf();break;
case 0:;break;
}
}
while (x!=0);
}
void px_by_zf ()//按总分排序
{
int i,j,k;
count ();
for (j=0;j<sm;j++)
for (k=0;k<sm-j;k++)
{
if (st[k].zf<st[k+1].zf)
{
st[sm]=st[k];
st[k]=st[k+1];
st[k+1]=st[sm];
}
}
printf ("总分排名:\n");
for (k=0;k<sm;k++)
printf ("第%d名学生的学号:%d\n姓名:%s\n总分:%3.1f\n",k+1,st[k].num,st[k].name,st[k].zf);
printf ("\n");
}
void px_by_num ()
{
int i,j,k;
count ();
for (j=0;j<sm;j++)
for (k=0;k<sm-j;k++)
{
if (st[k].num>st[k+1].num)
{
st[sm]=st[k];
st[k]=st[k+1];
st[k+1]=st[sm];
}
}
printf ("学号排名:\n");
for (k=0;k<sm;k++)
printf ("第%d名学生的学号:%d\n姓名:%s\n总分:%3.1f\n",k+1,st[k].num,st[k].name,st[k].zf);
printf ("\n");
}
这个要在C.pp下写;就是写文件名时不要加.c
⑼ 简单学生成绩管理系统
#define N 7 /*学生的人数*/
typedef struct
{
char num[5];
char name[10]; /*记录姓名和学号*/
float math,english,comput,average; /*各个科目及平均分*/
}mark; /*定义学生记录结构体类型*/
typedef struct
{
float fen[4];
int n;
}fsp;/*定义学生记录转化的中间变量*/
void count(mark *s)/*统计各科平均分 各科的最高(低)分及各分数段的人数*/
{
float ave[3]={0};/*存放各科平均分 */
float m[3][2] ;
int num[3][5]={0};/*存放各分数段的人数*/
int i;
m[0][1]=m[0][0]=s->math;
m[1][0]=m[1][1]=s->english;
m[2][0]=m[2][1]=s->comput;
for(i=0;i<N;i++)
{ ave[0]+=(s+i)->math;
ave[1]+=(s+i)->english;
ave[2]+=(s+i)->comput;
if( (s+i)->math > m[0][0] )
m[0][0]=(s+i)->math;
else if( (s+i)->math < m[0][1] )
m[0][1]=(s+i)->math;
if( (s+i)->english > m[1][0] )
m[1][0]=(s+i)->english;
else if( (s+i)->english < m[1][1] )
m[1][1]=(s+i)->english;
if( (s+i)->comput > m[2][0] )
m[2][0]=(s+i)->comput;
else if( (s+i)->comput < m[2][1] )
m[2][1]=(s+i)->comput;
/*统计各科的最高(低)分*/
if((s+i)->math<60.0)
num[0][0]++;
else if((s+i)->math<70.0)
num[0][1]++;
else if((s+i)->math<80.0)
num[0][2]++;
else if((s+i)->math<90.0)
num[0][3]++;
else num[0][4]++;
/*统计数学各分数段的人数*/
if((s+i)->english<60.0)
num[1][0]++;
else if((s+i)->english<70.0)
num[1][1]++;
else if((s+i)->english<80.0)
num[1][2]++;
else if((s+i)->english<90.0)
num[1][3]++;
else num[1][4]++;
/*统计英语各分数段的人数*/
if((s+i)->comput<60.0)
num[2][0]++;
else if((s+i)->comput<70.0)
num[2][1]++;
else if((s+i)->comput<80.0)
num[2][2]++;
else if((s+i)->comput<90.0)
num[2][3]++;
else num[2][4]++;
/*统计计算机各分数段的人数 */
}
for(i=0;i<3;i++)
ave[i]=ave[i]/N;
printf("三门科的平均分分别为:\n%.1f %.1f %.1f\n",ave[0],ave[1],ave[2]);
printf("三门科的最高分与最底分分别为:\n");
printf("%.1f %.1f\n%.1f %.1f\n%.1f %.1f\n",
m[0][0],m[0][1],m[1][0],m[1][1],m[2][0],m[2][1]);
printf("三门科不及格 60-69 70-79 80-89 90分以上的人数分别为:\n");
printf("数学: %3d%5d%6d%6d%4d\n",num[0][0],num[0][1],num[0][2],num[0][3],num[0][4]);
printf("英语: %3d%5d%6d%6d%4d\n",num[1][0],num[1][1],num[1][2],num[1][3],num[1][4]);
printf("计算机:%3d%5d%6d%6d%4d\n",num[2][0],num[2][1],num[2][2],num[2][3],num[2][4]);
}
void found(mark *s)/*输入学生的学号查询学生的成绩情况*/
{
char a[10];/*接受输入的学号*/
int flag,i;/*循环变量*/
char * b="exit";
do
{ flag=0;
printf("请输入所要查询的学生的学号或姓名\n");
getchar();
gets(a);
for(i=0;i<N;i++)
{printf("该生的学号,姓名,各门课程及平均成绩为:\n%s %s %.1f %.1f %.1f %.1f\n"
,(s+i)->num,(s+i)->name,(s+i)->math,(s+i)->english,(s+i)->comput,(s+i)->average);/*成绩打印*/
flag=1;}
if(flag==0) printf("查无此人\n");
}while(strcmp(a,b));
printf("查询结束");
}
main()
{
mark *s,*a,*b,*c,*d;
fsp *p;
s=(mark*)malloc(N*sizeof(mark));
a=(mark*)malloc(N*sizeof(mark));
b=(mark*)malloc(N*sizeof(mark));
c=(mark*)malloc(N*sizeof(mark));
d=(mark*)malloc(N*sizeof(mark));
p=(fsp*)malloc(N*sizeof(fsp));/*各变量空间开辟 */
printf("初始化学生的记录为:\n");
printf("按数学成绩排序学生的记录为:\n");
printf("按英语成绩排序学生的记录为:\n");
printf("按计算机成绩排序学生的记录为:\n");
printf("按平均成绩排序学生的记录为:\n");
count(s);
found(s);
}