C语言学生信息管理系统
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linkedlist1.c #include<stdio.h> #include<stdlib.h> #include<string.h> #include<windows.h> typedef struct node { char name[20]; char num[20]; char sex; struct node *next; } slink; void delete(slink *head); void insert(slink *head); void seek(slink *head); void print(slink *head); int main() { int choose; slink *head = (slink *) malloc(sizeof(slink)); head‐>next = NULL; do { printf("\t***************学生信息管理系统******************\n"); printf("\t* ‐‐‐‐‐‐‐‐‐1:插入操作 *\n"); printf("\t* ‐‐‐‐‐‐‐‐‐2:删除操作 *\n"); printf("\t* ‐‐‐‐‐‐‐‐‐3:查找操作 *\n"); printf("\t* ‐‐‐‐‐‐‐‐‐4:打印操作 *\n"); printf("\t* ‐‐‐‐‐‐‐‐‐5:退出操作 *\n"); printf("\t*************************************************\n"); printf("请输入您的选择:\n"); scanf("%d", &choose); getchar(); while (choose < 1 || choose > 5) { printf("输入错误!请重新输入:\n"); scanf("%d", &choose); getchar(); } switch (choose) { case 1: insert(head); printf("\n按任意键继续\n"); getchar(); system("cls"); break; case 2: delete(head); printf("\n按任意键继续\n"); getchar(); system("cls"); break; case 3: seek(head); printf("\n按任意键继续\n"); getchar(); system("cls"); Page 1
Linkedlist1.c break; case 4: print(head); printf("\n按任意键继续\n"); getchar(); system("cls"); break; case 5: printf("谢谢使用!\n"); exit(0); break; } } while (1); return 0; } void insert(slink *head) { slink *p, *q; q = head; while (q‐>next != NULL) q = q‐>next; p = (slink *) malloc(sizeof(slink)); if (p) { printf("请输入姓名:\n"); gets(p‐>name); printf("请输入学号:\n"); gets(p‐>num); printf("请输入性别(w/m):\n"); gets(&p‐>sex); p‐>next = q‐>next; q‐>next = p; printf("插入成功!\n"); } else printf("插入失败!可能原因:内存已满。\n"); } void delete(slink *head) { slink *p, *q; char str[20]; p = head‐>next; q = head; if (head‐>next == NULL) printf("链表为空,无元素可删除!\n"); else { printf("请输入要删除的学生的姓名或学号:\n"); gets(str); while (p != NULL) { if (strcmp(p‐>name, str) != 0 && strcmp(p‐>num, str) != 0) { q = p; p = p‐>next; } else break; Page 2
Page 3
ቤተ መጻሕፍቲ ባይዱ
Linkedlist1.c } } if (p == NULL) printf("未找到要删除的学生!\n"); else { q‐>next = p‐>next; free(p); printf("删除成功!\n"); } } void seek(slink *head) { slink *p; char str[20]; p = head‐>next; if (p == NULL) printf("链表为空,请先插入学生!\n"); else { printf("请输入要查找的学生的姓名或学号:\n"); gets(str); if (p != NULL) { if (strcmp(p‐>name, str) != 0 && strcmp(p‐>num, str) != 0) p = p‐>next; else { printf("所查找的信息为:\n"); printf("%‐20s%‐20s%‐20s\n", "姓名", "性别", "学号"); printf("%‐20s%‐20c%‐20s\n", p‐>name, p‐>sex, p‐>num); } } if (p == NULL) printf("要查找的学生不存在!\n"); } } void print(slink *head) { slink *p; int count = 0; p = head‐>next; if (p == NULL) printf("链表为空!\n"); else { printf("信息输出:\n"); printf("%‐20s%‐20s%‐20s\n", "姓名", "性别", "学号"); while (p != NULL) { printf("%‐20s%‐20c%‐20s\n", p‐>name, p‐>sex, p‐>num); count++; p = p‐>next; } printf("\n‐‐‐‐‐‐‐‐‐‐‐‐总计:%d\n\n", count); } }
Linkedlist1.c break; case 4: print(head); printf("\n按任意键继续\n"); getchar(); system("cls"); break; case 5: printf("谢谢使用!\n"); exit(0); break; } } while (1); return 0; } void insert(slink *head) { slink *p, *q; q = head; while (q‐>next != NULL) q = q‐>next; p = (slink *) malloc(sizeof(slink)); if (p) { printf("请输入姓名:\n"); gets(p‐>name); printf("请输入学号:\n"); gets(p‐>num); printf("请输入性别(w/m):\n"); gets(&p‐>sex); p‐>next = q‐>next; q‐>next = p; printf("插入成功!\n"); } else printf("插入失败!可能原因:内存已满。\n"); } void delete(slink *head) { slink *p, *q; char str[20]; p = head‐>next; q = head; if (head‐>next == NULL) printf("链表为空,无元素可删除!\n"); else { printf("请输入要删除的学生的姓名或学号:\n"); gets(str); while (p != NULL) { if (strcmp(p‐>name, str) != 0 && strcmp(p‐>num, str) != 0) { q = p; p = p‐>next; } else break; Page 2
Page 3
ቤተ መጻሕፍቲ ባይዱ
Linkedlist1.c } } if (p == NULL) printf("未找到要删除的学生!\n"); else { q‐>next = p‐>next; free(p); printf("删除成功!\n"); } } void seek(slink *head) { slink *p; char str[20]; p = head‐>next; if (p == NULL) printf("链表为空,请先插入学生!\n"); else { printf("请输入要查找的学生的姓名或学号:\n"); gets(str); if (p != NULL) { if (strcmp(p‐>name, str) != 0 && strcmp(p‐>num, str) != 0) p = p‐>next; else { printf("所查找的信息为:\n"); printf("%‐20s%‐20s%‐20s\n", "姓名", "性别", "学号"); printf("%‐20s%‐20c%‐20s\n", p‐>name, p‐>sex, p‐>num); } } if (p == NULL) printf("要查找的学生不存在!\n"); } } void print(slink *head) { slink *p; int count = 0; p = head‐>next; if (p == NULL) printf("链表为空!\n"); else { printf("信息输出:\n"); printf("%‐20s%‐20s%‐20s\n", "姓名", "性别", "学号"); while (p != NULL) { printf("%‐20s%‐20c%‐20s\n", p‐>name, p‐>sex, p‐>num); count++; p = p‐>next; } printf("\n‐‐‐‐‐‐‐‐‐‐‐‐总计:%d\n\n", count); } }