数据结构课程设计--学生成绩管理系统

/********************************************************************
*版权所有 (C)2016
*
*文件名称:学生成绩管理系统
*文件标识:无
*内容摘要:简单模拟学生成绩管理过程,
            完成对学生成绩信息的建立、增加、删除、查找、修改等功能
*其他内容:无
*
*当前版本:VC6.0
*作者:车金阳
*完成日期:2017.01.01
*********************************************************************/
#include"head.h"

void cla::sadd()//添加
{
    student *q;
    string name1;
    long num1;
    int x1,y1,z1;
    system("cls");
    cout<<"\n **增加的学生信息** \n"<<endl;
    cout<<"请输入学生的(中间用空格间隔) "<<endl;
    cout<<"姓名 学号 离散数学成绩 数据结构成绩 英语成绩:"<<endl;
    cin>>name1>>num1>>x1>>y1>>z1;
    q=new student(name1,num1,x1,y1,z1);
    q->next=0;
    q->AA=x1+y1+z1;
    if(stu)
    {
        student *t;
        t=stu;
        if(t->num==num1)
        {
            cout<<"学号已存在,请重新输入"<<endl;
            return;
        }
        while(t->next)
        {
            if(t->num==num1)
            {
                cout<<"学号已存在,请重新输入"<<endl;
                return;
            }
            t=t->next;
        }
        t->next=q;
    }
    else
    {
        stu=q;
    }
    cout<<"输入完毕"<<endl;
}
void cla::sremove()//删除
{
    system("cls");
    int num1;
    cout<<"\n** 删除学生信息 **\n";
    cout<<"请输入想要删除学生的学号:";
    cin>>num1;//查找要删除的结点
    student *p1,*p2;
    p1=stu;
    while(p1)
    {
        if(p1->num==num1)
            break;
        else
        {
            p2=p1;
            p1=p1->next;
        }
    }
//删除结点
    if(p1!=NULL)//若找到结点,则删除
    {
        p1->play();
        cout<<"确定删除吗?[Y/N]"<<endl;
        char c;
        cin>>c;
        if(toupper(c)!='Y') return;

        if(p1==stu) //若要删除的结点是第一个结点
        {
            stu=p1->next;
            delete p1;
        }
        else //若要删除的结点是后续结点
        {
            p2->next=p1->next;
            delete p1;
        }
        cout<<"找到学号为"<<num1<<"的学生,并删除\n";
    }
    else //未找到结点
        cout<<"未找到想要删除的学生!\n";
}
void cla::samend()//修改
{
    system("cls");
    long num1;
    cout<<"\n** 修改学生信息 **\n";
    cout<<"输入要修改学生的学号";
    cin>>num1;
//查找要修改的结点
    student *p1,*p2;
    p1=stu;
    while(p1)
    {
        if(p1->num==num1)
            break;
        else
        {
            p2=p1;
            p1=p1->next;
        }
    }
    if(p1!=NULL)
    {
        cout<<"学号是"<<num1<<"的学生的信息"<<endl;
        cout<<"姓名 "<<p1->name<<"数学"<<p1->x<<"语文"<<p1->y<<"英语"<<p1->z<<endl;
        cout<<"请输入修改后的信息:姓名 离散数学成绩 数据结构成绩 英语成绩"<<endl;
        cin>>p1->name>>p1->x>>p1->y>>p1->z;
        p1->AA=p1->x+p1->y+p1->z;
        cout<<"修改成功"<<endl;
    }
    else //未找到接点
        cout<<"未找到!\n";
}
void cla::ssearch()//查询
{
    system("cls");
    cout<<"\n** 查询学生信息 **\n"<<endl;
    cout<<"请输入查询方式:"<<endl;
    cout<<"1.按学号查询"<<endl;
    cout<<"2.按姓名查询"<<endl;
    cout<<"3.返回"<<endl;
    char c;
    cin>>c;
    switch (c)
    {
    case '1':
    {
        long num1;
        cout<<"要查询的学号"<<endl;
        cin>>num1;
//查找要查询的结点
        student *p1,*p2;
        p1=stu;
        while(p1)
        {
            if(p1->num==num1)
                break;
            else
            {
                p2=p1;
                p1=p1->next;
            }
        }

        if(p1!=NULL)
        {
            cout<<"学号是"<<num1<<"的学生的信息"<<endl;
            cout<<"姓名:"<<p1->name<<" 离散数学:"<<p1->x<<" 数据结构:"<<p1->y<<" 英语:"<<p1->z<<endl;
            cout<<"查询完毕...";
        }
        else //未找到接点
            cout<<"未找到!\n";
        break;
    }
    case '2':
    {
        string name1;
        cout<<"要查询的学生姓名"<<endl;
        cin>>name1;
//查找要查询的结点
        student *p1,*p2;
        p1=stu;
        while(p1)
        {
            if(p1->name==name1)
                break;
            else
            {
                p2=p1;
                p1=p1->next;
            }
        }

        if(p1!=NULL)
        {
            cout<<name1<<"的学生的信息"<<endl;
            cout<<"学号:"<<p1->num<<" 离散数学:"<<p1->x<<" 数据结构:"<<p1->y<<" 英语:"<<p1->z<<endl;
            cout<<"查询完毕...";
        }
        else //未找到接点
            cout<<"未找到!\n";
        break;
    }
    case '3':
        return;
    }

}
void cla::pxh() //按学号排序
{
    student *p1,*p2;
    int n;
    p1=stu;
    n=1;
    while(p1->next)
    {
        n++;
        p1=p1->next;
    }
    cout<<"共有"<<n<<"条信息..."<<endl;
    int i;
    p1=stu;
    for(i=1; i<n; i++)
    {
        p1=stu;
        if (p1->num>p1->next->num) // 如果头结点大于第二个的
        {
            p2=p1->next;
            p1->next=p1->next->next;
            p2->next=p1; //头结点交换
            stu=p2;
        }
        p1=stu;
        while(p1->next->next) //中间的交换
        {
            p2=p1;
            p1=p1->next;
            if(p1->num>p1->next->num)
            {
                p2->next=p1->next;
                p1->next=p1->next->next;
                p2->next->next=p1;
                p1=p2->next; //交换
            }
        }
    }

    p1=stu;
    do
    {
        p1->play();
        p1=p1->next;
    }
    while(p1);
}
void cla::pAA()//按总分排序
{
    student *p1,*p2;
    int n;
    p1=stu;
    n=1;
    while(p1->next)
    {
        n++;
        p1=p1->next;
    }
    cout<<"共有"<<n<<"条信息..."<<endl;
    int i;
    p1=stu;
    for(i=1; i<n; i++)
    {
        p1=stu;
        if (p1->AA>p1->next->AA) // 如果头结点大于第二个的
        {
            p2=p1->next;
            p1->next=p1->next->next;
            p2->next=p1; //头结点交换
            stu=p2;
        }
        p1=stu;
        while(p1->next->next) //中间的交换
        {
            p2=p1;
            p1=p1->next;
            if(p1->AA>p1->next->AA)
            {
                p2->next=p1->next;
                p1->next=p1->next->next;
                p2->next->next=p1;
                p1=p2->next; //交换
            }
        }
    }
    p1=stu;
    do
    {
        p1->play();
        p1=p1->next;
    }
    while(p1);
}

