您好,登錄后才能下訂單哦!
小編給大家分享一下linux下C/C++學生信息管理系統的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
一、簡介
大學期間用vc++開發的簡單的學生信息管理系統,主要有添加學生信息、刪除學生信息、修改學生信息、查詢學生信息、顯示學生信息、綜合統計(各課程平均成績和合格率)、總分排序和退出系統。設計:
二、詳解
1、代碼
(1)main.cpp
#include<iostream> #include<fstream> #include<iomanip> //使用setw()函數 #include<windows.h> //使用system()函數 #include<conio.h> //使用getch(),輸入任意字符 #include <string> //使用strcpy()函數 using namespace std; void baocun();//保存信息 int n=0; //全局變量,記錄學生總人數。 char mi[]="1987"; //初始密碼 class student //學生類 { public: int num; //學生學號 char name[10];//學生姓名 char sex[4];//學生性別 char classroom[10];//學生班級 double a,b,c; //三門課的成績 double sum; //記錄個人三門課的總成績 }stu[100],paixu[100],wo[100];//聲明對象 class school:public student { public: //聲明函數原型 void input(); //添加學生信息 void add(); //增加學生 void del(); //刪除學生信息 void alt(); //修改學生信息 void find(); //查詢學生信息 void disp(); //顯示學生信息 void cal(); //綜合統計(各課程平均成績和合格率) void xu(); //總分排序 void back(); //返回主界面 void gai(); //修改密碼 void start(); //管理操作 }; //主函數 void main() { school A; char a;char c[20];char m[20]; system("cls");//清屏 DOC調用 system("color 1F"); //顏色 調用doc cout<<setw(45)<<"您想進入學生管理系統?"<<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調用 system("color 3F"); //顏色 同樣是調用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 //退出系統 { cout<<"謝謝您的關顧!"<<endl; exit(0); } } void school::start() { system("cls");//清屏 DOC調用 system("color 2F"); //顏色 調用doc cout<<setw(45)<<"歡迎進入學生管理系統!"<<endl; cout<<setw(35)<<"1、添加學生信息 ,并保存."<<setw(30)<<"2、刪除學生信息,并保存."<<endl; cout<<setw(34)<<"3、修改學生信息,并保存."<<setw(24)<<"4、查詢學生信息."<<endl; cout<<setw(27)<<"5、顯示學生信息."<<setw(53)<<"6、綜合統計(各課程平均成績和合格率.)"<<endl; cout<<setw(23)<<"7、總分排序."<<setw(31)<<"8、增加學生."<<endl; cout<<setw(23)<<"0、退出系統."<<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() //添加學生 { system("color 1F"); //顏色 調用doc system("cls");//清屏 cout<<"請輸入要添加的學生個數:(0-100)"; cin>>n; if(n>=100||n<=0) { cout<<"輸入有誤!"<<endl; cout<<"按任意鍵返回"<<endl; getch(); input(); } else { cout<<"****注意:輸入學號為整數!!性別只能為男或女!!輸入的成績為0-100!!****"<<endl; cout<<"**********************************************"<<endl; for(int i=0;i<n;i++) { cout<<"請輸入第"<<i+1<<"個同學的信息:"<<endl; cout<<"學號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(10) <<"英語成績"<<setw(10)<<"C++成績"<<setw(10)<<"數學成績"<<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<<"學號輸入有誤,請重新輸入.\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<<"數學成績輸入有誤,請重新輸入.\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"); //顏色 調用doc system("cls");//清屏 int m; cout<<"請輸入要增加的學生個數:"; cin>>m;n+=m; if(n>=100||n<=0) {cout<<"輸入有誤!"<<endl; cout<<"按任意鍵返回"<<endl; getch(); school::input(); } else { cout<<"****注意:輸入學號為整數!!性別只能為男或女!!輸入的成績為0-100!!****"<<endl; for(int i=n-m;i<n;i++) {cout<<"請輸入第"<<i+1<<"個同學的信息:"<<endl; cout<<"學號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(10) <<"英語成績"<<setw(10)<<"C++成績"<<setw(10)<<"數學成績"<<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<<"數學成績輸入有誤,請重新輸入.\n"; cout<<"按任意鍵返回"<<endl;} } } baocun(); cout<<"*********增加后的學生信息*******\n"; school::disp(); } void school:: xu()// 學生總分從高到低排序 {system("color 1F"); //顏色 同樣是調用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()//顯示同學信息 { system("color 1F"); //顏色 同樣是調用doc system("cls");//清屏 cout<<"************學生信息瀏覽************\n"; cout<<"學號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(12) <<"英語成績"<<setw(8)<<"C++"<<setw(10)<<"數學成績"<<setw(13)<<"該同學總分"<<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"); //顏色 同樣是調用doc system("cls");//清屏 int h,j;char na[20],ban[20]; cout<<"&&&&&進入查詢系統&&&&&&&&"<<endl; cout<<"1、按學號查找 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"); //顏色 同樣是調用doc system("cls");//清屏 cout<<"輸入學生學號:";cin>>h; for(int i=0;i<n;i++) if(stu[i].num ==h) {cout<<"********查找的同學的信息********\n"; cout<<"學號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(12) <<"英語成績"<<setw(8)<<"C++"<<setw(10)<<"數學成績"<<setw(13)<<"該同學總分"<<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"); //顏色 同樣是調用doc system("cls");//清屏 cout<<"輸入學生姓名:";cin>>na; for(int i=0;i<n;i++) if(strcmp(stu[i].name ,na)==0) {cout<<"********查找的同學的信息********\n"; cout<<"學號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(12) <<"英語成績"<<setw(8)<<"C++"<<setw(10)<<"數學成績"<<setw(13)<<"該同學總分"<<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"); //顏色 同樣是調用doc system("cls");//清屏 cout<<"輸入學生班級:";cin>>ban; cout<<"********查找的同學的信息********\n"; for(int i=0;i<n;i++) if(strcmp(stu[i].classroom,ban)==0) { cout<<"學號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(12) <<"英語成績"<<setw(8)<<"C++"<<setw(10)<<"數學成績"<<setw(13)<<"該同學總分"<<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()//刪除指定學號學生信息 {system("cls");//清屏; //顏色 同樣是調用doc system("color 1F"); //顏色 同樣是調用doc int a,y=0; char x; cout<<"請輸入要刪除的學生學號"; cin>>a; for(int i=0;i<n;i++) if(stu[i].num==a) { cout<<"該生的信息:\n"; cout<<"學號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(10) <<"英語成績"<<setw(10)<<"C++成績"<<setw(10)<<"數學成績"<<setw(13)<<"該同學總分"<<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;//每刪除一個總是減少一個 } else {cout<<"退出刪除!"<<endl; school::back();} } if(y==0) { cout<<"該學生不存在!"<<endl; school::back(); } else {baocun(); cout<<"刪除后的信息為:"<<endl; school:: disp(); school::back(); } } void school::alt()//修改指定學號學生 {system("color 1F"); //顏色 同樣是調用doc system("cls");//清屏 int xh,y=0; char x; cout<<"請輸入要修改學生的學號:"; cin>>xh; for(int i=0;i<n;i++) if(stu[i].num ==xh) { cout<<"該生的信息:\n"; cout<<"學號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(10) <<"英語成績"<<setw(10)<<"C++成績"<<setw(10)<<"數學成績"<<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<<"****注意:輸入學號為整數!!性別只能為男或女!!輸入的成績為0-100!!****"<<endl; cout<<"**********************************************************"<<endl; cout<<"學號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(10) <<"英語成績"<<setw(10)<<"C++成績"<<setw(10)<<"數學成績"<<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<<"該學生不存在!"; school::back(); } else { baocun(); cout<<"***********修改后的信息為************"<<endl; school::disp(); } } void school::cal()//綜合統計(各課程平均成績和合格率) { system("color 1F"); //顏色 同樣是調用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<<"**********各課程平均成績為**********"<<endl; cout<<"英語平均成績:"<<english/n<<endl; cout<<"C++平均成績:"<<program/n<<endl; cout<<"數學平均成績:"<<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<<"數學合格率:"<<u/n*100<<"%"<<endl; school::back(); } void school:: gai()//修改密碼 {system("cls");//清屏; //顏色 同樣是調用doc system("color 2F"); //顏色 同樣是調用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");//清屏; //顏色 同樣是調用doc system("color 2F"); //顏色 同樣是調用doc gai(); } if(strcmp(mi3,mi4)==0) {cout<<"恭喜修改密碼成功!"<<endl;strcpy(mi,mi3); cout<<"按任意鍵返回!"<<endl; getch();main();} else {cout<<"前后密碼不同,請從新輸入!"<<endl; cout<<"按任意鍵返回!"<<endl; getch(); system("cls");//清屏; //顏色 同樣是調用doc system("color 2F"); //顏色 同樣是調用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<<"**************存取的學生信息***********"<<endl; f<<"學號"<<setw(7)<<"姓名"<<setw(7)<<"性別"<<setw(7)<<"班級"<<setw(10)<<"英語成績"<< setw(10)<<"C++成績"<<setw(10)<<"數學成績"<<setw(13)<<"該同學總分"<<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();//關閉文本文件 B.back(); system("cls");//清屏; //顏色 同樣是調用doc system("color 2F"); //顏色 同樣是調用doc } } void school::back()//返回 { cout<<"按任意鍵返回!"<<endl; getch(); school::start(); }
(2)編譯運行
在vc6.0或vs2010上都能編譯通過,登錄的用戶名是admin,密碼是1987。
以上是“linux下C/C++學生信息管理系統的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。