期末课程设计--学生成绩管理系统及开发

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:编写一个学生成绩管理系统。学生的属性包括学号、姓名、年龄等。

c语言学生成绩管理系统设计

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

SQL:选课表(学号,课程号,成绩),现要查询成绩最高的三个学生的学号、课程号和成绩,包括并列情况

JAVA课程设计——学生成绩管理系统

用SQL做了一个学生成绩管理的数据库,怎么查询成绩不及格的学生的学号和姓名啊