学生管理系统

#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");

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值