利用C++语言实现基本的学生信息管理系统;
要求:
1-设置管理员密码
2-人员数据有:姓名,性别等基本的信息
3-可以添加,删除,保存,统计
1 #include<iostream> 2 #include<iomanip> 3 #include<fstream> 4 #include<cstring> 5 #include<windows.h> 6 using namespace std; 7 const int EXIT=0; 8 const int REFUSE=1; 9 const int OK=2; 10 int IFRUN=0; 11 int PasswordExam(); 12 void printline() 13 { 14 cout<<endl<<endl<<endl<<endl<<endl<<endl; 15 } 16 void printspace() 17 { 18 cout<<" "; 19 } 20 class student 21 { 22 public: 23 char name[20];//姓名 24 char sex[4];//性别 25 char identity[20];//学号 26 char birth[10];//出生年月 27 char major[20];//专业 28 int Class;//班级 29 char tell[15];//电话号码 30 char qq[15];//QQ号 31 char address[20];//家庭地址 32 }; 33 class SystemControl{ 34 public: 35 SystemControl() 36 { 37 StuNum=0; 38 initial(); 39 } 40 ~SystemControl(); 41 void RunControl(); 42 private: 43 void initial(int work=0);//初始化数组 44 void input();//添加 45 int search(int work=0);//查询 46 void modify();//修改 47 void deletes();//删除 48 void display();//输出 49 void menu();//菜单 50 void biaotou();//表头 51 void changepassword();//修改密码 52 student stu[100];//最多放100个学生信息 53 int StuNum; 54 }; 55 void SystemControl::changepassword() 56 { 57 char pass1[40]; 58 char pass2[40]; 59 system("cls"); 60 printline(); 61 ifstream fp("password.dat",ios::in); 62 fp>>pass1; 63 fp.close(); 64 65 printspace(); 66 cout<<"请先输入旧密码:";cin>>pass2; 67 if(strcmp(pass2,pass1)) 68 { 69 printspace(); 70 cout<<"旧密码输入错误,按Enter键返回主菜单"<<endl; 71 getchar();getchar();getchar(); 72 return; 73 } 74 int timesort=0; 75 NEW: 76 printspace(); 77 cout<<"请输入新密码:";cin>>pass1;printspace(); 78 cout<<"请确认新密码:";cin>>pass2;printspace(); 79 timesort++; 80 if(strcmp(pass2,pass1)) 81 { 82 if(timesort>=3) 83 { 84 cout<<"错误次数太多,按Enter键返回主菜单。"<<endl; 85 getchar();getchar(); 86 return; 87 } 88 cout<<"两次输入不同,按Enter键重新输入" <<endl; 89 getchar() ;getchar(); 90 system("cls"); 91 printline(); 92 goto NEW; 93 } 94 ofstream fo("password.dat",ios::out); 95 fo<<pass1<<endl; 96 fo.close(); 97 cout<<"密码修改成功,按Enter键返回主菜单"<<endl; 98 getchar();getchar(); 99 } 100 //初始化学生数组 101 //学生信息保存到student.dat中 102 void SystemControl::initial(int work) 103 { 104 ifstream fp("student.dat",ios::in); 105 char test[100]; 106 while(fp>>stu[StuNum].identity) 107 { 108 fp>>stu[StuNum].name>>stu[StuNum].sex>>stu[StuNum].Class; 109 fp>>stu[StuNum].major>>stu[StuNum].address; 110 fp>>stu[StuNum].birth>>stu[StuNum].qq>>stu[StuNum].tell; 111 StuNum++; 112 } 113 if(work==1)return; 114 if(StuNum>0) 115 { 116 system("cls"); 117 printline(); 118 printspace(); 119 cout<<"记录中的所有数据已经初始化完毕"<<endl;printspace(); 120 cout<<"一共有"<<StuNum<<"个学生的信息"<<endl; 121 cout<<endl;printspace(); 122 cout<<"即将进入主界面"<<endl; 123 Sleep(3100); 124 system("cls"); 125 } 126 127 } 128 SystemControl::~SystemControl() 129 { 130 ofstream fp("student.dat",ios::out); 131 for(int i=0;i<StuNum;i++) 132 { 133 system("cls"); 134 printline(); 135 printspace(); 136 cout<<"您即将关闭系统,正在保存信息中,请稍后----" <<endl;printspace(); 137 cout<<"已完成:"; 138 fp<<stu[i].identity<<" "<<stu[i].name<<" "<<stu[i].sex<<" "<<stu[i].Class<<" "; 139 fp<<stu[i].major<<" "<<stu[i].address<<" "<<stu[i].birth<<" "<<stu[i].qq<<" "<<stu[i].tell<<endl; 140 Sleep(100); 141 cout<<(double)(i+1)/StuNum*100<<"%"<<endl; 142 } 143 fp.close();printspace(); 144 cout<<"已经关闭" <<endl; 145 } 146 void SystemControl::biaotou() 147 { 148 cout<<"姓名"<<" 性别"<<" 学号"<<" 出生年月"<<" 专业"<<" 班级"<<" 电话号码"<<" QQ号"<<" 家庭地址"<<endl; 149 } 150 void SystemControl::menu() 151 { 152 system("cls"); 153 cout<<endl; 154 printspace(); 155 cout<<"\t==========================\n";printspace(); 156 cout<<"\t||请选择你要进行的操作:||\n";printspace(); 157 cout<<"\t|| 1.添加信息 ||\n";printspace(); 158 cout<<"\t|| 2.查询信息 ||\n";printspace(); 159 cout<<"\t|| 3.修改操作 ||\n";printspace(); 160 cout<<"\t|| 4.删除操作 ||\n";printspace(); 161 cout<<"\t|| 5.显示信息 ||\n";printspace(); 162 cout<<"\t|| 6 修改密码 ||\n";printspace(); 163 cout<<"\t|| 7.退出系统 ||\n";printspace(); 164 cout<<"\t==========================\n";printspace(); 165 cout<<"请选择你要进行的操作(1,2,3,4,5,6,7):"; 166 IFRUN=1; 167 } 168 //主控函数 169 void SystemControl::RunControl() 170 { 171 while(true){ 172 menu(); 173 int i; 174 cin>>i; 175 switch(i) 176 { 177 case 1:input();break; 178 case 2:search();break; 179 case 3:modify();break; 180 case 4:deletes();break; 181 case 5:display();break; 182 case 6:changepassword();break;; 183 case 7:printspace();cout<<"谢谢您的使用!"<<endl;return;break; 184 default:cout<<"您的选择有误!";break; 185 } 186 } 187 } 188 //输入函数 189 void SystemControl::input() 190 { 191 char ch=‘y‘; 192 do{ 193 system("cls"); 194 cout<<"退出输入请在学号栏输入#"<<endl; 195 cout<<"按要求输入信息"<<endl; 196 cout<<"学号:"; cin>>stu[StuNum].identity; 197 if(!strcmp(stu[StuNum].identity,"#"))return; 198 cout<<"姓名:"; cin>>stu[StuNum].name; 199 cout<<"性别:"; cin>>stu[StuNum].sex; 200 cout<<"班级:"; cin>>stu[StuNum].Class; 201 cout<<"专业:"; cin>>stu[StuNum].major; 202 cout<<"地址: "; cin>>stu[StuNum].address; 203 cout<<"生日:"; cin>>stu[StuNum].birth; 204 cout<<"QQ号:"; cin>>stu[StuNum].qq; 205 cout<<"电话:"; cin>>stu[StuNum].tell; 206 cout<<"是否继续输入(y/n):";cin>>ch; 207 StuNum++; 208 } 209 while(ch==‘y‘||ch==‘Y‘); 210 } 211 int SystemControl::search(int work) 212 { 213 int choice=0; 214 int i=0; 215 char cho; 216 char item[30]; 217 SEARCH: 218 system("cls");printspace(); 219 cout<<"============查询学生信息============="<<endl;printspace(); 220 cout<<"|| <1>通过姓名查询 ||"<<endl;printspace(); 221 cout<<"|| <2>通过学号查询 ||"<<endl;printspace(); 222 cout<<"|| <3>返回上一级菜单 ||"<<endl;printspace(); 223 cout<<"====================================="<<endl;printspace(); 224 cout<<endl<<"请输入您的查询方式(1,2,3):" ;cin>>choice; 225 226 switch(choice) 227 { 228 case 1: 229 cout<<"输入姓名:";cin>>item; 230 for(i=0;i<StuNum;i++) 231 { 232 if(!strcmp(stu[i].name,item)) 233 break; 234 } 235 break; 236 case 2: 237 cout<<"输入学号:";cin>>item; 238 for(i=0;i<StuNum;i++) 239 { 240 if(!strcmp(stu[i].identity,item)) 241 break; 242 } 243 break; 244 case 3:return -1; 245 default: 246 goto SEARCH; 247 break; 248 } 249 250 if(i>=StuNum) 251 { 252 cout<<"没有找到符合的学生"<<endl; 253 cout<<"继续查找(y/n):";getchar();cin>>cho; 254 if(cho==‘y‘||cho==‘Y‘)goto SEARCH; 255 else return -1; 256 } 257 258 cout<<"已找到学生:"<<stu[i].name<<endl; 259 printspace(); 260 cout<<"学号:"; cout<<stu[i].identity<<endl; 261 printspace(); 262 cout<<"性别:"; cout<<stu[i].sex<<endl;printspace(); 263 cout<<"班级:"; cout<<stu[i].Class<<endl;printspace(); 264 cout<<"专业:"; cout<<stu[i].major<<endl;printspace(); 265 cout<<"地址: "; cout<<stu[i].address<<endl;printspace(); 266 cout<<"生日:"; cout<<stu[i].birth<<endl;printspace(); 267 cout<<"QQ号:"; cout<<stu[i].qq<<endl;printspace(); 268 cout<<"电话:"; cout<<stu[i].tell<<endl; 269 if(work==1){ 270 cout<<endl; 271 return i;} 272 cout<<endl<<endl; 273 cout<<"是否继续查找(y/n):" ;cin>>cho; 274 if(cho==‘y‘||cho==‘Y‘)goto SEARCH; 275 return 1; 276 } 277 void SystemControl::deletes() 278 { 279 DELTE: 280 system("cls"); 281 int num;printspace(); 282 cout<<"全部删除输入-1"<<endl;printspace(); 283 cout<<"选择单个信息删除请输入 1"<<endl;printspace(); 284 cout<<"返回主菜单输入 0"<<endl; printspace(); 285 cin>>num; 286 if(num==0)return; 287 if(num==-1) 288 { 289 if(PasswordExam()==OK) 290 { 291 StuNum=0; 292 printspace(); 293 cout<<"所有学生信息删除成功"<<endl; 294 } 295 printspace(); 296 cout<<"按Enter键返回主菜单"<<endl; 297 getchar(); 298 return; 299 } 300 else if(num==1) 301 { 302 int getint=search(1); 303 if(getint==-1) 304 { 305 goto DELTE; 306 } 307 ofstream fp("student",ios::out); 308 for(int i=0;i<StuNum;i++) 309 { 310 if(getint==i)continue; 311 fp<<stu[i].identity<<stu[i].name<<stu[i].sex<<stu[i].Class; 312 fp<<stu[i].major<<stu[i].address<<stu[i].birth<<stu[i].qq<<stu[i].tell<<endl; 313 } 314 fp.close(); 315 StuNum=0; 316 initial(1); 317 cout<<"删除成功"<<endl; 318 cout<<"按Enter键返回上一级菜单"<<endl; 319 getchar();getchar(); 320 } 321 goto DELTE; 322 } 323 void SystemControl::modify() 324 { 325 int getvalue=search(1); 326 char value[30]; 327 if(getvalue>=0&&getvalue<StuNum){ 328 cout<<"在学号栏输入#退出修改"<<endl; 329 cout<<"输入修改后的信息:"<<endl; 330 cout<<"学号:"; cin>>value; 331 if(!strcmp(value,"#"))return; 332 strcpy(stu[getvalue].identity,value); 333 cout<<"姓名:"; cin>>stu[getvalue].name; 334 cout<<"性别:"; cin>>stu[getvalue].sex; 335 cout<<"班级:"; cin>>stu[getvalue].Class; 336 cout<<"专业:"; cin>>stu[getvalue].major; 337 cout<<"地址: "; cin>>stu[getvalue].address; 338 cout<<"生日:"; cin>>stu[getvalue].birth; 339 cout<<"QQ号:"; cin>>stu[getvalue].qq; 340 cout<<"电话:"; cin>>stu[getvalue].tell; 341 cout<<"修改成功,按任意键返回主菜单" <<endl; 342 getchar();getchar(); 343 } 344 } 345 //密码文件password.dat 346 int PasswordExam() 347 { 348 ifstream fp("password.dat",ios::in); 349 char pass1[100]; 350 char pass2[100]; 351 fp>>pass1; 352 if(strlen(pass1)<1) 353 { 354 fp.close(); 355 ofstream fi("password.dat",ios::out); 356 printline(); 357 printspace(); 358 cout<<"您这是第一次使用本系统,请先设置管理员密码!"<<endl; 359 cout<<endl; 360 SETPASSWORD: 361 printspace(); 362 cout<<"请设置密码:"; cin>>pass1; 363 printspace(); 364 cout<<"请确认密码:"; cin>>pass2; 365 if(strcmp(pass1,pass2)) 366 { 367 printspace(); 368 cout<<"两次输入密码不一致,请重新输入" <<endl; 369 goto SETPASSWORD; 370 } 371 fi<<pass1<<endl; 372 system("cls"); 373 printline(); 374 printspace(); 375 cout<<"密码设置成功,按任意键继续"<<endl; 376 getchar();getchar(); 377 return OK; 378 } 379 else 380 { 381 int testtime=0; 382 TEST: 383 { 384 system("cls"); 385 printline(); 386 printspace(); 387 cout<<"请输入管理员密码:"; 388 cin>>pass2; 389 testtime++; 390 } 391 if(strcmp(pass1,pass2)) 392 { 393 system("cls"); 394 printline(); 395 printspace(); 396 if(testtime>=3){ 397 if(!IFRUN) 398 { 399 cout<<"错误次数太多,自动退出系统" <<endl; 400 return EXIT;} 401 cout<<"错误次数太多,请求被拒绝:"; 402 return REFUSE; 403 } 404 cout<<"输入密码错误,"; 405 cout<<"按Enter键重新输入"; 406 getchar();getchar(); 407 goto TEST; 408 } 409 system("cls"); 410 printline(); 411 printspace(); 412 cout<<"密码正确,按任意键继续操作"<<endl; 413 getchar();getchar(); 414 return OK; 415 } 416 } 417 void SystemControl::display() 418 { 419 system("cls"); 420 if(StuNum==0) { 421 printline();printspace(); 422 cout<<"学生记录为空,按任意键返回"<<endl; 423 getchar();getchar(); 424 return;} 425 cout<<"学生人数:"<<StuNum<<endl<<"所有学生信息如下" <<endl; 426 biaotou(); 427 for(int i=0;i<StuNum;i++) 428 { 429 cout<<stu[i].name<<" "<<stu[i].sex<<" "<<stu[i].identity<<" "<<stu[i].birth<<" "<<stu[i].major; 430 cout<<" "<<stu[i].Class<<" "<<stu[i].tell<<" "<<stu[i].qq<<" "<<stu[i].address<<endl; 431 } 432 cout<<"按任意键返回主菜单"<<endl; 433 getchar();getchar(); 434 } 435 int main() 436 { 437 //验证登陆密码 438 if(PasswordExam()==EXIT)return 0; 439 SystemControl command; 440 command.RunControl(); 441 return 0; 442 }
时间: 2024-10-26 10:58:51