学生信息管理系统1.0
this project is a practice from my friend, just at your study reference materials
#include<iostream>
#include<iomanip>
#include<string>
#include<fstream>
#include<cstdlib>
#include<Windows.h>
using namespace std;
struct Student
{
int no;
string num_stu;
string name;
string age;
string sex;
string address;
string num_phone;
string num_room;
}b[1000];
int sum = 0;
//functions
void display();
void menu();
void readin();
void outprint(int n);
void enterin();
void modify_student();
void delete_student();
void savein();
void search();
void pb(int i);
void p();
bool advancedsearch(string str1, string str2);
int main()
{
system("color 75");
MessageBoxA(0, "Welcome", "学生信息管理系统!", 1);
display();
system("pause");
return 0;
}
void display()
{
int n;
menu();
while (cin >> n, n != 0)
{
readin();
switch (n)
{
case 1:enterin();
break;
case 2:outprint(sum);
break;
case 3:search();
break;
case 4:modify_student();
break;
case 5:delete_student();
break;
case 0:
break;
default:
break;
}
system("pause");
system("cls");
menu();
}
}
//readin all book data
void readin()
{
ifstream fin;
ofstream fout;
int i;
fin.open("student.txt");
if (!fin.is_open())
{
MessageBoxA(0, "Could not open the file student.txt", "Program terminating", 1);
system("pause");
exit(EXIT_FAILURE); //exit the program;using <cstdlib>
}
i = 0;
sum = 0;
while (fin >> b[i].no)
{
fin >> b[i].num_stu;
fin >> b[i].name;
fin >> b[i].age;
fin >> b[i].sex;
fin >> b[i].address;
fin >> b[i].num_phone;
fin >> b[i].num_room;
i++;
sum++;
}
}
//ouotput book list
void outprint(int n)
{
cout << setiosflags(ios::left) << setw(8) << "序号" << setw(16) << "学号" << setw(16) << "姓名" << setw(8) << "年龄"
<< setw(10) << "性别" << setw(16) << "家庭住址" << setw(16) << "联系电话" << setw(16) << "寝室房间号" << endl;
for (int i = 0; i < n; i++)
{
pb(i);
}
}
//input books
void enterin()
{
int t, i;
bool flag = false;
ifstream fin;
ofstream fout;
fout.open("student.txt", ios::app);
if (!fout.is_open())
{
MessageBoxA(0, "Could not open the file student.txt", "Program terminating", 1);
system("pause");
exit(EXIT_FAILURE); //exit the program;using <cstdlib>
}
cout << "请输入添加的人数: ";
cin >> t;
while (t--)
{
cout << "输入学生的:" << endl;
cout << "学号、姓名、年龄、性别、家庭住址、联系电话、寝室号" << endl;
i = sum + 1;
if (flag == false)
{
cin.clear();
while (cin.get() != '\n')
continue;
flag = true;
}
cout << "学号" << endl;
getline(cin, b[i].num_stu);
cout << "姓名" << endl;
getline(cin, b[i].name);
cout << "年龄" << endl;
getline(cin, b[i].age);
cout << "性别" << endl;
getline(cin, b[i].sex);
cout << "家庭住址" << endl;
getline(cin, b[i].address);
cout << "联系电话" << endl;
getline(cin,b[i].num_phone);
cout << "寝室号" << endl;
getline(cin,b[i].num_room);
b[i].no = i + 1;
cout << "录入一个学生的信息如下:" << endl;
fout << b[i].no << "\t" << b[i].num_stu << "\t" << b[i].name << "\t" << b[i].age << "\t" << b[i].sex
<< "\t" << b[i].address << "\t" << b[i].num_phone << "\t" << b[i].num_room << endl;
cout << b[i].no << "\t" << b[i].num_stu << "\t" << b[i].name << "\t" << b[i].age << "\t" << b[i].sex
<< "\t" << b[i].address << "\t" << b[i].num_phone << "\t" << b[i].num_room << endl;
i++;
sum++;
}
}
//change student data
void delete_student()
{
outprint(sum);
int a, i;
cout << "输入要删除学生的编号: " << endl;
cin >> a;
a--;
for (i = a; i < sum; i++)
{
b[i].num_stu = b[i + 1].num_stu;
b[i].name = b[i + 1].name;
b[i].age = b[i + 1].age;
b[i].sex = b[i + 1].sex;
b[i].address = b[i + 1].address;
b[i].num_phone = b[i + 1].num_phone;
b[i].num_room = b[i + 1].num_room;
}
b[sum].no = NULL;
b[sum].num_stu = '\0';
b[sum].name = '\0';
b[sum].age = '\0';
b[sum].sex = '\0';
b[sum].address = '\0';
b[sum].num_phone = '\0';
b[sum].num_room = '\0';
sum--;
cout << "删除成功!-_-!" << endl;
savein();
}
void modify_student()
{
//修改学生的信息
outprint(sum);
int a;
cout << "输入要修改学生的编号: " << endl;
cin >> a;
a--;
cout << "请重新输入要修改的学生的信息:" << endl;
cout << "输入学生的:学号、姓名、年龄、性别、家庭住址、联系电话、寝室号" << endl;
cin >> b[a].num_stu;
cin >> b[a].name;
cin >> b[a].age;
cin >> b[a].sex;
cin >> b[a].address;
cin >> b[a].num_phone;
cin >> b[a].num_room;
cout << "Modify Succeed , you can go on!" << endl;
savein();
}
//save all student data
void savein()
{
ifstream fin;
ofstream fout;
int i;
fout.open("student.txt");
for (i = 0; i < sum; i++)
{
fout << b[i].no << "\t"
<< b[i].name << "\t" << b[i].num_stu << "\t"
<< b[i].name << "\t" << b[i].age << "\t" << b[i].sex << "\t"
<< b[i].address << "\t" << b[i].num_phone << "\t" << b[i].num_room << endl;
}
//cout << "saved" << endl;
}
//search
void search()
{
string str;
string st[30];
int i, j, flag = 0, k, l, m, n;
cout << "1)普通搜索\n2)模糊搜索" << endl; <span style="background-color: rgb(51, 204, 255);"> <em>//amazing code for first learner</em></span>
cin >> j;
if (j == 1)//common search
{
cout << "输入搜索信息:" << endl;
cin.clear();
while (cin.get() != '\n')
continue;
getline(cin, str);
//search
for (i = 0; i < sum; i++)
{
if (b[i].num_stu == str)
{
pb(i);
flag++;
}
else if (b[i].name == str)
{
pb(i);
flag++;
}
else if (b[i].age == str)
{
pb(i);
flag++;
}
else if (b[i].sex == str)
{
pb(i);
flag++;
}
else if (b[i].address == str)
{
pb(i);
flag++;
}
else if (b[i].num_phone == str)
{
pb(i);
flag++;
}
else if (b[i].num_room == str)
{
pb(i);
flag++;
}
}
cout << "共 " << flag << " 个学生" << endl;
}
else if (j == 2)//advanced search
{
cout << "输入搜索信息(中文):\n";
//-------------------
cin.clear();
while (cin.get() != '\n')
continue;
//------------------
getline(cin, str);
for (i = 0; i < sum; i++)
{
if (advancedsearch(str, b[i].name))
{
pb(i);
flag++;
}
else if (advancedsearch(str, b[i].sex))
{
pb(i);
flag++;
}
else if (advancedsearch(str, b[i].address))
{
pb(i);
flag++;
}
}
cout << "共 " << flag << " 个学生" << endl;
}
else
{
cout << "输入错误,返回主菜单。" << endl;
}
}
void pb(int i)
{
cout << setw(8) << i << setw(16) << b[i].num_stu << setw(16) << b[i].name << setw(8) << b[i].age
<< setw(10) << b[i].sex << setw(16) << b[i].address << setw(16) << b[i].num_phone << setw(16) << b[i].num_room << endl;
}
bool advancedsearch(string str1, string str2)
{
int i, j, l, m, n;
bool flag = false;
string st[30];
//Chinese sum
l = str1.length();
//split input
for (i = 0, j = 0; j < l; j += 2, i++)
{
st[i] = st[i].assign(str1, j, 2);
}
//compare
for (m = 0; m < i; m++)
{
if (str2.find(st[m], 0) == -1)
break;
flag = true;
}
return flag;
}
void menu()
{
cout << "|---------------------------------------------------|" << endl;
cout << "| This is a system about student information |" << endl;
cout << "| |" << endl;
cout << "| 1.录入学生个人信息 |" << endl;
cout << "| 2.输出学生个人信息 |" << endl;
cout << "| 3.查询学生个人信息 |" << endl;
cout << "| 4.学生信息修改 |" << endl;
cout << "| 5.学生信息删除 |" << endl;
cout << "| 0)退出 |" << endl;
cout << "| |" << endl;
cout << "|---------------------------------------------------|" << endl;
cout << endl;
}
它仍然不完善,希望初学者可以作为参考,写出艺术的代码
欢迎大家指正 :)
(全文完)