| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1556 人关注过本帖, 2 人收藏
标题:学生管理系统中用户名密码初始设定
只看楼主 加入收藏
lxy409875745
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2013-11-19
结帖率:100%
收藏(2)
已结贴  问题点数:20 回复次数:20 
学生管理系统中用户名密码初始设定
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100
#define M 1

struct Date//出生年月日
{
    int year;//年
    char x;//分割线
    int month;//月
    char y;//分割线
    int day;//日
};

struct Key
{
    char name[20];
    char password[20];
}key_[M];


struct Student
{
    int num;//学号
    char name[20];//姓名
    char clas[20];//班级
    struct Date bron;//出生年月日
    char addr[20];//地址
    int phone;//电话
}stud[N];

   

    void input(struct Student stud[]);//验证用户名跟密码通过时可输入学生信息
    void read();//从文件中读入学生信息
    void load_find();//查找菜单
    void dele();//删除学生信息
    void add();//增加学生信息
    void find_num();//按学号查询学生信息
    void find_class();//按班级查询学生信息
    void save(int);//存储学生信息
    void load();//主菜单
    void retur();//返回菜单
    void craft(struct Key key_[]);//创建查询密码(默认为用户:123456 密码:123456),如果存在则跳过


void input(struct Student stud[])//写入学生信息
{
    int i,m;
    char n,a,b,*p1,*p2,*p3,*p4;
    FILE*fp;
    system("cls");
    printf("(注意!  使用此项功能时会覆盖原有的学生信息!)\n");
    printf("是否继续执行操作?  Y/N\n");
    scanf("%s",&n);
    system("cls");
    if(n=='Y'||n=='y')
    {
        if((fp=fopen("D:pass.txt","rb"))==NULL)      
        {
            printf("无法找到此文件\n");
            exit(0);
        }
        printf("请输入用户名跟密码\n");
        printf("\n");
        printf("用户名:");
        scanf("%s",&a);
        printf("密码:");
        scanf("%s",&b);
        system("cls");
        fread(&key_[M],sizeof(struct Key),1,fp);
        p1=&a;
        p2=&b;
        p3=&key_[M].name;
        p4=&key_[M].password;
        if(strcmp(p2,p4)==0&&strcmp(p1,p3)==0)
        {
            fclose(fp);
            printf("请输入学生人数:");
            scanf("%d",&m);
            if(m>0&&m<=N)
            {
                for(i=0;i<m;i++)
                {
                    printf("学号:");
                    scanf("%d",&stud[i].num);
                    printf("姓名:");
                    scanf("%s",stud[i].name);
                    printf("班级:");
                    scanf("%s",&stud[i].clas);
                    printf("出生年月日:");
                    scanf("%d%c%d%c%d",&stud[i].bron.year,&stud[i].bron.x,&stud[i].bron.month,&stud[i].bron.y,&stud[i].bron.day);
                    printf("地址:");
                    scanf("%s",&stud[i].addr);
                    printf("电话:");
                    scanf("%d",&stud[i].phone);
                    printf("\n");
                }
                fclose(fp);
                save(m);
            }
            else
            {
                fclose(fp);
                printf("输入人数不正确(可存储最大人数为100人)  .\n");
                exit(0);
            }
        }
        else
        {
            fclose(fp);
            load();
        }
    }
    else
    {
        system("cls");
        load();
    }
}

   
void read()//从文件中导出学生信息
{
    int i;
    FILE*fp;
    system("cls");
    if((fp=fopen("D:stud.txt","rb"))==NULL)        //打开文件stud.dat
       {
           printf("无法找到此文件\n");
           retur();
       }
    printf("学生信息如下:\n");
    for(i=0;i<N;i++)
    {
         fread(&stud[i],sizeof(struct Student),1,fp);
         if(strlen(stud[i].name)==0)
            break;
        else
        {
            printf("学号:%d",stud[i].num);
            printf("姓名:%s",stud[i].name);
            printf("班级:%s",stud[i].clas);
            printf("出生年月日:%d%c%d%c%d",stud[i].bron.year,stud[i].bron.x,stud[i].bron.month,stud[i].bron.y,stud[i].bron.day);
            printf("地址:%s",stud[i].addr);
            printf("电话:%d",stud[i].phone);
            printf("\n");
        }
    }
        fclose(fp);
        retur();
   
}

void load_find()//查找菜单
{
    int i;
    system("cls");
    printf("1---按学号查询\n");
    printf("2---按班级查询\n");
    printf("0---返回主菜单\n");
    scanf("%d",&i);
    if(i==1)
        find_num();
    else if(i==2)
        find_class();
    else if(i==0)
    {
        system("cls");
        load();
    }
    else
    {
        printf("输入有误!");
        exit(0);
    }
}

