课程设计-学生信息管理系统

  1. /*   
  2.  * Copyright (c) 2016, 烟台大学计算机与控制工程学院   
  3.  * All rights reserved。   
  4.  * 文件名称 :1.cpp   
  5.  * 作    者 :孟令群   
  6.  * 完成日期 :2017年7月1日   
  7.  * 版 本 号 :v1.0   
  8.  * 问题描述 : 
  9.  * 输出描述 : 
  10.  */  
2.h
#ifndef TEST_H  
#define TEST_H  
struct Student  
{  
   char name[10];     //姓名 
   int  num;          //学号
   char xingbie[10];  //性别 
   int  age;          //年龄  
   int  shengri;      //出生年月  
   char address[10];  //地址 
   int  phone;        //电话
   Student *next;  
};  
  
void StuSelect(Student *);          //查找函数
void StuAlter(Student *);           //修改函数 
void StuInsert(Student *);          //插入函数
void StuDelect(Student *);          //删除函数
void StuFindErg(Student *head);     //遍历函数
void StuFindNum(Student *head);     //按学号查找函数,由查找函数调用  
void StuOut(Student *p);            //输出函数  
void StuIm(Student *head,Student *p);//输入函数  
void StuIn(Student *);              //输入函数
void StuSave(Student *head);    //存储函数
void StuInFile(Student *head);    //学生成绩管理系统的文件输入函数,由输入函数调用 
#endif  

