linux下c/c++實例之十五簡單的學(xué)生信息管理系統(tǒng)
來源:程序員人生 發(fā)布時間:2016-06-20 07:46:33 閱讀次數(shù):2437次
1、簡介
大學(xué)期間用vc++開發(fā)的簡單的學(xué)生信息管理系統(tǒng),主要有添加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息、查詢學(xué)生信息、顯示學(xué)生信息、綜合統(tǒng)計(各課程平均成績和合格率)、總分排序和退出系統(tǒng)。設(shè)計:



2、詳解
1、代碼
(1)main.cpp#include<iostream>
#include<fstream>
#include<iomanip> //使用setw()函數(shù)
#include<windows.h> //使用system()函數(shù)
#include<conio.h> //使用getch(),輸入任意字符
#include <string> //使用strcpy()函數(shù)
using namespace std;
void baocun();//保存信息
int n=0; //全局變量,記錄學(xué)生總?cè)藬?shù)。
char mi[]="1987"; //初始密碼
class student //學(xué)生類
{
public:
int num; //學(xué)生學(xué)號
char name[10];//學(xué)生姓名
char sex[4];//學(xué)生性別
char classroom[10];//學(xué)生班級
double a,b,c; //3門課的成績
double sum; //記錄個人3門課的總成績
}stu[100],paixu[100],wo[100];//聲明對象
class school:public student
{
public:
//聲明函數(shù)原型
void input(); //添加學(xué)生信息
void add(); //增加學(xué)生
void del(); //刪除學(xué)生信息
void alt(); //修改學(xué)生信息
void find(); //查詢學(xué)生信息
void disp(); //顯示學(xué)生信息
void cal(); //綜合統(tǒng)計(各課程平均成績和合格率)
void xu(); //總分排序
void back(); //返回主界面
void gai(); //修改密碼
void start(); //管理操作
};
//主函數(shù)
void main()
{
school A;
char a;char c[20];char m[20];
system("cls");//清屏 DOC調(diào)用
system("color 1F"); //色彩 調(diào)用doc
cout<<setw(45)<<"您想進入學(xué)生管理系統(tǒng)?"<<endl;
cout<<"若進入請按Y,若不進入請按N."<<endl;
cin>>a;
if(a=='Y'||a=='y')
{ cout<<setw(20)<<"0、退出."<<setw(15)<<"1、登陸."<<setw(20)<<"2、修改密碼."<<endl;
cout<<"請輸入操作選擇:";
int j;
cin>>j;
if(j>3||j<0) //輸入超越范圍控制
{
cout<<"輸入有誤!"<<endl;
A.back();
}
switch(j)
{
case 1:break;
case 2:A.gai();break;
case 0:exit(0);break;
default:cout<<"你的輸入有誤!\n";
}
system("cls");//清屏 doc調(diào)用
system("color 3F"); //色彩 一樣是調(diào)用doc
cout<<"請輸入您的賬號:";cin>>c;
cout<<"請輸入您的密碼:";cin>>m;
if(strcmp(m,mi)==0&&strcmp(c,"admin")==0)
{ A.start();}
else //賬號、密碼輸入的毛病提示
{
if(strcmp(c,"admin")!=0)
cout<<"賬號輸入有誤,請重新輸入!"<<endl;
if(strcmp(m,mi)!=0)
cout<<"密碼輸入有誤,請重新輸入!"<<endl;
cout<<"按任意鍵返回"<<endl;
getch();
main();
}
}
else //退出系統(tǒng)
{
cout<<"謝謝您的關(guān)顧!"<<endl;
exit(0);
}
}
void school::start()
{
system("cls");//清屏 DOC調(diào)用
system("color 2F"); //色彩 調(diào)用doc
cout<<setw(45)<<"歡迎進入學(xué)生管理系統(tǒng)!"<<endl;
cout<<setw(35)<<"1、添加學(xué)生信息 ,并保存."<<setw(30)<<"2、刪除學(xué)生信息,并保存."<<endl;
cout<<setw(34)<<"3、修改學(xué)生信息,并保存."<<setw(24)<<"4、查詢學(xué)生信息."<<endl;
cout<<setw(27)<<"5、顯示學(xué)生信息."<<setw(53)<<"6、綜合統(tǒng)計(各課程平均成績和合格率.)"<<endl;
cout<<setw(23)<<"7、總分排序."<<setw(31)<<"8、增加學(xué)生."<<endl;
cout<<setw(23)<<"0、退出系統(tǒng)."<<endl;
cout<<"請輸入操作選擇:";
int i;
cin>>i;
if(i>9||i<0) //操作控制
{
cout<<"輸入有誤!"<<endl;
school::back();
}
switch(i)
{
case 1:school::input();break;
case 2:school::del();break;
case 3:school::alt();break;
case 4:school::find();break;
case 5:school::disp();break;
case 6:school::cal();break;
case 7:school::xu();break;
case 8:school::add();break;
case 0:exit(0);break;
default:cout<<"你的輸入有誤!\n";
}
}
void school::input() //添加學(xué)生
{
system("color 1F"); //色彩 調(diào)用doc
system("cls");//清屏
cout<<"請輸入要添加的學(xué)生個數(shù):(0⑴00)";
cin>>n;
if(n>=100||n<=0)
{
cout<<"輸入有誤!"<<endl;
cout<<"按任意鍵返回"<<endl;
getch();
input();
}
else
{
cout<<"****注意:輸入學(xué)號為整數(shù)!!性別只能為男或女!!輸入的成績?yōu)?⑴00!!****"<<endl;
cout<<"**********************************************"<<endl;
for(int i=0;i<n;i++)
{
cout<<"請輸入第"<<i+1<<"個同學(xué)的信息:"<<endl;
cout<<"學(xué)號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(10)
<<"英語成績"<<setw(10)<<"C++成績"<<setw(10)<<"數(shù)學(xué)成績"<<endl;
cin>>stu[i].num; cin>>stu[i].name;
cin>>stu[i].sex; cin>>stu[i].classroom;
cin>>stu[i].a; cin>>stu[i].b;
cin>>stu[i].c;
if(stu[i].num<=0&&stu[i].num<2147483647)
{cout<<"學(xué)號輸入有誤,請重新輸入.\n" ;
cout<<"按任意鍵返回"<<endl;
getch();school::input();}
if(strcmp(stu[i].sex,"nan")!=0&&strcmp(stu[i].sex,"nv")!=0)
{cout<<"性別輸入有誤,請重新輸入.\n";
cout<<"按任意鍵返回"<<endl;
getch();school::input();}
if(stu[i].a<0||stu[i].a>100)
{ cout<<"英語成績輸入有誤,請重新輸入.\n";
cout<<"按任意鍵返回"<<endl;
getch();school::input();}
if(stu[i].b<0||stu[i].b>100)
{cout<<"C++成績輸入有誤,請重新輸入.\n";
cout<<"按任意鍵返回"<<endl;
getch();school::input();}
if(stu[i].c<0||stu[i].c>100)
{ cout<<"數(shù)學(xué)成績輸入有誤,請重新輸入.\n";
cout<<"按任意鍵返回"<<endl;
getch();school::input();}
stu[i].sum=stu[i].a+stu[i].b+stu[i].c;}
}
baocun();
school::back();
}
void school::add()
{system("color 1F"); //色彩 調(diào)用doc
system("cls");//清屏
int m;
cout<<"請輸入要增加的學(xué)生個數(shù):";
cin>>m;n+=m;
if(n>=100||n<=0)
{cout<<"輸入有誤!"<<endl;
cout<<"按任意鍵返回"<<endl;
getch();
school::input(); }
else
{ cout<<"****注意:輸入學(xué)號為整數(shù)!!性別只能為男或女!!輸入的成績?yōu)?⑴00!!****"<<endl;
for(int i=n-m;i<n;i++)
{cout<<"請輸入第"<<i+1<<"個同學(xué)的信息:"<<endl;
cout<<"學(xué)號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(10)
<<"英語成績"<<setw(10)<<"C++成績"<<setw(10)<<"數(shù)學(xué)成績"<<endl;
cin>>stu[i].num; cin>>stu[i].name;
cin>>stu[i].sex; cin>>stu[i].classroom;
cin>>stu[i].a; cin>>stu[i].b;
cin>>stu[i].c; stu[i].sum=stu[i].a+stu[i].b+stu[i].c;
if(strcmp(stu[i].sex,"nan")!=0&&strcmp(stu[i].sex,"nv")!=0)
{cout<<"性別輸入有誤,請重新輸入.\n";
cout<<"按任意鍵返回"<<endl;
getch();school::input();}
if(stu[i].a<0||stu[i].a>100)
{ cout<<"英語成績輸入有誤,請重新輸入.\n";
cout<<"按任意鍵返回"<<endl;
getch();school::input();}
if(stu[i].b<0||stu[i].b>100)
{cout<<"C++成績輸入有誤,請重新輸入.\n";
cout<<"按任意鍵返回"<<endl;
getch();school::input();}
if(stu[i].c<0||stu[i].c>100)
{ cout<<"數(shù)學(xué)成績輸入有誤,請重新輸入.\n";
cout<<"按任意鍵返回"<<endl;}
}
}
baocun();
cout<<"*********增加后的學(xué)生信息*******\n";
school::disp();
}
void school:: xu()// 學(xué)生總分從高到低排序
{system("color 1F"); //色彩 一樣是調(diào)用doc
system("cls");//清屏
for(int pass=1;pass<=n;pass++)
{int work=0;
for(int i=0;i<n;i++)
paixu[i]=stu[i];
for(int i=0;i<n-pass;i++)
if(paixu[i].sum<paixu[i+1].sum)
{wo[i]=paixu[i];paixu[i]=paixu[i+1];
paixu[i+1]=wo[i];
work=1;
} if(work)break;
}
cout<<"###########總分排序后的信息 .#############"<<endl;
cout<<"名次"<<setw(8)<<"班級"<<setw(8)<<"姓名"<<setw(8)<<"總成績" <<endl;
for(int i=0;i<n;i++)
{cout<<i+1<<setw(10)<<paixu[i].classroom<<setw(10)<<paixu[i].name<<setw(10)<<paixu[i].sum<<endl;}
school::back();
}
void school:: disp()//顯示同學(xué)信息
{
system("color 1F"); //色彩 一樣是調(diào)用doc
system("cls");//清屏
cout<<"************學(xué)生信息閱讀************\n";
cout<<"學(xué)號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(12)
<<"英語成績"<<setw(8)<<"C++"<<setw(10)<<"數(shù)學(xué)成績"<<setw(13)<<"該同學(xué)總分"<<endl;
for(int i=0;i<n;i++)
cout<<stu[i].num<<'\t'<<stu[i].name<<'\t'<<stu[i].sex
<<'\t'<<stu[i].classroom<<'\t'<<stu[i].a<<'\t'<<stu[i].b<<'\t'<<stu[i].c
<<'\t'<<stu[i].sum<<endl;
school:: back();
}
void school:: find()
{
system("color 1F"); //色彩 一樣是調(diào)用doc
system("cls");//清屏
int h,j;char na[20],ban[20];
cout<<"&&&&&進入查詢系統(tǒng)&&&&&&&&"<<endl;
cout<<"1、按學(xué)號查找 2、按姓名查找 \n"
<<"3、按班級收索 0、返回主頁面\n";
cout<<"請輸入操作選擇:";
int i;
cin>>i;
if(i>8||i<0) //操作控制
{
cout<<"輸入有誤!"<<endl;
school::back();
}
switch(i)
{case 1:
{system("color 1F"); //色彩 一樣是調(diào)用doc
system("cls");//清屏
cout<<"輸入學(xué)生學(xué)號:";cin>>h;
for(int i=0;i<n;i++)
if(stu[i].num ==h)
{cout<<"********查找的同學(xué)的信息********\n";
cout<<"學(xué)號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(12)
<<"英語成績"<<setw(8)<<"C++"<<setw(10)<<"數(shù)學(xué)成績"<<setw(13)<<"該同學(xué)總分"<<endl;
cout<<stu[i].num<<'\t'<<stu[i].name<<'\t'<<stu[i].sex
<<'\t'<<stu[i].classroom<<'\t'<<stu[i].a<<'\t'<<stu[i].b<<'\t'<<stu[i].c
<<'\t'<<stu[i].sum<<endl;
j++;
}
if(j==0)
cout<<"沒有你要查找的信息";
school::back();break;
}
case 2:
{system("color 1F"); //色彩 一樣是調(diào)用doc
system("cls");//清屏
cout<<"輸入學(xué)生姓名:";cin>>na;
for(int i=0;i<n;i++)
if(strcmp(stu[i].name ,na)==0)
{cout<<"********查找的同學(xué)的信息********\n";
cout<<"學(xué)號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(12)
<<"英語成績"<<setw(8)<<"C++"<<setw(10)<<"數(shù)學(xué)成績"<<setw(13)<<"該同學(xué)總分"<<endl;
cout<<stu[i].num<<'\t'<<stu[i].name<<'\t'<<stu[i].sex
<<'\t'<<stu[i].classroom<<'\t'<<stu[i].a<<'\t'<<stu[i].b<<'\t'<<stu[i].c
<<'\t'<<stu[i].sum<<endl;
j++;
}
if(j==0)
cout<<"沒有你要查找的信息";
school::back();break;
}
case 3:
{system("color 1F"); //色彩 一樣是調(diào)用doc
system("cls");//清屏
cout<<"輸入學(xué)生班級:";cin>>ban;
cout<<"********查找的同學(xué)的信息********\n";
for(int i=0;i<n;i++)
if(strcmp(stu[i].classroom,ban)==0)
{
cout<<"學(xué)號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(12)
<<"英語成績"<<setw(8)<<"C++"<<setw(10)<<"數(shù)學(xué)成績"<<setw(13)<<"該同學(xué)總分"<<endl;
cout<<stu[i].num<<'\t'<<stu[i].name<<'\t'<<stu[i].sex
<<'\t'<<stu[i].classroom<<'\t'<<stu[i].a<<'\t'<<stu[i].b<<'\t'<<stu[i].c
<<'\t'<<stu[i].sum<<endl;
j++;
}
cout<<"在此班級的1共有:"<< j<<"人!"<<endl;
if(j==0)
cout<<"沒有你要查找的信息";
school::back();break;
}
case 0:school::back();break;
}
}
void school::del()//刪除指定學(xué)號學(xué)生信息
{system("cls");//清屏; //色彩 一樣是調(diào)用doc
system("color 1F"); //色彩 一樣是調(diào)用doc
int a,y=0;
char x;
cout<<"請輸入要刪除的學(xué)生學(xué)號";
cin>>a;
for(int i=0;i<n;i++)
if(stu[i].num==a)
{
cout<<"該生的信息:\n";
cout<<"學(xué)號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(10)
<<"英語成績"<<setw(10)<<"C++成績"<<setw(10)<<"數(shù)學(xué)成績"<<setw(13)<<"該同學(xué)總分"<<endl;
cout<<stu[i].num<<" "<<stu[i].name<<'\t'<<stu[i].sex
<<'\t'<<stu[i].classroom<<'\t'<<stu[i].a<<'\t'<<stu[i].b<<'\t'<<stu[i].c
<<'\t'<<stu[i].sum<<endl;
cout<<"是不是確認刪除?(Y/N)"<<endl;
cin>>x;
if(x=='Y'||x=='y')
{
y++;
for(;i<n;i++)
stu[i]=stu[i+1];
n=n⑴;//每刪除1個總是減少1個
}
else
{cout<<"退出刪除!"<<endl;
school::back();}
}
if(y==0)
{
cout<<"該學(xué)生不存在!"<<endl;
school::back();
}
else
{baocun();
cout<<"刪除后的信息為:"<<endl;
school:: disp();
school::back();
}
}
void school::alt()//修改指定學(xué)號學(xué)生
{system("color 1F"); //色彩 一樣是調(diào)用doc
system("cls");//清屏
int xh,y=0;
char x;
cout<<"請輸入要修改學(xué)生的學(xué)號:";
cin>>xh;
for(int i=0;i<n;i++)
if(stu[i].num ==xh)
{
cout<<"該生的信息:\n";
cout<<"學(xué)號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(10)
<<"英語成績"<<setw(10)<<"C++成績"<<setw(10)<<"數(shù)學(xué)成績"<<endl;
cout<<stu[i].num<<'\t'<<stu[i].name<<'\t'<<stu[i].sex
<<'\t'<<stu[i].classroom<<'\t'<<stu[i].a<<'\t'<<stu[i].b<<'\t'<<stu[i].c
<<'\t'<<endl;
cout<<"是不是確認修改?(Y/N)"<<endl;
cin>>x;
if(x=='Y'||x=='y')
{y++;
cout<<"****注意:輸入學(xué)號為整數(shù)!!性別只能為男或女!!輸入的成績?yōu)?⑴00!!****"<<endl;
cout<<"**********************************************************"<<endl;
cout<<"學(xué)號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(10)
<<"英語成績"<<setw(10)<<"C++成績"<<setw(10)<<"數(shù)學(xué)成績"<<endl;
cin>>stu[i].num; cin>>stu[i].name;
cin>>stu[i].sex; cin>>stu[i].classroom;
cin>>stu[i].a; cin>>stu[i].b;
cin>>stu[i].c; stu[i].sum=stu[i].a+stu[i].b+stu[i].c;
}
else
{
school::back();
}
}
if(y==0)
{
cout<<"該學(xué)生不存在!";
school::back();
}
else
{ baocun();
cout<<"***********修改后的信息為************"<<endl;
school::disp();
}
}
void school::cal()//綜合統(tǒng)計(各課程平均成績和合格率)
{
system("color 1F"); //色彩 一樣是調(diào)用doc
system("cls");//清屏
double english=0,program=0,math=0;
for(int i=0;i<n;i++)
{english+=stu[i].a;
program+=stu[i].b;
math+=stu[i].c;
}
cout<<"**********各課程平均成績?yōu)?*********"<<endl;
cout<<"英語平均成績:"<<english/n<<endl;
cout<<"C++平均成績:"<<program/n<<endl;
cout<<"數(shù)學(xué)平均成績:"<<math/n<<endl;
double t=0,y=0,u=0;
for(int i=0;i<n;i++)
{if(stu[i].a>60)t++;
if(stu[i].b>60)y++;
if(stu[i].c>60)u++;
}
cout<<"**********各課程合格率**********"<<endl;
cout<<"英語合格率:"<<t/n*100<<"%"<<endl;
cout<<"C++合格率:"<<y/n*100<<"%"<<endl;
cout<<"數(shù)學(xué)合格率:"<<u/n*100<<"%"<<endl;
school::back();
}
void school:: gai()//修改密碼
{system("cls");//清屏; //色彩 一樣是調(diào)用doc
system("color 2F"); //色彩 一樣是調(diào)用doc
char mi2[20],mi3[20],mi4[20];
cout<<"&&&&&&&歡迎修改密碼!&&&&&&&&&"<<endl;
cout<<"請輸入原密碼:";cin>>mi2;
if(strcmp(mi2,mi)==0)
{cout<<"請輸入新密碼:";cin>>mi3;
cout<<"請再輸入新密碼:";cin>>mi4;}
else
{
cout<<"密碼毛病,請重新輸入."<<endl;
cout<<"按任意鍵返回!"<<endl;getch();
system("cls");//清屏; //色彩 一樣是調(diào)用doc
system("color 2F"); //色彩 一樣是調(diào)用doc
gai();
}
if(strcmp(mi3,mi4)==0)
{cout<<"恭喜修改密碼成功!"<<endl;strcpy(mi,mi3);
cout<<"按任意鍵返回!"<<endl;
getch();main();}
else
{cout<<"前后密碼不同,請重新輸入!"<<endl;
cout<<"按任意鍵返回!"<<endl;
getch();
system("cls");//清屏; //色彩 一樣是調(diào)用doc
system("color 2F"); //色彩 一樣是調(diào)用doc
gai();
}
}
void baocun()//保存信息
{char ch;school B;
cout<<"是不是要保存信息?(Y/N)\n";
cin>>ch;
if(ch=='Y'||ch=='y')
{ char filename[20];
fstream f;char answer;char s[80];
cout<<"請輸入要保存文件的路徑:(如:D:\\student.dat)\n";
cin>>filename;
f.open(filename,ios::out);
f<<"**************存取的學(xué)生信息***********"<<endl;
f<<"學(xué)號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(10)<<"英語成績"<<
setw(10)<<"C++成績"<<setw(10)<<"數(shù)學(xué)成績"<<setw(13)<<"該同學(xué)總分"<<endl;
for (int i=0;i<n;i++)
f<<stu[i].num<<'\t'<<stu[i].name<<'\t'<<stu[i].sex
<<'\t'<<stu[i].classroom<<'\t'<<stu[i].a<<'\t'<<stu[i].b<<'\t'<<stu[i].c
<<'\t'<<stu[i].sum<<endl;
f.close();
cout<<"信息已保存,要閱讀嗎?(Y/N)\n";
cin>>answer;
if(answer=='Y'||answer=='y')
{
f.open(filename,ios::in);//重用流打開文件
while(!f.eof())
{
f.getline(s,80);
cout<<s<<endl;
}
}
f.close();//關(guān)閉文本文件
B.back();
system("cls");//清屏; //色彩 一樣是調(diào)用doc
system("color 2F"); //色彩 一樣是調(diào)用doc
}
}
void school::back()//返回
{
cout<<"按任意鍵返回!"<<endl;
getch();
school::start();
}
(2)編譯運行
在vc6.0或vs2010上都能編譯通過,登錄的用戶名是admin,密碼是1987。




3、總結(jié)
(1)上述代碼無實際用處,僅僅用來回想學(xué)習(xí)C++的進程。
(2)若有建議,請留言,在此先感謝!
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