void cla::staxis()//排序
{

    system("cls");
    char c;
    cout<<"请选择以何种方式排序:"<<endl;
    cout<<"1……以学号排序"<<endl;
    cout<<"2……以总分排序"<<endl;
    cout<<"3……返回"<<endl;
    cout<<"请选择(1-3)"<<endl;
    cin>>c;

    switch (c)
    {
    case '1':
        pxh();
        break;
    case '2':
        pAA();
        break;
    case '3':
        return;
    }
}


#include"head.h"


int  main()
{
	char c;
	cla a;
	do
	{
		cout<<"\n 学 生 成 绩 管 理 系 统 \n";
		cout<<"**************************************\n";
		cout<<"*            1……增加学生信息       *\n";
		cout<<"*            2……删除学生信息       *\n";
		cout<<"*            3……修改学生信息       *\n";
		cout<<"*            4……查询学生信息       *\n";
		cout<<"*            5……排序学生信息       *\n";
		cout<<"*            6……退出               *\n";
		cout<<"**************************************\n";
		cout<<"请选择(1-6):";
		cin>>c;
		//以下进行条件选择
		switch(c)
		{
		case '1': a.sadd();break;
		case '2': a.sremove();break;
		case '3': a.samend();break;
		case '4': a.ssearch();break;
		case '5': a.staxis();break;
		}
		
	}
	while(c!='6');
	return 0;
}

#include<iostream>
#include<iomanip>
#include<string>
#include<windows.h>
using namespace std;

#define max 500

class student
{

private:
	
    string name;//姓名
	long num;//学号
	int x,y,z;//离散数学,数据结构,英语
	int AA;//总分
	student *next;
	friend class cla;
public:

	void play(){cout<<name<<"学生的学号是"<<num<<",离散数学:"<<x<<",数据结构:"<<y<<",英语:"<<z<<",总分:"<<AA<<endl;};
	student(string sname,long snum,int sx,int sy,int sz)
	{
		name=sname;
		num=snum;
		x=sx;
		y=sy;
		z=sz;
	}
};


