数据结构课程设计-学生信息管理系统

/*        
 *          烟台大学计算机与控制工程学院       
 *文件名称:mian.cpp       
 *作    者:王旭       
 *完成日期:2015年12月25日       
 *版 本 号:v1.0     
 *       
 *问题描述:学生信息管理系统 
 *            
 *输入描述:无
 *程序输出:无
 */  


main.cpp:

#include
#include
#include
#include
#include"student.h"
#include
#include
using namespace std;
int main()         //方便后面调用各种函数,多加了一层函数
{
    Welcome();
}

void Welcome()
{
	int num=1;
	Student *head;
	head=(Student *)malloc(sizeof(Student)); //chuan
	head->next=NULL;
	while(num!=7)
	{
	    system("cls");
        cout<<"              ***************欢迎使用学生信息管理系统************"<>num;
	    switch(num)
	    {
            case 1:
                StuIn(head);  //输入学生信息
		        break;
	        case 2:
		        StuSelect(head); //查找学生信息
		        break;
	        case 3:
		        StuAlter(head);  //修改学生信息
		        break;
	        case 4:
		        StuInsert(head); //插入学生信息   (包括头插、尾插)
		        break;
	        case 5:
		        StuDelect(head); //删除学生信息
		        break;
	        case 6:
                StuSave(head);   //保存学生信息
		        break;
            case 7:
                cout<<"欢迎下次使用^-^"<

student.cpp

#include
#include
#include
#include
#include
#include"student.h"
using namespace std;

void StuInHand(Student *head);    //手动输入,由输入函数调用
void StuInFile(Student *head);    //文件输入,由输入函数调用
void StuIn(Student *);            //输入函数,由主函数调用
void Sleep();                     //程序等待一秒
void StuIn(Student *head)         //输入函数,由主函数调用
{
	int num;
	system("cls");
	while(num!=3)
	{
    cout<<"              *******************请选择输入方式******************"<>num;
	    switch(num)
	    {
        case 1:
		     StuInHand(head);     //调用手动输入函数
		     break;
	    case 2:
		     StuInFile(head);     //调用文件输入函数
             break;
        case 3:
             system("cls");       //清屏,重新回到Wlcome
		     Welcome;             //退出输入界面,返回Welcome
		     break;
	    default:
		     cout<<"输入正确的业务代码";
		     break;
	    }
	}
}

void StuSelect(Student *head)  //查找函数,由主函数调用
{
    int s=1;                          //判断函数是否继续进行
	int num;
	while(s!=2)
	{
        cout<<"              ***********************查找系统********************"<>num;
        switch(num)
	    {
            case 1:
                StuFindErg(head);
		        break;
     	    case 2:
                StuFindNum(head);
		        break;
	        default:
		        s=2;
		        break;
	    }
	}
}


void StuAlter(Student *head)   //修改函数,由主函数调用
{
        int num;
	    cout<<"输入想要查找学生的学生号:";
        cin>>num;
		char Sub[10];
	    cout<<"输入想要查找科目:";
        cin>>Sub;
        Student *p=(Student *)malloc(sizeof(Student));
		p=head->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 *head)  //插入函数,由主函数调用
{
    Student *point=(Student *)malloc(sizeof(Student));
    point=head->next;
    while(point->next!=NULL)
        point=point->next;
    int s=1;
    int num;
    while(s!=2)
    {
        cout<<"              **********************插入系统*********************"<>num;
        Student *p=(Student *)malloc(sizeof(Student));
        switch(num)
        {
        case 1:
            StuIm(head,p);
            p->next=head->next;
            head->next=p;
            cout<<"插入成功!"<next=p;
            p->next=NULL;
            cout<<"插入成功!"<>num;
    cout<<"输入想要删除科目:";
    cin>>sub;
    Student *p=(Student *)malloc(sizeof(Student));
    p->next=head->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==head->next->num&&!strcmp(sub,head->next->subject))
            {
                head->next=head->next->next;
            }
            else
            {
			    p->next=p->next->next;
            }
            i=2;
            cout<<"删除成功!"<next;
    }
    if(i==1)
    cout<<"没有该学生信息"<

information.cpp

#include
#include
#include
#include
#include
#include"student.h"
using namespace std;
void StuInFile(Student *head)    //学生成绩管理系统的文件输入函数,由输入函数调用
{
    char filename[10];
    if(head->next!=NULL)
    {
        cout<<"系统已存在信息。请转入插入系统!"<>filename;
    if((fp=fopen(filename,"r"))==NULL)
    {
        cout<<"不能打开文件,请检查是否正确!"<next=NULL;
    fread(p,sizeof(Student),1,fp);
    if(head->next==NULL)
    {
        head->next=p;
        point=p;
    }
    else
    {
        point->next=p;
        point=p;
    }
};
    fclose(fp);
    cout<<"传输成功!"<>filename;
		Student *p=(Student *)malloc(sizeof(Student));
		p=head->next;
		if((fp=fopen(filename,"w"))==NULL)
		 {
             cout<<"找不到该文件!"<next;
		 }
    fclose(fp);
}

In_Out.cpp

#include
#include
#include
#include
#include"student.h"
#include
using namespace std;
void StuOut(Student *p)           //输出函数,将链表某个节点的信息输出
{
    cout<<"学生姓名:";
    cout<name;
    cout<<"学生学号:";
    cout<num;
    cout<<"考试科目:";
    cout<subject;
    cout<<"科目成绩";
    cout<score<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;
}


void StuInHand(Student *head)   //手动输入函数,由输入函数调用
{
      if(head->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(head,p);
			   if(head->next==NULL)
			   {
				   head->next=p;
			       point=p;
			   }
			   else
			   {
			       point->next=p;
				   point=p;
			   }
			   cout<<"是否继续: 1 是,2 否    ";
			   cin>>s;
		   }
	  }
      else
	     {
	         cout<<"系统已存在信息,请转插入系统";
             system("cls");
	     }
}

Find.cpp

#include
#include
#include
#include
#include
#include"student.h"
using namespace std;
void StuFindErg(Student *head)    //遍历函数,由查找函数调用
{
        Student *p=(Student *)malloc(sizeof(Student));
		p=head->next;
		int i=1;
		while(p!=NULL)
		{
			   cout<<"第"<next;
			   i++;
		}
}
void StuFindNum(Student *head)   //查找子函数,由查找函数调用
{
	    int num;
	    cout<<"请输入要查找的学生的学号:";
        cin>>num;
        Student *p=(Student *)malloc(sizeof(Student));
		p=head->next;
		int i=1;
		while(p!=NULL)
		{
			if(num==p->num)
			{
		       StuOut(p);
			   i++;
			}
			   p=p->next;
		}
		 if(i==1)
		 cout<<"没有该学生的信息,请检查输入是否正确!";
}

student.h

#ifndef TEST_H
#define TEST_H
struct Student
{
   char name[10];     //姓名
   char subject[10];  //科目
   int num;           //学号
   int score;         //科目分数
   char email[10];     //邮箱
   Student *next;
};

void Welcome();                     //欢迎界面函数,由main函数调用
void StuSelect(Student *);          //查找函数,由欢迎界面函数调用
void StuAlter(Student *);           //修改函数,由欢迎界面函数调用
void StuInsert(Student *);          //插入函数,由欢迎界面函数调用
void StuDelect(Student *);          //删除函数,由欢迎界面函数调用
void StuSave(Student *);            //存储函数,由欢迎界面函数调用
void StuFindErg(Student *head);     //遍历函数,由查找函数调用
void StuFindNum(Student *head);     //按学号查找函数,由查找函数调用
void StuOut(Student *p);            //输出函数
int StuIm(Student *head,Student *p);//输入函数
void StuIn(Student *);              //输入函数,由欢迎界面函数调用

#endif
程序运行截图

主界面

数据结构课程设计-学生信息管理系统_第1张图片

手动输入成绩

数据结构课程设计-学生信息管理系统_第2张图片

文件输入成绩

数据结构课程设计-学生信息管理系统_第3张图片

文件输入成功

数据结构课程设计-学生信息管理系统_第4张图片

修改成功

数据结构课程设计-学生信息管理系统_第5张图片


删除信息

数据结构课程设计-学生信息管理系统_第6张图片

修改成功

数据结构课程设计-学生信息管理系统_第7张图片

删除成功

数据结构课程设计-学生信息管理系统_第8张图片

退出界面

数据结构课程设计-学生信息管理系统_第9张图片

遍历查找

数据结构课程设计-学生信息管理系统_第10张图片


你可能感兴趣的:(数据结构课程设计-学生信息管理系统)