3.cpp
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include<windows.h>
#include<string.h>
#include<string>
#include<fstream>
#include"conio.h"
#include "2.h"
using namespace std;
int j=0,q=0;//j表示学生总数,q用来判断学生学号重复
/**************************************/
/*              判断重复              */
/**************************************/
void StuIm(Student *head,Student *p)
{  		   
	Student *Opinion=(Student *)malloc(sizeof(Student));         //用来判断输入节点中学生号是否有重复  				   
	Opinion=head->next;               //
	cout<<"学生姓名:";                
	cin>>p->name;               
	cout<<"学生学号:";	           
	cin>>p->num;
	cout<<"学生性别:";			   
	cin>>p->xingbie;     
	cout<<"学生年龄:";                
	cin>>p->age;               
	cout<<"学生出生年月:";	           
	cin>>p->shengri;
	cout<<"学生地址:";			   
	cin>>p->address;
	cout<<"学生电话:";                
	cin>>p->phone;               
	if(Opinion!=NULL)  			   
	{   			     
		for(int b=1;b<=j;b++)			   
		{                    
			if(Opinion->num==p->num)  		//对比学号
			{  					 
				q=1;                   
				cout<<"该学生已录入";
				j--;
				Sleep(1000);                   				
				break;  				  
			}				  
			Opinion=Opinion->next;			   
		}                   
										   
	} 
	
}
/**************************************/
/*              输入函数              */
/**************************************/
void StuIn(Student *head)
{
	if(head->next!=NULL)//判断头结点是否为空  
    {  
		cout<<"共有"<<j<<"名学生"<<endl;
        cout<<"系统已存在信息。请转入插入系统!"<<endl;  
		Sleep(1000);
        return ;  
    }  
//	Student *Opinion=(Student *)malloc(sizeof(Student)); //用于判断是否重复而定义          
//	Opinion=head->next;
	Student *point=(Student *)malloc(sizeof(Student));  //
    point->next=NULL;  
    int s=1;  
    while(s==1)  
	{  
	   cout<<"共有"<<j<<"名学生"<<endl;
       Student *p=(Student *)malloc(sizeof(Student));  
       p->next=NULL;  
       StuIm(head,p);			   
       if(q!=1) 
	   {
	   if(head->next==NULL)  
		 {  
            head->next=p;  
            point=p;  
		 }  
         else  
		 {  
            point->next=p;  
            point=p;  
		 }  
	   }
			j++;
            cout<<"是否继续: 1 是,2 否    "<<endl;  
            cin>>s;  
	}  
}
/**************************************/
/*              查找函数              */
/**************************************/
void StuSelect(Student *head) 
{  
    int s=1;                          //判断函数是否继续进行  
    int num;  
    while(s!=2)  
    { 
		system("cls");
        cout<<"               查找学生信息系统   "<<endl;  
        cout<<"              【1】 全部学生信息列表"<<endl;
        cout<<"              【2】 学号查找学生信息"<<endl;    
	    cout<<"              【3】 退出            "<<endl;  
        cin>>num;  
        switch(num)  
        {  
            case 1:  
                StuFindErg(head);  //遍历函数
                break;  
            case 2:  
                StuFindNum(head);  //查找函数
                break;  
            default:  
                s=2;  
                break;  
        }  
    }  
} 
/**************************************/
/*              遍历函数              */
/**************************************/
void StuFindErg(Student *head)    //遍历函数,由查找函数调用  
{  
        Student *p=(Student *)malloc(sizeof(Student));  
        p=head->next;  
        int i=1;  
        while(p!=NULL)  
        {  
               cout<<"第"<<i<<"位学生的信息:"<<endl;  
               StuOut(p); 
			   cout<<endl;
               p=p->next;  
               i++;  
        }
		cout<<"按任意键退出"<<endl;
		getch();

} 
/**************************************/
/*            查找子函数              */
/**************************************/ 
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); 
			   cout<<endl;
               i++;  
            }  
               p=p->next;  
        }  
         if(i==1)  
         cout<<"没有该学生的信息,请检查输入是否正确!"<<endl;  
		 cout<<"按任意键退出"<<endl;
		 getch();
}  
/**************************************/
/*              输出函数              */
/**************************************/
void StuOut(Student *p)           //输出函数,将链表某个节点的信息输出  
{  
    cout<<"学生姓名:";                
	cout<<p->name;               
	
	cout<<"学生学号:";	           
	cout<<p->num;
	
	cout<<"学生性别:";			   
	cout<<p->xingbie;     
	
	cout<<"学生年龄:";                
	cout<<p->age;               
	
	cout<<"学生出生年月:";	           
	cout<<p->shengri;
	
	cout<<"学生地址:";			   
	cout<<p->address;
	
	cout<<"学生电话:";                
	cout<<p->phone;
}  
/**************************************/
/*              修改函数              */
/**************************************/
void StuAlter(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);
			   cout<<endl;
               printf("输入修改信息:\n");

			   cout<<"学生姓名:";                
	           cin>>p->name;               
	           
			   cout<<"学生学号:";	           
	           cout<<p->num<<endl;	   
			   
			   cout<<"学生性别:";			   
	           cin>>p->xingbie;
			   
			   cout<<"学生年龄:";                
	           cin>>p->age;               
	           
			   cout<<"学生出生年月:";	           
	           cin>>p->shengri;
	           
			   cout<<"学生地址:";			   
	           cin>>p->address;
			   
			   cout<<"学生电话:";
			   cin>>p->phone;
               
			   printf("修改成功\n");  
               Sleep(1000);  
               i++;  
            }  
               p=p->next;  
  
        } 
		if(i==1)  
        cout<<"没有该学生的信息,请检查输入是否正确!"<<endl; 
		cout<<"按任意键退出"<<endl;
		getch();
}  
/**************************************/
/*              插入函数              */
/**************************************/
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<<"                    插入学生信息系统     "<<endl;  
        cout<<"                    【1】 从头插入学生信息    "<<endl;      
		cout<<"                    【2】 从后插入学生信息    "<<endl;       
		cout<<"                    【3】 退出插入学生信息系统"<<endl;    
        cin>>num;  
        Student *p=(Student *)malloc(sizeof(Student));  
        switch(num)  
        {  
		
        case 1:  
            StuIm(head,p); //查重
			if(q==1) 
			{
				j++;
				cout<<"插入失败"<<endl;
				break;
			}
            p->next=head->next;  //头插
            head->next=p;  
            cout<<"插入成功!"<<endl;  
			Sleep(1000);
            break;  
        case 2:  
            StuIm(head,p); 
			if(q==1)
			{
				j++;
				cout<<"插入失败"<<endl;
			    break;
			}
            point->next=p;  //尾插
            p->next=NULL;  
            cout<<"插入成功!"<<endl; 
			Sleep(1000);
            break;  
        default:  
            s=2;  
            break;  
        }  
    }  
}  
/**************************************/
/*              删除函数              */
/**************************************/
void StuDelect(Student *head)  //删除函数,由主函数调用  
{  
    int num;    
    cout<<"输入想要删除学生的学生号:";  
    cin>>num;   
    Student *p=(Student *)malloc(sizeof(Student));  
    p->next=head->next;  
    int i=1;  
    while(p->next!=NULL)  
    {  
        if(num==p->next->num)  
        {  
            StuOut(p->next);  
            cout<<"是否删除:1 是,2 否     ";  
            cin>>i;  
            if(num==head->next->num)  //如果为头结点
            {  
                head->next=head->next->next;  
            }  
            else  
            {  
                p->next=p->next->next;  
            }  
            i=2;  
			j--;
            cout<<"删除成功!"<<endl; 
			Sleep(1000);
            break;  
        }  
        p=p->next;  
    }  
    if(i==1)  
    cout<<"没有该学生信息"<<endl;
	Sleep(1000);
}  
/**************************************/
/*              存储函数              */
/**************************************/
void StuSave(Student *head)    //存储函数,由主函数调用  
{  
	    FILE *fp;  
        char filename[10];  
        cout<<"请输入存储的文件名(例如:C:\text.txt):";  
        cin>>filename;  
        Student *p=(Student *)malloc(sizeof(Student));  
        p=head->next;  
        if((fp=fopen(filename,"w"))==NULL)  
         {  
             cout<<"找不到该文件!"<<endl;  
			 Sleep(1000);
             return;  
         }  
        cout<<"存储成功!"<<endl; 
		Sleep(1000);
        while(p!=NULL)  
        {  
             fwrite(p,sizeof(Student),1,fp);  
             p=p->next;  
         }  
		ofstream out("d.txt",ios::out);
        
		out<<j<<endl;
        fclose(fp);
	    out.close();
	
}  
/**************************************/
/*            文件输入函数            */
/**************************************/
void StuInFile(Student *head)    //学生成绩管理系统的文件输入函数,由输入函数调用  
{ 
	char filename[10];  
    if(head->next!=NULL)  
    {  
        cout<<"系统已存在信息。请转入插入系统!"<<endl;  
		Sleep(1000);
        return ;  
    }  
    FILE *fp;  
    cout<<"请输入文件路径(例如C:\\text.txt)";  
    cin>>filename;  
    if((fp=fopen(filename,"r"))==NULL)  
    {  
        cout<<"不能打开文件,请检查是否正确!"<<endl;  
		Sleep(1000);
        return;  
    }  
    Student *point=(Student *)malloc(sizeof(Student));  
    //while(!feof(fp))
	ifstream in("d.txt",ios::in);
	in>>j;
    /*cout<<j;
	Sleep(2000);*/
	int c=0;
	for(c=1;c<=j;c++)
	{
      Student *p=(Student *)malloc(sizeof(Student));  
      p->next=NULL;
      fread(p,sizeof(Student),1,fp); 
    if(head->next==NULL)  
    {  
        head->next=p;  
        point=p;  
    }  
    else  
    {  
        point->next=p;  
        point=p;  
    }  
	}  
	cout<<"传输成功!"<<endl;
	Sleep(1000);
    fclose(fp);  
	in.close();  
}  


