#include
#include
#include
using namespace std;
void LoginMenu(char moudle);
void userLogin();
void input(char &stu,char &province,char &city,char ®ion,char &street);
void check();
void Uall();
void managerLogin(char moudle);
void Mdelete();
void redact();
void UserLogin();
char address[100];
char province[100];
char region[100];
char city[100];
char street[100];
int main(void)
{
char choice; //打开登陆菜单
cout << "\t\t|----------系统登录------------|\n";
cout << "\t\t|0.退出 |\n";
cout << "\t\t|1.登录 |\n";
cout << "\t\t|2.管理员登录 |\n";
cout << "\t\t|------------------------------|\n";
cout << "请输入模块编号(0-2):";
cin >> choice; //输入选择功能的编号
if (choice == '0') //如果输入编号为0,则退出程序
{
return 0;
}
else
{
LoginMenu(choice); //调用登录菜单执行函数
return 0;
}
}
///**********************************************
///函数名:LoginMenu *
/// 输入参数: *
/// moudle:模块编号 *
/// 返回值 *
/// 无 *
/// 函数功能: *
/// 根据模块编号调动相关函数 *
///**********************************************
void LoginMenu(char moudle)
{
switch (moudle)
{
case '0':
return;
break;
case '1':
break;
case'2':
managerLogin();
break;
}
}
void userLogin(char moudle)
{
char choice2; //打开用户登陆菜单
cout << "\t\t|----------欢迎您!------------|\n";
cout << "\t\t|0.退出 |\n";
cout << "\t\t|1.查询 |\n";
cout << "\t\t|2.录入(帮助我们完善这份地图)|\n";
cout << "\t\t|------------------------------|\n";
cout << "请输入模块编号(0-2):";
cin >> choice2; //输入选择功能的编号
if (choice2 == '0') //如果输入编号为0,则退出程序
{
return;
}
else
{
UserLogin(choice2); //调用登录菜单执行函数
return;
}
}
///**********************************************
///函数名:userLogin *
/// 输入参数: *
/// moudle:模块编号 *
/// 返回值 *
/// 无 *
/// 函数功能: *
/// 根据模块编号调动相关函数 *
///**********************************************
void UserLogin(char moudle)
{
switch (moudle)
{
case '0':
return;
break;
case '1':
check();
break;
case'2':
input();
break;
}
}
void input()
{
int i, m = 0;
char ch[2];
FILE* fp; //声明fp是FILE型指针,用于指向FILE类型
if ((fp = fopen("data", "ab+")) == NULL) //打开名为data的二进制文件,可以读,但只允许在文件末尾追写
{
cout << "无法打开" << endl;
return;
}
while (!feof(fp)) //文件尚未结束继续循环
{
if (fread(&address,sizeof(char), 1, fp) == 1)
//size_t fread(void*buffer,size_t size,size_t count, FILE*stream)
//void *buffer:将文件中的二进制数据读取到该缓冲区中
//size_t size:读取的基本单元的字节大小
//size_t count:读取的基本单元个数
//FILE*stream:文件指针
m++; //统计当前记录条数
}
fclose(fp);
if (m == 0)
cout << "此地暂无记录" << endl;
else
{
system("cls");
Uall(); //调用Uall函数,显示已近储存在库里的全部信息,即总览
}
if ((fp = fopen("data", "wb")) == NULL) //二进制文本写入
{
cout << "无法打开" << endl;
return;
}
printf("请按序输入每一部分的内容:");
while (strcmp(ch, "是")) //判断是否要录入新信息
{
for(i=0;iprintf("省");
scanf("%s", &province);
printf("市");
scanf("%s", &city);
printf("区");
scanf("%s", ®ion);
printf("街道");
scanf("%s", &street);
if (fwrite(&address, sizeof(char), 1, fp) == 1)
{
printf("%s 感谢支持!信息上传成功!");
}
printf("是否继续上传?(是或否)");
scanf("%s", ch);
}
fclose(fp);
printf("OK!");
}
void managerLogin()
{
cout << "管理员登录" << endl;
}

`问题:函数不接受一个参数/0个参数;总之就是除了menu以外的函数都不接受参数。
fwrite(&address, sizeof(char), 1, fp) 读写里的sizeof(char)不对,这里是address的大小。