linux下C/C++學(xué)生信息管理系統(tǒng)
一、簡介
大學(xué)期間用vc++開發(fā)的簡單的學(xué)生信息管理系統(tǒng),主要有添加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息、查詢學(xué)生信息、顯示學(xué)生信息、綜合統(tǒng)計(jì)(各課程平均成績和合格率)、總分排序和退出系統(tǒng)。設(shè)計(jì):
二、詳解
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; //三門課的成績 double sum; //記錄個(gè)人三門課的總成績 }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)計(jì)(各課程平均成績和合格率) 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)<<"您想進(jìn)入學(xué)生管理系統(tǒng)?"<<endl; cout<<"若進(jìn)入請按Y,若不進(jìn)入請按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 //賬號、密碼輸入的錯(cuò)誤提示 { 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)<<"歡迎進(jìn)入學(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)計(jì)(各課程平均成績和合格率.)"<<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é)生個(gè)數(shù):(0-100)"; cin>>n; if(n>=100||n<=0) { cout<<"輸入有誤!"<<endl; cout<<"按任意鍵返回"<<endl; getch(); input(); } else { cout<<"****注意:輸入學(xué)號為整數(shù)!!性別只能為男或女!!輸入的成績?yōu)?-100!!****"<<endl; cout<<"**********************************************"<<endl; for(int i=0;i<n;i++) { cout<<"請輸入第"<<i+1<<"個(gè)同學(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é)生個(gè)數(shù):"; cin>>m;n+=m; if(n>=100||n<=0) {cout<<"輸入有誤!"<<endl; cout<<"按任意鍵返回"<<endl; getch(); school::input(); } else { cout<<"****注意:輸入學(xué)號為整數(shù)!!性別只能為男或女!!輸入的成績?yōu)?-100!!****"<<endl; for(int i=n-m;i<n;i++) {cout<<"請輸入第"<<i+1<<"個(gè)同學(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<<"&&&&&進(jìn)入查詢系統(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<<"在此班級的一共有:"<< 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<<"請輸入要?jiǎng)h除的學(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<<"是否確認(rèn)刪除?(Y/N)"<<endl; cin>>x; if(x=='Y'||x=='y') { y++; for(;i<n;i++) stu[i]=stu[i+1]; n=n-1;//每刪除一個(gè)總是減少一個(gè) } 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<<"是否確認(rèn)修改?(Y/N)"<<endl; cin>>x; if(x=='Y'||x=='y') {y++; cout<<"****注意:輸入學(xué)號為整數(shù)!!性別只能為男或女!!輸入的成績?yōu)?-100!!****"<<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)計(jì)(各課程平均成績和合格率) { 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<<"請?jiān)佥斎胄旅艽a:";cin>>mi4;} else { cout<<"密碼錯(cuò)誤,請重新輸入."<<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<<"信息已經(jīng)保存,要瀏覽嗎?(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)編譯運(yùn)行
在vc6.0或vs2010上都能編譯通過,登錄的用戶名是admin,密碼是1987。
三、總結(jié)
(1)上述代碼無實(shí)際用途,僅僅用來回憶學(xué)習(xí)C++的過程。
(2)若有建議,請留言,在此先感謝!
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C++實(shí)現(xiàn)簡單職工信息管理系統(tǒng)
- C++學(xué)生信息管理系統(tǒng)
- C++實(shí)現(xiàn)簡單的信息管理系統(tǒng)
- C++實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
- C++實(shí)現(xiàn)景區(qū)信息管理系統(tǒng)
- C++使用文件實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
- C++實(shí)現(xiàn)高校人員信息管理系統(tǒng)
- C++實(shí)現(xiàn)學(xué)生考勤信息管理系統(tǒng)
- C++利用鏈表實(shí)現(xiàn)圖書信息管理系統(tǒng)
- C++代碼實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
相關(guān)文章
詳解C++的String類的字符串分割實(shí)現(xiàn)
這篇文章主要介紹了詳解C++的String類的字符串分割實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2017-07-07C語言報(bào)錯(cuò):Format String Vulnerability的多種解決方案
Format String Vulnerability(格式化字符串漏洞)是C語言中常見且嚴(yán)重的安全漏洞之一,它通常在程序使用不受信任的輸入作為格式化字符串時(shí)發(fā)生,本文將詳細(xì)介紹Format String Vulnerability的產(chǎn)生原因,提供多種解決方案,需要的朋友可以參考下2024-06-06C++中實(shí)現(xiàn)OpenCV圖像分割與分水嶺算法
分水嶺算法是一種常用的圖像區(qū)域分割法,本文主要介紹了OpenCV圖像分割與分水嶺算法,使用C++實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2021-06-06C/C++利用棧和隊(duì)列實(shí)現(xiàn)停車場管理系統(tǒng)
數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計(jì)一般都不是很好理解,今天小編為大家總結(jié)了一下c和c++版本的常見棧和隊(duì)列的的停車場管理程序,需要的小伙伴可以參考一下2022-06-06