用c++写一个宾馆管理系统的程序设计
要求有登陆界面、查询、修改、删除等功能。本人没住过宾馆,不知道怎么写。类似于以下的程序,拜托了,哪位高手帮帮我。
//----------------头文件区
#include<iostream.h> //主要使用里面的输入输出流
#include<windows.h> //使用里面的system 和 sleep
#include<string.h> // 字符串对比!太重要了
#include<conio.h> //星号加密里面用到
#include<stdlib.h>
#include<iomanip.h> //控制位置
#include <stdio.h>//另外一个输入输出流(原来2个有很大不同的!!)
//--------定义区-------------
#define LEN 20 //名字 学号 长度
#define studentnum 200 //学生个数
#define BUFLEN 80 // 缓冲区最大字符数
//----------公共变量-------------
int n,m;
//----结构体-----------------
struct student //学生信息结构体
{
char number[LEN+1]; // 学号
char name[LEN+1]; // 姓名
int age; // 年龄
char sex[6]; // 性别
float score1; //成绩一
float score2; //成绩二
float score3; //成绩三
float avge; //平均分
}stu[studentnum];
//-----------声明区---
void login(); //登录模块
void readfile(); //加载数据
void code (char *password); //密码加密模块
void mainmenu(); //主目录模块
void seek(); //寻找学生信息
void inforchange(); //学生信息修改
void inputinfor(); //添加学生信息
void save(); //保存信息
void msgbox(); //提示判断
void online(); //学生排队
void show(); //所有学生信息
void avgejisuan(int c); //用於計算平均數
void outputsheets(); //输出排序后的表格
void outputsheets2(int i); //输出表格
//----------------------------------
void main()
{
system("mode con cols=120 lines=170");//dos命令设置缓冲区大小
login(); //直接跳入登录部分
}
//------------------登录部分--------------
void login()
{
int a=2;
char *user1; //用户名
user1=new char[10];
char *pass1; //密码
pass1=new char[12];
system("cls"); //DOS命令刷新
cout<<setw(100)<<" 学院:职业技术学院; 班级: 计应091班; 姓名:黄嘉华; 学号:200936626117 "<<endl;
cout<<setw(100)<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl;
cout<<setw(100)<<"┃ wwwwwwww ><^^^:> 学生成绩简易管理系统 <:^^^>< wwwwwwwww┃"<<endl;
cout<<setw(100)<<"┃◇◇◇◇◇ ◇◇◇◇◇┃"<<endl;
cout<<setw(100)<<"┣━━━━━━━━━━━━ ◆ ━━━━━━━━━━━━━┫"<<endl;
cout<<setw(100)<<"┃ ┃"<<endl;
cout<<setw(100)<<"┃ 您好,这里是学生成绩管理系统! ┃"<<endl;
cout<<setw(100)<<"┃ 请先登录!默认帐号/密码 :admin ┃"<<endl;
cout<<setw(100)<<"┃ ┃"<<endl;
cout<<setw(100)<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl;
pr1:cout<<" -->请您输入用户名:";
cin>>user1;
code(pass1);//转向密码加密部分
if(strcmp(user1,"admin")==0&&strcmp(pass1,"admin")==0) //strcmp()函数为比较串函数
{
readfile();
cout<<endl<<" 登陆成功!正在加载系统界面。。。"<<endl;
Sleep(500);
mainmenu();
}
else
{
if (a==0)
{
cout<<endl<<"错误!请按任意键退出!!"<<endl;
exit(0);
}
else
cout<<" 登陆失败!请重新输入帐号/密码,您还有"<<a<<"次机会"<<endl;
a--;
goto pr1;
}
}
//----密码星号部分-------------------------------------------------------
void code(char *password)
{
printf(" -->请您输入密码 :");//这里不能用cout! 我晕 尝试了N久··这关系输出流的优先集
int index=0; //重第1个输入的字符开始
while(1)
{
char ch;
ch=getch();// 记录键盘动作
if(ch==8) //退格键
{
if(index!=0)
{
cout<<char(8)<<" "<<char(8);
index--;
}
}
else if(ch==13) //回车键
{
password[index]='\0';
cout<<endl;
break;
}
else
{
printf("*");
password[index++]=ch;
}
}
}
//------主菜单-----------界面------------------
void mainmenu()//显示最初的界面
{
int i;
while(1)
{
system("cls");//刷新页面
system("color 02");//好玩的功能 颜色(q其实使用了dos命令)
cout<<setw(100)<<" 学院:职业技术学院; 班级: 计应091班; 姓名:黄嘉华; 学号:200936626117 "<<endl;
cout<<setw(100)<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl;
cout<<setw(100)<<"┃ wwwwwwww ><^^^:> 学生成绩简易管理系统 <:^^^>< wwwwwwwww┃"<<endl;
cout<<setw(100)<<"┃◇◇◇◇◇ ◇◇◇◇◇┃"<<endl;
cout<<setw(100)<<"┣━━━━━━━━━━━━ ◆ ━━━━━━━━━━━━━┫"<<endl;
cout<<setw(100)<<"┃*********** ***********┃"<<endl;
cout<<setw(100)<<"┃ ┃"<<endl;
cout<<setw(100)<<"┃ 1.查询学生信息 ┃"<<endl;
cout<<setw(100)<<"┃ 2.输入学生信息 ┃"<<endl;
cout<<setw(100)<<"┃ 3.学生信息排序 ┃"<<endl;
cout<<setw(100)<<"┃ 4.修改学生信息 ┃"<<endl;
cout<<setw(100)<<"┃ 5.刷新数据 ┃"<<endl;
cout<<setw(100)<<"┃ 6.安全退出系统 ┃"<<endl;
cout<<setw(86)<<"┃*********** 当前共有"<<n<<"位学生信息┃"<<endl;
cout<<setw(100)<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛";
cout<<"\n请选择操作(1~6):";
fflush(stdin);
cin>>i;
switch(i)
{
case 1:
seek();
break;
case 2:
inputinfor();
break;
case 3:
online();
break;
case 4:
inforchange();
break;
case 5:
readfile();
printf("数据已经是最新\n");
system("pause");
break;
case 6:
cout<<"数据文件可能被修改!";
msgbox();
exit(0);
default:
cout<<"错误,请重新输入!"<<endl;
continue;
}
}
}
//----------------加载(初始化模块)--------------------
void readfile()//本地目录数据获取
{
char *p="student.dat";
FILE *fp;
int i=0;
if ((fp=fopen("student.dat","r"))==NULL) //如果文件不存在就退出
{
cout<<"本地目录下找不到"<<p<<"文件!";
system("pause");
exit(0);
}
while(fscanf(fp,"%s %s%d%s %f %f %f %f",stu[i].number,stu[i].name,&stu[i].age,
stu[i].sex,&stu[i].score1,&stu[i].score2,&stu[i].score3,&stu[i].avge)==8)
{
i++;
i=i;
}
fclose(fp); //关闭文件
n=i;
}
//--寻找学生信息模块------------------------------
void seek()
{
int i,item,flag;
char s1[21]; /* 以姓名和学号最长长度+1为准 */
system("cls");//刷新页面
cout<<setw(100)<<" 学院:职业技术学院; 班级: 计应091班; 姓名:黄嘉华; 学号:200936626117 "<<endl;
cout<<setw(100)<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl;
cout<<setw(100)<<"┃ wwwwwwww ><^^^:> 学生成绩简易管理系统 <:^^^>< wwwwwwwww┃"<<endl;
cout<<setw(100)<<"┃◇◇◇◇◇ ◇◇◇◇◇┃"<<endl;
cout<<setw(100)<<"┣━━━━━━━━━━━━ ◆ ━━━━━━━━━━━━━┫"<<endl;
cout<<setw(100)<<"┃*********** ***********┃"<<endl;
cout<<setw(100)<<"┃ ┃"<<endl;
cout<<setw(100)<<"┃ 1.按学号查询 ┃"<<endl;
cout<<setw(100)<<"┃ 2.按姓名查询 ┃"<<endl;
cout<<setw(100)<<"┃ 3.显示所有学生信息 ┃"<<endl;
cout<<setw(100)<<"┃ 4.退出本菜单 ┃"<<endl;
cout<<setw(100)<<"┃*********** ***********┃"<<endl;
cout<<setw(100)<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl;
while(1)
{
cout<<"请选择子菜单编号:";
shuru: cin>>item;
flag=0;
switch(item)
{
case 1:
cout<<"请输入要查询的学生的学号:";
cin>>s1;
for(i=0;i<n;i++)
if(strcmp(stu[i].number,s1)==0)
{
flag=1;
outputsheets2(i);
}
if(flag==0)
cout<<"该学号不存在";
break;
case 2:
cout<<"请输入要查询的学生的姓名:";
cin>>s1;
for(i=0;i<n;i++)
if(strcmp(stu[i].name,s1)==0)
{
flag=1;
outputsheets2(i);
}
if(flag==0)
cout<<"该姓名不存在!";
break;
case 3:
show();
break;
case 4:
return;
default:
{
cout<<"请在1-3之间选择";goto shuru;
}
}
}
}
//-----------添加学生信息模块----------------
void inputinfor()
{
system("cls");
int i=n,j,flag;
cout<<"请输入需要增加的学生数(输入0直接退出):";
cin>>m;
if(m>0)
{
do
{
flag=1;
while(flag)
{
flag=0;
cout<<"请输入第"<<i+1<<"个学生的学号";
cin>>stu[i].number;
for(j=0;j<i;j++)
if(strcmp(stu[i].number,stu[j].number)==0)
{
cout<<"已有该学号,请检查后重新添加!";
flag=1;
break; //如果有一样的学号就直接退出
}
}
cout<<"请输入第"<<i+1<<"个学生的姓名:";
cin>>stu[i].name;
cout<<"请输入第"<<i+1<<"个学生的年龄:";
cin>>stu[i].age;
cout<<"请输入第"<<i+1<<"个学生的性别:";
cin>>stu[i].sex;
cout<<"请输入第"<<i+1<<"个学生的第1科成绩:";
cin>>stu[i].score1;
cout<<"请输入第"<<i+1<<"个学生的第2科成绩:";
cin>>stu[i].score2;
cout<<"请输入第"<<i+1<<"个学生的第3科成绩:";
cin>>stu[i].score3;
avgejisuan(i);
if(flag==0)
{
i=i;
i++;
}
}
while(i<n+m);
n+=m;
cout<<"录入完毕!本次添加了"<<m<<"个学生信息";
msgbox();
}
}
//----保存部分模块------------------
void save()
{
int i,flag=0;
FILE *fp;
fp=fopen("student.dat","w"); //这部分上网找的 保存在本地目录下 一个叫student.dat的文件
for(i=0;i<n;i++)
{
fprintf(fp,"%s %s %d %s %f %f %f %f\n",stu[i].number,stu[i].name,stu[i].age,
stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].avge);
}
fclose(fp);
}
//----提示部分------------
void msgbox()
{
char b;
cout<<endl<<"保存?(Y/N)";
cin>>b;
if(b=='Y'||b=='y')
save();
else
readfile();
}
}