放假在家,为复习C语言的知识,用单链表做的一个简单的学生信息管理系统
源码分享在后面!
下载链接:
点击下载
学生信息(成绩)管理系统C语言版本在这里:
点击查看
先上图:
保存结果:
源码:
.c源文件:
#include"Xunlian.h"
void main(){
run();
}
//添加学生
void addStudent(LinkNode* L) {
int number;//学生人数
LinkNode* s = NULL;
LinkNode* p = L;
printf("请输入要增加多少学生:");
scanf("%d", &number);
char a = getchar();
for (int i = 0; i < number; i++) {
s = (LinkNode*)malloc(sizeof(LinkNode));
s->next = NULL;
printf("请输入学号:");
gets(s->sno);
printf("请输入姓名:");
gets(s->name);
printf("请输入性别:");
gets(s->sex);
printf("请输入年龄:");
gets(s->age);
printf("请输入出生时间:");
gets(s->birthday);
printf("请输入电话:");
gets(s->phone);
printf("请输入宿舍号:");
gets(s->dorm);
p->next = s;
p = s;
}
}
//输出学生
void showStudent(LinkNode *L) {
LinkNode* p = L->next;
printf("输出结果为:\n");
if (p == NULL) {
printf("未检测到学生!!!\n");
return;
}
while (p != NULL) {
printf("学号为:");
puts(p->sno);
printf("姓名为:");
puts(p->name);
printf("性别为:");
puts(p->sex);
printf("年龄为:");
puts(p->age);
printf("出生日期为:");
puts(p->birthday);
printf("电话为:");
puts(p->phone);
printf("宿舍号为:");
puts(p->dorm);
printf("\n");
p = p->next;
}
}
//删除学生
void deleteStudent(LinkNode* L) {
char sno[20];
int i = 0;
LinkNode* p = L->next;
LinkNode* s = L;
LinkNode* p2;
printf("请输入删除学生的学号:");
gets(sno);
//判断位置
while (p != NULL) {
if (strcmp(p->sno, sno) == 0) {
i++;
break;
}
else
p = p->next;
}
if (p == NULL)
printf("未检测到当前学生!!!\n");
return;
for (int j = 0; j < i; j++) {
p2 = s;
s = s->next;
}
p2->next = p->next;
free(p);
}
//查询学生
void selectStudent(LinkNode *L) {
char sno[20];
LinkNode* p = L->next;
printf("请输入查询学生的学号:");
gets(sno);
while (p != NULL) {
if (strcmp(p->sno, sno) == 0) {
printf("查询结果如下:\n");
printf("学号为:%s ", p->sno);
printf("姓名为:%s ", p->name);
printf("性别为:%s ", p->sex);
printf("年龄为:%s ", p->age);
printf("出生日期为:%s ", p->birthday);
printf("电话为:%s ", p->phone);
printf("宿舍号为:%s\n", p->dorm);
break;
}
else
p = p->next;
}
if(p==NULL)
printf("未查询到当前学生!!!\n");
}
//修改学生
void modefyStudent(LinkNode* L) {
char sno[20];
char name[20];//姓名
char sex[10];//性别
char age[10];//年龄
char birthday[30];//出生时间
char phone[50];//电话
char dorm[20];//宿舍号
LinkNode* p = L->next;
printf("请输入修改学生的学号:");
gets(sno);
while ( p!=NULL ) {
if (strcmp(p->sno, sno) == 0) {
printf("请输入修改后的姓名:");
gets(p->name);
printf("请输入修改后的性别:");
gets(p->sex);
printf("请输入修改后的年龄:");
gets(p->age);
printf("请输入修改后的出生时间:");
gets(p->birthday);
printf("请输入修改后的电话:");
gets(p->phone);
printf("请输入修改后的宿舍号:");
gets(p->dorm);
break;
}
else
p = p->next;
}
if (p == NULL) {
printf("未检测到当前学生信息!!!\n");
}
}
//输出界面
void init() {
printf("***********************************\n");
printf("** 1: --添加学生-- **\n");
printf("** 2: --输出学生-- **\n");
printf("** 3:--删除学生-- **\n");
printf("** 4: --查询学生-- **\n");
printf("** 5: --修改学生-- **\n");
printf("** 6: --保存文件-- **\n");
printf("** 0: --退出程序-- **\n");
printf("***********************************\n");
}
//文件保存
void fileSave(LinkNode *p) {
FILE* fp;
fp = fopen("D:\\text.txt", "a");
if ((fp == NULL)) {
printf("文件不能打开!!!");
exit(0);
}
p = p->next;
char sno[20] = "学号:";
char name[20] = " 姓名:";
char sex[10] = " 性别:";
char age[10] = " 年龄:";
char birthday[30] = " 生日:";
char phone[50] = " 电话";
char dorm[20] = " 宿舍号:";
while (p != NULL) {
fputs(sno, fp);
fputs(p->sno, fp);
fputs(name, fp);
fputs(p->name, fp);
fputs(sex, fp);
fputs(p->sex, fp);
fputs(age, fp);
fputs(p->age, fp);
fputs(birthday, fp);
fputs(p->birthday, fp);
fputs(phone, fp);
fputs(p->phone, fp);
fputs(dorm, fp);
fputs(p->dorm, fp);
fputs("\n", fp);
p = p->next;
}
fputs("\n\n\n", fp);
printf("保存成功!!!\n");
//关闭文件
fclose(fp);
}
//程序运行
void run() {
//建立结点,申请空间
LinkNode* L = (LinkNode*)malloc(sizeof(LinkNode));
L->next = NULL;
int number;
while (1) {
init();
printf("请输入功能前面的代号:");
scanf("%d", &number);
char a = getchar();
switch (number) {
case 0:exit(0); break;
case 1:addStudent(L); break;
case 2:showStudent(L); break;
case 3:deleteStudent(L); break;
case 4:selectStudent(L); break;
case 5:modefyStudent(L); break;
case 6:fileSave(L); break;
}
}
}
.h头文件
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Node {
char sno[20];//学号
char name[20];//姓名
char sex[10];//性别
char age[10];//年龄
char birthday[30];//出生时间
char phone[50];//电话
char dorm[20];//宿舍号
struct Node* next;//指针
}LinkNode;
void addStudent(LinkNode* L);//添加学生
void showStudent(LinkNode* L);//输出学生
void deleteStudent(LinkNode* L);//删除学生
void selectStudent(LinkNode* L);//查询学生
void modefyStudent(LinkNode* L);//修改学生
void init();//输出界面
void fileSave(LinkNode* p);//文件保存
void run();//程序运行