c语言
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函数*/
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法