学生管理系统

学生管理系统,第1张

学生管理系统
#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");

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5699690.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存