4.cpp
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include<windows.h>
#include<string.h>
#include<fstream>
#include"conio.h"
#include "2.h"
using namespace std;
int main()
{
	int num=1;  
    Student *head;  
    head=(Student *)malloc(sizeof(Student)); //chuan  
    head->next=NULL;  
    while(num!=8)  
    {  
        system("cls");  
        cout<<"                           欢迎使用学生信息管理系统 "<<endl;
        cout<<"                           请输入你要使用的业务代码 "<<endl;
        cout<<"                           【1】 输入学生信息           "<<endl;
		cout<<""<<endl;
		cout<<"                           【2】 查找学生信息           "<<endl;
		cout<<""<<endl;
		cout<<"                           【3】 修改学生信息           "<<endl;
        cout<<""<<endl;
		cout<<"                           【4】 插入学生信息           "<<endl;
		cout<<""<<endl;
		cout<<"                           【5】 删除学生信息           "<<endl;
		cout<<""<<endl;
        cout<<"                           【6】 保存学生信息           "<<endl;	
		cout<<""<<endl;
		cout<<"                           【7】 读入学生信息           "<<endl;
		cout<<""<<endl;
		cout<<"                           【8】 退出学生管理系统       "<<endl;  
        cin>>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:
				StuInFile(head);
				break;
			case 8: 
                cout<<"欢迎下次使用^-^"<<endl;  
                Sleep(1000);  
                exit(0);  
                break; 
            default:  
                cout<<"请输入正确的业务序号"<<endl;  
				Sleep(1000);
                break;  
        }  
  
    };
	return 0;
}
运行结果:










猜你喜欢

转载自blog.csdn.net/mlq9527/article/details/53966201