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

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

C++实现人员信息管理系统模拟的相关文章

C++ 校园管理系统、高校人员信息管理系统设计

 "高校人员信息管理系统设计" 1.问题描述 某高校有四类员工教师.实验员.行政人员教师兼行政人员共有的信息包括编号.姓名.性别.年龄等.其中教师还包含的信息有所在系部.专业.职称实验员还包含的信息由所在实验室.职务行政人员还包含的信息有政治面貌.职称等. 2.功能要求 (1)添加功能程序能够任意添加上述四类人员的记录可提供选择界面供用户选择所要添加的人员类别要求员工的编号要唯一如果添加了重复编号的记录时则提示数据添加重复并取消添加. (2)查询功能可根

学生管理系统(jsp+mysql)

1.实验目的 通过使用 Java Web 技术设计一个简单的数据库管理系统,了解前台页面和后 台编辑页面的区别,掌握 Web 服务器与 MySQL 数据库的连接和数据库操作的方 法,掌握使用 JSP 编写后台代码的方法. 2.实验内容和要求 开发一个学生管理系统,完成学生信息的查看.增加.删除和修改等功能. 对于客户端增加和修改信息页面,要使用 javascript 进行必要的数据的非空验证. 自行添加一些 css,使得页面和字体更加美观. 3.实验步骤及实验结果 (1)打开 MySQL,新建一

[Asp.Net]最近一个项目的总结

引言 项目到目前告一段落,目前进入测试阶段,下周就要去部署了.虽然项目不大,但是从头到尾都是自己一个人负责,在完成编码之后,对代码进行走查,命名规范,业务逻辑,代码优化等,能负责一个项目的整个编码,非常的兴奋啊. 技术 用到的技术: 技术 项目中使用该技术目的 ASP.NET 使用asp.net进行web端用户信息管理,对用户的增删改查,对签名样本的上传,下载Excel模版,导入用户信息. webService 为签名客户端提供修改用户密码接口服务,下载签名样本接口服务, windows服务 轮

设计模式实例(Lua)笔记之六(Adapter模式)

1.描写叙述 "我"在 2004 年的时候带了一个项目,做一个人力资源管理,该项目是我们总公司发起的项目,公司一共同拥有 700 多号人,包含子公司,这个项目还是比較简单的,分为三大模块:人员信息管理,薪酬管理,职位管理,当中人员管理这块就用到了适配器模式,是怎么回事呢?当时开发时明白的指明:人员信息简管理的对象是全部员工的全部信息,然后我们就这样设计了一个类图: 这个项目是 04 年年底投产的,执行到 05 年年底还是比較平稳的,中间修修补补也非常正常,05 年年底不知道是那股风吹的

第 8 章 适配器模式【Adapter Pattern】

以下内容出自:<<24种设计模式介绍与6大设计原则>> 好,请安静,后排聊天的同学别吵醒前排睡觉的同学了,大家要相互理解嘛.今天讲适配器模式,这个模式也很简单,你笔记本上的那个拖在外面的黑盒子就是个适配器,一般你在中国能用,在日本也能用,虽然两个国家的的电源电压不同,中国是220V,日本是110V,但是这个适配器能够把这些不同的电压转换为你需要的36V 电压,保证你的笔记本能够正常运行,那我们在设计模式中引入这个适配器模式是不是也是这个意思呢?是的,一样的作用,两个不同接口,有不同

java面试宝典(蓝桥学院)

Java面试宝典(蓝桥学院) 回答技巧 这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的学生在笔试/面试时更好地赢得好的结果.由于这套试题涉及的范围很泛,很广,很杂,大家不可能一天两天就看完和学完这套面试宝典,即使你已经学过了有关的技术,那么至少也需要半个月的时间才能消化和掌握这套面试宝典,所以,大家应该早作准备,从拿到这套面试宝典之日起,就要坚持在每天闲暇之余学习其中几道题目,日积月累,等到出去面试时,一切都水到渠成,面试时就自然会游刃有余了

设计模式--适配器模式【 Adapter Pattern】

声明:本文从网络书籍整理而来,并非原创. 适配器模式,这个模式也很简单,你笔记本上的那个拖在外面的黑盒子就是个适配器,一般你在中国能用,在日本也能用,虽然两个国家的的电源电压不同,中国是 220V,日本是 110V,但是这个适配器能够把这些不同的电压转换为你需要的 36V 电压,保证你的笔记本能够正常运行,那我们在设计模式中引入这个适配器模式是不是也是这个意思呢?是的,一样的作用,两个不同接口,有不同的实现,但是某一天突然上帝命令你把 B 接口转换为 A 接口,怎么办?继承,能解决,但是比较傻,

设计模式之(六)------适配器模式

[摘自 您的设计模式]这个模式也很简单,你笔记本上的那个拖在外面的黑盒子就是个适配器,一般你在中国能用,在日本也能用, 虽然两个国家的的电源电压不同,中国是 220V,日本是 110V,但是这个适配器能够把这些不同的电压转换 为你需要的 36V 电压,保证你的笔记本能够正常运行,那我们在设计模式中引入这个适配器模式是不是也 是这个意思呢?是的,一样的作用,两个不同接口,有不同的实现,但是某一天突然上帝命令你把 B 接口 转换为 A 接口,怎么办?继承,能解决,但是比较傻,而且还违背了 OCP 原

24种设计模式--适配器模式【Adapter Pattern】

今天讲适配器模式,这个模式也很简单,你笔记本上的那个拖在外面的黑盒子就是个适配器,一般你在中国能用,在日本也能用,虽然两个国家的的电源电压不同,中国是 220V,日本是 110V,但是这个适配器能够把这些不同的电压转换为你需要的 36V 电压,保证你的笔记本能够正常运行,那我们在设计模式中引入这个适配器模式是不是也是这个意思呢?是的,一样的作用,两个不同接口,有不同的实现,但是某一天突然上帝命令你把 B 接口转换为 A 接口,怎么办?继承,能解决,但是比较傻,而且还违背了 OCP 原则,怎么办?