#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
#define stuN 100
static int stunum;
struct Student
{
char idstu[20];
char name[20];
char sex[6];
int age;
char comment[100];
};
void InputInfo(struct Student *p);
void ShowInfo(struct Student *p);
void SaveInfo(struct Student *p);
void DelInfo(struct Student *p);
void ModifyInfo(struct Student *p);
void SearchInfo(struct Student *p);
void ExitSystem(struct Student *p);
void PasswdAsk();
void ShowMenu(struct Student *p);
void(*menu[])(struct Student *p)
={
InputInfo,
ShowInfo,
SaveInfo,
DelInfo,
ModifyInfo,
SearchInfo,
ExitSystem
};
void Search_byidnum(struct Student *p);
void Search_byname(struct Student *p);
void Search_bysex(struct Student *p);
void Search_byage(struct Student *p);
void(*sonmenu[])(struct Student *p)
={
Search_byidnum,
Search_byname,
Search_bysex,
Search_byage
};
int main()
{
struct Student stu[stuN];
struct Student *k;
k=stu;
PasswdAsk();
ShowMenu(k);
return 0;
}
void InputInfo(struct Student *p)
{
int i;
system("cls");
printf("开始录入信息!\n");
printf("输入人数: ");
scanf("%d",&stunum);
for(i=0;i<stunum;i++)
{
printf("\n输入第%d个学生的学号: ",i+1);
scanf("%s",p[i].idstu);
printf("姓名: ");
scanf("%s",p[i].name);
printf("性别: ");
scanf("%s",p[i].sex);
printf("年龄: ");
scanf("%d",&p[i].age);
printf("备注: ");
scanf("%s",p[i].comment);
system("cls");
}
printf("录入完毕!\n");
Sleep(2000);
system("cls");
ShowMenu(p);
}
void ShowInfo(struct Student *p)
{
int i,j,idlen,nalen;
system("cls");
printf("--------------------学生数据显示--------------------\n");
printf("-----学号---------姓名----性别----年龄----备注-------\n");
for(i=0;i<stunum;i++)
{
idlen=strlen(p[i].idstu);
nalen=strlen(p[i].name);
printf("-%s",p[i].idstu);
for(j=1;j<16-idlen;j++)
printf("-");
printf("%s",p[i].name);
for(j=0;j<9-nalen/2;j++)
printf("-");
printf("%s-----",p[i].sex);
printf("%d----",p[i].age);
puts(p[i].comment);
}
printf("显示完毕!\n");
Sleep(5000);
system("cls");
ShowMenu(p);
}
void SaveInfo(struct Student *p)
{
int i,j,idlen,nalen;
FILE *fp;
fp=fopen("D:\\成绩保存.txt","w");
fprintf(fp,"--------------------学生数据显示--------------------\n");
fprintf(fp,"-----学号---------姓名----性别----年龄----备注-------\n");
for(i=0;i<stunum;i++)
{
idlen=strlen(p[i].idstu);
nalen=strlen(p[i].name);
fprintf(fp,"-%s",p[i].idstu);
for(j=1;j<16-idlen;j++)
fprintf(fp,"-");
fprintf(fp,"%s",p[i].name);
for(j=0;j<9-nalen/2;j++)
fprintf(fp,"-");
fprintf(fp,"%s-----",p[i].sex);
fprintf(fp,"%d----",p[i].age);
fputs(p[i].comment,fp);
fprintf(fp,"\n");
}
fclose(fp);
printf("已保存!\n");
Sleep(3000);
system("cls");
ShowMenu(p);
}
void DelInfo(struct Student *p)
{
int i;
for(i=0;i<stunum;i++)
{
memset(p[i].idstu,0,sizeof(p[i].idstu));
memset(p[i].name,0,sizeof(p[i].name));
memset(p[i].sex,0,sizeof(p[i].sex));
p[i].age=0;
memset(p[i].comment,0,sizeof(p[i].comment));
}
if(!remove("D:\\成绩保存.txt")) printf("删除成功!\n");
else printf("删除失败!\n");
Sleep(3000);
system("cls");
ShowMenu(p);
}
void ModifyInfo(struct Student *p)
{
int lack_state=1;
char setpasswd[20]={"hello"};
char passwd[20];
reload:
system("cls");
printf("-----身份验证-----\n");
printf("输入密码: ");
scanf("%s",passwd);
if(strcmp(passwd,setpasswd)==0)
{
lack_state=0;
printf("登陆成功!\n");
Sleep(2000);
system("cls");
}
else
{
printf("密码错误!重新输入!\n");
memset(passwd,0,20);
Sleep(2000);
goto reload;
}
if(lack_state==0)
{
int i;
int find_state=0,record;
char searchnum[20];
printf("开始修改!\n");
printf("输入要修改的学生学号: ");
scanf("%s",searchnum);
for(i=0;i<stunum;i++)
if(strcmp(searchnum,p[i].idstu)==0)
{
record=i;
find_state=1;
break;
}
if(find_state==1)
{
memset(p[record].idstu,0,sizeof(p[record].idstu));
memset(p[record].name,0,sizeof(p[record].name));
memset(p[record].sex,0,sizeof(p[record].sex));
p[record].age=0;
memset(p[record].comment,0,sizeof(p[record].comment));
printf("新学号: ");
scanf("%s",p[record].idstu);
printf("姓名: ");
scanf("%s",p[record].name);
printf("性别: ");
scanf("%s",p[record].sex);
printf("年龄: ");
scanf("%d",&p[record].age);
printf("备注: ");
scanf("%s",p[record].comment);
printf("修改完成!\n");
}
else printf("无此记录!\n");
}
Sleep(3000);
system("cls");
ShowMenu(p);
}
void SearchInfo(struct Student *p)
{
int select;
system("cls");
printf("------------------学生基本信息查询--------------------\n");
printf("----- (1)按学号查询 -----\n");
printf("----- (2)按姓名查询 -----\n");
printf("----- (3)按性别查询 -----\n");
printf("----- (4)按年龄查询 -----\n");
printf("输入菜单功能对应的序号: ");
scanf("%d",&select);
sonmenu[select-1](p);
}
void Search_byidnum(struct Student *p)
{
int i,find_state=0;
char searchnum[20];
system("cls");
printf("输入学号: ");
scanf("%s",searchnum);
for(i=0;i<stunum;i++)
if(strcmp(searchnum,p[i].idstu)==0)
{
printf("查询结果:\n");
printf("学号: %s\n",p[i].idstu);
printf("姓名: %s\n",p[i].name);
printf("性别: %s\n",p[i].sex);
printf("年龄: %d\n",&p[i].age);
printf("备注: %s\n",&p[i].comment);
find_state=1;
break;
}
if(find_state==1) printf("查询完毕!\n");
else printf("无此记录!\n");
Sleep(3000);
ShowMenu(p);
}
void Search_byname(struct Student *p)
{
int i,count=1,find_state=0;
int namerecord[stuN];
char searchname[20];
system("cls");
printf("输入姓名: ");
scanf("%s",searchname);
for(i=0;i<stunum;i++)
{
if(strcmp(searchname,p[i].name)==0)
{
namerecord[count]=i;
find_state=1;
count++;
}
}
if(find_state==1)
{
for(i=1;i<count;i++)
{
printf("查询结果%d:\n",i);
printf("学号: %s\n",p[namerecord[i]].idstu);
printf("姓名: %s\n",p[namerecord[i]].name);
printf("性别: %s\n",p[namerecord[i]].sex);
printf("年龄: %d\n",p[namerecord[i]].age);
printf("备注: %s\n",p[namerecord[i]].comment);
}
}
else printf("无此记录!\n");
Sleep(3000);
system("cls");
ShowMenu(p);
}
void Search_bysex(struct Student *p)
{
char searchsex[6];
int i,j,find_state=0,count=1;
int idlen,nalen;
int sexrecord[stuN];
system("cls");
printf("请输入性别: ");
scanf("%s",searchsex);
for(i=0;i<stunum;i++)
{
if(strcmp(searchsex,p[i].sex)==0)
{
find_state=1;
sexrecord[count]=i;
count++;
}
}
if(find_state==1)
{
for(i=1;i<count;i++)
{
idlen=strlen(p[sexrecord[i]].idstu);
nalen=strlen(p[sexrecord[i]].name);
printf("-%s",p[sexrecord[i]].idstu);
for(j=1;j<16-idlen;j++)
printf("-");
printf("%s",p[sexrecord[i]].name);
for(j=0;j<9-nalen/2;j++)
printf("-");
printf("%s-----",p[sexrecord[i]].sex);
printf("%d----",p[sexrecord[i]].age);
puts(p[sexrecord[i]].comment);
}
}
else printf("无此记录!\n");
Sleep(3000);
system("cls");
ShowMenu(p);
}
void Search_byage(struct Student *p)
{
int i,j,searchage,count=1,find_state=0;
int agerecord[stuN],idlen,nalen;
system("cls");
printf("请输入年龄: ");
scanf("%d",&searchage);
for(i=0;i<stunum;i++)
{
if(searchage==p[i].age)
{
find_state=1;
agerecord[count]=i;
count++;
}
}
if(find_state==1)
{
for(i=1;i<count;i++)
{
idlen=strlen(p[agerecord[i]].idstu);
nalen=strlen(p[agerecord[i]].name);
printf("-%s",p[agerecord[i]].idstu);
for(j=1;j<16-idlen;j++)
printf("-");
printf("%s",p[agerecord[i]].name);
for(j=0;j<9-nalen/2;j++)
printf("-");
printf("%s-----",p[agerecord[i]].sex);
printf("%d----",p[agerecord[i]].age);
puts(p[agerecord[i]].comment);
}
}
else printf("无此记录!\n");
Sleep(3000);
system("cls");
ShowMenu(p);
}
void ExitSystem(struct Student *p)
{
printf("成功退出系统!\n");
exit(0);
}
void PasswdAsk()
{
char passwd[20];
char setpasswd[20]={"hello"};
int pass_state=0;
refresh:
printf("----------系统登陆验证-----------\n");
printf("输入密码: ");
scanf("%s",passwd);
if(strcmp(passwd,setpasswd)==0)
{
pass_state=1;
printf("登陆成功!\n");
Sleep(1000);
system("cls");
}
else
{
printf("密码错误!重新输入!\n");
Sleep(1000);
memset(passwd,0,20);
system("cls");
goto refresh;
}
}
void ShowMenu(struct Student *p)
{
char selectchar;
system("cls");
reshow:
printf("-------------------------MENU-------------------------\n");
printf("----- a.学生基本信息录入 -----\n");
printf("----- b.学生基本信息显示 -----\n");
printf("----- c.学生基本信息保存 -----\n");
printf("----- d.学生基本信息删除 -----\n");
printf("----- e.学生基本信息修改(要求先输入密码)--\n");
printf("----- f.学生基本信息查询 -----\n");
printf("----- g.退出系统 -----\n");
getchar();
printf("输入菜单功能对应的序号: ");
while(1)
{
scanf("%c",&selectchar);
if(selectchar>=97&&selectchar<=103)
{
menu[(int)(selectchar-49)-'0'](p);
break;
}
else
{
printf("无此序号,重新输入!");
Sleep(1000);
system("cls");
goto reshow;
}
}
}
一个简单的档案管理应用(DOS平台)
最新推荐文章于 2022-06-23 10:27:46 发布