| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 508 人关注过本帖
标题:我这里有个程序,总是提示有错,怎么解决
只看楼主 加入收藏
中国银行
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-6-11
结帖率:100%
收藏
 问题点数:0 回复次数:1 
我这里有个程序,总是提示有错,怎么解决
我这里有一个程序,总是提示有问题,帮忙看下。给出解决办法和原理,有兴趣的话看看吧
#include "stdio.h"    /*基本输入输出函数包含在此*/
#include "conio.h"    /*getch( )及getche( )函数包含在此*/
#include "string.h"    /*字符串相关函数包含在此*/
#include "windows.h"    /*sleep( )函数包含在此*/
/*宏定义*/
#define TRUE 1
#define COUNT 3        /*COUNT为输入登录密码次数的最大值*/
#define FACTOR 221    /*位异或运算因子,必须与加密因子保持相同
*/
/*函数声明*/
int read( );        /*从数据文件中读取账号信息*/
int write(int);        /*向账号信息数据文件中写入记录*/
void find(int);        /*查询账号信息记录*/
void modify(int);    /*修改账号信息记录*/
int add(int);        /*添加账号信息记录*/
int del(int);        /*删除账号信息记录* */
void list( );        /*浏览账号信息记录*/
/*结构体类型声明及结构体类型变量定义*/
struct account        /*帐号信息结构体*/
{
    char type[20];    /*帐号类型,比如:建行借记卡*/
    char ID[25];    /*帐号,比如:账号*/
    char password[20];    /*密码*/
    char question[20];    /*密码提示问题*/     
    char answer[20];    /*密码提示问题答案*/   
};
struct account zhh[100];    /*定义记录账号信息的结构体数组,
长度是100*/
struct account zh;        /*定义一个记录账号信息的结构体变
量*/;
char denglu[12]="123456";    /*系统的登录密码*/;
/*主函数*/
main( )
{
    char r;        /*记录用户选择的操作命令数字*/
    char ch;    /*逐个记录用户输入的登录密码串中的字符*/
    int n;        /*记录账号信息条数*/
    char dl[12];    /*记录用户输入的登录密码*/
    int i=0;    /*循环控制变量,用于将用户输入的登录密码
保存于数组dl中*/
    int count=0;    /*记录输入密码次数,其值应小于等于COUNT*/
    system("cls");    /*清屏命令*/
    /******补全代码:密码登录系统功能。界面如图12-1、图12-2和
图12-3所示。******/
    printf("***********************************\n");
    printf("   ★☆欢迎来到账号信息管理系统☆★ \n");
    printf("       请输入登录密码,以#结束:    \n");
  for(count=0;count<COUNT;count++)
  {for(i=0;(ch=getch())!='#';i++)
  {dl[i]=ch;putchar('*');}
  dl[i]='\0';
  if(strcmp(denglu,dl)==0)   {printf("     您已成功登陆!请稍
后......\n"); break;}
  else {printf("您的登陆密码错误,请重新输入:\n") ;continue;}
  }if(count>=COUNT){printf("对不起,登陆密码错误您无权限访问本系
统!\n");return(n);}
n=read( );         /*从数据文件中读取账号信息数据并初始化账
号信息结构体数组*/
/******补全代码:实现系统菜单,接收用户输入并输出提示信息。如图12
-4******/
while(TRUE)
{
    system("cls");
printf("★☆欢迎来到账号信息管理系统☆★\n");
printf("请选择(1~7):\n");
printf("===============================\n");
printf("     1.查询账号信息记录        \n");
printf("     2.修改账号信息记录        \n");
printf("     3.添加账号信息记录        \n");
printf("     4.删除账号信息记录        \n");
printf("     5.保存数据到文件        \n");
printf("     6.浏览账号信息记录       \n ");
printf("     7.退出        \n");
printf("===============================\n");
printf("系统中没有账号信息,请选择3进行账号信息的添加\n");
printf("您的选择是:");
ch=getchar();
switch(r)
{
case '1':find(n);break;
case '2':modify(n);break;
case '3':n=add(n);break;
case '4':n=del(n);break;
case '5':n=write(n);break;
case '6':list();break;
case '7':return n;
default:printf("\t\t请按任意键返回重新选择(1-7)\n");getch();
}
}
return n;
}
/*read( )函数定义*/
int read( )
{     
    FILE *file;    /*声明文件指针*/
    int n=0;    /*统计账号信息数据文件中记录的条数*/
if((file=fopen("gz.dat","rb"))==NULL)
{
    printf("\n\n\t账号数据文件无法打开,或为空!");
    printf("\n\n\t按任意键进入主菜单......");
    getch();
    return n;
}
else
{
    while (fread(&zhh[n],sizeof(zhh[n]),1,file)==1)
        n++;
    fclose(file);
    printf("\n\n\t账号数据读取完毕,共有%d人!\n");
    printf("\n\t5秒后进入主菜单......\n");
    Sleep(5000);
}
}
int write(int n)
{
    FILE *file;
    int i=0;
    char t;
    if(n==0) { printf("没有数据可存!按任意键返回主菜单\n");  
getch();return 0;}
    if((file=fopen("zhh.dat","wb"))!=NULL)
    {printf("请输入用空格分格的账号类型,账号,密码信息,密码
提示问题,密码提示问题答案\n");
        for(i=0;i<3;i++)
        {    printf("第%d个账号类型  账号  密码信息   
密码提示问题  密码提示问题答案:\n",i+1);
        fwrite(&zhh[0],sizeof(zhh[0]),n,file);
        printf("\t\t\t\t\t是否继续?<Y/N or y/n>");
        t=getchar();
        if(t=='Y'||t=='y') continue;
        else break;}
        fclose(file);
        printf("\n\n\t\t%d条账号信息保存完毕!\n",n);
    }
else printf("\t\t 无法打开账号信息数据文件!\n");
{printf("\n\t\t按任意键返回主菜单......");
getch();
return n;
}
}
void find(n)
{  char typef[20];
   char ID[25];
   int i;
   if(n==0)
   {printf("当前没有用户账号记录,按任意键返回主菜单:");
   getch();
   return;}
   printf("请输入要查询的用户账号类型和账号:\n");
   gets(typef);
   gets(ID);
   for(i=0;i<=n;i++)
   {
       if(strcmp(zhh[i].ID,ID)==0)
       {
       printf("\n  您查询的账号信息是: \n");
       printf("\n   
======================================\n\n");
       printf("您要查询的账号信息是:");
       printf("%-12s %-20s %-10s %-10 %-8\n",zhh[i].type,zhh
[i].ID,zhh[i].password,zhh[i].question,zhh[i].answer);
       printf("\n   
======================================\n\n");
       }
    }
    printf("您所输入的账号信息有误或不存在!按任意键返回主菜
单......");
    getch();
    return;
}
void list(int n)
   {
       int i=0;
       system("cls");
       if(n==0)
       {printf("无账号信息可显示!\n");
       printf("显示完毕,按任意键退出程序\n");}
       else
       printf("\t\t\t\t\t\t\t你保存的账号信息如下:\n");
       printf
("======================================================");
       for(i=0;i<=n;i++)
       {printf("第%d个账号信息:\n",i+1);
       printf("%-12s %-20s %-10s %-10 %-8\n",zhh
[i].type,zhh[i].ID,zhh[i].password,zhh[i].question,zhh
[i].answer);}
       printf
("======================================================");
       printf("按任意键返回主菜单\n");
       getch();
       return;
    }
int del(int n)
{
    char typef[20];
    char id[25];
    int i,j;
    char flag='n';
    printf("请输入删除的用户账号类型和账号:\n");
    gets(typef);
    gets(id);
for(i=0;i<=n;i++)
   {
       if(strcmp(zhh[i].ID,id)==0)
       {
           printf("\n\t\t你确认要删除%s的账号信息吗?
(y/n)",zhh[i].ID);
           flag=getchar();
           if(flag=='y'||flag=='Y')
           {if(i==n) n--;
           else
           {
               for(j=i;j<=n;j++)
               {
                zhh[i]=zhh[j];   
               }
               n--;
           }
           printf("您已成功删除账号信息,按任意键返回主菜
单......\n");
           getch();
           return n;
           }
           else
           {
               printf("您选择了不该删除的记录,按任意
键返回主菜单......\n");
           getch();
           return n;
           }
        }
}
if(i==n+1)
{
     printf("\n\t\t本文件无此账号,按任意键返回主菜
单......");
     getch();
}
}
int add(n)
{
printf("\t请输入职工账号: ");
fflush(stdin);
gets(zhh[++n].zhanghao);
printf("\n\t\t请输入职工的账号归属:");
scanf("%f",&zhh[i].type);
printf("\t\t请输入职工的账号:");
scanf("%f",&zhh[i].ID);
printf("\t\t请输入密码:");
scanf("%f",&zhh[i].password);
printf("\t\t请输入密码提示:");
scanf("%f",&zhh[i].question);
printf("\t\t请输入提示问题答案:");
scanf("%f",&zhh[i].answer);
printf("账号以保存,按任意键返回主菜单......");
n++;
getch();
return n;
}
搜索更多相关主题的帖子: 登录密码 include 字符串 最大值 
2012-06-15 23:19
中国银行
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-6-11
收藏
得分:0 
怎么都没人愿意读完吗
2012-06-15 23:57
快速回复:我这里有个程序,总是提示有错,怎么解决
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017282 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved