IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> C语言学生成绩管理系统 -> 正文阅读

[数据结构与算法]C语言学生成绩管理系统

记录进入大学后写的的第一个课设:

学生成绩管理系统

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct student
//定义一个学生信息的结构体
{
?? ?char name[20];
//姓名?
?? ?int age;
//年龄?
?? ?char sex[5];
//性别?
?? ?int id;
//学号?
?? ?int score ;//成绩?
};

//创建链表
struct Node
{
?? ?struct student data;
?? ?struct Node*next;
};
struct Node* addlist()
{
?? ?
//指针--->变量 ?动态内存申请
?? ?struct Node*head =(struct Node*)malloc(sizeof(struct Node));
?? ?
//表头:做差异化处理 数据域 data 不做初始化
?? ?head->next=NULL;
?? ?return head;
}

//创建节点(把学生的数据变成结构体变量)?
struct Node * addNode(struct student data)
{
?? ?struct Node*newN = (struct Node*)malloc(sizeof(struct Node));
?? ?newN->data=data;
?? ?newN->next=NULL;
?? ?return newN;
}

//插入
void insert(struct Node*head,struct student data)
{
?? ?struct Node* newNode = addNode(data);? ? ? ? ? ? ??
?? ?newNode->next=head->next;? ? ? ? ? ? ? ? ? ? ??
?? ?head->next= newNode;? ? ? ? ? ? ? ? ? ? ? ?

//打印链表
void dayinlist(struct Node*head)
{
?? ?struct Node*p=head->next;
?? ?printf("姓名\t年龄\t性别\t学号\t成绩\n");
?? ?while(p)
?? ?{
?? ??? ?printf("%s\t%d\t%s\t%d\t%d\n",p ->data.name, p->data.age, p->data.sex, p->data.id, p->data.score);
?? ??? ?p=p->next;
?? ?}
?? ?printf("\n");
}

//搜索链表
struct Node* search(struct Node*head,char *name)
{
?? ?struct Node * p=head->next;
?? ?if(p==NULL)
?? ?{
?? ??? ?printf("无此学生!!!\n");
?? ?}
?? ?while(strcmp( p->data.name,name )==0)
?? ?{
?? ??? ?p=p->next;
?? ?}
? ?return p;
}

//删除链表:指定位置删除?
void deleteNode(struct Node* head ,char *name)
{
?? ?struct Node* pNode =head->next;
?? ?struct Node* pfNode=head;
?? ?if(pNode==NULL)
?? ?{
?? ??? ?printf("无此学生!!!\n");
?? ??? ?return;
?? ?}
?? ?while(strcmp(pNode->data.name,name))
?? ?{
?? ??? ?pfNode=pNode;
?? ??? ?pNode=pfNode->next; ? ? ? ? ???
?? ??? ?if(pNode == NULL)
?? ??? ?{
?? ??? ??? ?printf("未找到!!!\n");
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?
?? ?}
? ? ? ? pfNode->next = pNode->next;
?? ??? ?free(pNode);
?? ??? ?printf("删除成功!\n");?
}

//读文件

void read(struct Node *head, char *filename)
{
?? ?
//C语言文件操作就是调用函数
?? ?FILE *fp;//FILE是变量类型,用于文件,声明了一个指针,用来指向FILE类型的对象。?
?? ?struct student data;
?? ?fp = fopen (filename,"r");
//第一次运行打开失败 ?r:不具有创建功能?
?? ?if(fp == NULL)
?? ?{
?? ??? ?fp=fopen(filename,"w+");
//w方式具有创建文件功能?
?? ?}

? ?while (fscanf(fp, "%s\t%d\t%s\t%d\t%d\n",data.name,&data.age,data.sex,&data.id,&data.score)!=EOF)//End Of File 文件结束符
{
?? ?insert(head,data);
}

fclose(fp);
//关闭一个流,如果流成功关闭,fclose 返回 0,否则返回EOF(-1)。
//如果流为NULL,而且程序可以继续执行,fclose设定error number给EINVAL,并返回EOF。

}
//写文件
void write(struct Node* head, char *filename)
{
?? ?FILE *fp;
?? ?fp = fopen(filename,"w");
?? ?struct Node*p =head->next;
?? ?while(p)
?? ?{
?? ??? ?fprintf(fp,"%s\t%d\t%s\t%d\t%d\n",p ->data.name, p->data.age, p->data.sex, p->data.id, p->data.score);
?? ??? ?p=p -> next;
?? ?}
?? ?fclose(fp);
}

//按成绩排序
void sort(struct Node*head)
{
?? ?int t = 0;
?? ?char m[10];
?? ?for (Node* temp = head->next; temp->next != NULL; temp = temp->next)
?? ?{
? ? ? ? for (Node* p = head->next; p->next != NULL; p = p->next)
?? ??? ?{
? ? ? ? ? ? if (p->data.score > p->next->data.score)
?? ??? ??? ?{
? ? ? ? ? ? ? ? t = p->data.score;? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? p->data.score = p->next->data.score;? ??
? ? ? ? ? ? ? ? p->next->data.score = t;? ? ? ? ? ? ? ? ?
?? ??? ??? ??? ?t=p->data.age;? ? ? ? ? ? ? ? ? ? ? ? ? ?
?? ??? ??? ??? ?p->data.age = p->next->data.age;? ? ? ? ?
? ? ? ? ? ? ? ? p->next->data.age = t;? ? ? ? ? ? ? ? ??
?? ??? ??? ??? ?t=p->data.id;
?? ??? ??? ??? ?p->data.id = p->next->data.id;
? ? ? ? ? ? ? ? p->next->data.id = t;
?? ??? ??? ??? ?strcpy(m,p->data.name );
//把字符串p->data.name拷贝到中m
?? ??? ??? ??? ?strcpy(p->data.name,p->next->data.name);
?? ??? ??? ??? ?strcpy(p->next->data.name,m);
?? ??? ??? ??? ?strcpy(m,p->data.sex );
?? ??? ??? ??? ?strcpy(p->data.sex,p->next->data.sex);
?? ??? ??? ??? ?strcpy(p->next->data.sex,m);
? ? ? ? ? ? }?? ??? ??? ??? ??? ??? ?
? ? ? ? }
?? ??? ?
?? ?}?? ?
?? ?dayinlist(head);
?? ?return ;
}

//修改信息
void xiugai(struct Node*head)
{ ? int m;
? ? int x=0;
?? ?struct Node * q = head->next;
?? ?printf("请输入需要修改的学生的学号:");
?? ?scanf("%d",&m);
?? ?if(q->data.id == m && q != NULL)
?? ?{
?? ?printf("学号:%d 姓名: %s 年龄: %d 性别:%s 成绩:%d\n",q->data.id,q->data.name,q->data.age,q->data.sex,q->data.score);
? ? printf("请输入修改后的学号:\n");
?? ?scanf("%d",&q->data.id);
?? ?printf("请输入修改后的姓名:\n");
?? ?scanf("%s",&q->data.name);
?? ?printf("请输入修改后的年龄:\n");
?? ?scanf("%d",&q->data.age);
?? ?printf("请输入修改后的性别:\n");
?? ?scanf("%s",&q->data.sex);
?? ?printf("请输入修改后的成绩:\n");
?? ?scanf("%d",&q->data.score);
?? ?printf("修改完成!\n");
?? ?printf("修改后的学号:%d 姓名: %s 年龄: %d 性别:%s 成绩:%d\n",q->data.id,q->data.name,q->data.age,q->data.sex,q->data.score);
? ? }
? ? else
? ? {
? ? ?? ?printf("未找到信息!!\n");
?? ??? ?system("pause");
?? ?}
?? ?return ;
}
//主页?
void menu()
{
?? ?printf("==================================================\n");
?? ?printf("================[学生成绩管理系统]================\n");
?? ?printf("==================================================\n");
?? ?printf("==\t\t ? 0.退出系统 ?\t\t\t==\n");
?? ?printf("==\t\t ? 1.搜索信息 ?\t\t\t==\n");
?? ?printf("==\t\t ? 2.增加信息 ?\t\t\t==\n");
?? ?printf("==\t\t ? 3.删除信息 ?\t\t\t==\n");
?? ?printf("==\t\t ? 4.修改信息 ?\t\t\t==\n");
?? ?printf("==\t\t ? 5.成绩排序 ?\t\t\t==\n");
?? ?printf("==\t\t ? 6.浏览信息 ?\t\t\t==\n");
?? ?printf("==================================================\n");
?? ?printf("==================================================\n");
}
struct Node*list= addlist();
void ch()
{
?? ?int a=0;
?? ?struct student data;
?? ?struct Node* p=NULL;?
?? ?scanf("%d",&a);
?? ?switch(a)
?? ?{
?? ?case 0 :
?? ??? ?printf("已退出系统!下次再见!");
?? ??? ?exit(0);
?? ??? ??? ?break ;
?? ?case 1:
?? ??? ?printf("==================[搜索信息]================\n");
?? ??? ?char name1[10];?
?? ??? ?printf("请输入搜索学生姓名:");
?? ??? ?scanf("%s",name1);
?? ??? ?p=search(list,data.name);
?? ? ? ?if(strcmp( p->data.name,name1 )==0)
?? ??? ?{
?? ??? ??? ?printf("姓名\t年龄\t性别\t学号\t成绩\n");
?? ??? ? ? ?printf("%s\t%d\t%s\t%d\t%d\n",p ->data.name,p->data.age,p->data.sex,p->data.id,p->data.score);
?? ? ? ?}
?? ? ? ?else
?? ? ? ?{
?? ??? ??? ?printf("未找到信息!!\n");
?? ??? ??? ?system("pause");
?? ??? ?}
?? ??? ?break ;
?? ?case 2 :
?? ??? ?printf("==================[增加信息]================\n");
? ? ? ? int n,i;
?? ? ? ?printf("请输入要输入学生的个数:\n");
?? ? ? ?scanf("%d",&n);
? ? ??? ?for(i=1;i<=n;i++)
? ? ?? ?{
?? ? ? ? ?printf("姓名,年龄,性别,学号,成绩:\n");
?? ? ? ? ?fflush(stdin);
?? ? ? ? ?scanf("%s%d%s%d%d",data.name,&data.age,data.sex,&data.id,&data.score);
?? ??? ? ?insert(list,data);
?? ??? ?}
? ? ?? ?printf("增加成功!\n");
? ? ? ? break ;
?? ?case 3:
?? ??? ?printf("==================[删除信息]================\n");
?? ??? ?printf("请输入学生姓名:");
?? ??? ??? ?scanf("%s",data.name);
?? ??? ??? ?deleteNode(list,data.name);
?? ??? ?break ;
?? ?case 4:
?? ??? ?printf("==================[修改信息]================\n");
?? ??? ?xiugai(list);
?? ??? ?break ;
?? ?case 5:
?? ??? ?printf("==================[成绩排序]================\n");
?? ??? ?sort(list);
?? ??? ?break;
?? ?case 6:
?? ??? ?printf("==================[浏览信息]================\n");
?? ??? ?dayinlist(list);
?? ??? ?break ;
?? ?default:
?? ??? ?printf("输入有误,请重新输入!!");
?? ??? ?system("pause");
?? ??? ?break;
?? ?}
?? ?write(list,"2.txt");
}
int main()
{
?? ?read(list,"2.txt");
?? ?while(1)
?? ?{
?? ? ? menu();
?? ? ? ch();
?? ? ? system("pause");
?? ? ? system("cls");
?? ?}
?? ?system("pause");
?? ?return 0;

}

运行效果演示:

==================================================
==================[学生成绩管理系统] =================
==================================================
==? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0.退出系统? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ==
==? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1.搜索信息? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ==
==? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2.增加信息? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??==
==? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3.删除信息? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ==
==? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?4.修改信息? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ==
==? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?5.成绩排序? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ==
==? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?6.浏览信息? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ==
==================================================
==================================================

2

==================[增加信息]================
请输入要输入学生的个数:
2
姓名,年龄,性别,学号,成绩:
zhang 18 ? ?nu ? ?009 ? 80
姓名,年龄,性别,学号,成绩:
huan ?19 ? ?nan ? 007 ? 90
增加成功!
请按任意键继续. . .

6

==================[浏览信息]================
姓名 ? ?年龄 ? ?性别 ? ?学号 ? ?成绩
huan ? ?19 ? ? ?nan ? ? 7 ? ? ? 90
zhang ? 18 ? ? ?nu ? ? ?9 ? ? ? 80

请按任意键继续. . .

4

==================[修改信息]================
请输入需要修改的学生的学号:007
学号:7 姓名: haun 年龄: 19 性别:nan 成绩:90
请输入修改后的学号:
008
请输入修改后的姓名:
zhuo
请输入修改后的年龄:
18
请输入修改后的性别:
nu
请输入修改后的成绩:
70
修改完成!
修改后的学号:8 姓名: zhuo 年龄: 18 性别:nu成绩:70
请按任意键继续. . .

5
==================[成绩排序]================
姓名 ? ?年龄 ? ?性别 ? ?学号 ? ?成绩
zhuo ? ?18 ? ? ?nuu ? ? 8 ? ? ? 70
zhang ? 18 ? ? ?nu ? ? ?9 ? ? ? 80

请按任意键继续. . .

3
==================[删除信息]================
请输入学生姓名:zhang
删除成功!
请按任意键继续. . .

第一次写课设,存在很多bug,以后会继续努力。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-06 15:30:50  更:2021-12-06 15:33:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 14:59:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码