课程设计桶装水管理系统,运行不了,求教!
程序代码:#include<stdio.h>
#include<stdlib.h>
#define SIZE 10
#include<string.h>
//#include<WinBase.h>
#include<windows.h>
struct user_date //用户信息类型
{
char name[10];//用户名字
char tel[13]; //用户电话
char Add[10]; //用户地址
int amount; //剩余桶装水数
//float id; //用户注册账号
char secret[20]; //用户注册密码
}user[SIZE],zhuce,denglu;
int yonghu;
/************************主函数******************************************/
int main()
{
void jiemian();
jiemian();
return 0;
}
/***************************子函数********************************************/
void jiemian()
{
int a1;
void jiemianxiugai();//界面修改函数
void printfmessege1();
void printfmessege2();
void printfmessege3();
void yonghudenglu();//用户登录
void yonghuzhuce();//用户注册
void guangliyuandenglu();//管理员登录
void yonghujiemian();//用户界面
a1=0;
jiemianxiugai();
printfmessege1();
printfmessege2();
printfmessege1();
printfmessege3();
while(!a1)
{
scanf("%d",&a1);//选择功能1管理员登陆2用户登录3用户注册
system("cls");//清屏
switch(a1)
{
case 1:guangliyuandenglu();break;
case 2:yonghudenglu();break;
case 3:yonghuzhuce();break;
default:printf("输入错误,请重新输入:"),a1=0;
}
}
}
void jiemianxiugai()//界面修改
{
system("color F5"); //修改窗口颜色0=黑色,8=灰色,1=蓝色,9=淡蓝色,2=绿色,A=淡绿色,
//3=湖蓝色,B=浅绿色,4=红色,C=红色,5=紫色,D=淡紫色,6=黄色,E=淡黄色,7=白色,F=亮白色
}
void yonghudenglu()//用户登录
{
void printfmessege1();
printfmessege1();
printf("\t用户登陆界面\n");
printfmessege1();
int i,ch,sh1;
FILE *fp;
if((fp=fopen("data.dat","rb"))==NULL)
{
printf("不能打开文件");
exit(0);
}
void yonghujiemian();
printf("账号:");
scanf("%s",denglu.tel);
printf("\n密码:");
scanf("%s",denglu.secret);
system("cls");//清屏
for(i=0;i<SIZE;i++)
{
fread(&user[i],sizeof(struct user_date),1,fp);
if(strcmp(user[i].tel,denglu.tel)==0) break;
else if(i==SIZE-1)
{
printf("没有该用户的信息!请重新输入!\n");
yonghudenglu();
}
}
fclose(fp);
if(strcmp(user[i].secret,denglu.secret)==0)
{
yonghu=i;
yonghujiemian();
}
else
{
printf("密码错误,请重新输入!\n");
yonghudenglu();
}
}
void yonghuzhuce()//用户注册
{
FILE *fp;
int ch;
//char Linedata[50]={0},User[20],Pass[20];
//char Linedata[70]={0},name[10], Add[10],secret[20],tel[20];
if((fp=fopen("data.dat","rb+"))==NULL)//向文件写数据
{
if((fp=fopen("data.dat","wb"))==NULL)//向文件写数据
{
printf("不能打开文件");
exit(0);
}
}
fseek(fp,0,2);
printf("注册信息登记:\n");
printf("请输入你的名字:\n");
fflush(stdin);
gets(zhuce.name);
printf("请输入你的电话号码:\n");
fflush(stdin);
gets(zhuce.tel);
printf("请输入你的地址:\n");
fflush(stdin);
gets(zhuce.Add);
printf("请输入你的密码:\n");
fflush(stdin);
gets(zhuce.secret);
if(fwrite(&zhuce,sizeof(struct user_date),1,fp)!=1)//将修改后的信息写入文件
printf("写入文件错误!");
fclose(fp); //关闭文件
printf("恭喜!注册成功!\n");
Sleep(1000); //界面持续时间是1S,在VC编译器常用
printf("请选择:\n1.返回主界面");
scanf("%d",&ch);
system("cls");
switch(ch)
{
case 1:main();break;
default:exit(0);break;
}
system("cls");//清屏
}
void guangliyuandenglu()//管理员登录
{
FILE *fp1;
void guangliyuanjiemian();
//system("cls");//清屏
if((fp1=fopen("secret.dat","rb+"))==NULL)//打开存储密码的文件secret.dat
{
printf("不能打开文件");
exit(0);
}
char secret1[20],guanliyuanmima[20];
fread(secret1,20,1,fp1);
printf("请输入管理员密码:");
scanf("%s",guanliyuanmima);
system("cls");
if(strcmp(secret1,guanliyuanmima)==0) guangliyuanjiemian();
else
{
printf("密码错误,请重新输入!\n");
guangliyuandenglu();
}
}
void guangliyuanjiemian()//管理员界面
{
void xiugaiguangliyuanmima();//修改管理员密码
void chazhaoyonghuziliao();//查找用户资料
void readallmessege();//查看所有用户资料
void printfmessege1();
printfmessege1();
printf("\t管理员界面\n");
printfmessege1();
int t2;
printf("1.修改管理员密码\n");
printf("2.查找用户资料\n");
printf("3.查看所有用户资料\n");
printf("4.返回主界面\n");
scanf("%d",&t2);
system("cls");//清屏
switch(t2)
{
case 1:xiugaiguangliyuanmima();break;
case 2:chazhaoyonghuziliao();break;
case 3:readallmessege();break;
case 4:main();break;
default:printf("请重新输入!");
}
}
void xiugaiguangliyuanmima()//修改管理员密码
{
void printfmessege1();
printfmessege1();
printf("\t修改管理员密码\n");
printfmessege1();
char secret2[20];
printf("请输入更改的密码:\n");
fflush(stdin);
gets(secret2);
FILE *fp1;
if((fp1=fopen("secret.dat","rb+"))==NULL)
{
printf("文件打开失败");
return;
}
//system("cls");//清屏
//fwrite(secret2,20,1,fp2);
fwrite(secret2,20,1,fp1);
fclose(fp1); //关闭文件
//system("cls");
printf("恭喜!修改成功\n");
Sleep(1000);
printf("即将返回管理员界面");
Sleep(1000);
system("cls");
guangliyuanjiemian();//管理员界面
}
void readallmessege()//读取所有用户信息
{
int i,ch;
FILE*fp;
if((fp=fopen("data.dat","rb"))==NULL)
{
printf("不能打开文件");
exit(0);
}
printf("用户名\t 联系电话\t 地址\t 剩余水桶数\n");
for(i=0;i<SIZE;i++)
{
if(fread(&user[i],sizeof(struct user_date),1,fp)!=1) break;
printf("%-10s%-13s %-10s %-5d\n",user[i].name,user[i].tel,user[i].Add,user[i].amount);
}
fclose(fp);
printf("请选择:\n1.返回上一步\n2.返回主界面");
scanf("%d",&ch);
system("cls");//清屏
switch(ch)
{
case 1:guangliyuanjiemian();break;
case 2:main();break;
default:readallmessege();break;
}
}
void chazhaoyonghuziliao()//查找用户资料
{
void changemessege(int x);
void shanchu();//删除用户信息
system("cls");//清屏
int i,ch,sh1;
FILE*fp;
if((fp=fopen("data.dat","rb"))==NULL)
{
printf("不能打开文件");
exit(0);
}
printf("请输入要查看的账号:");
scanf("%s",zhuce.tel);
for(i=0;i<SIZE;i++)
{
fread(&user[i],sizeof(struct user_date),1,fp);
if(strcmp(user[i].tel,zhuce.tel)==0) break;
else if(i==SIZE-1)
{
printf("没有该用户的信息!\n请选择1.重新查找\n2.返回管理员界面\n3.返回主界面\n");
scanf("%d",&sh1);
system("cls");//清屏
switch(sh1)
{
case 1:chazhaoyonghuziliao();break;
case 2:guangliyuanjiemian();break;
case 3:main();break;
default:exit(0);
}
}
}
fseek(fp,i*sizeof(struct user_date),0);
fread(&user[i],sizeof(struct user_date),1,fp);
printf("用户名\t 联系电话\t 地址\t 剩余水桶数\n");
printf("%-10s%-13s %-10s %-5d\n",user[i].name,user[i].tel,user[i].Add,user[i].amount);
fclose(fp);
printf("请选择:\n1.修改用户资料\n2.删除该用户\n3.返回上一步\n4.返回主界面\n");
scanf("%d",&ch);
system("cls");//清屏
switch(ch)
{
case 1:changemessege(i);break; //修改用户资料
case 2:shanchu(i);break; //删除该用户
case 3:guangliyuanjiemian();break; //返回管理员界面
case 4:main();break; //返回主界面
default:chazhaoyonghuziliao();break;//错误,重新输入
}
}
void changemessege(int x)//修改用户信息
{
FILE*fp;
int ch,sh1;
if((fp=fopen("data.dat","rb+"))==NULL)
{
printf("文件打开失败");
return;
}
printf("请选择要修改的信息:\n");
printf("1.用户名\n2.用户电话\n3.用户地址\n4.剩余桶装水数\n");
scanf("%d",&ch);
system("cls");
switch(ch)
{
case 1:printf("用户名:");scanf("%s",user[x].name);break;
case 2:printf("用户电话:");scanf("%f",&user[x].tel);break;
case 3:printf("用户地址:");scanf("%s",user[x].Add);break;//重新输入用户信息
case 4:printf("剩余桶装水数:");scanf("%d",&user[x].amount);break;
default:printf("请重新选择!"),changemessege(x);
}
fseek(fp,x*sizeof(struct user_date),0);//将文件跳到特定位置
//fseek(fp,0,SEEK_END); //文件跳到未见你最后
if(fwrite(&user[x],sizeof(struct user_date),1,fp)!=1)//将修改后的信息写入文件
printf("写入文件错误!");
fclose(fp);
printf("请选择:1.返回主界面");
scanf("%d",&sh1);
system("cls");
if(sh1==1) main();
else exit(0);
}
void shanchu(int x)//删除用户信息
{
FILE *fp;
int i,j;
printf("确定要删除该用户吗\n请选择:1.是 2.否");
scanf("%d",&i);
switch(i)
{
case 1:;break;
case 2:guangliyuanjiemian();break;
default:exit(0);
}
for(j=x;j<SIZE-1;j++)
{
if(fread(&user[j],sizeof(struct user_date),1,fp)!=1) break;
user[j]=user[j+1];
}
if((fp=fopen("data.dat","wb+"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
else
{
for(i=0;i<SIZE-1;i++)
fwrite(&user[i],sizeof(struct user_date),1,fp);//从结构体向文件输入数据
}
fclose(fp);
}
void yonghujiemian()//用户界面
{
void printfmessege1();
printfmessege1();
printf("\t用户界面\n");
printfmessege1();
int ch;
void xiugaigerenxinxi();//修改个人信息
printf("用户信息:\n");
printf("用户名\t 联系电话\t 地址\t 剩余水桶数\n");
printf("%-10s%-13s %-10s %-5d\n",user[yonghu].name,user[yonghu].tel,user[yonghu].Add,user[yonghu].amount);
printf("请选择:\n");
printf("1.修改个人信息\n2.返回上一步\n");
scanf("%d",&ch);
system("cls");//清屏
switch(ch)
{
case 1:xiugaigerenxinxi();break;
case 2:jiemian();break;
case 3:main();
}
}
void xiugaigerenxinxi()//修改个人信息
{
void printfmessege1();
printfmessege1();
printf("\t用户信息修改\n");
printfmessege1();
printf("修改个人信息\n");
FILE*fp;
int ch;
if((fp=fopen("data.dat","rb+"))==NULL)
{
printf("文件打开失败");
return;
}
//fread(&user[y],sizeof(struct user_date),1,fp);
printf("请选择要修改的信息:\n");
printf("1.用户名\n2.用户电话\n3.用户地址\n4.用户密码\n");
scanf("%d",&ch);
system("cls");
switch(ch)
{
case 1:printf("用户名:");scanf("%s",user[yonghu].name);break;
case 2:printf("用户电话:");scanf("%f",&user[yonghu].tel);break;
case 3:printf("用户地址:");scanf("%s",user[yonghu].Add);break;//重新输入用户信息
case 4:printf("用户密码:");scanf("%s",user[yonghu].secret);break;
default:printf("请重新选择!"),xiugaigerenxinxi(yonghu);
}
fseek(fp,yonghu*sizeof(struct user_date),0);//将文件跳到特定位置
if(fwrite(&user[yonghu],sizeof(struct user_date),1,fp)!=1)//将修改后的信息写入文件
printf("写入文件错误!");
fclose(fp);
printf("恭喜!修改成功\n");
Sleep(1000);
print ("即将返回用户界面\n");
Sleep(1000);
system("cls");
yonghujiemian(yonghu);
}
void printfmessege1()
{ printf("|******************************|\n");
}
void printfmessege2()
{
printf("欢迎登录桶装水用户管理系统\n");
}
void printfmessege3()
{
printf("请选择:\n1.管理员登录\n2.用户登录\n3.用户注册\n");
}提示下面的错误
--------------------Configuration: Barrelledwater - Win32 Debug--------------------
Compiling...
Barrelledwater.cpp
c:\program files (x86)\microsoft visual studio\vc98\include\windef.h(322) : warning C4091: 'typedef ' : ignored on left of 'struct tagSIZE' when no variable is declared
c:\program files (x86)\microsoft visual studio\vc98\include\windef.h(322) : error C2143: syntax error : missing ';' before 'constant'
c:\program files (x86)\microsoft visual studio\vc98\include\windef.h(322) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.
Barrelledwater.exe - 1 error(s), 0 warning(s)








