目录
一.系统设计内容及要求
需求分析:
制作一个系统实现对学生通讯信息的管理功能,可以对学生通讯信息进行录入,显示,添加,删除,修改等功能。通过学生通讯信息管理系统给辅导员减轻工作的负担,将工作的失误几率降到最低,为广大老师同学带来便利,使信息共享性大大增强。同时这个系统还可以减少人力与管理费用,提高信息准确度,简便了信息管理。
基本功能:
- 录入信息
- 显示信息
- 添加信息
- 修改信息
- 删除信息
- 退出系统
二.系统总体设计
首先构造基本框架:
基本思路:
首先定义一个人类person,有姓名,性别,年龄等属性,并对其初始化,人类作为基类派生出学生类,新增属性电话号码和住址,利用student()构造函数,初始化派生类中的各个变量并记录,使用newlist()函数用于录入信息;调用show()函数,用于输出通讯录信息,;使用add()函数添加新信息。使用update()函数修改各项信息;调用delet()函数用于删除通讯录信息。
三.详细设计
基本步骤:
1.利用 cout<<” ”输出一些语句组合成菜单,然后利用while(true)无限循环主界面和switch、case语句,用户输入一个相应的数字后跳转进行对功能选择的实现。构成主函数
void showmenu()//菜单
{
cout << "-------------------------------------" << endl << endl;
cout << " 工程学院学生通讯录管理系统" << endl;
cout << " 请选择功能:" << endl;
cout << " 1.录入联系人信息" << endl;
cout << " 2.显示联系人信息" << endl;
cout << " 3.添加联系人信息" << endl;
cout << " 4.修改联系人信息" << endl;
cout << " 5.删除联系人信息" << endl;
cout << " 0.退出系统" << endl;
}
int main()
{
int select = 0;//创建用户选择输入的变量
while (true)
{student s;
showmenu();//菜单
cout << " 请选择功能:" << endl;
cin >> select;
switch (select)
{
case 1:system("cls");//1.录入信息
s.newlist();
break;
case 2:system("cls");//2.显示信息
s.show();
break;
case 3:system("cls");//3.添加信息
s.add();
break;
case 4://system("cls");//4.修改信息
s.update();
break;
case 5://system("cls");//5.删除学生信息
s.delet();
break;
case 0:system("cls");//0.退出系统
cout << "欢迎下次使用!!!!" << endl;
return 0;
default:
cout << "请选择功能" << endl;}}
return 0;
}
2.定义一个人类,有属性(姓名,性别,年龄)以及构造函数,然后派生出学生类,新增属性电话,住址以及成员函数(录入,显示,增加,删除,修改,退出)
class person//定义一个人类
{
public:
person(){};
person(string n, string s,int a);
protected:
string name; //姓名
string sex; //性别
int age; //年龄
};
person::person(string n, string s,int a)
{
name = n;
sex = s;
age = a;
}
class student :public person //由人类派生出一个学生类
{
public:
student(){};
student(string n, string s, int a, string p, string d);
void newlist(); //录入信息
void show(); //显示信息
void add(); //添加信息
void update(); //修改信息
void delet(); //删除信息
void meau1(); //退出
protected:
string phone; //电话号码
string addr; //住址
};
student::student(string n, string s, int a, string p, string d):person(n,s,a)//派生类构造函数
{
phone = p;
addr = d;
}
3.录入信息(姓名,性别,年龄,电话,住址)并保存在磁盘中,使用类成员函数实现,类成员函数需要用类名来限制(返回类型 类名::函数成员名(参数表)),输入要录入的人数,使用for循环按提示进行录入
void student::newlist()//1.录入信息
{
cout << "请输入要录入的人数:" << endl;
cin >> n;
ofstream outfile("stu.dat", ios::out); //定义文件流对象,打开磁盘文件"stu.dat"
if (!outfile) //如果打开失败,outfile返回0值
{
cout << "打开失败" << endl;
abort();//对异常进行终止
}
for (int i = 0; i < n; i++)//1.录入信息
{
cout << "请输入姓名:" << endl;
cin >> stu[i].name;
cout << "请输入性别:" << endl;
cin >> stu[i].sex;
cout << "请输入年龄:" << endl;
cin >> stu[i].age;
cout << "请输入电话:" << endl;
cin >> stu[i].phone;
cout << "请输入地址:" << endl;
cin >> stu[i].addr;
}
outfile.close(); //关闭磁盘文件
cout << "信息录入成功!!!";
4.学生通讯录信息打印:菜单选择2功能后调用show()函数对所有通讯录信息进行打印
void student::show()//2.显示信息
{
int i;
cout << "通讯录信息为:" << endl;
cout << "姓名 性别 年龄 电话 住址 " << endl;
for (i = 0; i < n; i++)
{
cout << stu[i].name<< '\t' << stu[i].sex << '\t' << stu[i].age << '\t' << stu[i].phone << '\t' << stu[i].addr << endl;
}
}
5.添加信息:使用类成员函数add()可对学生信息进行添加,并且自动保存
void student::add()//3.添加信息
{
cout << "请输入姓名:" << endl;
cin >> stu[n].name;
cout << "请输入性别:" << endl;
cin >> stu[n].sex;
cout << "请输入年龄:" << endl;
cin >> stu[n].age;
cout << "请输入号码:" << endl;
cin >> stu[n].phone;
cout << "请输入住址:" << endl;
cin >> stu[n].addr;
n++;//添加信息
cout << "信息添加成功!!!" << endl;
}
6.修改通讯录信息:选择修改功能后按姓名进行查询,查询出对应的信息进行全部信息的修改
void student::update()//4.修改信息
{
string a;
int b{}, c;
cout << "请输入需要修改的姓名:" << endl;
cin >> a;
for (int j = 0; j < n; j++)
{
if (stu[j].name == a)
{
b = 1;
c = j;
}
}
if (b==1)
{
cout << "请输入新的姓名:" << endl;
cin >> stu[c].name;
cout << "输入性别:" << endl;
cin >> stu[c].sex;
cout << "输入年龄:" << endl;
cin >> stu[c].age;
cout << "输入号码:" << endl;
cin >> stu[c].phone;
cout << "输入住址:" << endl;
cin >> stu[n].addr;
cout << "已修改此信息!!!" << endl;
}
else cout << "没有查到此人!!!" << endl;
}
7.删除学生信息
void student::delet()//5.删除信息
{
string a;
int b{}, c{};
cout << "请输入要删除联系人的姓名:" << endl;
cin >> a;
for (int j = 0; j < n; j++)//查找姓名
{
if (stu[j].name == a)
{
b = 1;
c = j;
}
}
if (b == 1)
{
int i = 0;
for (i = c; i < n; i++)
stu[i] = stu[i + 1];
n--; //删除信息
cout << "已删除此人信息" << endl;
}
else cout << "没有查到此人!!!" << endl;
}