一个简单的档案管理应用(DOS平台)

来源:互联网 发布:最便宜的淘宝网 编辑:程序博客网 时间:2024/06/05 17:39
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>#define stuN 100static 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;}}}

0 0
原创粉丝点击