仿写学生管理系统
时间:2020-03-24
本文章向大家介绍仿写学生管理系统,主要包括仿写学生管理系统使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1 #include <stdio.h> 2 3 #include <stdlib.h> 4 5 #include <string.h> 6 7 8 9 typedef struct _node 10 11 { 12 13 char name[64]; 14 15 char id[10]; 16 17 char score[64]; 18 19 struct _node *next; 20 21 } Node; 22 23 24 25 typedef struct _list 26 27 { 28 29 Node *head; 30 31 } List; 32 33 34 35 //--1--插入新的学生(头插法) 36 37 void AddStudentByHead(List *list); 38 39 //尾插法V1 40 41 void AddStudentByEndV1(List *list); 42 43 //尾插法V2只能单独使用 44 45 void AddStudentByEndV2(List *list); 46 47 void ChangeStudent(List *list, char *input); 48 49 void Input(Node *p); 50 51 int Search(List *list, char *input); 52 53 void Delete(List *list, char *input); 54 55 void PrintStudent(List *list); 56 57 void ClearList(List *list); 58 59 Node *PrintFlage(List *list, char *input); 60 61 62 63 int main(void) 64 65 { 66 67 List list; 68 69 list.head = NULL; 70 71 char code; 72 73 int c; 74 75 char input1[64]; 76 77 char input2[64]; 78 79 char input3[64]; 80 81 int flag = 0; 82 83 Node *temp; 84 85 while (1) 86 87 { 88 89 printf("\n\ 90 91 ╔———————————————学生信息管理系统————————————————╗\n\ 92 93 \n\ 94 95 =============== 功能菜单 ================\n\ 96 97 \n\ 98 99 1 录入学生信息\n\ 100 101 2 查找学生信息\n\ 102 103 4 删除学生信息\n\ 104 105 3 修改学生信息\n\ 106 107 5 显示所有学生信息\n\ 108 109 6 退出系统\n\ 110 111 ==========================================\n\ 112 113 说明:通过数字选择菜单\n\ 114 115 ╚——————————————————————————————————————————————╝\n"); 116 117 118 119 120 121 printf("请输入指令代码(1-6)\n"); 122 123 do 124 125 { 126 127 scanf("%c", &code); 128 129 } while (code>54||code<49); 130 131 132 133 134 135 136 137 switch (code) 138 139 { 140 141 142 143 case '1': 144 145 printf("请选择插入学生的方法(1-头插法 2-尾插法V1):"); 146 147 scanf("%d", &c); 148 149 150 151 switch (c) 152 153 { 154 155 case 1: 156 157 AddStudentByHead(&list); 158 159 break; 160 161 case 2: 162 163 AddStudentByEndV1(&list); 164 165 break; 166 167 168 169 default: 170 171 printf("输入指令错误\n"); 172 173 } 174 175 break; 176 177 178 179 case '2': 180 181 printf("请输入你要查找的学生:"); 182 183 scanf("%s", input1); 184 185 flag = (Search(&list, input1)); 186 187 if (flag > 0) 188 189 { 190 191 temp = PrintFlage(&list, input1); 192 193 printf("学生姓名:%s\t学号%s\t分数:%s\t", temp->name, temp->id, temp->score); 194 195 } 196 197 else 198 199 { 200 201 printf("不好意思,查无此人\n"); 202 203 } 204 205 break; 206 207 208 209 case '3': 210 211 printf("请输入你要更改的学生名字:"); 212 213 scanf("%s", input2); 214 215 flag = Search(&list, input2); 216 217 temp = PrintFlage(&list, input2); 218 219 if (flag > 0) 220 221 { 222 223 printf("当前的学生信息为:\n"); 224 225 printf("学生姓名:%s\t学号%s\t分数:%s\t", temp->name, temp->id, temp->score); 226 227 printf("请输入您要更改的学生信息\n"); 228 229 ChangeStudent(&list, input2); 230 231 } 232 233 else 234 235 { 236 237 printf("不好意思,你要更改的学生名字尚未存在\n"); 238 239 } 240 241 break; 242 243 244 245 case '4': 246 247 248 249 printf("请输入你要删除的学生名字:"); 250 251 scanf("%s", input3); 252 253 if (Search(&list, input3) > 0) 254 255 { 256 257 Delete(&list, input3); 258 259 } 260 261 else 262 263 { 264 265 printf("不好意思,你要删除的学生名字尚未存在\n"); 266 267 } 268 269 break; 270 271 272 273 case '5': 274 275 PrintStudent(&list); 276 277 break; 278 279 case '6': 280 281 if (!list.head) 282 283 { 284 285 printf("还没有信息呢\n"); 286 287 } 288 289 goto END; 290 291 292 293 default: 294 295 printf("输入指令错误\n"); 296 297 break; 298 299 } 300 301 printf("^__^\n"); 302 303 printf("\n\n"); 304 305 } 306 307 END: 308 309 ClearList(&list), printf("删库跑路成功^__^\n"); 310 311 312 313 system("pause"); 314 315 return 0; 316 317 } 318 319 //--1--插入新的学生 320 321 void AddStudentByHead(List *list) 322 323 { 324 325 Node *p, *temp; 326 327 p = (Node *)malloc(sizeof(Node)); 328 329 Input(p); 330 331 332 333 if (list->head) 334 335 { 336 337 temp = list->head; 338 339 list->head = p; 340 341 p->next = temp; 342 343 } 344 345 else 346 347 { 348 349 list->head = p; 350 351 p->next = NULL; 352 353 } 354 355 } 356 357 //尾插法 358 359 void AddStudentByEndV1(List *list) 360 361 { 362 363 Node *p; 364 365 p = (Node *)malloc(sizeof(Node )); 366 367 Input(p); 368 369 370 371 Node *last; 372 373 last = list->head; 374 375 376 377 if (last) 378 379 { 380 381 while (last->next) 382 383 { 384 385 last = last->next; 386 387 } 388 389 last->next = p; 390 391 p->next=NULL; 392 393 } 394 395 else 396 397 { 398 399 list->head = p; 400 401 p->next = NULL; 402 403 } 404 405 } 406 407 //尾插法 408 409 /* 410 411 void AddStudentByEndV2(List *list) 412 413 { 414 415 Node *p; 416 417 p = (Node *)malloc(sizeof(Node )); 418 419 Input(p); 420 421 static Node *tail; 422 423 424 425 if (list->head) 426 427 { 428 429 tail=list->head; 430 431 tail->next = p; 432 433 p->next = NULL; 434 435 } 436 437 else 438 439 { 440 441 list->head = p; 442 443 p->next = NULL; 444 445 } 446 447 448 449 tail = p; 450 451 } 452 453 */ 454 455 void ChangeStudent(List *list, char *input) 456 457 { 458 459 Node *p; 460 461 for (p = list->head; p; p = p->next) 462 463 { 464 465 if (!strcmp(p->name, input)) 466 467 { 468 469 Input(p); 470 471 break; 472 473 } 474 475 } 476 477 } 478 479 void Input(Node *p) 480 481 { 482 483 printf("请输入姓名:"); 484 485 scanf("%s", p->name); 486 487 printf("请输入学号(2位数字):"); 488 489 scanf("%s", p->id); 490 491 printf("请输入学生分数(小于1000):"); 492 493 scanf("%s", p->score); 494 495 } 496 497 int Search(List *list, char *input) 498 499 { 500 501 int flag = -1; //标志 502 503 Node *p; 504 505 for (p = list->head; p; p = p->next) 506 507 { 508 509 if (!strcmp(p->name, input)) 510 511 { 512 513 flag = 1; 514 515 break; 516 517 } 518 519 } 520 521 522 523 return flag; 524 525 } 526 527 Node *PrintFlage(List *list, char *input) 528 529 { 530 531 Node *p; 532 533 for (p = list->head; p; p = p->next) 534 535 { 536 537 if (!strcmp(p->name, input)) 538 539 { 540 541 542 543 break; 544 545 } 546 547 } 548 549 return p; 550 551 } 552 553 void Delete(List *list, char *input) 554 555 { 556 557 Node *p, *q = NULL; 558 559 for (p = list->head; p; q = p, p = p->next) 560 561 { 562 563 if (!strcmp(p->name,input)) 564 565 { 566 567 568 569 if (q) 570 571 { 572 573 q->next = p->next; 574 575 576 577 } 578 579 else 580 581 { 582 583 list->head = p->next; 584 585 } 586 587 free(p); 588 589 break; 590 591 } 592 593 594 595 } 596 597 } 598 599 void PrintStudent(List *list) 600 601 { 602 603 Node *p; 604 605 for (p = list->head; p; p = p->next) 606 607 { 608 609 printf("学生姓名:%s\t学号:%s\t分数:%s\t\n", p->name, p->id, p->score); 610 611 } 612 613 } 614 615 //--6--删库跑路 616 617 void ClearList(List *list) 618 619 { 620 621 Node *p, *q; 622 623 for (p = list->head; p; p = q) 624 625 { 626 627 q = p->next; 628 629 free(p); 630 631 } 632 633 }
原文地址:https://www.cnblogs.com/Knightl8/p/12561051.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Mysql索引解密(上)
- Kubernetes Dashboard 可视化插件部署 博主亲自实践可用
- Jmeter接口压测示例
- Kubernetes_v1.18.2环境搭建 博主亲自实践可用
- CVE-2020-9484:Tomcat Session 反序列化复现
- Jmeter系列之no-gui模式
- Pytest之基本介绍
- 企业常用的几种发布方式(蓝绿发布 | 滚动升级 | 金丝雀发布)
- 微信小程序的生命周期学习笔记-应用篇
- matplotlib基础绘图命令之plot
- Qt官方示例-样式表
- 入坑 LinkedList,i 了 i 了
- Elasticsearch 利用API进行搜索
- 通过 Serverless Regsitry 快速开发与部署一个 WordCount 实例
- 聊聊dubbo-go的gracefulShutdownFilter