# 一.课程设计目的
1.通过本课程设计的实践,全面总结C++课程学习的数据类型,程序的结构,函数等知识,掌握其使用方法。 2.掌握面向对象程序设计中有关的类,对象,继承,重载,多态性,输入输出流体系,文件操作的基本概念。 3.初步学会用类与对象这种面向对象的程序设计方法编写应用程序。培养使用面向对象的程序设计的方法编写计算机程序的能力。
二. 课程设计题目描述和要求
题目26:“宿舍电话查询系统”的设计与实现 ?问题描述:设计一个宿舍电话查询系统 ?基本要求: (1)用户输入用户名及口令,然后在已有的用户名及口令中检查是否合法,合法进入查询界面;对于不合法的用户或口令最多出错3次,超出3次后自动退出程序; (2)进入系统的用户可以浏览所有用户的电话号码及相关资料; (3)自行设定数据库(要求至少包括:宿舍号、班级、电话号码三个字段,其它字段可选);
三. 任务完成情况
3.1 概要
根据课程设计要求此系统采用了模块化设计,将各个功能划分为了一个个的模块来实现的,又因为此程序是小型的系统程序所以此系统的宿舍学生信息存储采用了对象数组来进行存储,整个程序通过main函数对每一个不同功能的子函数进行有理得调用从而实现对每一个宿舍信息的查询和显示。
3.2 存储数据与数据结构的设计
3.2.1存储结构
采用对象数组存入,原因:宿舍数量是固定的,用对象数组会比较方便,然后通过对象对应的成员来实现每一个需要的成员设计。
3.2.1数据结构
?设计两个类存储 第一个class user_mima为存储用户名与密码,第二个class r用继承class R的方式去存储宿舍信息,通过文件输入流去调用txt中的信息存入对象数组中 ?按顺序结构去逐步调用和执行每一个功能模块
四.设计报告
4.1 需求分析
4.1.1.用户需求
(1)界面简洁,排列清晰,可以一目了然的看懂每一项功能。 (2)运行速度快,没有卡顿,使用方便。 (3)功能齐全,具备查询功能,显示功能。
4.1.2.功能需求
宿舍电话查询系统的开发目的是为了快速寻找每一个宿舍对应人员的联系方式。 本系统需要完成的功能有: (1)进入系统的用户名及口令, (2)显示所有宿舍学生电话, (3)查找对应宿舍的学生电话。
4.2概要设计
4.2.1总体设计
(1)用户名及口令:一个用户名对应一个口令 (2)宿舍电话信息:一个宿舍号对应一个班级号对应四个同学的电话 (3)功能:录入文件,信息显示,信息查询 (4)系统的各个功能模块要求用函数的形式实现 (5)界面友好(良好的人机交互),程序加必要的注释
4.2.2设计的基本思路
定义类:定义一个存储用户名和密码的类然后直接创造一个对象数组,把txt文件中保存的20个用户名和密码存入对象数组中,之后通过函数调用判断验证。定义第二个类成员为寝室号,通过继承的方式把其他需要的信息比如四个同一宿舍的同学的电话号码还有他们的班级设为成员。后面也是通过相同地调用文件中已保存的信息存入设计的对象数组中,然后在需要的时候通过函数调用显示。 2.写好主函数的框架以及菜单,定义相应的子函数的头以及参数的传递方式。作用:方便把控全局。以及分配各个组员的工作。 3.完成子函数模块。(各个组员各自做自己的部分),然后整合到一起
4.3详细设计
4.3.1程序流程图
4.4详细代码
4.4.1结构体定义
该系统包含的库函数具体有:
#include <bits/stdc++.h>
#include <Windows.h>
该系统创建的类有:
class user_mima
{
public:
char account[7];
char password[7];
} us[UserNum];
class R
{
public:
string room;
};
class r :public R
{
public:
string ss;
string s1;
string s2;
string s3;
string s4;
} boy[UserNum+1];
4.4.2 主函数
int main()
{
head();
while(sum>0)
{
int t=user();
while(t==1)
{
int n;
menu();
cout<<"\n\n\n\n\n\n\n"<<setw(70)<<right<<"请选择你的需求:";
cin>>n;
switch(n)
{
case 1:
view();
break;
case 2:
search();
break;
case 3:
return 0;
break;
}
}
}
return 0;}
4.4.3 初始界面函数
void head()
{
system("color F0");
cout<<"\n\n\n\n\n\n\n"<<setw(70)<<right<<"欢迎来到学生宿舍信息查询系统"<<endl;
Sleep(5000);
system("cls");
int i;
ifstream in("information.txt");
for(i=0; i<UserNum; i++)
{
in >>boy[i].room;
in >>boy[i].ss;
in >>boy[i].s1;
in >>boy[i].s2;
in >>boy[i].s3;
in >>boy[i].s4;
}
ifstream cin("用户账户与密码.txt");
for ( i=0; i<UserNum; i++)
{
cin >>us[i].account;
cin >>us[i].password;
}
}
4.4.4识别密码函数
int user()
{
int i, flag = 0;
char root[7], password[7];
cout<<"\n\n\n\n\n\n\n"<<setw(60)<<right<<"请输入账号:";
gets(root);
cout<<"\n\n\n\n\n\n\n"<<setw(60)<<right<<"请输入密码:";
gets(password);
for (i=0; i<UserNum; i++)
{
if (strcmp(root, us[i].account) == 0)
{
if (strcmp(password, us[i].password) == 0)
{
flag = 1;
}
}
}
if (flag == 0)
{
--sum;
cout<<"\n\n\n\n"<<setw(60)<<right<<"输入有误!";
cout<<"你还有"<<sum<<"次机会"<<endl;
Sleep(1000);
}
system("cls");
return flag;
}
4.4.5菜单函数
void menu()
{
cout<<" *********************"<<endl;
cout<<" 1.显示各个宿舍的信息*"<<endl;
cout<<" 2.搜索宿舍 *"<<endl;
cout<<" 3.退出程序 *"<<endl;
cout<<" *********************"<<endl;
}
4.4.6显示信息函数
void view()
{
system("cls");
for(int i=0; i<UserNum+1; i++)
{
cout<<setw(10)<<left<<boy[i].room<<setw(15)<<left<<boy[i].ss<<setw(15)<<left<<boy[i].s1;
cout<<setw(15)<<left<<boy[i].s2<<setw(15)<<left<<boy[i].s3<<setw(15)<<left<<boy[i].s4<<endl;
}
}
4.4.7查找宿舍信息函数
void search()
{
string f;
system("cls");
cout<<"请输入需要查找的寝室:"<<endl;
cin>>f;
for(int i=0; i<UserNum+1; i++)
{
if(f==boy[i].room)
{
cout<<boy[i].s1<<"\t\t"<<boy[i].s2<<"\t\t"<<boy[i].s3<<"\t\t"<<boy[i].s4<<endl;
return;
}
}
cout<<"查找错误,没有此信息!!!"<<endl;
}
4.5使用说明
程序比较简单易懂,对不懂编程的用户比较友好,只需根据自己想要选择的功能进行选择就行。
|