|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 wuliangtdi 于 2019-3-5 23:03 编辑
- #include<stdio.h>
- #include<string.h>
- #include<stdlib.h>
- #include<windows.h>
- #define N 100
- int n=0;
- int color(int c)
- {
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),c);
- return 0;
- }
- //*登入界面模块*//
- void Login()
- {
- int i=0;
- char Administrator[] = {"admin"}; //*管理员账号*//
- char password[] = {"admin"}; //*管理员密码*//
- char a[20]={0}; //*用户自己输入的账号*//
- char b[20]={0}; //*用户自己输入的密码*//
- color(3);
- for(i=0;i<3;i++)
- {
- printf("请输入管理员账号:\n");
- scanf("%s",a);
- printf("请输入管理员密码:\n");
- scanf("%s",b);
- if(!strcmp(Administrator,a)&&!strcmp(password,b))
- {
- break;
- }
- else
- {
- i++;
- printf("您输入的账号或密码有误请重新输入,您还有%d次机会输入:\n",3-i);
- }
- if(i==3)
- {
- printf("退出系统\n");
- }
- }
- system("cls");
- }
- //*开始菜单*//
- void menu()
- {
- color(12);
- printf("\n\n\n\n\n");
- printf("\t\t|-------------------------开始菜单------------------------|\n");
- printf("\t\t|\t\t1.输入学生信息 |\n");
- printf("\t\t|\t\t2.查询学生信息 |\n");
- printf("\t\t|\t\t3.显示学生信息 |\n");
- printf("\t\t|\t\t3.删除学生信息 |\n");
- printf("\t\t|\t\t4.修改学生信息 |\n");
- printf("\t\t|\t\t5.插入学生信息 |\n");
- printf("\t\t|\t\t6.学生的总人数 |\n");
- printf("\t\t|\t\t0.退出系统 |\n");
- printf("\t\t|---------------------------------------------------------|\n");
- }
- //*学生信息结构体*//
- struct Student
- {
- char name[16]; //学生姓名*//
- char sex[4]; //*学生性别//
- char number[20]; //*学生学号*//
- int age; //*学生年龄*//
- char phone[15]; //*学生电话*//
- char id[20]; //*学生身份证*//
- char mail[25]; //*学生的邮箱*//
- char address[200]; //*学生的家庭住址*//
- char born[20]; //*学生出生年月*//
- }stu[N];
- //*学生读入信息*//
- void read()
- {
- int i=0; //*选择是否继续输入*//
- FILE *fp;
- if((fp=fopen("D:\\date.txt","r"))==NULL)
- {
- printf("对不起,文件不存在。请在D盘下新建一个名叫date.txt文件");
- system("pause");
- system("cls");
- return;
- }
- fscanf(fp,"%d\n",&n);
- while(i < n)
- {
- fscanf(fp,"%s\n",stu[i].name);
- fscanf(fp,"%s\n",stu[i].sex);
- fscanf(fp,"%s\n",stu[i].number);
- fscanf(fp,"%s\n",stu[i].phone);
- fscanf(fp,"%d\n",&stu[i].age);
- fscanf(fp,"%s\n",stu[i].id);
- fscanf(fp,"%s\n",stu[i].mail);
- fscanf(fp,"%s\n",stu[i].address);
- fscanf(fp,"%s",stu[i].born);
- i++;
- }
- fclose(fp);
- }
- //*学生信息写入*//
- void write()
- {
- FILE *fp;
- int i=0;
- if((fp=fopen("D:\\date.txt","w"))==NULL)
- {
- printf("无法打开文件\n");
- return;
- }
- fprintf(fp,"%d",n);
- while(i<n)
- {
- fprintf(fp,"%s\n",stu[i].name);
- fprintf(fp,"%s\n",stu[i].sex);
- fprintf(fp,"%s\n",stu[i].number);
- fprintf(fp,"%s\n",stu[i].phone);
- fprintf(fp,"%d\n",stu[i].age);
- fprintf(fp,"%s\n",stu[i].id);
- fprintf(fp,"%s\n",stu[i].address);
- fprintf(fp,"%s\n",stu[i].born);
- i++;
- }
- fclose(fp);
- }
- void input()
- {
- int i;
- int flag; //*标记学号是否已存在*//
- char c; //*指令Y?N*//
- read();
- color(9);
- do
- {
- flag = 0;
- printf("\t\t请输入学生的学号: \n\t\t");
- scanf("%s",stu[n].number);
- printf("hello world");
- for(i = 0 ; i < n ; i ++)
- { if(strcmp(stu[i].number,stu[n].number) == 0)
- {
- flag = 1;
- break;
- }
- }
- if(flag)
- {
- printf("该编号已存在!\n\n");
- printf("\t\t是否继续输入?(Y/N): ");
- scanf("%*c%c",&c);
- if(c == 'N' || c == 'n') break;
- continue;
- }
- printf("\t\t请输入第%d名学生姓名:\n\t\t",i+1);
- scanf("%s",stu[i].name);
- printf("\t\t请输入第%d名学生性别:\n\t\t",i+1);
- scanf("%s",stu[i].sex);
- printf("\t\t请输入第%d名学生电话:\n\t\t",i+1);
- scanf("%s",stu[i].phone);
- printf("\t\t请输入第%d名学生年龄:\n\t\t",i+1);
- scanf("%d",&stu[i].age);
- printf("\t\t请输入第%d名学生身份证:\n",i+1);
- scanf("%s",stu[i].id);
- printf("\t\t请输入第%d名学生邮箱:\n\t\t",i+1);
- scanf("%s",stu[i].mail);
- printf("\t\t请输入第%d名学生家庭地址:\n\t\t",i+1);
- scanf("%s",stu[i].address);
- printf("\t\t请输入第%d名学生出生年月日:\n\t\t",i+1);
- scanf("%s",stu[i].born);
- printf("\t\t是否继续输入?(Y/N): ");
- scanf("%*c%c",&c);
- n++;
- }while( c != 'N' && c != 'n'); //输入数据前先将文件中原有的数据读入*//
- write();
- printf("\n\n数据已保存!\n\n");
- }
- //显示模块
- void output_inf(int Id)
- {
- printf("\t\t 学号: %s\n",stu[Id].number);
- printf("\t\t 姓名: %s\n",stu[Id].name);
- printf("\t\t 性别: %s\n",stu[Id].sex);
- printf("\t\t 出生年月: %s\n",stu[Id].born);
- printf("\t\t 电话: %s\n",stu[Id].phone);
- printf("\t\t 年龄: %d\n",stu[Id].age);
- printf("\t\t 身份证: %s\n",stu[Id].id);
- printf("\t\t 家庭住址: %s\n",stu[Id].address);
- printf("\t\t 邮箱: %s\n",stu[Id].mail);
- printf("\n\n\n");
- }
- void show() //*显示所有学生信息*//
- {
- int i;
- read(); //*读取数据*//
- if(n == 0)
- printf("无记录!\n\n");
- else
- for(i = 0 ; i < n ; i ++)
- {
- output_inf(i);
- }
- }
- //*查询信息*//
- void que()//查询信息
- {
- char num;
- int flag,i;
- char q_number[20] ;//查询学号
- char q_name[20] ;//查询姓名
- char q_id[20] ; //查询身份证
- char c;//指令Y?N
- read();//打开程序后,要查询以前的数据,要先读入
- color(9);
- while(1)
- {
- system("cls");
- printf("\t\t******************查询********************\n");
- printf("\t\t******************************************\n");
- printf("\t\t* 1.按学号查询 *\n");
- printf("\t\t******************************************\n");
- printf("\t\t* 2.按姓名查询 *\n");
- printf("\t\t******************************************\n");
- printf("\t\t* 3.按身份查询 *\n");
- printf("\t\t******************************************\n");
- printf("\t\t* 输入其他任意键退出本模块 *\n");
- printf("\t\t******************************************\n");
- printf("\t\t请输入指令(1-3):");
- scanf("%*c%c",&num);
- if(num < '1' || num > '3')
- {
- printf("错误指令!\n\n");
- system("pause");
- break;
- }
- system("cls");
- flag = 0;//用来标记学生信息是否存在
- if(num == '1')//按学号查询
- {
- printf("\t\t请输入您要查询学生的学号:");
- scanf("%s",q_id);
- for(i = 0 ; i < n ;i ++)
- {
- if( strcmp(stu[i].number,q_number) == 0)
- {
- output_inf(i);
- flag = 1;//标记
- break;
- }
- }
- }
- else if(num == '2')//按姓名查询
- {
- printf("\t\t请输入您要查询员工的姓名:");
- scanf("%s",q_name);
- for(i = 0 ; i < n ;i ++)
- {
- if( strcmp(stu[i].name,q_name) == 0)
- {
- output_inf(i);
- flag = 1;//标记
- }
- }
- }
- else if(num == '3')//按身份证查询
- {
- printf("\t\t请输入您要查询学生的身份证:");
- scanf("%s",q_id);
- for(i = 0 ; i < n ;i ++)
- {
- if( strcmp(stu[i].id,q_id) == 0)
- {
- output_inf(i);
- flag = 1;//标记
- }
- }
- }
- if(!flag)//判断是否有该学生信息
- {
- printf("\n\n无该学生信息!\n\n");
- }
- printf("\n\n是否继续查询(Y/N):");
- scanf("%*c%c",&c);
- if(c == 'N' || c == 'n')
- break;
- }
- }
- int main()
- {
- int i;
- Login();
- menu();
- printf("请输入0~7继续操作:\n");
- scanf("%d",&i);
- switch(i)
- {
- case 1: input();break;
- case 2: que();break;
- case 3: show();break;
- case 4: printf("删除数据\n");break;
- case 5: printf("数据排序数据\n");break;
- case 6: printf("保存期数据\n");break;
- default: printf("输入无效\n");
- }
- }
复制代码
第一次输入学生的信息时可以直接运行并保存,但是重新输入学生信息或者查询显示学生信息会直接停止工作,我感觉是文件读写那里有问题,找了两个多小时都找不到问题,希望大神能够指点一下。 |
|