| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 287 人关注过本帖
标题:麻烦帮忙看看这个程序有什么地方可以改进的嘛
取消只看楼主 加入收藏
smbb0079
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-11-12
结帖率:50%
收藏
已结贴  问题点数:8 回复次数:0 
麻烦帮忙看看这个程序有什么地方可以改进的嘛
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 3
int count=0;
struct student
{
    int num;
    char name[20];
    char sex;
    int age;
    char beizhu[1000];

};
bool cheek(char ps[6])
{
 
    FILE *fp;
    char ch;
    char a[7]={" "};
    int i = 0;
    fp=fopen("d:\\课程设计成果\\cg\\密码.txt","r");
    if ((fp=fopen("d:\\课程设计成果\\cg\\密码.txt","r"))==NULL)
    {
        printf("文件打开失败!\n");
        exit(0);
    }
    ch=fgetc(fp);
    while (ch!=EOF&&i<6)
    {
        a[i] = ch;
        ch=fgetc(fp);
        i++;
    }
    a[6] = '\0';
    if (!strcmp(ps,a))
    {return true;}
    else
    {
        printf("密码错误\n");
        return false;
    }
    fclose(fp);
}


void GetInformation(struct student *stu,int n)
{   
    system("cls");
    int i;
    printf("****************************************************************************\n");
    for(i=0;i<n;i++)
    { char jin;
     printf("请输入学生%d的信息:学号、姓名、性别(女性以F,男性以T)、年龄、备注\n",(i+1));
     scanf("%d %s %c %d %s",&stu[i].num,stu[i].name,&stu[i].sex,&stu[i].age,stu[i].beizhu);
     count++;
     printf("是否继续输入?Y/N\n");
     getchar();
     scanf("%c",&jin);
     getchar();
     if(jin!='Y')
     break;
    }
}
void Print(struct student* stu,int n)
{   
    system("cls");
    int i;
    for(i=0;i<count;i++)
   {
      printf("学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注:%s\n",
      stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].beizhu);
   }
    printf("按任意键继续操作");
    getchar();
    getchar();
}
void Save(struct student* stu,int n)
{   FILE*fp;int i;
    fp=fopen("学生信息","w+");
    fprintf(fp,"%d\n",n);
    for( i=0;i<count;i++)
    {
       fprintf(fp,"学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注:%s\n",
       stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].beizhu);
    }
    printf("保存成功\n");
    fclose(fp);
    printf("按任意键继续操作");
    getchar();
    getchar();
}
void Delete(struct student* stu,int n)
{
    system("cls");
    int xuehao,i1,flag=0,i;
    printf("请输入要删除学生的学号:\n");
    scanf("%d",&xuehao);
    for( i=0;i<count;i++)
    {
      if(xuehao==stu[i].num)
      {
        flag=1;
        for(i1=i;i1<count-1;i1++)
        {
           stu[i1]=stu[i1+1];
        }
      }
    }
    if(flag==0)
    {
      printf("查无此人\n");
      printf("按任意键继续操作");
      getchar();
      getchar();
    }
    if(flag==1)
    {
      n=n-1;
      printf("删除成功\n");
      printf("按任意键继续操作");
      getchar();
      getchar();
    }
}
void Search(struct student* stu,int n)
{
   system("cls");
   int x,i;
   printf("\n*********************************\n");
   printf(" (1).按学号查询\n (2).按姓名查询\n (3).按性别查询\n (4).按年龄查询\n");
   printf("*********************************\n");
   printf("请选择:");
   scanf("%d",&x);
   if(x==1)
   {
      system("cls");
      int b1;
      printf("请输入学号:");
      scanf("%d",&b1);
      for(i=0;i<count;i++)
      {
         if(b1==stu[i].num)
         break;
      }
      if(i>=n)
      {printf("查无此人\n");printf("按任意键继续操作");getchar();getchar();}
      else
      {printf("学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注\n",
       stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].beizhu);
       printf("按任意键继续操作");getchar();getchar();}
      }
      else if(x==2)
      {
         system("cls");
         getchar();
         int j=0;
         char name1[20];
         printf("请输入姓名:");
         gets(name1);
         for(i=0;i<count;i++)
         {
             if(strcmp(name1,stu[i].name)==0)
             {printf("学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注%s\n",
              stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].beizhu);
              j=1;printf("按任意键继续操作");getchar();getchar();}
         }
             if(j==0)
             {printf("查无此人\n");printf("按任意键继续操作");getchar();getchar();}
     }
     else if(x==3)
     {
         system("cls");
         char sex1;
         getchar();
         printf("请输入性别:");
         scanf("%c",&sex1);
         for(i=0;i<count;i++)
         {
            if(sex1==stu[i].sex)
            {printf("学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注%s\n",
             stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].beizhu);
             printf("按任意键继续操作");getchar();getchar();}
         }
     }
     else if(x==4)
    {
       system("cls");
       int y;
       printf("请输入年龄:");
       scanf("%d",&y);
       for(i=0;i<count;i++)
       {
          if(y==stu[i].age)
          {printf("学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注%s\n",
           stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].beizhu);
           printf("按任意键继续操作");getchar();getchar();}
          }
       }
       else
       {printf("无此项操作\n");printf("按任意键继续操作");getchar();getchar();}
 }
