//学生信息系统
//author 王炳华
#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
#include <iomanip>
struct student
{
std::string userid;
std::string username;
char sex;
};
const int BARLENGTH = 50;
const int FULLPERCENT = 100;
void outputMenu();
void outputSelect();
bool initInfo();
void inputInfo();
void queryInfo();
void execute(int select);
void outputContinue();
void clear();
void bar(int percent);
void showBar();
int main(void)
{
int select;
char isContinue;
initInfo();
while(1)
{
outputMenu();
outputSelect();
while((std::cin >> select) == 0 || (select != 1 && select != 2 && select != 3) )
{
std::cin.clear();
std::cin.ignore(1024,'\n');
std::cout << "输入错误!" << "\n";
outputSelect();
}
execute(select);
outputContinue();
while((std::cin >> isContinue == 0) || (isContinue != 'y' && isContinue != 'n'))
{
clear();
std::cout << "输入错误!" << "\n";
outputContinue();
}
if(isContinue == 'y')
{
system("cls");
}
else
{
exit(1);
}
}
return 0;
}
void outputMenu()
{
std::cout << "**************************************" << "\n";
std::cout << " 学生信息管理系统 " << "\n";
std::cout << "**************************************" << "\n";
std::cout << " 【1】输入学生信息 " << "\n";
std::cout << " 【2】查询学生信息 " << "\n";
std::cout << " 【3】退出 " << "\n";
std::cout << "**************************************" << "\n";
}
void outputSelect()
{
std::cout << " 请选择【1/2/3】:";
}
void outputContinue()
{
std::cout << "继续操作么?【y--继续/n--退出】:";
}
bool initInfo()
{
//写入初始化的一些信息
int isInit;
std::fstream os("student.bat",std::ios::out);
if(os==NULL)
{
std::cout << "初始化出错!" << "\n";
isInit = 0;
}
else
{
student stu = {"2010010940","wbh",'M'};
os << stu.userid << " " << stu.username << " " << stu.sex << "\n";
isInit = 1;
os.close();
}
return isInit;
}
void inputInfo()
{
char isSave;
clear();
std::fstream f("student.bat",std::ios::app|std::ios::out);
if(f == NULL)
{
std::cout << "打开文件错误!" << "\n";
}
else
{
student stu;
std::cout << "请输入学生学号:";
getline(std::cin,stu.userid);
std::cout << "请输入学生姓名:";
getline(std::cin,stu.username);
std::cout << "请输入学生性别:";
std::cin >> stu.sex;
std::cout << "是否保存?【y--是/n--否】:";
std::cin >> isSave;
clear();
if(isSave == 'y')
{
f << stu.userid << " " << stu.username << " " << stu.sex << '\n';
std::cout << "正在保存数据......\n";
showBar();
std::cout << "\n保存成功\n";
}
f.close();
}
}
void queryInfo()
{
std::fstream f("student.bat",std::ios::in);
char ch;
if(f == NULL)
{
std::cout << "打开文件错误!" << "\n";
}
else
{
while((ch = f.get()) != EOF)
{
std::cout << ch;
}
}
}
void execute(int select)
{
switch(select)
{
case 1:
inputInfo();
break;
case 2:
std::cout << "正在读取文件数据......\n";
showBar();
std::cout << "\n";
queryInfo();
break;
case 3:
exit(1);
}
}
void clear()
{
std::cin.clear();
std::cin.ignore(1024,'\n');
}
void bar(int percent)
{
int i;
int j;
std::cout << "[";
for(i = 0;i < percent*BARLENGTH/FULLPERCENT;i++)
{
std::cout << '<';
}
for(j = i;j < BARLENGTH;j++)
{
std::cout.put(' ');
}
std::cout << "]";
std::cout << std::setw(4) << percent << "%";
for(j = 0;j <= (BARLENGTH+7);j++)
{
putchar('\b');
}
}
void showBar()
{
for(int i = 0;i <= FULLPERCENT;i++)
{
fflush(stdout);
bar(i);
Sleep(100);
}
}
C++ 简单的学生信息存储系统
最新推荐文章于 2024-04-02 13:24:25 发布