class cla
{
public:
	cla()//构造函数
	{
		stu=0;
	}
	~cla()//析构函数
	{
		student *p;
		p=stu;
		while(p)
		{
			p=p->next;
			delete stu;
			stu=p;
		}
		stu=0;
	}
	void sadd(); //添加
	void sremove(); //删除
	void samend(); //修改
	void ssearch(); //查询
	void staxis(); //排序 .

	//排序函数
	void pxh();
	void pAA();
private:
	student *stu; //头接点
};


摘 要 高校学生成绩管理工作是高等教育中的一个极为重要的环节,是院校学生管理的基础。面对种类繁多的数据和报表,手工处理方式已经很难跟上现代化管理的步伐,传统的文件管理方式进行成绩管理,效率很低,耗时费力,容易出错,安全性也存在问题。特别是在查询上,由于文件过多,带来很多不便。随着计算机及通讯技术的飞速发展,高等教育对教务管理工作提出了更高的要求。尽快改变传统的管理模式,运用现代化手段进行科学管理。 本设计研究的是基于J2EE的高校成绩管理系统的设计与实现。本系统是基于J2EE开发的成绩管理系统,弥补了人工管理的不足,提高了一定的效率。主要功能包括教师对学生成绩的记录,生成总评成绩成绩单的提交。学生查询相关的成绩信息。管理员对学生、教师,课程、班级进行综合管理。该系统为教务处人员提供了强大的成绩管理功能,为教师提供了对平时成绩和期末成绩方便的管理,为学生提供了一个方便快捷的查询功能。本设计的开发工具使用MyEclipse,数据库使用的MySQL,框架是struts整合hibernate。 关键词:J2EE; 成绩管理; MySQL; MyEclipse Abstract College student grade management is a very important aspect of higher education,is the foundation of college students management. Faced with a wide variety of data and statements, the manual processing methods have been difficult to keep up with the pace of modern management, the traditional document management about grade management, is inefficient, time-consuming effort, error-prone, and also existing security issues. Because too many documents, it brings a lot of inconvenience in the query. With the computer and the rapid development of communication technology, higher education must meet a higher demand. We should change the traditional mode of management and use modern means of scientific management as soon as possible. The design based on J2EE technology mainly research about Implementation of grade management system of universities. The system is based on J2EE platform, cover the deficiencies of manual management, and improve the efficiency of management. Main features including: teachers record the grade of students in the term examines, generate the report card to examine. Students can query their information at any time with this system. Administrator can manage the students, teachers, curriculum, classes together. The system for the Registry staff with a powerful performance management capabilities, provide teachers with the usual results and final results for the management, provide students with a convenient and efficient enquiry function. The development tools is MyEclipse, database is MySQL, integrated framework is struts and hibernate. Key words: J2EE; Grade Management; MySql; MyEclipse 目 录 Abstract II 1 绪论 1 1.1高校学生成绩管理系统实施的背景分析 1 1.2选题的目的及意义 1 2 J2EE平台及其支撑技术 3 2.1 J2EE平台 3 2.1.1 J2EE简介 3 2.1.2 JSP技术 5 2.1.3 Servlet技术 7 2.1.4 EJB技术 8 2.1.5 J2EE发展趋势 9 2.2 MVC模式介绍 10 2.3 Struts框架介绍 14 2.4 Hibernate框架介绍 16 3 基于J2EE技术平台的学生成绩管理分析 18 3.1系统可行性分析. 18 3.1.1技术可行性 18 3.1.2经济可行性 18 3.1.3运行可行性 18 3.2系统需求分析 18 3.3系统整体说明 19 3.4系统模块的功能概述 19 4 系统总体设计 20 4.1.系统结构图 20 4.1.1包组织结构图 20 4.3数据流程图设计 21 4.4.1 E-R图 22 4.3主要功能模块的设计 22 4.2.1用户登录模块设计 22 4.2.2管理管理模块设计 23 4.2.3教师成绩录入和修改模块设计 23 4.2.4学生管理模块设计 23 5 基于J2EE技术平台的系统详细设计 24 5.1数据库详细设计 24 5.1.1 数据库需求分析 24 5.1.2 数据库概念结构设计 25 5.1.3 数据库逻辑结构设计 26 5.1.4 数据库结构的实现 28 5.1.5数据库模型 30 6 系统编码与测试 31 6.1系统编码说明 31 6.1.1系统配置文件 31 6.1.2系统运行效果图示. 35 6.1.3系统主要功能模块详细实现 40 6.1.3.1管理管理模块详细介绍 40 6.1.3.2管理管理模块代码说明 40 6.2 系统开发环境的搭建 47 6.2.1软件环境的配置 47 6.2.2硬件环境的配置 47 6.3系统性能测试 47 6.3.1安全性测试 47 6.3.2稳定性测试 47 7 总结与展望 48 7.1总结 48 7.2展望 48 参考文献: 49 致谢 49
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值