java课程设计 学生成绩管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java课程设计 学生成绩管理相关的知识,希望对你有一定的参考价值。
功能要求:
1) 输入十个同学的学号,姓名,四科成绩(应用数学、大学英语、Java程序设计、计算机应用基础)
2) 计算出平均成绩。以平均成绩降序输出成绩表。
3) 输出全组各科平均分,最高分和最低分。
4) 输入姓名查询成绩
界面要示:用字符界面实现、也可用图形界面实现。
* 学员管理系统
* 版本号1.0
*/
/**
* 这是一个类,
* 用于演示学员的基本信息操作
* 创建人: csx
* 创建时间:2008年3月25日21:51:27
*/
package com.student.csx;
/**
* 导入相关的包
*/
// 导入加载驱动程序包
import java.sql.DriverManager; // 导入连接包
import java.sql.Connection; // 导入获得语句包
import java.sql.Statement; // 导入执行语句包
import java.sql.ResultSet; // 导入SQL异常包
import java.sql.SQLException; // 导入SQL异常包
import java.util.Scanner;// 导入接收输入包
public class Student
/**
* 构造方法
*/
public Student()
/**
* 这是一个方法 用于显示用户需要的菜单
*/
public void meau()
System.out.println("请选择功能");
System.out.println("1.查询学员的基本信息");
System.out.println("2.添加学员的基本信息");
System.out.println("3.删除学员的基本信息");
System.out.println("4.排序学员的基本信息");
System.out.println("5.修改学员的基本信息");
System.out.println("6.退出使用");
/**
* 这是一个方法 用于显示学员的信息
*/
public void showStudentInfo()
// 捕获异常
try
/**
* 第一步: 加载驱动程序---桥连接
*/
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
catch (ClassNotFoundException e)
// TODO Auto-generated catch block
e.printStackTrace();// 打印出异常的详细信息
// 捕获异常
try
/**
* 第二步: 创建连接
*/
Connection conn = DriverManager.getConnection("jdbc:odbc:student",
"sa", "sa");
/**
* 第三步: 获取语句对象
*/
Statement stmt = conn.createStatement();
/**
* 第四步: 执行语句
*/
ResultSet rs = stmt.executeQuery("select * from student");
/**
* 第五步: 打印出结果
*/
while (rs.next())
System.out.print(rs.getString(1));
System.out.print(rs.getString(2));
System.out.print(rs.getString(3));
System.out.println(rs.getInt(4));
System.out.println(rs.getFloat(5));
/**
* 第六步: 释放资源
*/
rs.close();
stmt.close();
conn.close();
catch (SQLException e)
// TODO Auto-generated catch block
e.printStackTrace();
/**
* 这是一个方法 用于添加学员的信息
*/
public void appendStudentInfo()
// 准备接收输入
Scanner input = new Scanner(System.in);
/**
* 提示用户输入
*/
System.out.println("请输入姓名:");
/**
* 用于接收用户输入的信息
*/
String name = input.nextLine();
/**
* 提示用户输入
*/
System.out.println("请输入学号:");
/**
* 用于接收用户输入的信息
*/
String id = input.nextLine();
/**
* 提示用户输入
*/
System.out.println("请输入性别:");
/**
* 用于接收用户输入的信息
*/
String sex = input.nextLine();
/**
* 提示用户输入
*/
System.out.println("请输入年龄:");
/**
* 用于接收用户输入的信息
*/
int age = input.nextInt();
/**
* 提示用户输入
*/
System.out.println("请输入平均成绩:'");
/**
* 用于接收用户输入的信息
*/
Float score = input.nextFloat();
/**
* 捕获异常
*/
try
/**
* 第一步: 加载驱动程序---桥连接
*/
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
catch (ClassNotFoundException e)
// TODO Auto-generated catch block
e.printStackTrace();
try
/**
* 第二步:
* 创建连接
*/
Connection conn = DriverManager.getConnection("jdbc:odbc:student",
"sa", "sa");
/**
* 第三步:
* 获得语句
*/
Statement stmt = conn.createStatement();
/**
* 第四步:
* 执行语句块
*/
String sql = "insert into student(name,id,sex,age)" + "values('"
+ name + "','" + id + "','" + sex + "'," + age + ",'"
+ score + "')";
/** 执行语句,并返回一个数字(数字是指影响了几行) */
int updateRow = stmt.executeUpdate(sql);
/** 判断是否插入成功 */
if (updateRow > 0)
System.out.println("插入成功");
else
System.out.println("插入失败");
/**
* 最后一步:
* 释放资源
*/
stmt.close();
conn.close();
catch (Exception e)
/**
* 打印异常的详细信息
*/
e.getStackTrace();
/**
* 这是一个方法 用于删除学员的信息
*/
public void deleteStudentInfo()
try
/**
* 第一步:
* 加载驱动程序
*/
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
catch (ClassNotFoundException e)
// TODO Auto-generated catch block
e.printStackTrace();
try
//准备接收
Scanner input = new Scanner(System.in);
//创建连接
Connection conn = DriverManager.getConnection("jdbc:odbc:student",
"sa", "sa");
//获取语句
Statement stmt = conn.createStatement();
//提示用户输入
System.out.println("请输入你要删除学员的姓名:");
//接收用户输入的信息
String name = input.nextLine();
//执行语句
String sql = "delete from student where name = '" + name + "'";
int updateRow = stmt.executeUpdate(sql);
/** 判断是否删除成功 */
if (updateRow > 0)
System.out.println("删除成功");
else
System.out.println("删除失败");
//释放资源
stmt.close();
conn.close();
catch (SQLException e)
// TODO Auto-generated catch block
e.printStackTrace();
/**
* 这是一个方法 用于将学员的信息进行排序
*/
public void compositorStudentInfo()
// 捕获异常
try
/**
* 第一步: 加载驱动程序---桥连接
*/
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
catch (ClassNotFoundException e)
// TODO Auto-generated catch block
e.printStackTrace();// 打印出异常的详细信息
// 捕获异常
try
/**
* 第二步: 创建连接
*/
Connection conn = DriverManager.getConnection("jdbc:odbc:student",
"sa", "sa");
/**
* 第三步: 获取语句对象
*/
Statement stmt = conn.createStatement();
/**
* 第四步: 执行语句
*/
ResultSet rs = stmt
.executeQuery("select * from student order by age");
/**
* 第五步: 打印出结果
*/
System.out.print("按年龄排序为:\n");
while (rs.next())
System.out.print(rs.getString(1));
System.out.print(rs.getString(2));
System.out.print(rs.getString(3));
System.out.println(rs.getInt(4));
System.out.println(rs.getFloat(5));
/**
* 第六步: 释放资源
*/
rs.close();
stmt.close();
conn.close();
catch (SQLException e)
// TODO Auto-generated catch block
e.printStackTrace();
/**
* 这是一个方法 用于修改学员的信息
*/
public void amendStudentInfo()
// 捕获异常
try
/**
* 第一步: 加载驱动程序---桥连接
*/
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
catch (ClassNotFoundException e)
// TODO Auto-generated catch block
e.printStackTrace();// 打印出异常的详细信息
// 捕获异常
try
/**
* 第二步: 创建连接
*/
Connection conn = DriverManager.getConnection("jdbc:odbc:student",
"sa", "sa");
/**
* 第三步: 获取语句对象
*/
Statement stmt = conn.createStatement();
//准备接收输入
Scanner input = new Scanner(System.in);
//提示用户输入
System.out.println("请输入你要修改的学员的姓名:");
//接收用户输入的信息
String name = input.nextLine();
//提示输入
System.out.println("请输入你修改后学员的成绩");
//接收用户输入的信息
Float score = input.nextFloat();
/**
* 第四步: 执行语句
*/
String sql = "update student set score = '" + score
+ "' where name = '" + name + "'";
int updateRow = stmt.executeUpdate(sql);
/** 判断是否删除成功 */
if (updateRow > 0)
System.out.println("修改成功");
else
System.out.println("修改失败");
//stmt.close();
//conn.close();
/**
* 第六步: 释放资源
*/
stmt.close();
conn.close();
catch (SQLException e)
// TODO Auto-generated catch block
e.printStackTrace();
下面这是一个场景类:
/**
* 这是一个测试类
* 用于测试
* 创建人:CSX * 创建时间:2008年3月25日22:03:10
* 版本号:1.0
*/
//这是一个包
package com.student.csx;
//导入接收包
import java.util.Scanner;
public class Action
/**
* 这是程序的入口点
* @param args
*/
public static void main(String[] args)
Student stu = new Student();//声明一个对象
stu.meau();//调用菜单
int elect;//声明一个变量,用于接收用户的选择
while (true)
/**准备接收输入*/
Scanner input = new Scanner(System.in);
//System.out.println("");
/**接收*/
elect = input.nextInt();
//switch分支结构来判断
switch (elect)
case 1:
//调用显示方法
stu.showStudentInfo();
break;
case 2:
//调用添加方法
stu.appendStudentInfo();
break;
case 3:
//调用删除方法
stu.deleteStudentInfo();
break;
case 4://调用排序方法
stu.compositorStudentInfo();
break;
case 5:
//调用修改方法
stu.amendStudentInfo();
break;
case 6:
//退出使用
System.exit(0);
参考技术A 学生成绩管理
功能要求:
1、输入十个同学的学号,姓名,四科成绩(应用数学、大学英语、Java程序设计、计算机应用基础)
2、计算出平均成绩。以平均成绩降序输出成绩表。
3、输出全组各科平均分,最高分和最低分。
4、输入姓名查询成绩
界面要示:用字符界面实现、也可用图形界面实现 参考技术B 我也要啊 结果拿来挖
数据结构课程设计——ytu学生成绩管理系统
Part1:说明信息
/********************************************************************
*版权所有 (C)2016,Chang Rui
*
*文件名称:ytu学生成绩管理系统
*文件标识:无
*内容摘要:简单模拟学生成绩管理过程,
完成对学生成绩信息的建立、增加、删除、查找、修改等功能
*其他内容:无
*
*当前版本:Codeblocks 16.01
*作者:常锐
*完成日期:2016. 12. 29
*********************************************************************/
Part2:头文件systemuser.h 结构体与各个成员函数定义
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>
//结构体定义部分---------------------------------------------------------------------------------
typedef struct User
int is_build; //判断学生成绩单是否建立,0-未建立 1-已建立
int is_login; //判断是否登录,0-未登录 1-已登录
char num[32]; //学生学号
char name[32]; //学生姓名
char classnum[32]; //学生所在班级编号
double score[4]; //学生4门课的单科成绩
double total; //学生4门课的总成绩
double average; //学生4门课的平均成绩
struct User *next; //指向后继节点的指针
user;
//各功能函数定义部分------------------------------------------------------------------------------
void Login(user *&L); //管理员登录
void StuInit(user *&L); //初始化学生信息
void CreateStu(user *&L); //创建学生成绩单
void InsertStu(user *&L); //增加学生信息
void DeleteStu(user *&L); //删除学生信息
void FindStu(user *L); //查找学生信息
void ModifyStu(user *L); //修改学生信息
int Stunum(user *L); //记录当前学生个数
int FailStunum(user *L); //记录当前不及格学生个数
void Sortstu(user *L); //学生成绩排名
void DispStu(user *L); //输出学生成绩信息
void DispFailstu(user *L); //输出不及格学生成绩信息
void Save(user *L); //保存操作结果
Part3:stufun.cpp 各功能函数实现
#include <stdio.h>
#include "systemuser.h"
/*******************************************
* 功能描述:管理员登录
* 输入参数:用户名和密码
* 输出参数:用户名或密码输出有错误时的提示
********************************************/
void Login(user *&L) //管理员登录
char logname[]="admin"; //指定管理员登录用户名与密码
char passwd[]="ytustu";
char l[32],p[32],tmp; //tmp作为判断输入出错标志,输入#可重新输入信息
int i=3,j; //最多3次机会
while(i)
printf("请输入用户名:\\n");
scanf("%s",l);
printf("请输入密码:\\n");
for(j=0;j<32;j++) //屏幕上显示密码*
p[j]=getch();
if(p[j]=='\\r')
tmp=p[j-1];
break;
printf("*");
p[j]='\\0';
printf("\\n");
if(strcmp(logname,l)==0 && strcmp(passwd,p)==0)//用户名和密码均正确表示登录成功
L->is_login=1;
break;
else if(tmp=='#')
printf("请重新输入用户名与密码\\n");
else
printf("用户名或密码错误,请重新输入,您还有%d次机会!\\n",i-1);
i--;
/*******************************************
* 功能描述:初始化学生信息
* 输入参数:无
* 输出参数:无
********************************************/
void StuInit(user *&L) //初始化学生信息
int i;
L=(user *)malloc(sizeof(user));
L->is_build=0; //初始状态-成绩单尚未建立
L->is_login=0; //初始状态-管理员未登录
for(i=0;i<32;i++) //初始化各学生信息
L->num[i]='\\0';
L->name[i]='\\0';
L->classnum[i]='\\0';
for(i=0;i<4;i++)
L->score[i]=0;
L->total=0;
L->average=0;
L->next=NULL;
/*******************************************
* 功能描述:保存操作结果
* 输入参数:无
* 输出参数:操作提示
********************************************/
void Save(user *L) //保存操作结果
int i;
user *p=L->next, *q=L->next;
FILE *fp; //文件指针
if(p==NULL)
printf("现在没有学生信息,请先输入学生信息\\n");
return;
fp=fopen("stu.txt","w"); //在当前目录下打开stu.txt文件并设置只允许“写”操作
if(!fp)
printf("文件不存在\\n");
return;
//将学生信息与不及格学生信息写入文件
fprintf(fp,"===========================学生成绩信息一览表===========================\\n");
fprintf(fp,"当前学生个数为:%d\\n",Stunum(L));
fprintf(fp,"学号\\t姓名\\t班级\\tsc1\\tsc2\\tsc3\\tsc4\\t总成绩\\t平均成绩\\n");
while(p!=NULL)
fprintf(fp,"%s\\t%s\\t%s\\t%.2lf\\t%.2lf\\t%.2lf\\t%.2lf\\t",p->num,p->name,p->classnum,p->score[0],p->score[1],p->score[2],p->score[3]);
fprintf(fp,"%.2lf\\t%.2lf\\n",p->total,p->average);
p=p->next;
fprintf(fp,"\\n=======================不及格学生成绩信息一览表=======================\\n");
fprintf(fp,"当前不及格学生个数为:%d\\n",FailStunum(L));
fprintf(fp,"学号\\t姓名\\t班级\\tsc1\\tsc2\\tsc3\\tsc4\\t总成绩\\t平均成绩\\n");
while(q!=NULL)
for(i=0;i<4;i++)
if(q->score[i]<60)
fprintf(fp,"%s\\t%s\\t%s\\t%.2lf\\t%.2lf\\t%.2lf\\t%.2lf\\t",q->num,q->name,q->classnum,q->score[0],q->score[1],q->score[2],q->score[3]);
fprintf(fp,"%.2lf\\t%.2lf\\n",q->total,q->average);
break;
q=q->next;
fclose(fp); //把缓冲区内最后剩余的数据输出到内核缓冲区,并释放文件指针
printf("数据已成功导入文件stu.txt!\\n");
/******************************************************************
* 功能描述:创建学生成绩单
* 输入参数:学生学号.姓名.班号及4门课的成绩(学号为0时结束输入)
* 输出参数:操作提示
*******************************************************************/
void CreateStu(user *&L) //创建学生成绩单
user *s,*r;
int i;
double subscore[4];
if(L->is_login==0)
printf("请您先登录!\\n");
else
if(L->is_build==1)
printf("学生成绩单已建立完成,无需再次建立!\\n");
else
L=(user *)malloc(sizeof(user));
r=L;
printf("请输入学生学号.姓名.班号及4门课的成绩,以0结束输入:\\n");
while(1)
s=(user *)malloc(sizeof(user));
scanf("%s",s->num);
if(strcmp(s->num,"0")==0)
printf("输入结束,您已退出本操作...\\n");
break;
scanf("%s %s",s->name,s->classnum);
s->total=0;
for(i=0;i<4;i++)
scanf("%lf",&(subscore[i]));
s->score[i]=subscore[i];
if(s->score[i]>=0 && s->score[i]<=100)
s->total+=(s->score[i]);
s->average=s->total/4;
r->next=s;
r=s;
printf("学生%s的信息已添加至成绩单,操作成功!\\n",s->name);
r->next=NULL; //尾指针域置NULL
L->is_build=1; //成绩单已建立完成,is_build置1
/******************************************************************
* 功能描述:增加学生信息
* 输入参数:学生学号.姓名.班号及4门课的成绩(学号为0时结束输入)
* 输出参数:操作提示
*******************************************************************/
void InsertStu(user *&L) //增加学生信息
user *p=L,*q;
int i;
if(L->is_login==0)
printf("请您先登录!\\n");
else
if(L->is_build==0)
printf("学生成绩单未建立,操作失败!\\n");
else
printf("请输入学生学号.姓名.班号及4门课的成绩,以0结束输入:\\n");
while(1)
q=(user *)malloc(sizeof(user)); //能插入,分配节点空间
scanf("%s",q->num);
if(strcmp(q->num,"0")==0)
printf("输入结束,您已退出本操作...\\n");
break;
scanf("%s %s",q->name,q->classnum);
q->total=0;
for(i=0;i<4;i++)
scanf("%lf",&(q->score[i]));
if(q->score[i]>=0 && q->score[i]<=100)
q->total+=(q->score[i]);
q->average=q->total/4;
while(p->next!=NULL) //遍历查找第i-1个节点
p=p->next;
q->next=p->next;
p->next=q; //更改指针域,完成插入
printf("学生%s的信息已添加至成绩单,操作成功!\\n",q->name);
/************************************
* 功能描述:删除学生信息
* 输入参数:学生学号.姓名.班号
* 输出参数:操作提示
*************************************/
void DeleteStu(user *&L) //删除学生信息
int i;
user *p=L,*q=p->next; //”伴随指针“共同作用
char num[32],name[32],cla[32];
if(L->is_login==0)
printf("请您先登录!\\n");
else
if(L->is_build==0)
printf("学生成绩单未建立,操作失败!\\n");
else
printf("请输入被删除学生的学号.姓名.班号,以0结束输入:\\n");
while(1)
scanf("%s",num);
if(strcmp(num,"0")==0)
printf("输入结束,您已退出本操作...\\n");
break;
scanf("%s %s",name,cla);
while(strcmp(q->num,num)!=0 && strcmp(q->name,name)!=0 && strcmp(q->classnum,cla)!=0 && q->next!=NULL)
p=q;
q=q->next;
if(strcmp(q->num,num)==0 && strcmp(q->name,name)==0 && strcmp(q->classnum,cla)==0)
p->next=q->next;
printf("===========================被删除学生成绩信息一览===========================\\n");
printf("注:sc1-高数, sc2-程序设计, sc3-数据结构, sc4-计组\\n");
printf("学号\\t姓名\\t班级\\tsc1\\tsc2\\tsc3\\tsc4\\t总成绩\\t平均成绩\\n");
printf("%s\\t",q->num);
printf("%s\\t",q->name);
printf("%s\\t",q->classnum);
for(i=0;i<4;i++)
printf("%0.2lf\\t",(q->score[i]));
printf("%0.2lf\\t",q->total);
printf("%0.2lf\\n",q->average);
free(q);
printf("该学生信息已被删除,操作成功!\\n");
else
printf("该学生不存在,操作失败!\\n");
/************************************
* 功能描述:查找学生信息
* 输入参数:学生学号.姓名.班号
* 输出参数:操作提示
*************************************/
void FindStu(user *L) //查找学生信息
int i,flag=0;
user *p=L->next;
char num[32],name[32],classnum[32];
if(L->is_login==0)
printf("请您先登录!\\n");
else
if(L->is_build==0)
printf("学生成绩单未建立,操作失败!\\n");
else
printf("请输入待查询学生的学号.姓名.班号,以0结束输入:\\n");
while(1)
scanf("%s",num);
if(strcmp(num,"0")==0)
printf("输入结束,您已退出本操作...\\n");
break;
scanf("%s %s",name,classnum);
while(p!=NULL)
if(strcmp(p->num,num)==0 && strcmp(p->name,name)==0 && strcmp(p->classnum,classnum)==0)
flag=1;
printf("===========================学生成绩查询结果===========================\\n");
printf("注:sc1-高数, sc2-程序设计, sc3-数据结构, sc4-计组\\n");
printf("学号\\t姓名\\t班级\\tsc1\\tsc2\\tsc3\\tsc4\\t总成绩\\t平均成绩\\n");
printf("%s\\t",p->num);
printf("%s\\t",p->name);
printf("%s\\t",p->classnum);
for(i=0;i<4;i++)
printf("%0.2lf\\t",(p->score[i]));
printf("%0.2lf\\t",p->total);
printf("%0.2lf\\n",p->average);
break;
p=p->next;
if(flag==0)
printf("您要查询的学生不存在,操作失败!\\n");
/************************************
* 功能描述:记录当前学生个数
* 输入参数:无
* 输出参数:无
* 返回值:学生个数length1
*************************************/
int Stunum(user *L)
int length1=0;
user *p=L->next; //length1初始化为0,p指向头节点
while(p!=NULL)
length1++;
p=p->next;
return length1;
/************************************
* 功能描述:记录当前不及格学生个数
* 输入参数:无
* 输出参数:无
* 返回值:不及格学生个数length2
*************************************/
int FailStunum(user *L) //记录当前不及格学生个数
int length2=Stunum(L);
user *p=L->next; //length2初始化为0,p指向头节点
while(p!=NULL)
if(p->score[0]>=60 && p->score[1]>=60 && p->score[2]>=60 && p->score[3]>=60)
length2--;
p=p->next;
return length2;
/*****************************************************************************
* 功能描述:修改学生信息
* 输入参数:修改前学生学号.姓名.班号和修改后学生学号.姓名.班号和4门课的成绩
* 输出参数:操作提示
******************************************************************************/
void ModifyStu(user *L) //修改学生信息
int i,flag=0;
user *p=L->next;
char num[32],name[32],classnum[32];
char Modnum[32],Modname[32],Modclassnum[32];
double Modscore[4]; //修改后信息
if(L->is_login==0)
printf("请您先登录!\\n");
else
if(L->is_build==0)
printf("学生成绩单未建立,操作失败!\\n");
else
printf("请输入待修改学生的学号.姓名.班号,以0结束输入:\\n");
while(1)
scanf("%s",num);
if(strcmp(num,"0")==0)
printf("输入结束,您已退出本操作...\\n");
break;
scanf("%s %s",name,classnum);
while(p!=NULL)
if(strcmp(p->num,num)==0 && strcmp(p->name,name)==0 && strcmp(p->classnum,classnum)==0)
flag=1;
printf("===========================学生信息(修改前)===========================\\n");
printf("注:sc1-高数, sc2-程序设计, sc3-数据结构, sc4-计组\\n");
printf("学号\\t姓名\\t班级\\tsc1\\tsc2\\tsc3\\tsc4\\t总成绩\\t平均成绩\\n");
printf("%s\\t",p->num);
printf("%s\\t",p->name);
printf("%s\\t",p->classnum);
for(i=0;i<4;i++)
printf("%0.2lf\\t",(p->score[i]));
printf("%0.2lf\\t",p->total);
printf("%0.2lf\\n",p->average);
printf("请输入修改后的学生学号.姓名.班号与4门课成绩:\\n");
scanf("%s %s %s",Modnum,Modname,Modclassnum);
strcpy(p->num,Modnum);
strcpy(p->name,Modname);
strcpy(p->classnum,Modclassnum);
p->total=0;
for(i=0;i<4;i++)
scanf("%lf",&(Modscore[i]));
p->score[i]=Modscore[i];
if(p->score[i]>=0 && p->score[i]<=100)
p->total+=(p->score[i]);
p->average=p->total/4;
printf("该学生信息修改成功!\\n");
printf("===========================学生信息(修改后)===========================\\n");
printf("注:sc1-高数, sc2-程序设计, sc3-数据结构, sc4-计组\\n");
printf("学号\\t姓名\\t班级\\tsc1\\tsc2\\tsc3\\tsc4\\t总成绩\\t平均成绩\\n");
printf("%s\\t",p->num);
printf("%s\\t",p->name);
printf("%s\\t",p->classnum);
for(i=0;i<4;i++)
printf("%0.2lf\\t",(p->score[i]));
printf("%0.2lf\\t",p->total);
printf("%0.2lf\\n",p->average);
p=p->next;
if(flag==0)
printf("该学生不存在,操作失败!\\n");
/************************************
* 功能描述:学生成绩排名
* 输入参数:学生学号.姓名.班号
* 输出参数:操作提示
*************************************/
void Sortstu(user *L) //学生成绩排名
user *p,*q,*r;
int method;
if(L->is_login==0)
printf("请您先登录!\\n");
else
if(L->is_build==0)
printf("学生成绩单未建立,操作失败!\\n");
else
printf("请选择排序方式:");
printf("1.按科目1成绩排名 2.按科目2成绩排名 3.按科目3成绩排名 4.按科目4成绩排名 5.按总成绩排名\\n");
scanf("%d",&method);
switch(method)
case 1:
p=L->next->next; //p指向第一个节点的后继
L->next->next=NULL; //直接插入排序,第一个元素在有序区,从第二元素起依次插入
while(p!=NULL)
r=p->next; //r指针暂存p的后继
q=L;
while(q->next!=NULL && q->next->score[0]>p->score[0])//查找插入位置
q=q->next; //将p节点链入链表
p->next=q->next;
q->next=p;
p=r;
break;
case 2:
p=L->next->next;
L->next->next=NULL;
while(p!=NULL)
r=p->next;
q=L;
while(q->next!=NULL&&q->next->score[1]>p->score[1])
q=q->next;
p->next=q->next;
q->next=p;
p=r;
break;
case 3:
p=L->next->next;
L->next->next=NULL;
while(p!=NULL)
r=p->next;
q=L;
while(q->next!=NULL&&q->next->score[2]>p->score[2])
q=q->next;
p->next=q->next;
q->next=p;
p=r;
break;
case 4:
p=L->next->next;
L->next->next=NULL;
while(p!=NULL)
r=p->next;
q=L;
while(q->next!=NULL&&q->next->score[3]>p->score[3])
q=q->next;
p->next=q->next;
q->next=p;
p=r;
break;
case 5:
p=L->next->next;
L->next->next=NULL;
while(p!=NULL)
r=p->next;
q=L;
while(q->next!=NULL&&q->next->total>p->total)
q=q->next;
p->next=q->next;
q->next=p;
p=r;
break;
default:
printf("操作失败,请输入正确的项目编号!\\n");
break;
DispStu(L);
/************************************
* 功能描述:输出不及格学生信息
* 输入参数:无
* 输出参数:所有不及格学生信息
*************************************/
void DispFailstu(user *L) //输出不及格学生成绩信息
user *p=L->next;
int i,flag=0; //判断成绩单是否为空的标记
if(L->is_login==0)
printf("请您先登录!\\n");
else
if(L->is_build==0)
printf("学生成绩单未建立,操作失败!\\n");
else
printf("===========================不及格学生成绩信息一览表===========================\\n");
printf("当前不及格学生个数为:%d\\n",FailStunum(L));
printf("注:sc1-高数, sc2-程序设计, sc3-数据结构, sc4-计组\\n");
printf("学号\\t姓名\\t班级\\tsc1\\tsc2\\tsc3\\tsc4\\t总成绩\\t平均成绩\\n");
while(p!=NULL)
for(i=0;i<4;i++)
if(p->score[i]>=0 && p->score[i]<60)
flag=1;
printf("%s\\t",p->num);
printf("%s\\t",p->name);
printf("%s\\t",p->classnum);
for(i=0;i<4;i++)
printf("%0.2lf\\t",(p->score[i]));
printf("%0.2lf\\t",p->total);
printf("%0.2lf\\n",p->average);
p=p->next;
if(flag==0)
printf("无不及格学生成绩信息!\\n");
printf("\\n");
/************************************
* 功能描述:输出学生信息
* 输入参数:无
* 输出参数:所有学生信息
*************************************/
void DispStu(user *L) //输出学生成绩信息
user *p=L->next;
int i;
int flag=0; //判断成绩单是否为空的标记
if(L->is_login==0)
printf("请您先登录!\\n");
else
if(L->is_build==0)
printf("学生成绩单未建立,操作失败!\\n");
else
printf("==============================学生成绩信息一览表==============================\\n");
printf("当前学生个数为:%d\\n",Stunum(L));
printf("注:sc1-高数, sc2-程序设计, sc3-数据结构, sc4-计组\\n");
printf("学号\\t姓名\\t班级\\tsc1\\tsc2\\tsc3\\tsc4\\t总成绩\\t平均成绩\\n");
while(p!=NULL)
flag=1;
printf("%s\\t",p->num);
printf("%s\\t",p->name);
printf("%s\\t",p->classnum);
for(i=0;i<4;i++)
printf("%0.2lf\\t",(p->score[i]));
printf("%0.2lf\\t",p->total);
printf("%0.2lf\\n",p->average);
p=p->next;
if(flag==0)
printf("无学生成绩信息!\\n");
printf("\\n");
Part 4:main.cpp 主函数实现
//朱函数实现部分---------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <windows.h>
#include "systemuser.h"
int choice; //全局变量,选择项目编号
int signal=0; //判断是否再次登录标记,置0
user *L;
void SecMenu(); //副菜单(声明)
void MainMenu() //主菜单
printf("\\n\\n\\n\\n\\n\\n");
printf("************************欢迎进入ytu学生成绩管理系统************************\\n");
printf("\\n\\n");
system("color 8E");
printf("请稍后...\\n");
for(int k=0;k<75;k++)
Sleep(30);
printf(">");
system("cls");
printf("\\n\\n\\n\\n\\n\\n");
printf("************************欢迎进入ytu学生成绩管理系统************************\\n");
printf("\\n\\n");
printf("********************************请选择项目*********************************\\n");
printf("\\n\\n");
printf("**************** 1. 管理员登录 ****************\\n");
printf("**************** 2. 创建学生成绩单 ****************\\n");
printf("**************** 3. 增加学生信息 ****************\\n");
printf("**************** 4. 删除学生信息 ****************\\n");
printf("**************** 5. 修改学生信息 ****************\\n");
printf("**************** 6. 学生成绩查询 ****************\\n");
printf("**************** 7. 学生成绩排名 ****************\\n");
printf("**************** 8. 输出学生成绩信息 ****************\\n");
printf("**************** 9. 输出不及格学生成绩信息 ****************\\n");
printf("**************** 10. 保存操作结果 ****************\\n");
printf("**************** 0. 退出本系统 ****************\\n");
if(signal==0)
StuInit(L);
while(1)
scanf("%d",&choice);
if(choice==0)
printf("您已退出本系统!\\n");
break;
else if(choice==1)
if(L->is_login==1 && signal==1)
printf("您已登录本系统,无需再次登录!\\n");
Sleep(2000);
system("cls");
SecMenu();
else
Login(L);
if(L->is_login==1 && signal==0)
printf("登录成功!\\n");
signal=1; //再次登录标记置1
Sleep(2000);
system("cls");
SecMenu();
else
printf("错误操作次数过多,您已退出本系统!\\n");
break;
else if(choice==2)
CreateStu(L);
Sleep(2000);
system("cls");
SecMenu();
else if(choice==3)
InsertStu(L);
Sleep(2000);
system("cls");
SecMenu();
else if(choice==4)
DeleteStu(L);
Sleep(2000);
system("cls");
SecMenu();
else if(choice==5)
ModifyStu(L);
Sleep(2000);
system("cls");
SecMenu();
else if(choice==6)
FindStu(L);
Sleep(2000);
system("cls");
SecMenu();
else if(choice==7)
Sortstu(L);
Sleep(5000);
system("cls");
SecMenu();
else if(choice==8)
DispStu(L);
Sleep(5000);
system("cls");
SecMenu();
else if(choice==9)
DispFailstu(L);
Sleep(5000);
system("cls");
SecMenu();
else if(choice==10)
Save(L);
Sleep(2000);
system("cls");
SecMenu();
else
printf("请输入正确的项目编号!\\n");
Sleep(2000);
system("cls");
SecMenu();
void SecMenu()
printf("\\n\\n\\n\\n\\n\\n");
printf("************************欢迎进入ytu学生成绩管理系统************************\\n");
printf("\\n\\n");
system("color 8E");
printf("请稍后...\\n");
for(int k=0;k<75;k++)
Sleep(30);
printf(">");
system("cls");
printf("\\n\\n\\n\\n\\n\\n");
printf("************************欢迎进入ytu学生成绩管理系统************************\\n");
printf("\\n\\n");
printf("********************************请选择项目*********************************\\n");
printf("\\n\\n");
printf("**************** 1. 管理员登录 ****************\\n");
printf("**************** 2. 创建学生成绩单 ****************\\n");
printf("**************** 3. 增加学生信息 ****************\\n");
printf("**************** 4. 删除学生信息 ****************\\n");
printf("**************** 5. 修改学生信息 ****************\\n");
printf("**************** 6. 学生成绩查询 ****************\\n");
printf("**************** 7. 学生成绩排名 ****************\\n");
printf("**************** 8. 输出学生成绩信息 ****************\\n");
printf("**************** 9. 输出不及格学生成绩信息 ****************\\n");
printf("**************** 10. 保存操作结果 ****************\\n");
printf("**************** 0. 退出本系统 ****************\\n");
int main()
MainMenu();
return 0;
Part5:运行结果
(1)动态主界面:
(2)管理员登录:
(3)创建学生成绩单:
(4)增加学生信息:
(5)删除学生信息:
(6)修改学生信息:
(7)学生成绩查询:
(8)学生成绩排名:
(9)输出学生成绩信息:
(10)输出不及格学生成绩信息:
(11)保存操作结果:
(12)退出本系统:
PS:因时间与技术水平有限,设计不当与考虑不周之处在所难免。欢迎大家批评指正、提出建设性意见与建议~
以上是关于java课程设计 学生成绩管理的主要内容,如果未能解决你的问题,请参考以下文章
JAVA:编写一个学生成绩管理系统。学生的属性包括学号、姓名、年龄等。