一个简单的c语言信息管理系统

    科技2025-08-31  10

    一个简单的c语言信息管理系统

    #include <stdio.h> #include <windows.h> #include <string.h> /*定义一个结构体*/ struct student { char num[20]; //工号 char name[10]; //姓名 char sex[2]; //性别 char age[5]; //年龄 char addr[30]; //地址 char tel[20]; //电话 char qq[20]; //QQ号 }em[100]; /*定义各函数*/ void menu(); //菜单 void save(int); //保存 int load(); /*导入函数*/ void display(); //浏览 void del(); //删除 void add(); //添加 void search(); //查询 void search_num(); //按工号查 void search_name(); //按姓名查 void modify(); //修改 void main() { int n; char a; menu(); //调用菜单函数 printf("请选择你需要操作的步骤(1--6):\n"); scanf("%d",&n); while(n<1&&n>6) { printf("您输入有误,请重新选择!"); scanf("%d",&n); } while(1) { switch(n) { case 1: printf(" ◆◆◆添加员工信息◆◆◆\n"); printf("\n"); add(); break; case 2: printf(" ◆◆◆浏览员工信息◆◆◆\n"); printf("\n"); display(); break; case 3: printf(" ◆◆◆按工号查询员工信息◆◆◆\n"); printf("\n"); search(); break; case 4: printf(" ◆◆◆删除员工信息◆◆◆\n"); printf("\n"); del(); break; case 5: printf(" ◆◆◆修改员工信息◆◆◆\n"); printf("\n");modify(); break; case 6: exit(0); break; default : break; } getchar(); printf("\n"); printf("是否继续进行(y or n):\n"); scanf("%c",&a); if(a=='y') { system("cls"); /*清屏*/ menu(); /*调用菜单函数*/ printf("请再次选择你需要操作的步骤(1--6):\n"); scanf("%d",&n); printf("\n"); } else exit(0); } } void menu() /*菜单函数*/ { printf(" ************欢迎进入员工信息管理系统**********\n"); printf(" 1.添加员工信息"); printf(" 2.浏览员工信息\n"); printf(" 3.查询员工信息"); printf(" 4.删除员工信息\n"); printf(" 5.修改员工信息\n"); printf(" 6.退出\n"); printf(" ********************谢谢使用******************\n"); printf("\n"); printf("\n"); } void save(int m) /*保存文件函数*/ { int i; FILE*fp; fp=fopen("D:\\stud.txt","wb"); for (i=0;i<m;i++) /*将内存中员工的信息输出到磁盘文件中去*/ if (fwrite(&em[i],sizeof(struct student),1,fp)!=1) printf("file write error\n"); fclose(fp); } int load() /*导入+测长度函数*/ { FILE*fp; int i=0; if((fp=fopen("D:\\stud.txt","rb"))==NULL)/*判断是否能打开*/ { return 0; } else { do { fread(&em[i],sizeof(struct student),1,fp); //读文件到数组 i++; //顺便测量长度 } while(feof(fp)==0); //判断文件是否读完 } fclose(fp); //关文件操作 return(i-1); //返回文件长度 } void display() /*浏览函数*/ { int i; int m=load(); for(i=0;i<m;i++) { printf(" 工号 姓名 性别 年龄 \n"); printf(" %s %s %s %s \n",em[i].num,em[i].name,em[i].sex,em[i].age); printf(" 地址 电话 QQ号\n"); printf(" %s %s %s\n",em[i].addr,em[i].tel,em[i].qq); printf("\n"); printf("\n"); } } void add()/*添加函数*/ { FILE*fp; int n; /*增加员工的个数*/ int i; int m=load();/*定义一个变量接受函数的返回值*/ printf("请输入想增加的员工人数:\n"); scanf("%d",&n); for (i=m;i<(m+n);i++) /*从第m个数组开始,继续填充数组数据*/ { printf("\n 请输入新增加员工的信息:\n"); printf("请输入工号: "); scanf("%s",&em[i].num); printf("请输入姓名: "); scanf("%s",em[i].name); printf("请输入性别: "); scanf("%s",&em[i].sex); printf("请输入年龄: "); scanf("%s",&em[i].age); printf("请输入住址: "); scanf("%s",em[i].addr); printf("请输入电话: "); scanf("%s",em[i].tel); printf("请输入QQ: "); scanf("%s",em[i].qq); printf("\n"); } printf("\n添加完毕!\n"); m=m+n; /*总员工数*/ save(m);/*将得到的员工数返回到文本中*/ } void del() /*删除函数*/ { int m=load(); int i,j,n,t,flag; char name[10]; printf("\n 原来的员工信息:\n"); display(); printf("\n"); printf("请输入要删除的员工的姓名:\n"); scanf("%s",name); for(flag=1,i=0;flag&&i<m;i++) { if(strcmp(em[i].name,name)==0) { printf("\n已找到此人,原始记录为:\n"); printf(" 工号 姓名 性别 年龄 \n"); printf(" %s %s %s %s \n",em[i].num,em[i].name,em[i].sex,em[i].age); printf(" 地址 电话 QQ号\n"); printf(" %s %s %s\n",em[i].addr,em[i].tel,em[i].qq); printf("\n确实要删除此人信息请按1,不删除请按0\n"); scanf("%d",&n); if(n==1) { for(j=i;j<m-1;j++) //覆盖删除法 { strcpy(em[j].num,em[j+1].num); /*字符串复制*/ strcpy(em[j].name,em[j+1].name); strcpy(em[j].sex,em[j+1].sex); strcpy(em[j].age,em[j+1].age); strcpy(em[j].addr,em[j+1].addr); strcpy(em[j].tel,em[j+1].tel); strcpy(em[j].qq,em[j+1].qq); } flag=0; //跳出循环 } } } if(flag==0) m=m-1; else printf("\n对不起,查无此人!\n"); save(m); /*调用保存函数*/ printf("\n继续删除请按1,不再删除请按0\n"); scanf("%d",&t); switch(t) { case 1: del(); break; case 0: break; default : break; } } void search()/*查询函数*/ { int t,flag; printf("\n1:按工号查询请按 2:按姓名查询请按 \n"); scanf("%d",&t); while(t>2&&t<1)/*输入的t必须是1或者2*/ { printf("输入出错,请从新输入:\n"); scanf("%d",&t); } switch(t) { case 1: printf("按职学号查询\n"); search_num();break; case 2: printf("按姓名查询\n"); search_name();break; default:break; } } void search_num() //按学号查询函数 { char num[20]; int i,t,k=0; int m=load();/*把文本里面的所有数据读出*/ printf("请输入要查找的工号:\n"); scanf("%d",&num); for(i=0;i<m;i++) if(strcmp(num,em[i].num))/*比较输入的和文本里面的字符串*/ { printf("\n已找到,其记录为:\n"); printf(" 工号 姓名 性别 年龄 \n"); printf(" %s %s %s %s \n",em[i].num,em[i].name,em[i].sex,em[i].age); printf(" 地址 电话 QQ号\n"); printf(" %s %s %s\n",em[i].addr,em[i].tel,em[i].qq); k=1; } if(k==0) printf("\n对不起,查无此人\n"); printf("\n"); printf("继续查询请按1,结束查询请按2\n"); scanf("%d",&t); switch(t) { case 1: search(); break; case 2: break; default:break; } } void search_name() //按姓名查询 { char name[10]; int i,t,k=0; int m=load(); printf("请输入要查找的姓名:\n"); scanf("%s",name); for(i=0;i<m;i++) if(strcmp(em[i].name,name)==0) { printf("\n已找到,其记录为:\n"); printf(" 工号 姓名 性别 年龄 \n"); printf(" %s %s %s %s \n",em[i].num,em[i].name,em[i].sex,em[i].age); printf(" 地址 电话 QQ号\n"); printf(" %s %s %s\n",em[i].addr,em[i].tel,em[i].qq); k=1; } if(k==0) /*记录员工存不存在*/ printf("\n对不起,查无此人\n"); printf("\n"); printf("继续查询请按1,结束查询请按2\n"); scanf("%d",&t); switch(t) { case 1: search(); break; case 2: break; default:break; } } void modify() /*修改函数*/ { char num[20]; char name[10]; char sex[2]; char age[5]; char addr[30]; char tel[20]; char qq[20]; int c,i,t,flag; int m=load(); printf("\n 原来的员工信息:\n"); display(); printf("\n"); printf("请输入要修改的员工的姓名:\n"); scanf("%s",name); for(flag=1,i=0;flag&&i<m;i++) { if(strcmp(em[i].name,name)==0) { printf("\n已找到此人,原始记录为:\n"); printf(" 工号 姓名 性别 年龄 \n"); printf(" %s %s %s %s \n",em[i].num,em[i].name,em[i].sex,em[i].age); printf(" 地址 电话 QQ号\n"); printf(" %s %s %s\n",em[i].addr,em[i].tel,em[i].qq); printf("\n需要进行修改的选项\n 1.工号 2.姓名 3.性别 4.年龄 5.住址 6.电话 7:QQ号\n"); printf("请输入你想修改的那一项序号:\n"); scanf("%d",&c); while(c>7||c<1) { printf("\n选择错误,请重新选择!\n"); scanf("%d",&c); } flag=0; } } if(flag==1) printf("\n对不起,查无此人!\n"); if(flag==0) { switch(c) /*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/ { case 1:printf("工号改为: "); scanf("%s",num); strcpy(em[i-1].num,num); break; case 2:printf("姓名改为: "); scanf("%s",name); strcpy(em[i-1].name,name); break; case 3: printf("性别改为: "); scanf("%s",sex); strcpy(em[i-1].sex,sex); break; case 4: printf("年龄改为: "); scanf("%s",age); strcpy(em[i-1].age,age); break; case 5:printf("住址改为: "); scanf("%s",addr); strcpy(em[i-1].addr,addr); break; case 6:printf("电话改为: "); scanf("%s",tel); strcpy(em[i-1].tel,tel); break; case 7:printf("QQ改为: "); scanf("%s",qq); strcpy(em[i-1].qq,qq); break; } printf("修改成功\n"); } save(m); printf("\n继续修改请按1,不再修改请按2\n"); scanf("%d",&t); switch(t) { case 1:modify(); break; case 2: break; default :break; } }
    Processed: 0.020, SQL: 8