一个简单的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;
}
项目截图:
主页面:
显示页面:
上一篇: go语言实现一个简单的学生管理系统
下一篇: C语言学生管理系统