#include<iostream>
#include<fstream>
#include<string>
#include<iomanip>
#include<conio.h>
#include<windows.h>
using namespace std;
#define M 200 //可以存信息总量
int N=0; //学生总量
class student{
public:
student();
void set(); //初始化信息,第一次对信息的录入
void add(); //添加学生信息
void del(); //删除某学生信息
void change(); //修改某学生信息
void search(); //查询某学生信息
void display(); //显示全部学生信息
private:
static int num;
string name,sex,age,birthday,address,tel,Email;
};
class denglu{//定义登录密码类
public:
denglu();//构造函数 设置账号、初始密码
int input();
int newpw();
private:
string id;
char password[10];
};
int student::num=1000;
///1、构造函数 设置账号、初始密码
denglu::denglu()
{
id = "100001";
for(int i=0;i<6;i++){
password[i] = '1';
}
}
///2、密码输入、校验
int denglu::input()
{
int i=0,j=0,t,flag=1;
char ch,pw[10],a[10];
string id0,dl1;
cout<<"退出登录界面请输入“-1 ”,否则输入任意数字"<<endl;
cin>>flag;
if(flag == -1) exit(0);
//cout<<"请输入管理员账号,密码:\n";
cout<<"输入管理员账号:";
cin>>id0;
cout<<"输入六位数密码:";
while((ch=getch())!='\r') {//不回显函数。getch()函数输入字符时不显示出来,其他功能同getchar()
if(ch!=8) { //不是退格(退格键的ASCII码为:8)就录入
pw[i]=ch;
cout<<'*';//并且输出*号
i++;
}
else {
cout<<'\b';//让光标回退一位,下一次输入字符时,会把光标所在位置的字符替换掉
cout<<' ';//再显示空格符把刚才的*给盖住,
cout<<'\b';//然后再回撤一格等待录入。
i--;
}
}
pw[i]='\0';
system("cls");
//判断账号密码是否正确
if(id0 != id){
cout<<"\n账号错误!"<<endl;
return 0;
}
for(i=0;i<6;i++){
if(pw[i] != password[i]){
cout<<"\n密码错误!"<<endl;
return 0;
}
}
return 1;
}
///3、密码修改
int denglu::newpw()
{
int j=0;
char c;
cout<<"\n请输入六位新密码:";
while((c=getch())!='\r') {//getch()函数输入字符时不显示出来,其他功能同getchar()
if(c!=8) { //不是回(回退键的ASCII码为:8)就录入
password[j]=c;
cout<<'*';//并且输出*号
j++;
}
else {
cout<<'\b';//这里是删除一个,通过输出回撤符 /b,回撤一格,
cout<<' ';//再显示空格符把刚才的*给盖住,
cout<<'\b';//然后再回撤一格等待录入。
j--;
}
}
system("cls");
cout<<"\n密码修改成功!"<<endl;
return 0;
}
student::student() {}
///4、初始化文件
void student::set()
{
int i;
string setname,setsex,setage,setbirthday,setaddress,settel,setEmail;
ofstream outfile;
outfile.open("f1.txt",ios::out); //----打开文件----
if(!outfile)
{
cerr<<" open error"<<endl;
exit(1);
}
//----依次录入相应个数的学生信息----
for(i=0;i<M;i++)
{
cout<<"当姓名输入为'0'时,停止输入!!!"<<endl;
cout<<"请输入姓名:"<<endl;
cin>>setname;
name=setname;
if(setname=="0") break;
if(setname!="0")
{
N++;
num++;
outfile<<num<<" ";
outfile<<setname<<" ";
cout<<"请输入性别:"<<endl;
cin>>setsex;
sex=setsex;
outfile<<setsex<<" ";
cout<<"请输入年龄:"<<endl;
cin>>setage;
age=setage;
outfile<<setage<<" ";
cout<<"请输入出生日期:"<<endl;
cin>>setbirthday;
birthday=setbirthday;
outfile<<setbirthday<<" ";
cout<<"请输入家庭住址:"<<endl;
cin>>setaddress;
address=setaddress;
outfile<<setaddress<<" ";
cout<<"请输入电话:"<<endl;
cin>>settel;
tel=settel;
outfile<<settel<<" ";
cout<<"请输入电子邮箱:"<<endl;
cin>>setEmail;
Email=setEmail;
outfile<<setEmail<<" "<<endl;
}
}
outfile.close(); //----关闭文件----
}
///5、添加文件
void student::add()
{
string addname,addsex,addage,addbirthday,addaddress,addtel,addEmail;
//----以追加的方式录入信息,直接将信息追加到以前文件的末尾----
ofstream outfile("f1.txt",ios::app);
if(!outfile)
{
cerr<<" open error"<<endl;
exit(1);
}
N=N+1;
//----依次输入相应的数据,并且追加到之前的文件中去----
cout<<"请输入您要添加的数据"<<endl;
num++;
outfile<<num<<" ";
cout<<"请输入姓名:"<<endl;
cin>>addname;
outfile<<addname<<" ";
cout<<"请输入性别:"<<endl;
cin>>addsex;
outfile<<addsex<<" ";
cout<<"请输入年龄:"<<endl;
cin>>addage;
outfile<<addage<<" ";
cout<<"请输入出生日期:"<<endl;
cin>>addbirthday;
outfile<<addbirthday<<" ";
cout<<"请输入家庭住址:"<<endl;
cin>>addaddress;
outfile<<addaddress<<" ";
cout<<"请输入电话:"<<endl;
cin>>addtel;
outfile<<addtel<<" ";
cout<<"请输入电子邮件:"<<endl;
cin>>addEmail;
outfile<<addEmail<<endl;
outfile.close();
cout<<"已添加成功!"<<endl;
}
///6、删除文件
void student::del()
{
int k,i;
int num[M];
string name[M],sex[M],age[M],birthday[M],address[M],tel[M],Email[M];
ifstream infile("f1.txt",ios::in);
if(!infile)
{
cerr<<" open error"<<endl;
exit(1);
}
for(i=0;i<N;i++)
{
cout<<" ";
infile>>num[i];
cout<<setw(4)<<num[i];
infile>>name[i];
cout<<setw(7)<<name[i];
infile>>sex[i];
cout<<setw(6)<<sex[i];
infile>>age[i];
cout<<setw(6)<<age[i];
infile>>birthday[i];
cout<<setw(12)<<birthday[i];
infile>>address[i];
cout<<setw(11)<<address[i];
infile>>tel[i];
cout<<setw(14)<<tel[i];
infile>>Email[i];
cout<<setw(18)<<Email[i]<<endl;
}
cout<<"您想删除第几个学生信息?"<<endl;
cin>>k;
k=k-1;
infile.close();
ofstream outfile("f1.txt",ios::out);
if(!outfile)
{
cerr<<" open error"<<endl;
exit(1); //退出程序
}
//----将数组存取的信息输出到文件中去----
for(i=0;i<N;i++)
{
if(i!=k)
{
outfile<<num[i]<<" ";
outfile<<name[i]<<" ";
outfile<<sex[i]<<" ";
outfile<<age[i]<<" ";
outfile<<birthday[i]<<" ";
outfile<<address[i]<<" ";
outfile<<tel[i]<<" ";
outfile<<Email[i]<<" "<<endl;
}
}
outfile.close();
N=N-1;
cout<<"已删除成功!"<<endl;
}
///7、修改文件
void student::change()
{
int i,k;
int num[M];
string name[M],sex[M],age[M],birthday[M],address[M],tel[M],Email[M];
ifstream infile("f1.txt",ios::in);
if(!infile)
{
cerr<<" open error"<<endl;
exit(1);
}
for(i=0;i<N;i++)
{
cout<<" ";
infile>>num[i];
cout<<setw(4)<<num[i];
infile>>name[i];
cout<<setw(7)<<name[i];
infile>>sex[i];
cout<<setw(6)<<sex[i];
infile>>age[i];
cout<<setw(6)<<age[i];
infile>>birthday[i];
cout<<setw(12)<<birthday[i];
infile>>address[i];
cout<<setw(11)<<address[i];
infile>>tel[i];
cout<<setw(14)<<tel[i];
infile>>Email[i];
cout<<setw(18)<<Email[i]<<endl;
}
infile.close();
ofstream outfile("f1.txt",ios::out);
if(!outfile)
{
cerr<<" open error"<<endl;
exit(1);
}
cout<<"您想修改第几个学生信息?"<<endl;
cin>>k;
k=k-1;
cout<<"请输入新的数据:"<<endl;
cout<<"请输入姓名:"<<endl;
cin>>name[k];
cout<<"请输入性别:"<<endl;
cin>>sex[k];
cout<<"请输入年龄:"<<endl;
cin>>age[k];
cout<<"请输入出生日期:"<<endl;
cin>>birthday[k];
cout<<"请输入家庭住址:"<<endl;
cin>>address[k];
cout<<"请输入电话:"<<endl;
cin>>tel[k];
cout<<"请输入电子邮箱:"<<endl;
cin>>Email[k];
for(i=0;i<N;i++)
{
outfile<<num[i]<<" ";
outfile<<name[i]<<" ";
outfile<<sex[i]<<" ";
outfile<<age[i]<<" ";
outfile<<birthday[i]<<" ";
outfile<<address[i]<<" ";
outfile<<tel[i]<<" ";
outfile<<Email[i]<<" "<<endl;
}
outfile.close();
cout<<"已修改成功!"<<endl;
}
///8、查询文件
void student::search()
{
int i,n,w=0,num[M],a[M];
char ch;
string searchname, name[M],sex[M],age[M],birthday[M],address[M],tel[M],Email[M],b[M][7];
cout<<"a.按学号查找 b.按姓名查找"<<endl;
ifstream infile("f1.txt",ios::in);
if(!infile)
{
cerr<<" open error"<<endl;
exit(1);
}
for(i=0;i<N;i++)
{
infile>>num[i];a[i]=num[i];
infile>>name[i];b[i][0]=name[i];
infile>>sex[i];b[i][1]=sex[i];
infile>>age[i];b[i][2]=age[i];
infile>>birthday[i];b[i][3]=age[i];
infile>>address[i];b[i][4]=age[i];
infile>>tel[i];b[i][5]=address[i];
infile>>Email[i];b[i][6]=age[i];
}
cout<<"请输入a或者b!"<<endl;
cin>>ch;
if(ch=='a')
{
cout<<"请输入学号!"<<endl;
cin>>n;
for(i=0;i<N;i++)
if(a[i]==n)
{
w=1;
cout<<" 学号 姓名 性别 年龄 出生日期 家庭住址 电话 邮箱"<<endl;
cout<<" ";
cout<<setw(4)<<a[i];
cout<<setw(7)<<b[i][0];
cout<<setw(6)<<b[i][1];
cout<<setw(6)<<b[i][2];
cout<<setw(12)<<b[i][3];
cout<<setw(11)<<b[i][4];
cout<<setw(14)<<b[i][5];
cout<<setw(18)<<b[i][6]<<endl;
}
if(w==0)
cout<<"无此人信息!"<<endl;
}
else if(ch=='b')
{
cout<<"请输入姓名!"<<endl;
cin>>searchname;
for(i=0;i<N;i++)
if(name[i]==searchname)
{
w=1;
cout<<" 学号 姓名 性别 年龄 出生日期 家庭住址 电话 邮箱"<<endl;
cout<<setw(4)<<a[i];
cout<<setw(7)<<b[i][0];
cout<<setw(6)<<b[i][1];
cout<<setw(6)<<b[i][2];
cout<<setw(12)<<b[i][3];
cout<<setw(11)<<b[i][4];
cout<<setw(14)<<b[i][5];
cout<<setw(18)<<b[i][6]<<endl;
}
if(w==0)
cout<<"无此人信息!"<<endl;
}
else cout<<"没有此选项!"<<endl;
}
///9、显示文件
void student::display()
{
int k,num;
string name,sex,age,birthday,address,tel,Email;
ifstream infile("f1.txt",ios::in);
if(!infile)
{
cerr<<" 0open error"<<endl;
exit(1);
}
cout<<" 学号 姓名 性别 年龄 出生日期 家庭住址 电话 邮箱"<<endl;
for(k=0;k<N;k++)
{
cout<<" ";
infile>>num;
cout<<setw(4)<<num;
infile>>name;
cout<<setw(7)<<name;
infile>>sex;
cout<<setw(6)<<sex;
infile>>age;
cout<<setw(6)<<age;
infile>>birthday;
cout<<setw(12)<<birthday;
infile>>address;
cout<<setw(11)<<address;
infile>>tel;
cout<<setw(14)<<tel;
infile>>Email;
cout<<setw(18)<<Email<<endl;
}
infile.close();
}
student stu;
denglu dl;
///10、菜单
void menu()
{
cout<<"\n\t\t\t**************欢迎进入学生信息管理系统*******************"<<endl;
cout<<"\t\t\t* 1.输入学生信息 *"<<endl;
cout<<"\t\t\t* 2.添加学生信息 *"<<endl;
cout<<"\t\t\t* 3.删除学生信息 *"<<endl;
cout<<"\t\t\t* 4.修改学生信息 *"<<endl;
cout<<"\t\t\t* 5.查询学生信息 *"<<endl;
cout<<"\t\t\t* 6.浏览全部学生信息 *"<<endl;
cout<<"\t\t\t* 7.修改密码 *"<<endl;
cout<<"\t\t\t* 0.退出学生信息 *"<<endl;
cout<<"\t\t\t*********************************************************"<<endl;
}
///11、主函数
int main()
{
char ch='1';
int f;
while(1){
f = dl.input();
if(f==1) break;
}
while(f || ch!='0'){
system("color 1f");
menu();
cin>>ch;
while(ch!='0')
{
system("cls");
switch(ch)
{
case '1':stu.set();break;
case '2':stu.add();break;
case '3':stu.del();break;
case '4':stu.change();break;
case '5':stu.search();break;
case '6':stu.display();break;
case '7':dl.newpw();break;
case '0':cout<<"退出系统!";break;
default:cout<<"没有此选项!"<<endl;break;
}
menu();
cin>>ch;
}
system("cls");
f = dl.input();
}
return 0;
}
- 【学生成绩管理系统】 大二c语言作业
几年前写的了,只能在命令行窗口运行,虽然比较挫,还是有一定参考价值... #include <cstdio> #include <conio.h> #include <i ...
- 基于数据库MySQL的简易学生信息管理系统
通过这几天学习Mysql数据库,对其也有了基本的了解,为了加深印象,于是就写了一个最简易的学生信息管理系统. 一:基本要求 1.通过已知用户名和密码进行登录: 2.可以显示菜单: 3.可以随时插入学生 ...
- 关于搬运CSDN上学生信息管理系统的阅读与二次开发
关于本篇博客内容,我大概分成了三个部分进行讲述:对于源代码的解读.二次重开发后程序的介绍和自己在做完对他人代码的解读和重开发后自己的一些感想. 一. 源代码的解读 在本部分的解读中主要分为三部分:该 ...
- 【Python3.6+Django2.0+Xadmin2.0系列教程之二】学生信息管理系统(入门篇)
上一篇我们已经创建好了一个Xadmin的基础项目,现在我们将在此基础上构建一个同样很基础的学生信息管理系统. 一.创建模型 模型是表示我们的数据库表或集合类,并且其中所述类的每个属性是表或集合的字段, ...
- PHP实现简单的学生信息管理系统(web版)
(∩_∩) 1.概述 学了php的一些基础,包括HTML,php,pdo,mysql操作等,一直都没有将它们有机结合.最近写了一个简单的网页版学生信息管理系统,前台用HTML,脚本用到了JavaScr ...
- Java课设(学生信息管理系统)
1.团队课程设计博客链接 http://www.cnblogs.com/Min21/p/7064093.html 2.个人负责模板或任务说明 设计登陆界面和学生信息界面的设计,学生信息的显示.退出等功 ...
- 【Python3.6+Django2.0+Xadmin2.0系列教程之三(入门篇-下)】学生信息管理系统
上一篇我们已经初步的构建起了一个学生管理系统的模型,现在接着来继续完善它吧. 1.上传图片/文件等资源 有时候需要添加一些附件,例如,新生刚入学,大家相互之间还不熟悉,希望能通过照片来加深印象,并且方 ...
- C语言小练习之学生信息管理系统
C语言小练习之学生信息管理系统 main.c文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 ...
- 基于数组或链表的学生信息管理系统(小学期C语言程序实训)
1.基于数组的学生信息管理系统 实验内容: 编写并调试程序,实现学校各专业班级学生信息的管理.定义学生信息的结构体类型,包括:学号.姓名.专业.班级.3门成绩. 实验要求: (1) main函数:以菜 ...
随机推荐
- BBPlayerView
GitHub 仓库地址 一个高度封装的视频播放器视图,基于 AVPlayer.AVPlayerLayer.AVPlayerItem. 继承自 UIView,可以当做一般视图使用,适用于 Swift 和 ...
- Alibaba-技术专区-Dubbo3总体技术体系介绍及技术指南(序章)
Dubbo的背景介绍 Apache Dubbo 是一款微服务开发框架(是一款高性能.轻量级的开源 Java 服务框架),它提供了 RPC通信 与 微服务治理 两大关键能力.这意味着,使用 Dubbo ...
- 线程的常用知识(包括 Thread/Executor/Lock-free/阻塞/并发/锁等)
本次内容列表: 1.使用线程的经验:设置名称.响应中断.使用ThreadLocal 2.Executor:ExecutorService和Future 3.阻塞队列:put和take.offer和po ...
- Java协程编程之Loom项目尝鲜
前提 之前很长一段时间关注JDK协程库的开发进度,但是前一段时间比较忙很少去查看OpenJDK官网的内容.Java协程项目Loom(因为项目还在开发阶段,OpenJDK给出的官网https://ope ...
- 使用Postfix与Dovecot收发电子邮件(物理机虚拟机之间)
邮件应用协议包括: 简单邮件传输协议(SMTP),用来发送或中转发出的电子邮件,占用tcp 25端口. 第三版邮局协议(POP3),用于将服务器上把邮件存储到本地主机,占用tcp 110端口. 第四版 ...
- zlib开发笔记(三):zlib库介绍、在ubuntu上进行arm平台交叉编译
前言 方便做嵌入式arm的交叉移植zlib库. Zlib库 zlib被设计为一个免费的,通用的,法律上不受限制的-即不受任何专利保护的无损数据压缩库,几乎可以在任何计算机硬件和操作系统上使 ...
- Linux、Windows 下手动生成 sha256 等类型的校验文件
目录 1 - 校验文件的作用 2 - Linux 下生成校验文件 3 - Windows 下生成校验文件 参考资料 版权声明 1 - 校验文件的作用 从网服务器下载文件,尤其是比较大的文件时,很容易由 ...
- mysql版本:'for the right syntax to use near 'identified by 'password' with grant option'
查询mysql具体版本 SELECT @@VERSION 问题分析:mysql版本8.0.13,在给新用户授权时,发生了变化: 1064 - You have an error in your SQL ...
- Spring详解(二)------注解配置IOC
@Configuration:告诉Spring这是一个配置类 @Bean("person")-->作用于方法:给容器中注册一个Bean;类型为返回值的类型 @Componen ...
- mzy git学习,分支以及分支合并(四)
git 鼓励大量使用分支:最后进行master和分支之间的合并 git branch git branch 查看当前有多少分支,并且将当前在使用的分支用*标注出来. [一定要注意git的分支有从属概念 ...