void Update(struct student * stu,int n)
{
      system("cls");
      char pas[6];
      char n1[20],c2;
      int  c1,k,i;
      bool flag=false;
      printf("请输入密码:\n");
      scanf("%s",pas);
      if(flag=cheek(pas))
      {
         printf("请输入要修改学生的学号:");
         scanf("%d",&c1);
         for(i=0;i<count;i++)
         {
             if(stu[i].num==c1)
              {
                                    while(1)
                                    {
                                       if(k==5)
                                           break;
                                       system("cls");
                                       printf("\n*********************************\n");
                                       printf("-------------1.修改姓名-------------\n");
                                       printf("-------------2.修改年龄-------------\n");
                                       printf("-------------3.修改性别-------------\n");
                                       printf("-------------4.修改备注-------------\n");
                                       printf("-------------5.退出    -------------\n");
                                       printf("*********************************\n");
                                       printf("请输入你的选择:");
                                       scanf("%d",&k);
                                       switch(k)
                                       {
                                       case 1:system("cls");
                                              printf("请输入新姓名:");
                                              scanf("%s",n1);
                                              strcpy(stu[i].name,n1);break;
                                       case 2:system("cls");
                                              printf("请输入新年龄:");
                                              scanf("%d",&c1);
                                              stu[i].age=c1;break;
                                       case 3:system("cls");
                                              printf("请输入新性别:");
                                              getchar();
                                              scanf("%c",&c2);
                                              stu[i].sex=c2;break;
                                       case 4:system("cls");
                                              printf("请输入新备注:");
                                              scanf("%s",n1);
                                              strcpy(stu[i].beizhu,n1);break;
                                       case 5:system("cls");break;
                                       default:printf("无此项操作\n");
                                       }
                                    }
                                 }
                              }
                              printf("按任意键继续操作");
                              getchar();
                              getchar();
                           }
}
void main()
{
    char ps[6];
    int count=0,i,gg=0;
    int select,xiu;
    bool flag=false;
    struct student stu[N];
    FILE * fp;         
       fp=fopen("d:\\课程设计成果\\cg\\学生信息.txt","w+");
       {
         fscanf(fp,"%d\n",&count);
         for(i=0;i<count;i++)
         {
            fscanf(fp,"学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注:%s\n",&stu[i].num,stu[i].name,&stu[i].sex,&stu[i].age,stu[i].beizhu);
         }
        fclose(fp);
       }
    printf("\n*********************************\n");
    printf("-----------欢迎使用系统-------------\n");
    printf("----------制作者:XXXX------------\n");
    printf("*********************************\n");
    printf("请输入密码\n");xiu=4;
    while(scanf("%s",ps))
    {

        if(flag=cheek(ps))
        {
            while(1)
            {
                system("cls");
                printf("\n*********************************\n");
                printf("------1   学生基本信息录入------\n");
                printf("------2   学生基本信息显示------\n");
                printf("------3   学生基本信息保存------\n");
                printf("------4   学生基本信息删除------\n");
                printf("------5   学生基本信息修改(要求先输入密码)\n");
                printf("------6   学生基本信息查询------\n");
                printf("------7   退出程序        ------\n");
                printf("*********************************\n");
                scanf("%d",&select);
                {
                   switch(select)
                   {
                   case 1:
                      GetInformation(stu,N);
                      break;
                   case 2:
                      Print(stu,N);
                      break;
                   case 3:
                      Save(stu,N);
                      break;
                   case 4:
                      Delete(stu,N);
                      break;
                   case 5:
                      Update(stu,N);
                      break;
                   case 6:
                      Search(stu,N);
                      break;
                   case 7:
                       gg=1;
                       break;
                   }
                }if(gg==1)break;
            }if(gg==1)break;

        }
        else
        {
            system("cls");
            xiu--;
            if(xiu==0)
                break;
            printf("密码错误,请重新输入,您还有%d次机会\n",xiu);
        }
    }
}
一、问题描述:
对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。
二、功能要求:
1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。
2、本系统显示这样的菜单:
请选择系统功能项:
a.    学生基本信息录入
b.    学生基本信息显示
c.    学生基本信息保存
d.    学生基本信息删除
e.    学生基本信息修改(要求先输入密码)
f.    学生基本信息查询
(1)    按学号查询
(2)    按姓名查询
(3)    按性别查询
(4)    按年龄查询
g. 退出系统
3、执行一个具体的功能之后,程序将重新显示菜单。
4、将学生基本信息保存到文件中。
5、进入系统之前要先输入密码。
搜索更多相关主题的帖子: 课程 密码 include count 
2012-11-15 08:53
快速回复:麻烦帮忙看看这个程序有什么地方可以改进的嘛
数据加载中...
 
   



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

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