void dele()//删除学生信息
{
    int i,j,Num;
    char n,m;
    FILE*fp;
    system("cls");
    printf("是否执行删除操作?  Y/N\n");
    getchar();
    scanf("%c",&m);
    system("cls");
    if(m=='Y'||m=='y')
    {
        if((fp=fopen("D:stud.txt","rb"))==NULL)        //打开文件stud.dat
        {
           printf("无法找到此文件\n");
           retur();
        }
            printf("修改前学生信息如下:\n");
            for(i=0;i<N;i++)
            {
                fread(&stud[i],sizeof(struct Student),1,fp);
                if(strlen(stud[i].name)==0)
                    break;
                else
                {
                    printf("学号:%d",stud[i].num);
                    printf("姓名:%s",stud[i].name);
                    printf("班级:%s",stud[i].clas);
                    printf("出生年月日:%d%c%d%c%d",stud[i].bron.year,stud[i].bron.x,stud[i].bron.month,stud[i].bron.y,stud[i].bron.day);
                    printf("地址:%s",stud[i].addr);
                    printf("电话:%d",stud[i].phone);
                    printf("\n");
                }
            }
            printf("\n");
            fclose(fp);
            printf("请输入想要删除学生的学号:");
            scanf("%d",&Num);
            for(i=0;i<N;i++)
            {
                if(strlen(stud[i].name)==0)
                    break;
                else if(Num==stud[i].num)
                {
                    for(j=i;j<N;j++)
                    {
                        stud[j]=stud[j+1];
                    }
                }
            }
            if((fp=fopen("D:stud.txt","wb"))==NULL)             //新建文件stud.txt
            {
                printf("无法打开此文件\n");
                exit(0);
            }
            for(i=0;i<N;i++)
                if(fwrite(&stud[i],sizeof(struct Student),1,fp)!=1)
                    printf("数据存储错误\n");
                fclose(fp);
                system("cls");
                printf("信息修改完毕!\n");
                printf("\n");
                printf("当前学生信息如下:\n");
                for(i=0;i<N;i++)
                {
                    fread(&stud[i],sizeof(struct Student),1,fp);
                    if(strlen(stud[i].name)==0)
                        break;
                    else
                    {
                        printf("学号:%d",stud[i].num);
                        printf("姓名:%s",stud[i].name);
                        printf("班级:%s",stud[i].clas);
                        printf("出生年月日:%d%c%d%c%d",stud[i].bron.year,stud[i].bron.x,stud[i].bron.month,stud[i].bron.y,stud[i].bron.day);
                        printf("地址:%s",stud[i].addr);
                        printf("电话:%d",stud[i].phone);
                        printf("\n");
                    }
                }
                printf("\n");
                printf("是否继续删除?    Y/N\n");
                getchar();
                scanf("%c",&n);
                if(n=='Y'||n=='y')
                    dele();
                else
                {
                    system("cls");
                    load();
                }
    }
    else
     {
        system("cls");
        retur();
     }

}

void add()
{


}


   
void find_num()//按学号查询学生信息
{
    int i,a;
    FILE*fp;
    printf("请输入所查学生学号:\n");
    if((fp=fopen("D:stud.txt","rb"))==NULL)        //打开文件stud.dat
       {
           printf("无法找到此文件\n");
            exit(0);
       }
    scanf("%d",&a);
    for(i=0;i<N;i++)
    {
        fread(&stud[i],sizeof(struct Student),1,fp);
        if(a==stud[i].num)//判断学号是否存在
        {
            printf("学号:%d",stud[i].num);
            printf("姓名:%s",stud[i].name);
            printf("班级:%s",stud[i].clas);
            printf("出生年月日:%d%c%d%c%d",stud[i].bron.year,stud[i].bron.x,stud[i].bron.month,stud[i].bron.y,stud[i].bron.day);
            printf("地址:%s",stud[i].addr);
            printf("电话:%d",stud[i].phone);
            printf("\n");
        }
    }
    fclose(fp);
    retur();
}



void find_class()//按班级查询学生信息
{
   
    char c,*p1,*p2;
    int i;
    FILE*fp;
    if((fp=fopen("D:stud.txt","rb"))==NULL)        //打开文件stud.dat
       {
           printf("无法找到此文件\n");
            exit(0);
       }
    printf("请输入班级");
    scanf("%s",&c);
    for(i=0;i<N;i++)
    {
        fread(&stud[i],sizeof(struct Student),1,fp);   
        p1=&stud[i].clas;
        p2=&c;
        if(strcmp(p1,p2)==0)
        {
            printf("学号:%d",stud[i].num);
            printf("姓名:%s",stud[i].name);
            printf("班级:%s",stud[i].clas);
            printf("出生年月日:%d%c%d%c%d",stud[i].bron.year,stud[i].bron.x,stud[i].bron.month,stud[i].bron.y,stud[i].bron.day);
            printf("地址:%s",stud[i].addr);
            printf("电话:%d",stud[i].phone);
            printf("\n");
        }
    }
    fclose(fp);
    retur();
}


