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("\t\t请输入姓名:");
23 gets(stu[n].name);
24 printf("\t\t请输入性别:");
25 gets(stu[n].sex);
26 printf("\t\t请输入部门:");
27 gets(stu[n].part);
28 printf("\t\t请输入职位:");
29 gets(stu[n].position);
30 n++;
31 printf("\t\t是否继续添加?(y/n)");
32 ch=getchar();/*用于输入y或者n*/
33 getchar();
34 }
35 printf("\t\t按任意键返回.............");getchar();/*按键返回的输入函数*/
36 return 0;
37 }
38
39 print (void)//输出显示的信息
40 {
41 int j;
42 if(n<0)
43 {
44 printf("\n\t\t空文件!");
45 printf("\t按任意键返回.............");getchar();
46 }else
47 { printf("\t姓名\t性别\t部门\t职位\n");
48 for(j=0;j<n;j++)
49 {
50 printf("\t%s",stu[j].name);
51 printf("\t%s",stu[j].sex);
52 printf("\t%s",stu[j].part);
53 printf("\t%s\n",stu[j].position);
54 }
55 printf("\n\t按任意键返回.............");getchar();
56 }
57 return 0;
58 }
59
60 wfile(void)/*写入文件*/
61 {
62 FILE *fptr;
63 if(n<1)
64 {printf("\t文件为空,无法写操作!\n");
65 printf("\t按任意键返回.............");getchar();return 0;}
66 printf("\t请输入要保存的路径及文件名(例如c:\\stus.txt):");
67 scanf("%s",numstr);getchar();/*输入需要保存的磁盘,可以是c,d,e等任意磁盘*/
68 if((fptr=fopen(numstr,"wb"))==NULL)
69 { printf("\n\t\t无法打开!%s\n",numstr);
70 printf("\t按任意键返回.............");getchar();
71 }
72 else
73 {fwrite(stu,sizeof(stu[0]),n,fptr);/*把信息写入磁盘的函数*/
74 fclose(fptr);
75 printf("\t\t有%d个记录保存成功!\n",n);
76 printf("\t按任意键返回.............");getchar();}
77 return 0;
78 }
79 frile(void)/*读出文件*/
80 {
81 FILE *fptr;
82 int i=0;
83 printf("\t请输入要打开的文件(例如c:\\stus.txt):");
84 scanf("%s",numstr);getchar();
85 if((fptr=fopen(numstr,"rb"))==NULL)
86 {printf("\n\t\t不能打开%s!\n",numstr);
87 printf("\t按任意键返回.............");
88 getchar();}
89 else
90 {
91 while(fread(&stu[i],sizeof(stu[0]),1,fptr)==1)/*从磁盘读取数据的函数*/
92 i++;n=i;
93 printf("\t\t成功打开%d个记录!\n",i);
94 fclose(fptr);
95 printf("\t按任意键返回.............");
96 getchar();
97 } return 0;
98 }
99 search(void)/*查找*/
100 {
101 int i,flag=0;
102 printf("\t请输入要查询的关键字。例:姓名、部门 \n");
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("\t姓名\t\t性别\t\t部门\t\t职称\n");
108 printf("\t%ls\t\t",stu[i].name);
109 printf("\t%s\t\t",stu[i].sex);
110 printf("\t%s\t\t",stu[i].part);
111 printf("\t%s\t\t",stu[i].position);
112 flag=1;
113 printf("\t按任意键返回.............");
114 getchar(); return 0;
115 }
116 }
117 if(flag!=1)/*当计数不为1的时候,查不到所要的信息*/
118 { printf("\t\t不存在这样的信息!\n");
119 printf("\t按任意键返回.............");getchar();}
120 return 1;
121 }
122
123 insert(void)/*插入*/
124 {
125 int funnum(void);
126 printf("\t请输入姓名:");
127 gets(stu[n].name);
128 printf("\t请输入性别:");
129 gets(stu[n].sex);
130 printf("\t请输入部门:");
131 gets(stu[n].part);
132 printf("\t请输入职称:");
133 gets(stu[n].position);
134 n++;
135
136 printf("\n\t按任意键返回.............");
137 getchar();return 0;
138 }
139 del(void) /*删除*/
140 { char ch;
141 int i,j,flag;
142 printf("\t\t请输入要删除的姓名:\n");
143 gets(numstr);
144 printf("\t\t确定?(y/n)\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("\t正在删除,请稍后........\n");
158 for(i=j;i<n;i++)
159 {stu[i]=stu[i+1];}
160 printf("\t\t删除成功!\n");
161 n--;
162 printf("\t按任意键返回.............");getchar();
163 }
164 }
165 }
166 return 0;
167 }
168 xg(void)/*修改*/
169 {
170 int i,j,flag=0;
171 char ch;
172 printf("\t输入您要修改的姓名:");
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("\t0.退出修改1.姓名2.部门\n");
184 printf("\t请输入您要修改的项:\n");
185 ch=getchar();getchar();
186 switch(ch)/*循环语句选择相应的修改选项*/
187 {
188 case '1':
189 printf("\t请输入修改后的姓名:");
190 gets(stu[j].name);printf("修改成功\n");
191 break;
192 case '2':
193 printf("\t请输入修改后的部门: ");
194 gets(numstr);
195 strcmp(stu[j].part,numstr);printf("\t\t修改成功\n");
196 break;
197 case '0': return 0;
198 }
199 }
200 }
201 if(flag!=1)
202 {
203 printf("\t不存在这样的信息.\n");
204 printf("\t按任意键返回.............");
205 getchar();
206 }
207 return 0;
208 }
209
210 void main()
211 {
212 char choice;
213 jm:
214 system("cls");
215 printf("\n");
216 printf(" +++++++++++简单员工管理系统+++++++++++\n");
217 printf(" +------------------------------------+\n");
218 printf(" +(请按相应的数字键选择您所需要的操作)+\n");
219 printf(" +------------------------------------+\n");
220 printf(" + 1.创建信息系统 2.浏览信息 +\n");
221 printf(" + 3.保存入文件 4.打开文件 +\n");
222 printf(" + 5..插入信息 6.修改信息 +\n");
223 printf(" + 7.删除信息 0.退出系统 +\n");
224 printf(" + 8.查询信息 +\n");
225 printf(" ++++++++++++++++++++++++++++++++++++++\n");
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("\nEnter only selections listed");break;
242 }/*结束switch语句*/
243 }while(1);/*结束while语句*/
244 }/*结束main函数*/