#include#include #include //数据设计 //菜单设计 struct student { char name[100]; int age; char sex[10]; char dengji[100]; }; struct link { struct student data; struct link *next; }; struct link *createlist() { struct link *headlink = (struct link *)malloc(sizeof(struct link)); headlink->next = NULL; return headlink; } struct link *createlink(struct student data) { struct link *newlink = (struct link *)malloc(sizeof(struct link)); newlink->data = data; newlink->next = NULL; return newlink; } struct link *list; void insertbyheadlink(struct link *headlink, struct student data) { struct link *newlink = createlink(data); newlink->next = headlink->next; headlink->next = newlink; } void clearlist(struct link *headlink) { struct link *p = (struct link *)malloc(sizeof(struct link)); struct link *pmove = (struct link *)malloc(sizeof(struct link)); pmove = headlink->next; while (pmove) { p = pmove; free(p); pmove = pmove->next; } } void read(struct link *headlink, const char *filename) { FILE *fp; struct student data; fp = fopen(filename, "r"); if (fp == NULL) { fopen (filename, "w+"); } while (fscanf(fp, "%st%dt%st%sn", data.name, &data.age, data.sex, data.dengji) != EOF) { insertbyheadlink(headlink, data); } fclose(fp); } void write(struct link *headlink, const char *filename) { FILE *fp; fp = fopen(filename, "w"); if (fp == NULL) { fp = fopen(filename, "w+"); } struct link *pmove = headlink->next; while (pmove) { fprintf(fp, "%st%dt%st%sn", pmove->data.name, pmove->data.age, pmove->data.sex, pmove->data.dengji); pmove = pmove->next; } fclose(fp); } void printlist(struct link *headlink) { struct link *pmove = headlink->next; printf("姓名t年龄t性别t等级n"); while (pmove) { printf("%st%dt%st%sn", pmove->data.name, pmove->data.age, pmove->data.sex, pmove->data.dengji); pmove = pmove->next; } printf("n"); } void insertbybehindlink(struct link *headlink, struct student data) { struct link *newlink = createlink(data); headlink->next = newlink; headlink = newlink; } void deletelink(struct link *headlink, char *name) { struct link *poslink = headlink->next; struct link *poslinkfront = headlink; if (poslink == NULL) { printf("你没有老婆少年醒醒吧!n"); return ; } else { while (strcmp(poslink->data.name, name)) { poslinkfront = poslink; poslink = poslinkfront->next; if (poslink == NULL) { printf("你还没有这个老婆,删个锤锤!n"); return ; } } poslinkfront->next = poslink->next; free(poslink); printf("Ta与你缘分已尽,伊人已去,愿君莫悔!"); } } struct link *search(struct link *headlink, char *name) { struct link *pmove = headlink->next; if (pmove == NULL) { return NULL; } while (strcmp(pmove->data.name, name)) { pmove = pmove->next; } return pmove; } void change(struct link *headlink, struct student data) { struct link *pmove = search( headlink, data.name); struct link *q; if (pmove == NULL) { return ; } else { scanf("%s%d%s%s", data.name, &data.age, data.sex, data.dengji); struct link *p = createlink(data); q = p->next; p->next = pmove->next; pmove->next = p; deletelink(list, pmove->data.name); } } void menu() { printf("-------------【后宫管理系统】-------------nn"); printf("tt0.退出系统nn"); printf("tt1.录入信息nn"); printf("tt2.读取信息nn"); printf("tt3.浏览信息nn"); printf("tt4.修改信息nn"); printf("tt5.删除信息nn"); printf("tt6.清空信息nnnn"); printf( " ********n" " ************n" " ####....#.n" " #..###.....##....n" " ###.......###### ### ###n" " ........... #...# #...#n" " ##*####### #.#.# #.#.#n" " ####*******###### #.#.# #.#.#n" " ...#***.****.*###.... #...# #...#n" " ....**********##..... ### ###n" " ....**** *****....n" " #### ####n" " ###### ######n" "##############################################################n" "#...#......#.##...#......#.##...#......#.##------------------#n" "###########################################------------------#n" "#..#....#....##..#....#....##..#....#....#####################n" "########################################## #----------#n" "#.....#......##.....#......##.....#......# #----------#n" "########################################## #----------#n" "#.#..#....#..##.#..#....#..##.#..#....#..# #----------#n" "########################################## ############n" ); printf("nnn------------------------------------------n"); } //用户交互(根据所选标号做相应事情) void keynode() { int choice = 0; struct student data; struct link *pmove = NULL; scanf("%d", &choice); switch (choice) { case 0: printf("别忘了老婆都在这呦^_^!n"); system("pause"); exit (0); break; case 1: printf("--------【录入信息】--------n"); printf("请输入老婆的姓名,年龄,性别,等级:n"); fflush(stdin); scanf("%s%d%s%s", data.name, &data.age, data.sex, data.dengji); insertbyheadlink(list, data); break; case 2: printf("--------【读取信息】--------n"); printf("请输入要查找的老婆"); scanf("%s", data.name); pmove = search(list, data.name); if (pmove == NULL) { printf("你还没有这个老婆!"); system("pause"); } else { printf("姓名t年龄t性别t等级n"); printf("%st%dt%st%sn", pmove->data.name, pmove->data.age, pmove->data.sex, pmove->data.dengji); } break; case 3: printf("--------【浏览信息】--------n"); printlist(list); break; case 4: printf("--------【修改信息】--------n"); printf("请输入要修改的老婆:"); scanf("%s", data.name); pmove = search(list, data.name); if (pmove == NULL) { printf("你还没有这个老婆!"); system("pause"); } else { printf("请输入新老婆的信息:n"); change(list, data); printf("修改成功!"); } break; case 5: printf("--------【删除信息】--------n"); printf("想好了吗,想好了就输入删除老婆的姓名,我劝你别冲动^_^"); scanf("%s", data.name); deletelink(list, data.name); break; case 6: printf("--------【清空信息】--------n"); clearlist(list); printf("老婆全都没有咯!n"); break; default: printf("目前没有这个功能!n"); system("pause"); break; } write(list, "1.txt"); } int main() { list = createlist(); read(list, "1.txt"); while (true) { menu(); keynode (); system("pause"); system("cls"); } system("pause"); system("cls"); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)