void save(int m)//存储学生信息
{
    FILE *fp;
    int i;
       if((fp=fopen("D:stud.txt","wb"))==NULL)             //新建文件stud.txt
       {
           printf("cannot open this file\n");
            exit(0);
       }
       for(i=0;i<m;i++)
           if(fwrite(&stud[i],sizeof(struct Student),1,fp)!=1)
               printf("数据存储错误\n");
           fclose(fp);
           printf("信息存储完毕!\n");
           retur();
}


void load()//主菜单
{
    int choice;
    struct Student *p=stud;
    printf("********简陋的学生信息管理系统*******\n");
    printf("*             1-信息输入            *\n");
    printf("*             2-导入学生信息        *\n");
    printf("*             3-查询学生信息        *\n");
    printf("*             4-增加学生信息        *\n");
    printf("*             5-删除学生信息        *\n");
    printf("*             0-退出程序            *\n");
    printf("*************************************\n");
    printf("(请选择0-5)\n");
    scanf("%d",&choice);
    switch(choice)
    {
        case 1:input(p);break;
        case 2:read();break;
        case 3:load_find();break;
        case 4:add();break;
        case 5:dele();break;
        case 0:exit(0);break;
        default:printf("输入错误请重新选择");break;
    }
}

void retur()//返回主菜单
{
    int a;
    printf("返回上层菜单请按1 结束程序请按0:\n");
    scanf("%d",&a);
    if(a==1)
    {
        system("cls");
        load();
    }
    else if(a==0)
        exit(0);
    else
        system("cls");
        retur();
}


void craft(struct Key key_[])//创建查询密码(默认为用户:123456 密码:123456),如果存在则跳过
{
    FILE *fp;
    if((fp=fopen("D:pass.txt","rb"))==NULL)        
    {   
        key_[M].name[20]="123456";
        key_[M].password[20]="123456";
          if((fp=fopen("D:pass.txt","wb"))==NULL)            
          {
              printf("cannot open this file\n");
              exit(0);
          }
                   if(fwrite(&key_[M],sizeof(struct Key),1,fp)!=1)
                       printf("数据存储错误\n");
               fclose(fp);
    }
    else
    {
        fclose(fp);
    }
}


int main()
{
    struct Key *p1=key_;
    craft(p1);
    load();
    return 0;
}






本来想如果首次打开则默认用户名跟密码都是123456  结果发现craft那好像存不进去 望大大们看下问题出在哪!
搜索更多相关主题的帖子: 用户名 include 管理系统 出生年月日 password 
2014-06-03 11:22
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:20 
D:pass.txt是啥东西呀?

总有那身价贱的人给作业贴回复完整的代码
2014-06-03 12:00
lxy409875745
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2013-11-19
收藏
得分:0 
回复 2 楼 embed_xuel
存储那个账号跟密码的文件路径
2014-06-03 13:20
lxy409875745
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2013-11-19
收藏
得分:0 
回复 2 楼 embed_xuel
void craft()//创建查询密码(默认为用户:123456 密码:123456),如果存在则跳过
{
    FILE *fp;
    if((fp=fopen("D:pass.txt","rb"))==NULL)        
    {   
        key.name=="123456";
        key.password=="123456";
          if((fp=fopen("D:pass.txt","wb"))==NULL)            
          {
              printf("cannot open this file\n");
              exit(0);
          }
                   if(fwrite(&key,sizeof(struct Key),1,fp)!=1)
                       printf("数据存储错误\n");
               fclose(fp);
    }
    else
    {
        fclose(fp);
    }
}



前面创建了一个结构体存放账号跟密码,可是老存不进去,不晓得问题出在什么地方了,总感觉这craft()函数有问题,就不晓得出在哪...
2014-06-03 13:31
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 3 楼 lxy409875745
路径对吗?

总有那身价贱的人给作业贴回复完整的代码
2014-06-03 13:43
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:0 
用户名和密码如果用数组存放,系统会自动在最后添加‘\0’,这点要注意

我不是砖家,要努力成为砖家。
2014-06-03 13:46
lxy409875745
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2013-11-19
收藏
得分:0 
回复 5 楼 embed_xuel
对的 我的d盘已经有文件生成了
2014-06-03 13:49
lxy409875745
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2013-11-19
收藏
得分:0 
回复 6 楼 砖家的谎言
那我从文件中读取信息用于验证账户跟密码的时候 输入的账号跟密码也要加\0么?
2014-06-03 13:53
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 4 楼 lxy409875745
key.name=="123456";
        key.password=="123456";

这两句是啥意思?为啥用“==” ?

总有那身价贱的人给作业贴回复完整的代码
2014-06-03 14:14
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
你自己写个代码试试:
char name[20];
name = "123456";或者name[20] = "123456"是否行的通?

[ 本帖最后由 embed_xuel 于 2014-6-3 15:58 编辑 ]

总有那身价贱的人给作业贴回复完整的代码
2014-06-03 14:17
快速回复:学生管理系统中用户名密码初始设定
数据加载中...
 
   



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

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