麻烦帮忙看看这个程序有什么地方可以改进的嘛
#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、进入系统之前要先输入密码。