期末课程设计--学生成绩管理系统及开发
Posted zxt17853535692
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了期末课程设计--学生成绩管理系统及开发相关的知识,希望对你有一定的参考价值。
问题描述及代码:
/*
* 烟台大学计算机与控制工程学院
*文件名称:student
*作 者:张晓彤
*完成日期:2016年12月28日
*版 本 号:v1.0
*
*问题描述:学生成绩管理系统及开发
*
*输入描述:无
*程序输出:无
*/
Find.cpp
#include<stdio.h>
#include<windows.h>//清屏
#include<iostream>
#include<malloc.h>
#include<string.h>
#include"student.h"
using namespace std;
/*******************************************************
功能描述:调用输出函数,将输入的学生成绩信息一一遍历输出
输入参数:1
输出参数:学生姓名、学号、科目、成绩
*******************************************************/
void StuFindErg(Student *L)
Student *p=(Student *)malloc(sizeof(Student));
p=L->next;
int i=1;
while(p!=NULL)
cout<<"第"<<i<<"位学生的信息:"<<endl;
cout<<"学生姓名:";
cout<<p->name;
cout<<"学生学号:";
cout<<p->num;
cout<<"考试科目:";
cout<<p->subject;
cout<<"科目成绩";
cout<<p->score<<endl;
p=p->next;
i++;
/*************************************************
功能描述:通过学生学号,调用输出函数,输出该生信息
输入函数:学号
输出函数:学生姓名、学号、科目、成绩
*************************************************/
void StuFindNum(Student *L)//按学号查找
int num;
cout<<"请输入要查找的学生的学号:";
cin>>num;
Student *p=(Student *)malloc(sizeof(Student));
p=L->next;
int i=1;
while(p!=NULL)
if(num==p->num)
StuOut(p); //调用输出函数
i++;
p=p->next;
if(i==1)
cout<<"没有该学生的信息,请检查输入是否正确!";
/*******************************************************
功能描述:调用输出函数,采用选择排序,按成绩由高到低输出
输入参数:无
输出参数:学生成绩信息
********************************************************/
void Stupaixu(Student *L) //总成绩排名输出
Student exchange,*r,*p,*q;
r=L->next;
if(r==NULL)
printf("暂无学生成绩信息!\\n");
return;
while(r)
p=r;
q=r->next;
while(q)
if(q->score>p->score)
exchange.num=q->num; //先复制q结点信息到exchange
strcpy(exchange.name,q->name);
exchange.score=q->score;
q->num=p->num; //再复制p结点信息到q
strcpy(q->name,p->name);
q->score=p->score;
p->num=exchange.num; //最后复制exchange结点信息到p
strcpy(p->name,exchange.name);
p->score=exchange.score;
q=q->next;
r=r->next;
StuOut(L);
In_Out.cpp
#include<stdio.h>
#include<iostream>
#include<malloc.h>
#include<string.h>
#include"student.h"
#include<stdlib.h>
using namespace std;
/************************************
功能描述:输出学生成绩信息
输入函数:无
输出函数:学生姓名、学号、科目、成绩
************************************/
void StuOut(Student *L)
Student *p=L->next;
while(p!=NULL)
cout<<"学生姓名:";
cout<<p->name;
cout<<"学生学号:";
cout<<p->num;
cout<<"考试科目:";
cout<<p->subject;
cout<<"科目成绩";
cout<<p->score<<endl;
p=p->next;
/*******************************************************
功能描述:将学生成绩等信息由键盘输入,并判断是否重复输入
输入参数:学生姓名、学号、科目、成绩
输出参数:无
*******************************************************/
int StuIm(Student *L,Student *p)
Student *Opinion=(Student *)malloc(sizeof(Student)); //用来判断输入节点中学生学号是否有重复
Opinion=L->next;
cout<<"学生姓名:";
cin>>p->name;
cout<<"学生学号:";
cin>>p->num;
cout<<"考试科目:";
cin>>p->subject;
if(Opinion!=NULL)
if(Opinion->num==p->num&&!strcmp(Opinion->subject,p->subject))
cout<<"该学生该科目已有成绩!";
return 1;
Opinion=Opinion->next;
cout<<"学生成绩:";
cin>>p->score;
return 0;
/*******************************************
功能描述:通过选择,由键盘输入学生成绩等信息
输入参数:1、学生成绩等信息
输出参数:无
*******************************************/
void StuInHand(Student *L)//手动输入函数,由输入函数调用
if(L->next==NULL)
Student *point=(Student *)malloc(sizeof(Student));
point->next=NULL;
int s=1;
while(s==1)
Student *p=(Student *)malloc(sizeof(Student));
p->next=NULL;
StuIm(L,p);
if(L->next==NULL)
L->next=p;
point=p;
else
point->next=p;
point=p;
cout<<"是否继续: 1 是,2 否 ";
cin>>s;
else
cout<<"退出后再进行下一步操作!";
system("cls");
information.cpp
#include<stdio.h>
#include<windows.h>
#include<iostream>
#include<malloc.h>
#include<string.h>
#include"student.h"
using namespace std;
/***********************************************
功能描述:调用输入函数,由文件输入学生成绩等信息
输入参数:文件路径
输出参数:无
*****************************/
void StuInFile(Student *L)
char filename[10];
if(L->next!=NULL)
cout<<"系统已存在信息.请转入插入系统!"<<endl;
return ;
FILE *fp;
cout<<"请输入文件路径(例如C:\\text.txt)";
cin>>filename;
if((fp=fopen(filename,"r"))==NULL)
cout<<"不能打开文件,请检查是否正确!"<<endl;
return;
Student *point=(Student *)malloc(sizeof(Student));
while(!feof(fp))
Student *p=(Student *)malloc(sizeof(Student));
p->next=NULL;
fread(p,sizeof(Student),1,fp);
if(L->next==NULL)
L->next=p;
point=p;
else
point->next=p;
point=p;
;
fclose(fp);
cout<<"传输成功!"<<endl;
/*************************************
功能描述:将学生成绩等信息保存到文件中
输入参数:无
输出参数:无
*************************************/
void StuSave(Student *L)
FILE *fp;
char filename[10];
cout<<"请输入存储的文件名(例如:C:\\text.txt):";
cin>>filename;
Student *p=(Student *)malloc(sizeof(Student));
p=L->next;
if((fp=fopen(filename,"w"))==NULL)
cout<<"找不到该文件!"<<endl;
return;
cout<<"存储成功!"<<endl;
while(p!=NULL)
fwrite(p,sizeof(Student),1,fp);
p=p->next;
fclose(fp);
main.cpp
#include<stdio.h>
#include<iostream>
#include<malloc.h>
#include<string.h>
#include"student.h"
#include<stdlib.h>
#include<windows.h> //百度查询,清屏头文件
using namespace std;
/*********************************************
功能描述:main函数中调用主界面,并显示用户界面
输入参数:数字(0-8)
输出参数:各操作
*********************************************/
int main()
Welcome();
return 0;
void Welcome()
int num;
Student *L;
L=(Student *)malloc(sizeof(Student));
L->next=NULL;
while(num!=7)
system("cls");
cout<<" 欢迎使用学生成绩管理系统 "<<endl;
cout<<" * * * * * * * * * * * * ** "<<endl;
cout<<" *请输入你要使用的业务代码* "<<endl;
cout<<" * * * * * * * * * * * * * * * * * ** * * * * * "<<endl;
cout<<" * 1 输入学生成绩信息 * "<<endl;
cout<<" * 2 查找学生成绩信息 * "<<endl;
cout<<" * 3 修改学生成绩信息 * "<<endl;
cout<<" * 4 插入学生成绩信息 * "<<endl;
cout<<" * 5 删除学生成绩信息 * "<<endl;
cout<<" * 6 保存学生成绩信息 * "<<endl;
cout<<" * 7 总成绩排名输出并退出 * "<<endl;
cout<<" * * * * * * * * * * * * * * * * * ** * * * * * "<<endl;
cin>>num;
switch(num)
case 1:
StuIn(L); //输入学生信息
break;
case 2:
StuSelect(L); //查找学生信息
break;
case 3:
StuAlter(L); //修改学生信息
break;
case 4:
StuInsert(L); //插入学生信息 (包括头插、尾插)
break;
case 5:
StuDelect(L); //删除学生信息
break;
case 6:
StuSave(L); //保存学生信息
break;
case 7:
Stupaixu(L);//总成绩排名输出
break;
default:
cout<<"输入正确地业务序号(⊙o⊙)"<<endl;
break;
student.cpp
#include<stdio.h>
#include<windows.h>
#include<iostream>
#include<malloc.h>
#include<string.h>
#include"student.h"
using namespace std;
void StuInHand(Student *L); //手动输入,由输入函数调用
void StuInFile(Student *L); //文件输入,由输入函数调用
void StuIn(Student *); //输入函数,由主函数调用
/*************************************
功能描述:调用函数,输入学生成绩等信息
输入参数:1、2、3
输出参数:无
*************************************/
void StuIn(Student *L) //输入函数,由主函数调用
int num;
system("cls");
while(num!=3)
cout<<" *******************请选择输入方式******************"<<endl;
cout<<" ** 1 手动输入 2 文件输入 3 退出 **"<<endl;
cout<<" ***************************************************"<<endl;
cin>>num;
switch(num)
case 1:
StuInHand(L); //调用手动输入函数
break;
case 2:
StuInFile(L); //调用文件输入函数
break;
case 3:
system("cls"); //清屏,重新回到Wlcome
Welcome; //退出输入界面,返回Welcome
break;
default:
cout<<"输入正确的业务代码!";
break;
/*****************************************
功能描述:调用查找函数,输出学生成绩等信息
输入参数:1、2、3
输出参数:学生成绩等信息
*****************************************/
void StuSelect(Student *L)
int s=1; //判断函数是否继续进行
int num;
while(s!=2)
cout<<" ***********************查找系统********************"<<endl;
cout<<" ********** 1 遍历 2 学号查找 3 退出 *********"<<endl;
cout<<" ***************************************************"<<endl;
cin>>num;
switch(num)
case 1:
StuFindErg(L);
break;
case 2:
StuFindNum(L);
break;
default:
s=2;
break;
/*********************************
功能描述:按学号修改学生成绩等信息
输入函数:学生学号
输出函数:无
*********************************/
void StuAlter(Student *L)
int num;
cout<<"输入想要查找学生的学生号:";
cin>>num;
char Sub[10];
cout<<"输入想要查找科目:";
cin>>Sub;
Student *p=(Student *)malloc(sizeof(Student));
p=L->next;
int i=1;
while(p!=NULL)
if(num==p->num&&!strcmp(Sub,p->subject))
printf("输入修改成绩:\\n");
scanf("%d",&p->score);
printf("修改成功!\\n");
Sleep(1000);
i++;
p=p->next;
/***************************************************
功能描述:根据选择,由头插法和尾插法进行学生成绩输入
输入参数:学生成绩等信息
输出参数:无
***************************************************/
void StuInsert(Student *L) //插入函数,由主函数调
Student *point=(Student *)malloc(sizeof(Student));
point=L->next;
while(point->next!=NULL)
point=point->next;
int s=1;
int num;
while(s!=2)
cout<<" **********************插入系统*********************"<<endl;
cout<<" **** 1 头插 2 尾插 3 退出 ****"<<endl;
cout<<" ***************************************************"<<endl;
cin>>num;
Student *p=(Student *)malloc(sizeof(Student));
switch(num)
case 1:
StuIm(L,p);
p->next=L->next;
L->next=p;
cout<<"插入成功!"<<endl;
break;
case 2:
StuIm(L,p);
point->next=p;
p->next=NULL;
cout<<"插入成功!"<<endl;
break;
default:
s=2;
break;
/**************************************
功能描述:根据输入的学生学号删除该生
输入参数:学生学号
输出参数:无
**************************************/
void StuDelect(Student *L)
int num;
char sub[10];
cout<<"输入想要删除学生的学生号:";
cin>>num;
cout<<"输入想要删除科目:";
cin>>sub;
Student *p=(Student *)malloc(sizeof(Student));
p->next=L->next;
int i=1;
while(p->next!=NULL)
if(num==p->next->num&&!strcmp(sub,p->next->subject))
StuOut(p->next);
cout<<"是否删除:1 是,2 否 ";
cin>>i;
if(num==L->next->num&&!strcmp(sub,L->next->subject))
L->next=L->next->next;
else
p->next=p->next->next;
i=2;
cout<<"删除成功!"<<endl;
break;
p=p->next;
if(i==1)
cout<<"没有该学生信息!"<<endl;
student.h
#ifndef TEST_H
#define TEST_H
struct Student
char name[10]; //姓名
char subject[10]; //科目
int num; //学号
int score; //分数
Student *next;
;
void Welcome(); //欢迎界面函数,由main函数调用
void StuSelect(Student *); //查找函数,由欢迎界面函数调用
void StuAlter(Student *); //修改函数,由欢迎界面函数调用
void StuInsert(Student *); //插入函数,由欢迎界面函数调用
void StuDelect(Student *); //删除函数,由欢迎界面函数调用
void StuSave(Student *); //存储函数,由欢迎界面函数调用
void StuFindErg(Student *L); //遍历函数,由查找函数调用
void StuFindNum(Student *L); //按学号查找函数,由查找函数调用
void StuOut(Student *L); //输出函数
int StuIm(Student *L,Student *p);//输入函数
void StuIn(Student *); //输入函数,由欢迎界面函数调用
void Stupaixu(Student *L); //总成绩排名输出
#endif
运行结果:
(主界面)
(录入学生成绩等信息)
(学生成绩查询)
(修改信息)
(插入学生成绩信息)
(删除学生成绩信息)
总结及心得:
采用链表。
以上是关于期末课程设计--学生成绩管理系统及开发的主要内容,如果未能解决你的问题,请参考以下文章
JAVA:编写一个学生成绩管理系统。学生的属性包括学号、姓名、年龄等。