1 #include "stdio.h"/*头文件*/ 2 #include "string.h" 3 #include "stdlib.h" 4 #define LEN sizeof(struct student)/*宏定义*/ 5 int n = 0;/*n为静态全局变量,本文件模块中各函数均可使用它*/ 6 char numstr[100];/*全局变量*/ 7 struct student/*定义结构体*/ 8 { 9 long num; 10 char name[10];//姓名 11 char sex[10];//性别 12 char part[10];//部门 13 char position[10];//职位 14 } stu[1000],temp; 15 creat(void)/*创建学生成绩信息*/ 16 { 17 char ch='y'; 18 while(ch=='Y'||ch=='y') 19 { 20 21 stu[n].num=atoi(numstr); 22 printf(" 请输入姓名:"); 23 gets(stu[n].name); 24 printf(" 请输入性别:"); 25 gets(stu[n].sex); 26 printf(" 请输入部门:"); 27 gets(stu[n].part); 28 printf(" 请输入职位:"); 29 gets(stu[n].position); 30 n++; 31 printf(" 是否继续添加?(y/n)"); 32 ch=getchar();/*用于输入y或者n*/ 33 getchar(); 34 } 35 printf(" 按任意键返回.............");getchar();/*按键返回的输入函数*/ 36 return 0; 37 } 38 39 print (void)//输出显示的信息 40 { 41 int j; 42 if(n<0) 43 { 44 printf(" 空文件!"); 45 printf(" 按任意键返回.............");getchar(); 46 }else 47 { printf(" 姓名 性别 部门 职位 "); 48 for(j=0;j<n;j++) 49 { 50 printf(" %s",stu[j].name); 51 printf(" %s",stu[j].sex); 52 printf(" %s",stu[j].part); 53 printf(" %s ",stu[j].position); 54 } 55 printf(" 按任意键返回.............");getchar(); 56 } 57 return 0; 58 } 59 60 wfile(void)/*写入文件*/ 61 { 62 FILE *fptr; 63 if(n<1) 64 {printf(" 文件为空,无法写操作! "); 65 printf(" 按任意键返回.............");getchar();return 0;} 66 printf(" 请输入要保存的路径及文件名(例如c:\stus.txt):"); 67 scanf("%s",numstr);getchar();/*输入需要保存的磁盘,可以是c,d,e等任意磁盘*/ 68 if((fptr=fopen(numstr,"wb"))==NULL) 69 { printf(" 无法打开!%s ",numstr); 70 printf(" 按任意键返回.............");getchar(); 71 } 72 else 73 {fwrite(stu,sizeof(stu[0]),n,fptr);/*把信息写入磁盘的函数*/ 74 fclose(fptr); 75 printf(" 有%d个记录保存成功! ",n); 76 printf(" 按任意键返回.............");getchar();} 77 return 0; 78 } 79 frile(void)/*读出文件*/ 80 { 81 FILE *fptr; 82 int i=0; 83 printf(" 请输入要打开的文件(例如c:\stus.txt):"); 84 scanf("%s",numstr);getchar(); 85 if((fptr=fopen(numstr,"rb"))==NULL) 86 {printf(" 不能打开%s! ",numstr); 87 printf(" 按任意键返回............."); 88 getchar();} 89 else 90 { 91 while(fread(&stu[i],sizeof(stu[0]),1,fptr)==1)/*从磁盘读取数据的函数*/ 92 i++;n=i; 93 printf(" 成功打开%d个记录! ",i); 94 fclose(fptr); 95 printf(" 按任意键返回............."); 96 getchar(); 97 } return 0; 98 } 99 search(void)/*查找*/ 100 { 101 int i,flag=0; 102 printf(" 请输入要查询的关键字。例:姓名、部门 "); 103 gets(numstr); 104 for(i=0;i<n;i++) 105 { if((strcmp(numstr,stu[i].name)==0)||(strcmp(numstr,stu[i].part)==0))/*把要查找的信息和存储的信息进行比较,如果相同就找到,并输出。用||表示可以有姓名或者学号两种查找方式。*/ 106 { 107 printf(" 姓名 性别 部门 职称 "); 108 printf(" %ls ",stu[i].name); 109 printf(" %s ",stu[i].sex); 110 printf(" %s ",stu[i].part); 111 printf(" %s ",stu[i].position); 112 flag=1; 113 printf(" 按任意键返回............."); 114 getchar(); return 0; 115 } 116 } 117 if(flag!=1)/*当计数不为1的时候,查不到所要的信息*/ 118 { printf(" 不存在这样的信息! "); 119 printf(" 按任意键返回.............");getchar();} 120 return 1; 121 } 122 123 insert(void)/*插入*/ 124 { 125 int funnum(void); 126 printf(" 请输入姓名:"); 127 gets(stu[n].name); 128 printf(" 请输入性别:"); 129 gets(stu[n].sex); 130 printf(" 请输入部门:"); 131 gets(stu[n].part); 132 printf(" 请输入职称:"); 133 gets(stu[n].position); 134 n++; 135 136 printf(" 按任意键返回............."); 137 getchar();return 0; 138 } 139 del(void) /*删除*/ 140 { char ch; 141 int i,j,flag; 142 printf(" 请输入要删除的姓名: "); 143 gets(numstr); 144 printf(" 确定?(y/n) "); 145 ch=getchar();getchar(); 146 if(ch=='y'||ch=='Y') 147 { 148 for(i=0;i<n;i++) 149 { 150 if((strcmp(numstr,stu[i].name)==0))/*比较学号相同时找到相应得信息进行删除*/ 151 { 152 j=i; 153 flag=1; 154 } 155 if(flag==1) 156 { 157 printf(" 正在删除,请稍后........ "); 158 for(i=j;i<n;i++) 159 {stu[i]=stu[i+1];} 160 printf(" 删除成功! "); 161 n--; 162 printf(" 按任意键返回.............");getchar(); 163 } 164 } 165 } 166 return 0; 167 } 168 xg(void)/*修改*/ 169 { 170 int i,j,flag=0; 171 char ch; 172 printf(" 输入您要修改的姓名:"); 173 gets(numstr); 174 for(i=0;i<n;i++) 175 { 176 if((strcmp(numstr,stu[i].name)==0)) 177 { 178 j=i; 179 flag=1; 180 } 181 if(flag==1) 182 { 183 printf(" 0.退出修改1.姓名2.部门 "); 184 printf(" 请输入您要修改的项: "); 185 ch=getchar();getchar(); 186 switch(ch)/*循环语句选择相应的修改选项*/ 187 { 188 case '1': 189 printf(" 请输入修改后的姓名:"); 190 gets(stu[j].name);printf("修改成功 "); 191 break; 192 case '2': 193 printf(" 请输入修改后的部门: "); 194 gets(numstr); 195 strcmp(stu[j].part,numstr);printf(" 修改成功 "); 196 break; 197 case '0': return 0; 198 } 199 } 200 } 201 if(flag!=1) 202 { 203 printf(" 不存在这样的信息. "); 204 printf(" 按任意键返回............."); 205 getchar(); 206 } 207 return 0; 208 } 209 210 void main() 211 { 212 char choice; 213 jm: 214 system("cls"); 215 printf(" "); 216 printf(" +++++++++++简单员工管理系统+++++++++++ "); 217 printf(" +------------------------------------+ "); 218 printf(" +(请按相应的数字键选择您所需要的操作)+ "); 219 printf(" +------------------------------------+ "); 220 printf(" + 1.创建信息系统 2.浏览信息 + "); 221 printf(" + 3.保存入文件 4.打开文件 + "); 222 printf(" + 5..插入信息 6.修改信息 + "); 223 printf(" + 7.删除信息 0.退出系统 + "); 224 printf(" + 8.查询信息 + "); 225 printf(" ++++++++++++++++++++++++++++++++++++++ "); 226 do 227 { choice=getchar();getchar(); 228 switch(choice)/*switch语句用于循环选择所要的选项*/ 229 { 230 case '1':creat();goto jm;break; 231 case '2':print();goto jm;break; 232 233 case '3':wfile();goto jm;break; 234 case '4':frile();goto jm;break; 235 case '5':insert();goto jm;break; 236 case '6':xg();goto jm;break; 237 case '7':del();goto jm;break; 238 case '8':search();goto jm;break; 239 case '0':exit(0); 240 default: /*用户使用错误*/ 241 puts(" Enter only selections listed");break; 242 }/*结束switch语句*/ 243 }while(1);/*结束while语句*/ 244 }/*结束main函数*/