#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//数据设计
//菜单设计
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, "%s\t%d\t%s\t%s\n", 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, "%s\t%d\t%s\t%s\n", 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("%s\t%d\t%s\t%s\n", 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("-------------【后宫管理系统】-------------\n\n");
printf("\t\t0.退出系统\n\n");
printf("\t\t1.录入信息\n\n");
printf("\t\t2.读取信息\n\n");
printf("\t\t3.浏览信息\n\n");
printf("\t\t4.修改信息\n\n");
printf("\t\t5.删除信息\n\n");
printf("\t\t6.清空信息\n\n\n\n");
printf(
" ********\n"
" ************\n"
" ####....#.\n"
" #..###.....##....\n"
" ###.......###### ### ###\n"
" ........... #...# #...#\n"
" ##*####### #.#.# #.#.#\n"
" ####*******###### #.#.# #.#.#\n"
" ...#***.****.*###.... #...# #...#\n"
" ....**********##..... ### ###\n"
" ....**** *****....\n"
" #### ####\n"
" ###### ######\n"
"##############################################################\n"
"#...#......#.##...#......#.##...#......#.##------------------#\n"
"###########################################------------------#\n"
"#..#....#....##..#....#....##..#....#....#####################\n"
"########################################## #----------#\n"
"#.....#......##.....#......##.....#......# #----------#\n"
"########################################## #----------#\n"
"#.#..#....#..##.#..#....#..##.#..#....#..# #----------#\n"
"########################################## ############\n"
);
printf("\n\n\n------------------------------------------\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("%s\t%d\t%s\t%s\n", 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");
}
学生管理系统
最新推荐文章于 2022-10-22 09:56:06 发布