源程序.docx

上传人:b****5 文档编号:29076658 上传时间:2023-07-20 格式:DOCX 页数:26 大小:20.89KB
下载 相关 举报
源程序.docx_第1页
第1页 / 共26页
源程序.docx_第2页
第2页 / 共26页
源程序.docx_第3页
第3页 / 共26页
源程序.docx_第4页
第4页 / 共26页
源程序.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

源程序.docx

《源程序.docx》由会员分享,可在线阅读,更多相关《源程序.docx(26页珍藏版)》请在冰豆网上搜索。

源程序.docx

源程序

#include  

#include  

#include  

#include  

#define N 100 /*存储100个学生的学籍信息*/  

int flag; /*标记是否登录*/  

struct date /*出生日期*/  

{  

    int year;  

    int month;  

    int day;  

};  

struct student  

{  

    char num[20];/*学号*/  

    char name[25];/*姓名*/  

    char sex[10];/*性别*/  

    struct date birthday;/*出生年月*/  

    int age;/*年龄*/  

    char addr[50];/*籍贯*/  

    char dept[50]; /*系别*/  

    char major[30]; /*专业*/  

    char classs[30]; /*班级*/  

    char phone[20];/*电话*/  

}stu[N];  

  

void login() /*登录*/  

{  

    void menu();  

    system("cls");  

    if(flag)  

    {  

        printf("  已经登录!

\n");  

        printf("Press any key to continue…\n");  

        getchar();  

        getchar();  

        system("cls");  

        menu();  

    }  

    int load();  

    int n,i,m,w;  

    FILE *fp;  

    if((fp=fopen("D:

\\file.txt","rb"))!

=NULL) /*不是空文件*/  

      n=load(); /*打开文件*/  

    else  

      n=0;  

    struct student s;  

    char password[20];  

    int d,q;  

    printf("\n\t请选择登录身份:

1.管理员      2.用户     [ ]\b\b");  

    scanf("%d",&d);  

    if(d==1)  

    {  

        printf("\n\t\t\t请输入密码:

");  

        getchar();  

        int j=0;  

        while

(1)  

        {  

            password[j]=getch();  

            if(password[j]=='\r')  

              break;  

            printf("*");  

            j++;  

        }  

        password[j]='\0';  

        if(!

strcmp(password,"930322")) /*判断密码是否正确*/  

        {  

            flag=1;  

            printf("\n\t登录成功!

\n");  

            printf("\tPress [ Enter ] key to continue…");  

            getchar();  

            system("cls");  

            menu();  

        }  

        if(!

flag)  

        {  

           printf("\t\n密码错误!

\n");  

           printf("What do you want to do next?

 1.继续登录  2.返回菜单   [ ]\b\b");  

           scanf("%d",&q);  

           if(q==1) /*继续登录*/  

           {  

               system("cls");  

               login();  

           }  

           else if(q==2) /*返回主菜单*/  

           {  

               system("cls");  

               menu();  

           }  

        }  

    }  

    else  

    {  

       printf("\n\t\t\t用户名:

");  

       scanf("%s",s.name);  

       printf("\t\t\t密码:

");  

       int j=0;  

       while

(1)  

        {  

            password[j]=getch();  

            if(password[j]=='\r')  

              break;  

            printf("*");  

            j++;  

        }  

       password[j]='\0';  

       flag=0; /*未登录时flag=0*/  

       for(i=0;i

         if(!

strcmp(s.name,stu[i].name)&&!

strcmp(s.name,password))  

         {  

           flag=1; /*登录成功flag=1*/  

           break;  

         }  

      if(flag)  

      {  

         printf("\n\t登录成功!

\n");  

         printf("\tPress any key to continue…\n");  

         getchar(); getchar();  

         system("cls");  

         menu(); /*登录成功后返回主菜单*/  

      }  

      else  

      {  

        m=0; /*设置m是为了避免陷入 登录失败时 跳不出登录界面*/  

        w=1; /*设置w是为了避免输出多次 “用户不存在”*/  

        int q; /*q为选项*/  

        do  

        {  

            if(w>0)  

               printf("用户名不存在或密码错误!

\n"); /*第一次登录时输入不存在的用户时显示*/  

            printf("What do you want to do next?

 1.继续登录  2.返回菜单   [ ]\b\b");  

            scanf("%d",&q);  

            if(q==1) /*继续登录*/  

            {  

                login();  

                m=1;  

            }  

            else if(q==2) /*返回主菜单*/  

            {  

                system("cls");  

                menu();  

                m=1;  

            }  

            else  

            {  

                printf("选择错误!

请重新选择:

\n");  

                w=0;  

            }  

        }while(m==0);  

      }  

    }  

}  

  

void printf_one(int k) /*输出一个学生的信息*/  

{  

    system("color 4e");  

    printf("学号:

%s\n",stu[k].num);  

    printf("姓名:

%s\n",stu[k].name);  

    printf("性别:

%s\n",stu[k].sex);  

    printf("出生年月:

%d/%d/%d\n",stu[k].birthday.year,stu[k].birthday.month,stu[k].birthday.day);  

    printf("年龄:

%d\n",stu[k].age);  

    printf("籍贯:

%s\n",stu[k].addr);  

    printf("系别:

%s\n",stu[k].dept);  

    printf("专业:

%s\n",stu[k].major);  

    printf("班级:

%s\n",stu[k].classs);  

    printf("电话:

%s\n",stu[k].phone);  

}  

  

void printf_n(int n) /*浏览时输出所有学生的信息*/  

{  

    system("color 2e");  

    int j,i=1;  

    for(j=0;j

    {  

        printf("第%d个学生:

\n",i++);  

        printf_one(j);  

        printf("\n");  

    }  

  getchar();  

}  

  

int load() /*打开文件,读取里面的数据*/  

{  

    FILE *fp;  

    int i;  

    if((fp=fopen("D:

\\file.txt","rb"))==NULL) /*读入空文件,rb表示打开一个二进制文件,只允许读数据*/  

    {  

        printf("\n文件不存在!

请输入:

\n");  

        return 0;  

    }  

    for(i=0;!

feof(fp);i++)  /*处理到文件结尾*/  

       fread(&stu[i],sizeof(struct student),1,fp);  /*fread(buffer,size,cout,fp)将磁盘文件中的一批数据作为一个整体一次性读取出来, 

    buffer指定数据块位置,sizeof数据块字节数,count读取次数,fp指向源磁盘文件*/  

    fclose(fp);  

    return(i-1);  

}  

  

void input(int k) /*输入学生信息*/  

{  

    getchar();  

    printf("学号:

");   gets(stu[k].num);  

    printf("姓名:

");   gets(stu[k].name);  

    printf("性别:

");   gets(stu[k].sex);  

    printf("出生年月:

");  scanf("%d/%d/%d",&stu[k].birthday.year,&stu[k].birthday.month,&stu[k].birthday.day);  

    printf("年龄:

");   scanf("%d",&stu[k].age);  getchar();  

    printf("籍贯:

");   gets(stu[k].addr);  

    printf("系别:

");   gets(stu[k].dept);  

    printf("专业:

");   gets(stu[k].major);  

    printf("班级:

");   gets(stu[k].classs);  

    printf("电话:

");   gets(stu[k].phone);  

}  

  

void save(int n) /*保存学生信息*/  

{  

    void exit();  

    FILE *fp;  

    int i;  

    if((fp=fopen("D:

\\file.txt","wb"))==NULL) /*只打开或建立一个二进制文件,只允许写数据*/  

    {  

        printf("\nCan not open file!

\n");  

        exit();  

    }  

    for(i=0;i

      if(stu[i].name[0]!

='\0')  

         if(fwrite(&stu[i],sizeof(struct student),1,fp)!

=1) /*将一批数据作为一个整体一次性写入磁盘文件*/  

            printf("文件写入错误!

\n");  

    fclose(fp);  

}  

  

void printf_back()/*添加学生信息后显示的“是浏览还是返回”*/  

{  

   int w,k=0;  

   void browse();  

   void menu();  

   printf("\n\n\t^_^.插入成功. ^_^\n\n");  

   do  

   {  

      printf("What do you want to do next?

\n\n\t1).浏览所有\t2).返回:

  [ ]\b\b");  

      scanf("%d",&w);  

      if(w==1)  

      {  

          system("cls");  

          browse();  

      }  

      else if(w==2)  

      {  

          system("cls");  

          menu();  

      }  

      else  

          printf("  选择错误!

请重新选择!

\n");  

   }while(k==0);  

}  

  

void insert() /*添加学生信息*/  

{  

    int i,n,k,t;  

    FILE *fp;  

    if((fp=fopen("D:

\\file.txt","rb"))==NULL) /*读入空文件,rb表示打开一个二进制文件,只允许读数据*/  

    {  

        printf("How many people do you want to add(1-%d)?

:

",N-1);  

        n=0;  

    }  

    else  

    {  

      n=load();  

      printf("How many student do you want to insert (1-%d)?

:

",N-n-1);  

    }  

    scanf("%d",&t);  

    k=n+t;  

    for(i=n;i

    {  

       printf("\n输入第 %d 个学生学籍信息.\n",i-n+1);  

       input(i);  

    }  

    save(k); /*保存所有学生的信息*/  

    printf_back();  

}  

  

void deleter() /*删除*/  

{  

    void menu();  

    if(!

flag)  

    {  

        printf("\n\n\t请先登录!

\n");  

        printf("\n\t请按 Enter 键进入登录界面!

");  

        getchar();  

        getchar();  

        login();  

    }  

    else  

    {  

        struct student s;  

        int i,n,k,w0,w1;  

        n=load();  

        do  

        {  

            k=-1;  

            //printf_n(n); /*删除之前先显示所有学生的信息*/  

            do  

            {  

                 printf("\n\n请输入您想要删除的学生的姓名!

\nName:

");  

                 scanf("%s",s.name);  

                 for(i=0;i

                   if(strcmp(s.name,stu[i].name)==0)  

                   {  

                      k=i;  

                      s=stu[i];  

                   }  

                 if(k==-1)  

                 {  

                     int m;  

                     printf("\n\n没有这个学生的信息!

\n");  

                     printf("What do you want to do next?

 1.继续输入  2.返回主菜单    [ ]\b\b");  

                     scanf("%d",&m);  

                     if(m==1)  

                         deleter();  

                     else  

                     {  

                         k=0;  

                         menu();  

                     }  

                 }  

            }while(k==-1);  

            printf_one(k);  

            printf("\n\t确定删除?

\n\t1).是   2).返回  [ ]\b\b");/*再次询问是否删除*/  

            scanf("%d",&w0);  

            if(w0==1)  

            {  

               stu[k].name[0]='\0';  

               save(n);  

            }  

            else  

                break;  

            printf("\n\t^_^.成功删除^_^.\n");  

            printf("What do you want to do?

\n\t1).继续   2).返回  [ ]\b\b");  

            scanf("%d",&w1);  

        }while(w1==1);  

      system("cls");  

      menu(); /*不再删除时返回主菜单,w1!

=1*/  

    }  

}  

  

void search() /*查找*/  

{  

    void menu();  

    int w0,k,i,n,w1,w2;  

    struct student s;  

    FILE *fp;  

    if((fp=fopen("D:

\\file.txt","rb"))!

=NULL) /*不是空文件*/  

       n=load();  

    do  

    {  

        printf("请选择查找类别:

  1.姓名  2.学号   [ ]\b\b");  

        scanf("%d",&w1);  

        if(w1<1||w1>2)  

        {  

            printf("输入错误!

请重新输入!

\n");  

            w2=1;  

        }  

        else  

            w2=0; /*这里要注意:

不加这句话会陷入死循环,跳不出来*/  

    }while(w2==1);  

    if(w1==1) /*按姓名查找*/  

    {  

        do  

        {  

            k=-1;  

            do  

            {  

                printf("\n请输入您想要查找的学生的姓名!

\nName:

");  

                scanf("%s",s.name);  

                for(i=0;i

                  if(strcmp(s.name,stu[i].name)==0)  

                  {  

                      k=i;  

                      s=stu[i];  

                

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1