DevC++学生管理系统如何实现文件的加密与解密
#include<iostream>
#include<fstream>
#include<ctime>
#include<string.h>
#include<conio.h>//getch这样才能用
using namespace std;
void Welcome();//起始页面
void pop(int);//接续文件输出函数
void cpop();//重置文件输出函数
void InputStudent1(); //单个录入
void InputStudent2();//批量输入
int searchname();//按姓名查询并打印学生信息
int searchschoolid();//按学号查询并打印学生信息
void editname();//输入姓名查找并修改学生成绩
void editschoolid(); //输入学号查找并修改学生成绩
void batch_modify();//batch批量 modify修改
void phonequery();//查找通讯公司对应学生信息
void searchclassnum();//按班级查询全部同学的信息
void searchmajor();//按专业查询全部同学的信息
void schoolid_search_score1();//按学号查询指定同学的全部成绩信息
void schoolid_search_score2();//按学号查询指定同学指定课程的成绩
void orderclass_sum(); //输入班级,实现按总成绩降序输出学生基本信息与成绩信息
void searchscore_fail();//查询单科不及格同学全部信息及不及格课程的成绩
void searchscore_beyond(); //实现按指定课程查询成绩大于指定值全部同学信息及成绩
void ordermajor_sum();//实现按专业,输出按给定课程成绩降序排序的学生成绩及学生信息
void search_fuzzy();//实现模糊查询
class Student {
public:
string name;//姓名
string sex;//性别
string nation;//籍贯
string id;//身份证号
string classnum;//班级
string schoolid;//学号
string collage;//学院
string major;//专业
string phonenum;//电话号码
string QQnum; //QQ号码
float Chinese;//语文成绩
float Math;//数学成绩
float English;//英语成绩
float total_score;//总成绩
void checkName(); //姓名检验
void checkSex(); //性别检验
void checknation(); //籍贯检验
void checkId(); //身份证号检验
void checkClass( );//班级检验
void checkSchoolId(); //学号的检验
void checkCollage(); //学院检验
void checkMajor() ;//专业检验
void checkPhoneNum();//电话号码检验
void checkQQNum(); //qq号检验
void inputscore(); //成绩的录入和检验
};
Student stu[10];//全局变量
int size; // size为学生数量
string Name;
string classNum;
//主函数
int main() {
size=0;
while(1)
{Welcome();
//从键盘接收一个字符
char ch=getch();
switch(ch){
case '1':{//录入学生信息
cout<<"录入学生信息中;" <<endl;
cout<<"选择功能列表"<<endl;
cout<<"——————————"<<endl;
cout<<"1.单个录入学生信息"<<endl;
cout<<"2.批量录入学生信息"<<endl;
cout<<"——————————"<<endl;
char dd=getch();
switch(dd){
case '1':
InputStudent1();break;
case '2' :
InputStudent2();break;
}break;}
case '4':{//学生成绩
cout<<"学生成绩相关功能中;" <<endl;
cout<<"选择功能列表"<<endl;
cout<<"——————————"<<endl;
cout<<"1.班级内部按总成绩排序"<<endl;
cout<<"2.专业按总成绩排序"<<endl;
cout<<"3.单科不及格的同学信息"<<endl;
cout<<"4.查询小于指定分数线的同学信息"<<endl;
cout<<"——————————"<<endl;
char ee=getch();
switch(ee){
case '1':
orderclass_sum();break;
case '2' :
ordermajor_sum();break;
case '3' :
searchscore_fail();break;
case '4' :
searchscore_beyond();break;
}
break;}
case '6':{//查找学生信息
cout<<"查找学生信息中;" <<endl;
cout<<"选择功能列表"<<endl;
cout<<"——————————"<<endl;
cout<<"1.按姓名查找学生信息"<<endl;
cout<<"2.按学号查找学生信息"<<endl;
cout<<"3.查找通讯公司对应学生信息" <<endl;
cout<<"4.按班级查找全部学生信息"<<endl;
cout<<"5.按姓名模糊查找" <<endl;
cout<<"——————————"<<endl;
char aa=getch();
switch(aa){
case '1':
searchname();break;
case '2' :
searchschoolid();break;
case '3' :
phonequery();break;
case '4' :
searchclassnum();break;
case '5':
search_fuzzy();break;
}
break;}
case '7':{//修改学生信息
cout<<"修改学生信息中;" <<endl;
cout<<"选择功能列表"<<endl;
cout<<"——————————"<<endl;
cout<<"1.按名字查找并修改学生信息"<<endl;
cout<<"2.按学号查找并修改学生信息"<<endl;
cout<<"3.批量修改学生信息"<<endl;
cout<<"——————————"<<endl;
char bb=getch();
switch(bb){
case '1':
editname();break;
case '2' :
editschoolid();break;
case '3' :
batch_modify();break;
}
break; }
case '9':{//查询学生成绩
cout<<"查询学生成绩中;" <<endl;
cout<<"选择功能列表"<<endl;
cout<<"——————————"<<endl;
cout<<"1.按学号查询指定同学全部信息"<<endl;
cout<<"2.按学号查询指定同学指定课程的成绩"<<endl;
cout<<"——————————"<<endl;
char cc=getch();
switch(cc){
case '1':
schoolid_search_score1();break;
case '2':
schoolid_search_score2();break;
}
break; }
case '0':return 0;
}
}
}
template <typename T> void log(int a,string message,T m,T n){
ofstream ofile;
ofile.open("日志.txt",ios::app);
if(!ofile){
cerr<<"Open file fail"<<endl;
exit(1);
}
time_t nowtime;
time(&nowtime); //获取1970年1月1日0点0分0秒到现在经过的秒数
tm* p = localtime(&nowtime); //将秒数转换为本地时间,年从1900算起,需要+1900,月为0-11,所以要+1
ofile<<"修改"<<stu[a].name<<"的"<<message<<":"<<' ';
ofile<<"修改前:"<<m<<" "<<"修改后:"<<n<<"\t" ;
ofile<<p->tm_year + 1900<<"/"<<p->tm_mon + 1<<"/"<< p->tm_mday<<"/"<<p->tm_hour<<":"<<p->tm_min<<":"<<p->tm_sec<<endl;
ofile.close();
}
//起始页面
void Welcome()
{
cout<<"选择功能列表"<<endl;
cout<<"——————————"<<endl;
cout<<"0.退出系统" <<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<<"9.查询学生成绩"<<endl;
cout<<"——————————"<<endl;
}
//接续文件输出函数
void pop(int i){
ofstream ofile;
ofile.open("保存学生信息.txt",ios::app);
if(!ofile){
cerr<<"Open file1 fail!"<<endl;
exit(1);
}
for(int n=size-i;n<size;n++)
ofile<<stu[n].name<<" "<<stu[n].sex<<" "<<stu[n].nation<<" "<<stu[n].id<<" "<<stu[n].classnum<<" "<<stu[n].schoolid<<" "<<stu[n].collage<<" "<<stu[n].major<<" "<<stu[n].phonenum<<" "<<stu[n].QQnum<<" "<<stu[n].Chinese<<" "<<stu[n].Math<<" "<<stu[n].English<<" "<<stu[n].total_score<<endl;
ofile.close();
}
//重置文件输出函数
void cpop(){
ofstream ofile;
ofile.open("保存学生信息.txt",ios::out);
if(!ofile){
cerr<<"Open file fail!"<<endl;
exit(1);
}
for(int n=0;n<size;n++)
ofile<<stu[n].name<<" "<<stu[n].sex<<" "<<stu[n].nation<<" "<<stu[n].id<<" "<<stu[n].classnum<<" "<<stu[n].schoolid<<" "<<stu[n].collage<<" "<<stu[n].major<<" "<<stu[n].phonenum<<" "<<stu[n].QQnum<<" "<<stu[n].Chinese<<" "<<stu[n].Math<<" "<<stu[n].English<<" "<<stu[n].total_score<<endl;
ofile.close();
}
//单个录入
void InputStudent1(){
int n;
cout<<"请输入录入学生数"<<endl;
cin>>n;
for(int i=size;i<n+size;i++){
stu[i].checkName();
stu[i].checkSex();
stu[i].checknation();
stu[i].checkId();
stu[i].checkClass();
stu[i].checkSchoolId();
stu[i].checkCollage();
stu[i].checkMajor();
stu[i].checkPhoneNum();
stu[i].checkQQNum();
stu[i].inputscore();
}
size+=n;
pop(n);//文件输出函数
}
//批量录入
void InputStudent2(){
int i;
cout<<"请输入批量输入的学生数目"<<endl;
cin>>i;
ifstream ifile1;
ifile1.open("批量输入.txt",ios::in);
if(!ifile1){
cerr<<"Open file fail"<<endl;
exit(1);
}
int n=0;
while(!ifile1.eof()&&n<i){
ifile1>>stu[size].name>>stu[size].sex>>stu[size].nation>>stu[size].id>>stu[size].classnum>>stu[size].schoolid>>stu[size].collage>>stu[size].major>>stu[size].phonenum>>stu[size].QQnum>>stu[size].Chinese>>stu[size].Math>>stu[size].English>>stu[size].total_score;
size++;n++;
}
ifile1.close();
pop(i);
}
//按学号查询指定同学的全部成绩信息
void schoolid_search_score1(){
cout << "请输入要查找的同学的学号:" << endl;
string schoolid;
cin >> schoolid;
int j = -1; //初始化要查找的同学的学号在数组中的下标
for (int k = 0; k < size; k++) {
if (stu[k].schoolid == schoolid ) {
j=k; // 找到要查找的学号,记录其在数组中的下标
break; }
}
if (j == -1) {
cout << "没有找到学号为 " <<schoolid<< " 的同学!"; }
else {
cout<<"姓名:"<< stu[j].name<<endl;
cout<<"语文:"<< stu[j].Chinese<<endl;
cout<<"数学:"<< stu[j].Math<<endl;
cout<<"英语:"<< stu[j].English<<endl;
cout<<"总成绩:"<< stu[j].total_score<<endl;
}
}
//按学号查询指定同学指定课程的成绩
void schoolid_search_score2(){
cout << "请输入要查找的同学的学号:" << endl;
string schoolid;
cin >> schoolid;
int j = -1; //初始化要查找的同学的学号在数组中的下标
for (int k = 0; k < size; k++) {
if (stu[k].schoolid == schoolid ) {
j=k; // 找到要查找的学号,记录其在数组中的下标
break; }
}
if (j == -1) {
cout << "没有找到学号为 " <<schoolid<< " 的同学!"; }
else {
cout<<"该同学为:"<< stu[j].name<<endl;
cout<< "输入1查询语文成绩,输入2查询数学成绩,输入3查询英语成绩,输入4查询全部成绩"<<endl;
char ch=getch();
switch(ch){
case '1': cout<<"语文:"<< stu[j].Chinese<<endl; break;
case '2': cout<<"数学:"<< stu[j].Math<<endl; break;
case '3': cout<<"英语:"<< stu[j].English<<endl; break;
case '4': cout<<"总成绩:"<< stu[j].total_score<<endl; break;
}
}
}
int e;//e为需要修改信息同学的下标,方便返回
//按姓名查询并打印学生信息
int searchname(){
cout << "请输入要查找的学生名字:" << endl;
cin >> Name;
int j;//j为要修改的学生在数组中的下标数组
int t = -1; // 初始化要修改的学生在数组中的下标
for (int k = 0; k < size; k++) {
if (stu[k].name == Name) {
// 找到要修改的学生,记录其在数组中的下标
j=k;
e=j;
t++;
} }
if (t ==-1) {
cout << "没有找到名为 " << Name << " 的学生!" << endl; }
else {
if(t==0){cout << "名为 " << Name << " 的学生的信息是:" << endl;
cout<<"姓名:"<<stu[j].name<<endl;
cout<<"性别:"<< stu[j].sex<<endl;
cout<<"籍贯:"<< stu[j].nation<<endl;
cout<<"身份证号:"<< stu[j].id<<endl;
cout<<"班级:"<< stu[j].classnum<<endl;
cout<<"学号:"<< stu[j].schoolid<<endl;
cout<<"学院:"<< stu[j].collage<<endl;
cout<<"专业:"<< stu[j].major<<endl;
cout<<"电话号码:"<< stu[j].phonenum<<endl;
cout<<"QQ号:"<< stu[j].QQnum<<endl;
cout<<"语文:"<< stu[j].Chinese<<endl;
cout<<"数学:"<< stu[j].Math<<endl;
cout<<"英语:"<< stu[j].English<<endl;
cout<<"总成绩:"<< stu[j].total_score<<endl;
}
if(t>0){cout<<"重名!"<<endl;
searchschoolid();
}
}
return e;
}
//按学号查询并打印学生信息
int searchschoolid(){
string Name; // 要修改的学生的名字
cout << "请输入要查找的学生学号:" << endl;
string schoolid;
cin >> schoolid;
int j = -1; // 初始化要修改的学生在数组中的下标
for (int k = 0; k < size; k++) {
if (stu[k].schoolid == schoolid) {
j = k; // 找到要修改的学生,记录其在数组中的下标
e=j;
break;
} }
if (j == -1) {
cout << "没有找到学号为 " << schoolid << " 的学生!" << endl; }
else {
cout << "学号为 " << schoolid << " 的学生的信息是:" << endl;
cout << "名为 " << Name << " 的学生的信息是:" << endl;
cout<<"姓名:"<<stu[j].name<<endl;
cout<<"性别:"<< stu[j].sex<<endl;
cout<<"籍贯:"<< stu[j].nation<<endl;
cout<<"身份证号:"<< stu[j].id<<endl;
cout<<"班级:"<< stu[j].classnum<<endl;
cout<<"学号:"<< stu[j].schoolid<<endl;
cout<<"学院:"<< stu[j].collage<<endl;
cout<<"专业:"<< stu[j].major<<endl;
cout<<"电话号码:"<< stu[j].phonenum<<endl;
cout<<"QQ号:"<< stu[j].QQnum<<endl;
cout<<"语文:"<< stu[j].Chinese<<endl;
cout<<"数学:"<< stu[j].Math<<endl;
cout<<"英语:"<< stu[j].English<<endl;
cout<<"总成绩:"<< stu[j].total_score<<endl;
}
return e;
}
//实现按指定课程查询成绩大于指定值全部同学信息及成绩
void searchscore_beyond(){
cout<<"选择科目"<<endl;
cout<<"——————————"<<endl;
cout<<"1.语文"<<endl;
cout<<"2.数学"<<endl;
cout<<"3.英语"<<endl;
cout<<"——————————"<<endl;
char ww=getch();
switch(ww){
case'1':{
cout<<"请输入需要查询的分数线(查询的同学大于等于该分数线)"<<endl;
int score;
cin>>score;
int k=-1;
int i=0;
for (i = 0; i < size; i++) {
if (stu[i].Chinese >=score) {
k++;
cout<<"***********************************"<<endl;
cout<<"姓名:"<<stu[i].name<<endl;
cout<<"性别:"<< stu[i].sex<<endl;
cout<<"籍贯:"<< stu[i].nation<<endl;
cout<<"身份证号:"<< stu[i].id<<endl;
cout<<"班级:"<< stu[i].classnum<<endl;
cout<<"学院 }:"<< stu[i].collage<<endl;
cout<<"专业:"<< stu[i].major<<endl;
cout<<"电话号码:"<< stu[i].phonenum<<endl;
cout<<"QQ号:"<< stu[i].QQnum<<endl;
cout<<"语文:"<< stu[i].Chinese<<endl;
cout<<"数学:"<< stu[i].Math<<endl;
cout<<"英语:"<< stu[i].English<<endl;
cout<<"总成绩:"<< stu[i].total_score<<endl;
} }
if (k==-1) {
cout << "没有找到语文高于该分数线的同学!"<< endl; }
break;
}
case'2':{
cout<<"请输入需要查询的分数线(查询的同学大于等于该分数线)"<<endl;
int score;
cin>>score;
int k=-1;
int i=0;
for (i = 0; i < size; i++) {
if (stu[i].Math >=score) {
k++;
cout<<"***********************************"<<endl;
cout<<"姓名:"<<stu[i].name<<endl;
cout<<"性别:"<< stu[i].sex<<endl;
cout<<"籍贯:"<< stu[i].nation<<endl;
cout<<"身份证号:"<< stu[i].id<<endl;
cout<<"班级:"<< stu[i].classnum<<endl;
cout<<"学号:"<< stu[i].schoolid<<endl;
cout<<"学院:"<< stu[i].collage<<endl;
cout<<"专业:"<< stu[i].major<<endl;
cout<<"电话号码:"<< stu[i].phonenum<<endl;
cout<<"QQ号:"<< stu[i].QQnum<<endl;
cout<<"语文:"<< stu[i].Chinese<<endl;
cout<<"数学:"<< stu[i].Math<<endl;
cout<<"英语:"<< stu[i].English<<endl;
cout<<"总成绩:"<< stu[i].total_score<<endl;
} }
if (k==-1)
cout << "没有找到数学高于该分数线的同学!"<< endl;
break;
}
case'3':{
cout<<"请输入需要查询的分数线(查询的同学大于等于该分数线)"<<endl;
int score;
cin>>score;
int k=-1;
int i=0;
for (i = 0; i < size; i++) {
if (stu[i].English >=score) {
k++;
cout<<"***********************************"<<endl;
cout<<"姓名:"<<stu[i].name<<endl;
cout<<"性别:"<< stu[i].sex<<endl;
cout<<"籍贯:"<< stu[i].nation<<endl;
cout<<"身份证号:"<< stu[i].id<<endl;
cout<<"班级:"<< stu[i].classnum<<endl;
cout<<"学号:"<< stu[i].schoolid<<endl;
cout<<"学院:"<< stu[i].collage<<endl;
cout<<"专业:"<< stu[i].major<<endl;
cout<<"电话号码:"<< stu[i].phonenum<<endl;
cout<<"QQ号:"<< stu[i].QQnum<<endl;
cout<<"语文:"<< stu[i].Chinese<<endl;
cout<<"数学:"<< stu[i].Math<<endl;
cout<<"英语:"<< stu[i].English<<endl;
cout<<"总成绩:"<< stu[i].total_score<<endl;
} }
if (k==-1)
cout << "没有找到英语高于该分数线的同学!"<< endl;
break;
}
}
}
//实现模糊查询
void search_fuzzy(){
string s;
cout<<"请输入您想模糊查找学生的部分姓名:";
cin>>s;
bool found = false;
for(int i=0;i<size;i++){
if(stu[i].name.find(s) != string::npos){ //使用了std::string的find函数来查找用户输入的字符串是否在每个学生的名字中
cout << "查找到学生信息: " << stu[i].name << endl;
found = true;
}
} cout<<"*******************"<<endl;
if(!found) cout<<"未查找到学生信息!"<<endl;
else {cout<<"是否要进行精确查询:(1/0)"<<endl;
char cc;
cc=getch();
switch(cc){
case '1':{searchname();
break;
}
case '0':
break;
}
}
}
//输入班级,实现按总成绩降序输出学生基本信息与成绩信息。
void orderclass_sum(){
string Classnum;
cin>>Classnum;
Student t;
for(int l=0;l<size;l++)
for(int i=0;i<size;i++)
for(int j=0;j<size-i-1;j++){
if(stu[j].total_score<stu[j+1].total_score)
{
t=stu[j];stu[j]=stu[j+1];stu[j+1]=t;}
if(stu[j].total_score==stu[j+1].total_score){
if(stu[j].schoolid>stu[j+1].schoolid){
t=stu[j];stu[j]=stu[j+1];stu[j+1]=t;
}
}
}
searchclassnum();
}
//实现按专业,输出按给定课程成绩降序排序的学生成绩及学生信息
void ordermajor_sum(){
string Major;
cin>>Major;
Student t;
for(int i=0;i<size;i++)
for(int j=0;j<size-i-1;j++){
if(stu[j].total_score<stu[j+1].total_score&&stu[j].major==Major&&stu[j+1].major==Major)
{
t=stu[j];stu[j]=stu[j+1];stu[j+1]=t;}
if(stu[j].total_score==stu[j+1].total_score){
if(stu[j].schoolid>stu[j+1].schoolid){
t=stu[j];stu[j]=stu[j+1];stu[j+1]=t;
}
}
}
searchmajor();
}
template <typename T> void cclog(string message,T m,T n){
ofstream ofile;
ofile.open("日志.txt",ios::app);
if(!ofile){
cerr<<"Open file fail"<<endl;
exit(1);
}
time_t nowtime;
time(&nowtime); //获取1970年1月1日0点0分0秒到现在经过的秒数
tm* p = localtime(&nowtime); //将秒数转换为本地时间,年从1900算起,需要+1900,月为0-11,所以要+1
ofile<<message<<'\t'<<"修改前:"<<m<<" "<<"修改后:"<<n<<"\t" ;
ofile<<p->tm_year + 1900<<"/"<<p->tm_mon + 1<<"/"<< p->tm_mday<<"/"<<p->tm_hour<<":"<<p->tm_min<<":"<<p->tm_sec<<endl;
ofile.close();
}
//批量修改
void batch_modify(){//batch批量 modify修改
cout<<"输入您想要批量修改的信息;"<<endl;
cout<<"1.学院 2.专业 3.班级 "<<endl;
char ccc=getch();
switch(ccc){
case'1':{
cout<<"输入修改前学院的名称;";
string nnnn;
cin>>nnnn;
cout<<"输入修改后学院的名称:";
string nnnnn;
cin>>nnnnn;
for(int i=0;i<size;i++){
if(stu[i].collage==nnnn){
stu[i].collage=nnnnn; }
}
string nnn="批量修改学院信息";
cclog(nnn,nnnn,nnnnn);
cpop();
break; }
case'2':{
cout<<"输入修改前专业的名称;";
string nnnn;
cin>>nnnn;
cout<<"输入修改后专业的名称:";
string nnnnn;
cin>>nnnnn;
for(int i=0;i<size;i++){
if(stu[i].major==nnnn){
stu[i].major=nnnnn; }
}
string nnn="批量修改专业信息";
cclog(nnn,nnnn,nnnnn);cpop();
break; }
case'3':{
cout<<"输入修改前的班级;";
string nnnn;
cin>>nnnn;
cout<<"输入修改后的班级:";
string nnnnn;
cin>>nnnnn;
for(int i=0;i<size;i++){
if(stu[i].classnum==nnnn){
stu[i].classnum=nnnnn; }
}string nnn="批量修改班级信息";
cclog(nnn,nnnn,nnnnn);cpop();
break; }
}
}
//姓名检验
void Student::checkName(){
char b[20];
while(1){
cout<<"请输入姓名:";
cin>>name;
strcpy(b,name.c_str());
if(name.length()<2||name.length()>20)
{cout<<"姓名位数不正确,请重新输入!"<<endl;
continue;
}
int k=0;
for(int i=0;i<name.length();i++){
if(isalpha(b[i])||isdigit(b[i])){
//库函数isalpha检查字符是否是字母,isdigit检查字符是否是数字
cout<<"输入字符格式错误,请重新输入!"<<endl;
k=1;
break;
}
}if(k==1)continue;break;
}
cout<<"输入有效"<<endl;
}
//性别检验
void Student::checkSex(){
while(1){
cout<<"请输入性别:";
cin>>sex;
if(sex != "男"&&sex != "女")
{cout<<"性别输入不正确,请重新输入!"<<endl;
continue;}break;}
cout<<"输入有效"<<endl;
}
//籍贯检验
void Student::checknation(){
cout<<"请输入籍贯:";
cin>>nation;
}
//身份证号检验
void Student::checkId() {
// 检验身份证号码的长度是否正确
while(1){
cout<<"请输入身份证号:";
cin>>id;
if (id.length() != 18) {
cout << "身份证号码无效!" << endl;
continue;
}
// 检验身份证号码的前17位是否都是数字
for (int i = 0; i < 17; i++) {
if (id[i] < '0' || id[i] > '9') {
cout << "身份证号码无效!" << endl;
continue;
}
}
// 检验身份证号码的最后一位是否是数字或者X(代表罗马数字10)
if ((id[17] < '0' || id[17] > '9') && id[17] != 'X') {
cout << "身份证号码无效!" << endl;
continue;
}
// 检验身份证号码的校验位是否正确
int leng[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
char validChar[11] = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
int sum = 0;
for (int i = 0; i < 17; i++) {
sum += (id[i] - '0') * leng[i];
}
if (validChar[sum % 11] != id[17]) {
cout << "身份证号码无效!" << endl;
continue;
} break;
}
cout << "身份证号码有效!" << endl;
}
//班级检验
void Student::checkClass(){
char a[10];
while(1){
cout<<"请输入8位班级:";
cin>>classnum;
strcpy(a,classnum.c_str());
if(classnum.length()!=8)
{cout<<"班级位数不正确,请重新输入!"<<endl;
continue;
}
int k=0;
for(int i=0;i<8;i++){
if(a[i]<'0'||a[i]>'9'){
cout<<"输入字符格式错误,请重新输入!"<<endl;
k=1;
break;
}
}if(k==1)continue;
break;
}
cout<<"输入有效"<<endl;
}
//学号的检验
void Student::checkSchoolId(){
char a[20];
while(1){
cout<<"请输入10位学号:";
cin>>schoolid;
strcpy(a,schoolid.c_str());
if(schoolid.length()!=10)
{cout<<"学号位数不正确,请重新输入!"<<endl;
continue;
}
int k=0;
for(int i=0;i<10;i++){
if(a[i]<'0'||a[i]>'9'){
cout<<"输入字符格式错误,请重新输入!"<<endl;
k=1;
break;
}
}if(k==1)continue;break;
}
cout<<"输入有效"<<endl;
}
//学院检验
void Student::checkCollage(){
char c[20];
while(1){
cout<<"请输入学院:";
cin>>collage;
strcpy(c,collage.c_str());
if(collage.length()<2||collage.length()>20)
{cout<<"学院位数不正确,请重新输入!"<<endl;
continue;
}
int k=0;
for(int i=0;i<collage.length();i++){
if(isalpha(c[i])||isdigit(c[i])){
cout<<"输入字符格式错误,请重新输入!"<<endl;
k=1;
break;
}
}if(k==1)continue;break;
}
cout<<"输入有效"<<endl;
}
//专业检验
void Student::checkMajor(){
char d[20];
while(1){
cout<<"请输入专业:";
cin>>major;
strcpy(d,major.c_str());
if(major.length()<2||major.length()>20)
{cout<<"专业位数不正确,请重新输入!"<<endl;
continue;
}
int k=0;
for(int i=0;i<major.length();i++){
if(isalpha(d[i])||isdigit(d[i])){
cout<<"输入字符格式错误,请重新输入!"<<endl;
k=1;
break;
}
}if(k==1)continue;break;
}
cout<<"输入有效"<<endl;
}
//电话号码检验
void Student::checkPhoneNum(){
char b[20];
while(1){
cout<<"请输入11位电话号码:";
cin>>phonenum;
strcpy(b,phonenum.c_str());
if(phonenum.length()!=11)
{cout<<"电话号码位数不正确,请重新输入!"<<endl;
continue;
}
int k=0;
for(int i=0;i<11;i++){
if(b[i]<'0'||b[i]>'9'){
cout<<"输入字符格式错误,请重新输入!"<<endl;
k=1;
break;
}
}if(k==1)continue;break;
}
cout<<"输入有效"<<endl;
}
//qq号检验
void Student::checkQQNum(){
char c[12];
while(1){
cout<<"请输入QQ号码:";
cin>>QQnum;
strcpy(c,QQnum.c_str());
if(QQnum.length()<5||QQnum.length()>10)
{cout<<"QQ号码位数不正确,请重新输入!"<<endl;
continue;
}
int k=0;
for(int i=0;i<10;i++){
if(c[i]<'0'||c[i]>'9'){
cout<<"输入字符格式错误,请重新输入!"<<endl;
k=1;
break;
}
}if(k==1)continue;break;
}
cout<<"输入有效"<<endl;
}
//成绩的录入和检验
void Student::inputscore(){
while(1){
cout<<"请输入语文成绩:";
cin>>Chinese;
if(Chinese<0||Chinese>100){
cout<<"输入成绩不正确,请重新输入:"<<endl;
continue;
}
break;
}cout<<"语文成绩为:"<<Chinese<<endl;
while(1){
cout<<"请输入数学成绩:";
cin>>Math;
if(Math<0||Math>100){
cout<<"输入成绩不正确,请重新输入:"<<endl;
continue;
}
break;
}cout<<"数学成绩为:"<<Math<<endl;
while(1){
cout<<"请输入英语成绩:";
cin>>English;
if(English<0||English>100){
cout<<"输入成绩不正确,请重新输入:"<<endl;
continue;
}
break;
}cout<<"英语成绩为:"<<English<<endl;
total_score=Chinese+Math+English;
cout<<"总成绩为:"<<total_score<<endl;
}