码迷,mamicode.com
首页 > 编程语言 > 详细

C++实现人员信息管理系统模拟

时间:2015-01-26 14:53:48      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:

利用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 }

 

C++实现人员信息管理系统模拟

标签:

原文地址:http://www.cnblogs.com/sytu/p/4250260.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!