欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一个简单的C++课程设计 学生信息管理系统

程序员文章站 2022-05-05 23:12:32
...

C++课程设计(上)

题目:
学生信息管理系统

需求及功能要求:
学生的基本信息:
学号、姓名、年龄、性别、出生年月等
功能:
(1)录入学生信息;
(2)显示学生信息;
(3)修改学生信息;
(4)删除学生信息;
(5)按学号查询学生信息;
(6)按学号对学生信息进行排序;
(7)保存文件;

**环境:**win10+Microsoft Visual Studio 2010

程序实现代码:

#include<iostream>
#include<iomanip>
#include <Windows.h>
#include<fstream>
#include<cstring>
#define Shu 100
using namespace std; 
struct student
{
    int num;
    char name[20];
    int age;
    char sex[6];
	char addr[20];
}x[Shu];
int iFile(struct student b[Shu],int &i,int &z)//向内存写入文件
{
	int j;
	ifstream file1,file2;
	file2.open("Ordinal.txt",ios::in);
	file2>>z;
	i=z;
	if(z==0)
		return 1;
	file1.open("information.txt",ios::in);
	for(j=0;j<i;j++)
	{
		file1>>b[j].num;
		file1>>b[j].name;
		file1>>b[j].age;
		file1>>b[j].sex;
		file1>>b[j].addr;
	}
	file1.close();return 1;
}
void oFile(struct student b[Shu],int i,int z)//向硬盘写入文件
{
	int j;
	ofstream file1,file2;//利用ofstream类的构造函数创建一个文件输出流对象来打开文件
	file2.open("Ordinal.txt",ios::out);
	file2<<i;
	file1.open("information.txt",ios::out|ios::app);
	for(j=z;j<i;j++)
	{
		file1<<b[j].num<<endl;
		file1<<b[j].name<<endl;
		file1<<b[j].age<<endl;
		file1<<b[j].sex<<endl;
		file1<<b[j].addr<<endl;
	}
	file1.close();
}
void oFile1(struct student b[Shu],int i)
{
	int j;
	ofstream file1,file2;
	file2.open("Ordinal.txt",ios::out);
	file2<<i;
	file1.open("information.txt",ios::out);
	for(j=0;j<i;j++)
	{
		file1<<b[j].num<<endl;
		file1<<b[j].name<<endl;
		file1<<b[j].age<<endl;
		file1<<b[j].sex<<endl;
		file1<<b[j].addr<<endl;
	}
	file1.close();
}
int _Input(struct student b[Shu],int &i,int z)// 1.录入学生信息
{
	int j=0;
    char a;
    for(i=z;i<Shu;)
    {
		cout<<"==================================="<<endl;
        cout<<"输入该学生的学号:";
		cin>>b[i].num;
        cout<<"输入该学生的姓名(英文):";
		cin>>b[i].name;
        cout<<"输入该学生的年龄:";
		cin>>b[i].age;
		while(1)
		{
        cout<<"输入该学生的性别(man/woman):";
		cin>>b[i].sex;
		if(strcmp(b[i].sex,"man")==0||strcmp(b[i].sex,"woman")==0)
			break;
		else
			cout<<"您输入的信息有误!请输入 man 或 woman 。"<<endl;
		}
		cout<<"输入该学生的地址(省份和市):";
		cin>>b[i].addr;
		cout<<"===================================="<<endl;
        cout<<"您是否要继续输入(y/n) :";
		i++;
        while(1)
        {
		cin>>a;
        if(a=='y'||a=='Y')
		{
		   system("cls");
           break;
		}
           if(a=='n'||a=='N')
		   { 
			   system("cls");
			return 1;
		   }
        else
		{
			cout<<"您输入的数据有误,请重新输入(y/n):"<<endl;
		}
        }

    }
 return 1;
}
int _Modify(struct student b[Shu],int i)//修改学生信息
{
    int j,k;
	char a;
	while(1)
	{cout<<"=========================================================================================="<<endl;
    cout<<"学生信息为:"<<endl;
    cout<<"序数\t\t学       号|\t|姓       名|\t|年       龄|\t|性       别|\t|地       址(省份和市)|"<<endl;
    for(j=0;j<i;j++)
		cout<<setw(2)<<j+1<<"\t\t"<<setw(11)<<b[j].num<<"\t"<<setw(12)<<b[j].name<<"\t"<<setw(12)<<b[j].age<<"\t"<<setw(12)<<b[j].sex<<"\t"<<setw(22)<<b[j].addr<<endl;
	cout<<"=========================================================================================="<<endl;
		cout<<"请输入需要修改的学生的序数或返回主页面(序数/0)"<<endl;
        cin>>k;
		if(k==0)
		{
			system("cls");
			return 1;
		}
		if(k>0&&k<i)
		
		{
		cout<<"请输入修改后该学生的学号:";
		cin>>b[k-1].num;
        cout<<"请输入修改后该学生的姓名(英文):";
		cin>>b[k-1].name;
        cout<<"请输入修改后该学生的年龄:";
		cin>>b[k-1].age;
		while(1)
		{
        cout<<"请输入该学生的性别(man/woman):";
		cin>>b[k-1].sex;
		if(strcmp(b[k-1].sex,"man")==0||strcmp(b[k-1].sex,"woman")==0)
			break;
		else
			cout<<"您输入的信息有误!请输入 man 或 woman 。"<<endl;
		}
		cout<<"请输入该学生的地址(省份和市):";
		cin>>b[k-1].addr;
		system("cls");
        cout<<"修改后的";
		}
		else
		{
			cout<<"没有此序号!回复任意字符返回:";
			cin>>a;
			system("cls");
		}
	}
 
}
int _Delete(struct student b[Shu],int &i)//删除学生信息
{
	int j,k;
	while(1)
	{cout<<"=========================================================================================="<<endl;
    cout<<"学生信息为:"<<endl;
    cout<<"序数\t\t学       号|\t|姓       名|\t|年       龄|\t|性       别|\t|地       址(省份和市)|"<<endl;
    for(j=0;j<i;j++)
		cout<<setw(2)<<j+1<<"\t\t"<<setw(11)<<b[j].num<<"\t"<<setw(12)<<b[j].name<<"\t"<<setw(12)<<b[j].age<<"\t"<<setw(12)<<b[j].sex<<"\t"<<setw(22)<<b[j].addr<<endl;
	cout<<"=========================================================================================="<<endl;
		cout<<"请输入需要消除的学生的序数或返回主页面(序数/0)"<<endl;
		while(1)
		{
        cin>>k;
		if(k==0)
		{
			system("cls");
			oFile1(b,i);
			return 1;
		}
		if(k>i)
		cout<<"您输入的信息有误!请重新输入(序数/0):";
		else
		{
			for(;k<=i;k++)
			b[k-1]=b[k];
            i--;
		    system("cls");
            cout<<"修改后的";
			break;
		}
		}		
	}
}
int _Query(struct student b[Shu],int i)//通过学号查询学生信息
{ 
	 int a,j;
	 char c;
	 while(1)
	 {
     cout<<"请输入您需要查询的学生的学号:"<<endl;
	 cin>>a;
	 for(j=0;j<i;j++)
		 if(a==b[j].num)
	 {
		 cout<<"=========================================================================================="<<endl;
		 cout<<"该学生的"<<endl;
		 cout<<"序数\t\t学       号|\t|姓       名|\t|年       龄|\t|性       别|\t|地       址(省份和市)|"<<endl;
		 cout<<setw(2)<<j+1<<"\t\t"<<setw(11)<<b[j].num<<"\t"<<setw(12)<<b[j].name<<"\t"<<setw(12)<<b[j].age<<"\t"<<setw(12)<<b[j].sex<<"\t"<<setw(22)<<b[j].addr<<endl;
		 break;
	 }
		 cout<<"=========================================================================================="<<endl;
	 if(j==i)
		cout<<"没有查询到该有关学号的信息。"<<endl;
	 cout<<"是否需要继续查询(y/n)"<<endl;
	  while(1)
        {
		cin>>c;
        if(c=='y'||c=='Y')
		{
			system("cls");
			break;
		}
           if(c=='n'||c=='N')
		   {
				system("cls");
				return 1;
		   }
        else
		{
        cout<<"您输入的数据有误,请重新输入(y/n):"<<endl;
		continue;
		}
        }
	 }

}
int _Display(struct student b[Shu],int i)//显示当前学生信息
{
	char z;
	int j;
	cout<<"=========================================================================================="<<endl;
	cout<<"序数\t\t学       号|\t|姓       名|\t|年       龄|\t|性       别|\t|地       址(省份和市)|"<<endl;
    for(j=0;j<i;j++)
		cout<<setw(2)<<j+1<<"\t\t"<<setw(11)<<b[j].num<<"\t"<<setw(12)<<b[j].name<<"\t"<<setw(12)<<b[j].age<<"\t"<<setw(12)<<b[j].sex<<"\t"<<setw(22)<<b[j].addr<<endl;
	cout<<"回复任意键返回:";
	cin>>z;
	system("cls");
	return 1;
}
int _Sort(struct student b[Shu],int i)//冒泡排序
{
	int j,t;
	struct student x1;
	for(j=0;j<i;j++)
	{	
		for(t=0;t<i-j-1;t++)
		{
			if(b[t].num>b[t+1].num)
			{
			x1=b[t];
			b[t]=b[t+1];
			b[t+1]=x1;
			}
		}
	}
	cout<<"排序后:"<<endl;_Display(b,i);return 1;
}
int main()
{
    int i,z=0;
	char a,c;
	iFile(x,i,z);
    while(1)
    {
    cout<<"**************学生信息管理系统**************"<<endl;
    cout<<"               1.录入学生信息"<<endl;
	cout<<"               2.显示当前学生信息"<<endl;
    cout<<"               3.修改学生信息"<<endl;
    cout<<"               4.删除学生信息"<<endl;
    cout<<"               5.按学号查询学生信息"<<endl;
	cout<<"               6.按学号排序"<<endl;
	cout<<"               7.保存文件"<<endl;
    cout<<"               8.退出管理系统"<<endl;
    cout<<"********************************************"<<endl;
    cout<<"请选择序号:"<<endl;
    cin>>a;
    switch(a)
	{
    case '1':system("cls");_Input(x,i,z);oFile(x,i,z);break;
	case '2':system("cls");_Display(x,i);break;
    case '3':system("cls");_Modify(x,i);break;
    case '4':system("cls");_Delete(x,i);break;
    case '5':system("cls");_Query(x,i);break;
	case '6':system("cls");_Sort(x,i);oFile1(x,i);break;
	case '7':system("cls");oFile1(x,i);cout<<"以保存,输入任意字符返回主菜单:";cin>>c;system("cls");break;
    case '8':exit(0);
    default:system("cls");cout<<"您输入的序号有误!\n输入任意字符返回主菜单";cin>>c;system("cls");
	}}
    return 0;
}

项目截图:
主页面:
一个简单的C++课程设计 学生信息管理系统
显示页面:
一个简单的C++课程设计 学生信息管理系统

相关标签: c++