c语言实现信息管理系统

xiaoxiao2021-02-28  18

                    c语言实现的员工信息管理系统

    第一次写博客,内心还有点小忐忑,这个系统是为期两周写出来的课设。不知道该说些啥,就随便说说吧。。。。。。该系统实现了对员工信息的添加修改,删除,查询,打印,排序,统计的一系列功能。其中采用了结构体数组,文件的打开,存储。期间还有对背景颜色的改变,首先是对文件的读写,再者录入职工信息时,getch(),借助这个函数是有键盘缓冲区的功能,可以隐藏在运行框中一些不必要的提示指令,这个运行得前提是自己先写一个员工信息的记事本,里面包括员工的个数,职工号,姓名,性别,年龄,学历,工资,地址,电话。然后存到本地电脑的d盘文件名为worker,即可运行。代码如下
#include<stdio.h> #include<stdlib.h> #include<conio.h> #define N 100 #define PAGE 3 /*职工结构体类型*/ struct staff { int num; char name[20]; char sex[4]; int age; char deg[20]; int salary; char add[20]; char tel[40]; }s[50]; int readfile(struct staff s[]) { FILE *fp; int i=0,n; fp=fopen("d:\\worker.txt","r"); fscanf(fp,"%d",&n); for(i=0;i<n;i++) fscanf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",&s[i].num,s[i].name, s[i].sex,&s[i].age, s[i].deg,&s[i].salary,s[i].add,s[i].tel); fclose(fp); return n; } void savefile(struct staff s[]) { FILE *fp; int i=0,n; fp=fopen("d:\\worker.txt","w"); fscanf(fp,"%d",&n); for(i=0;i<n;i++) fscanf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",&s[i].num,s[i].name, s[i].sex,&s[i].age, s[i].deg,&s[i].salary,s[i].add,s[i].tel); fclose(fp); } int input( struct staff s[]) { int i=0; printf("\n\n 录入职工信息(最多%d个人)\n",N); printf("------------------------------------------------\n"); do { printf("\n 第%d个职工",i+1); printf("\n 职工号:"); scanf("%d",&s[i].num); if(s[i].num==0) break; printf("\n 姓名:"); scanf("%s",s[i].name); printf("\n 性别:"); scanf("%s",s[i].sex); printf("\n 年龄:"); scanf("%d",&s[i].age); printf("\n 学历:"); scanf("%s",s[i].deg); printf("\n 工资:"); scanf("%d",&s[i].salary); printf("\n 住址:"); scanf("%s",s[i].add); printf("\n 电话:"); scanf("%d",&s[i].tel); i++; }while(i<N); printf("\n 第%d个职工信息输入完毕! \n",i); printf("\n 按任意键返回主菜单!"); getch(); return i ; } /*输出模块*/ void output(struct staff s[],int n) { int i=0; system("cls"); printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n"); printf("------------------------------------------------\n"); for(i=0;i<n;i++) printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n\n",s[i].num,s[i].name, s[i].sex,s[i].age,s[i].deg,s[i].salary,s[i].add,s[i].tel); if(i>n) printf("\n 该职工不存在!"); printf("\n 按任意键返回主菜单!"); getch(); } void add(struct staff s[]) /*添加信息模块*/ { int i=0,m,n; n=readfile(s); printf("输入要增加的个数"); scanf("%d",&m) ; printf("\n\n ------添加一个新的职工------\n\n\n"); for(i=n;i<n+m;i++) { printf("\n 职工号:"); scanf("%d",&s[i].num); printf("\n 姓名:"); scanf("%s",&s[i].name); printf("\n 性别:"); scanf("%s",&s[i].sex); printf("\n 年龄:"); scanf("%d",&s[i].age); printf("\n 学历:"); scanf("%s",&s[i].deg); printf("\n 工资:"); scanf("%d",&s[i].salary); printf("\n 住址:"); scanf("%s",&s[i].add); printf("\n 电话:"); scanf("%s",&s[i].tel); printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n"); printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",s[i].num,s[i].name, s[i].sex,s[i].age, s[i].deg,s[i].salary,s[i].add,s[i].tel); } FILE *fp; fp=fopen("d:\\worker.txt","w") ; fprintf(fp,"%d\n",n+m); for(i=0;i<n+m;i++) fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",s[i].num,s[i].name, s[i].sex,s[i].age, s[i].deg,s[i].salary,s[i].add,s[i].tel); fclose(fp); printf("****按任意键返回!****"); getch(); } void modify(struct staff s[]) { int i=0,choice,modify_num,flag,n; n=readfile(s); do { printf("\n 输入要修改的职工号:"); scanf("%d",&modify_num); for(i=0;i<n;i++) if(s[i].num==modify_num) { printf("\n\n 职工信息 \n"); printf("-------------------------------------------------------\n"); printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n"); printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].deg,s[i].salary,s[i].add,s[i].tel); printf("\n 您要修改哪一项\n"); printf("\n 1 : 职工号\n"); printf("\n 2 : 姓名\n"); printf("\n 3 : 性别\n"); printf("\n 4 : 年龄\n"); printf("\n 5 : 学历\n"); printf("\n 6 : 工资\n"); printf("\n 7 : 住址\n"); printf("\n 8 : 电话\n"); printf("\n 请选择(1-7):"); scanf("%d",&choice); switch(choice) { case 1 :printf("\n 输入修改后的职工号:"); scanf("%d",&s[i].num);break; case 2 :printf("\n 输入修改后的姓名:"); scanf("%s",s[i].name);break; case 3 :printf("\n 输入修改后的性别:"); scanf("%s",s[i].sex);break; case 4 :printf("\n 输入修改后的年龄:"); scanf("%d",&s[i].age);break; case 5 :printf("\n 输入修改后的学历:"); scanf("%s",s[i].deg);break; case 6 :printf("\n 输入修改后的工资:"); scanf("%d",&s[i].salary);break; case 7 :printf("\n 输入修改后的住址:"); scanf("%s",s[i].add);break; case 8 :printf("\n 输入修改后的电话:"); scanf("%s",s[i].tel);break; } printf("\n\n >>>>>职工信息<<<<< \n"); printf("----------------------------------------------------\n"); printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n"); printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",s[i].num,s[i].name, s[i].sex,s[i].age,s[i].deg,s[i].salary,s[i].add,s[i].tel); break; } if(i==n) { printf("\n 该职工不存在!"); } printf("\n\n 继续修改吗?(Y/N)"); choice=getch(); if(choice=='Y'||choice=='y') { flag=1; printf("\n 继续!\n"); } else flag=0; }while(flag==1); FILE *fp; fp=fopen("d:\\worker.txt","w") ; fprintf(fp,"%d\n",n); for(i=0;i<n;i++) fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",s[i].num,s[i].name, s[i].sex,s[i].age, s[i].deg,s[i].salary,s[i].add,s[i].tel); fclose(fp); printf("****按任意键返回!****"); getch(); printf("\n 按任意键返回主菜单!"); } void del(struct staff s[]) /*删除信息模块*/ { int i,n,m; n=readfile(s); printf("*******删除一个职工信息********\n\n"); printf(" 请输入要删除的职工号 "); scanf("%d",&m); for(i=0;i<n;i++) if(s[i].num==m) { printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n"); printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].deg,s[i].salary, s[i].add,s[i].tel); } FILE *fp; fp=fopen("d:\\worker.txt","w") ; fprintf(fp,"%d\n",n-1); for(i=0;i<n-1;i++) fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",s[i].num,s[i].name, s[i].sex,s[i].age, s[i].deg,s[i].salary,s[i].add,s[i].tel); fclose(fp); } void inquire(struct staff s[],int n) /*信息查询模块*/ { int i,inquire_num; system("cls"); printf("*******查询职工信息********\n\n"); printf(" 请输入要找职工的职工号:"); scanf("%d",&inquire_num); for(i=0;i<n;i++) if(s[i].num==inquire_num&&s[i].num!=0) { printf("*******该职工信息表*******\n\n"); printf("职工号 姓名 性别 年龄 学历 工资 住址 电话\n"); printf("\n\n%d %s %s %d %s %d %s %s",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].deg,s[i].salary,s[i].add,s[i].tel); break; } if(i==n) printf("该职工不存在!\n\n"); getch(); printf("按任意键返回主菜单!"); } void count(struct staff s[],int n) /*信息查询模块*/ { int i,salaryb; system("cls"); printf("*******查询职工信息********\n\n"); printf(" 请输入要找职工的工资:"); scanf("%d",&salaryb); for(i=0;i<n;i++) if(s[i].salary==salaryb) { printf("*******该职工信息表*******\n\n"); printf("职工号 姓名 性别 年龄 学历 工资 住址 电话\n"); printf("\n\n%d %s %s %d %s %d %s %s",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].deg,s[i].salary,s[i].add,s[i].tel); break; } if(i==n) printf("该职工不存在!\n\n"); getch(); printf("按任意键返回主菜单!"); } void sort_age(struct staff s[],int n) { int i,j; n=readfile(s); printf("\n 排行\n"); printf("-------------------------------------------------------\n"); for(i=n-2;i>=0;i--) for(j=0;j<=i;j++) if(s[j].age>s[j+1].age) { struct staff t; t=s[j]; s[j]=s[j+1]; s[j+1]=t; } FILE *fp; fp=fopen("d:\\worker.txt","w") ; fprintf(fp,"%d\n",n); for(i=0;i<n;i++) fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",s[i].num,s[i].name, s[i].sex,s[i].age, s[i].deg,s[i].salary,s[i].add,s[i].tel); fclose(fp); } void sort_age1(struct staff s[],int n) { int i,j; n=readfile(s); printf("\n 排行\n"); printf("-------------------------------------------------------\n"); for(i=n-2;i>=0;i--) for(j=0;j<=i;j++) if(s[j].age<s[j+1].age) { struct staff t; t=s[j]; s[j]=s[j+1]; s[j+1]=t; } FILE *fp; fp=fopen("d:\\worker.txt","w") ; fprintf(fp,"%d\n",n); for(i=0;i<n;i++) fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",s[i].num,s[i].name, s[i].sex,s[i].age, s[i].deg,s[i].salary,s[i].add,s[i].tel); fclose(fp); } main(int argc,char*argv[]) { struct staff w[50]; int choice,m,b,sum,n,d,k; system("color 9e"); m=123; printf("请输入密码:"); scanf("%d",&b); if(b==m) { printf("进入系统"); n=readfile(w); if(n==0) { printf("并录入基本库存信息!*********\n"); getch(); n=input(w); } do { printf(" \n **********职工信息系统**********\n\n"); printf(" \n 1 : 添加职工信息"); printf(" \n 2 : 修改职工信息"); printf(" \n 3 : 删除职工信息"); printf(" \n 4 : 查询职工信息"); printf(" \n 5 : 打印职工信息"); printf(" \n 6 : 职工年龄排序信息"); printf(" \n 7: 职工年龄1排序信息"); printf(" \n 8 : 统计职工信息"); printf(" \n 0 : 退出系统"); printf(" \n 请选择(0-8)"); scanf("%d",&choice); switch(choice) { case 1:add(w); break; case 2:modify(w); break; case 3:del(w); break; case 4:inquire(w,n); break; case 5:output(w,n); break; case 6:sort_age(w,n); break; case 7:sort_age1(w,n); break; case 8:count(w,n); break; case 0: break; } }while(choice!=0); }else printf("密码错误!!!!\n"); savefile(w); } 效果图见下图有点大
转载请注明原文地址: https://www.6miu.com/read-2649990.html

最新回复(0)