当前位置:网站首页>C学生数据库_将链表保存进数据库
C学生数据库_将链表保存进数据库
2022-08-07 07:17:00 【joker_0030】
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
//学生节点。
typedef struct _STU
{
char arrStuNum[10];
char arrStuName[10];
int iStuScore;
struct _STU* pNext;//指向下一个节点。
}STUNODE;
//申明链表的头和尾。
STUNODE* g_pHead = NULL;
STUNODE* g_pEnd = NULL;
//保存信息进入文件。
void SaveStuToFile();
int main()
{
int nOrder = -1;
char arrStuNum[10] = { '\0' };
char arrStuName[10] = { '\0' };
int iStuScore = -1;
int nFlag = 1;
STUNODE* pTemp = NULL;
//显示指令。
ShowOrder();
while (nFlag)
{
printf("请输入操作指令(0为查看指令)\n");
scanf("%d", &nOrder);
switch (nOrder)
{
case 1://添加一个学生信息。
printf("输入学号:");
scanf("%s", arrStuNum);
printf("输入姓名:");
scanf("%s", arrStuName);
printf("输入分数:");
scanf("%d", &iStuScore);//取地址。
AddStuMSG(arrStuNum, arrStuName, iStuScore);
break;
case 10://头添加。
printf("输入学号:");
scanf("%s", arrStuNum);
printf("输入姓名:");
scanf("%s", arrStuName);
printf("输入分数:");
scanf("%d", &iStuScore);//取地址。
AddStuMSGToLinkHead(arrStuNum, arrStuName, iStuScore);
break;
case 11://指定位置添加。
printf("输入需要查找的学号:");
scanf("%s", arrStuNum);
pTemp = FindStuByNum(arrStuNum);
if (NULL != pTemp);
{
//插入。
printf("输入学号:");
scanf("%s", arrStuNum);
printf("输入姓名:");
scanf("%s", arrStuName);
printf("输入分数:");
scanf("%d", &iStuScore);
InSertNod(pTemp, arrStuNum, arrStuName, iStuScore);
}
break;
case 2://打印指定学生信息。
printf("输入学号:");
scanf("%s", arrStuNum);
//查找。
pTemp = FindStuByNum(arrStuNum);
//打印。
if (NULL != pTemp);
{
printf("学号:%s,姓名:%s,成绩:%d\n", pTemp->arrStuNum, pTemp->arrStuName, pTemp->iStuScore);
}
break;
case 3:
printf("输入需要修改的学号:");
scanf("%s", arrStuNum);
//查找。
pTemp = FindStuByNum(arrStuNum);
//打印。
if (NULL != pTemp);
{
//修改学号。
printf("输入修改后的学号:");
scanf("%s", arrStuNum);
strcpy(pTemp->arrStuNum, arrStuNum);
//修改姓名
printf("输入修改后姓名:");
scanf("%s", arrStuName);
strcpy(pTemp->arrStuName, arrStuName);
//修改分数。
printf("输入修改后分数:");
scanf("%d", &iStuScore);
}
break;
case 4:
SaveStuToFile();
//保存学生信息。
break;
case 5:
break;
case 6://删除指定学生节点。
printf("输入需要删除的学号:");
scanf("%s", arrStuNum);
//查找。
pTemp = FindStuByNum(arrStuNum);
//打印。
if (NULL != pTemp)
{
//调用删除学生的函数。
DeleteStuNode(pTemp);
}
break;
case 7:
break;
case 8://打印数据(链表)。
ShowStuData();
break;
case 9:
nFlag = 0;
break;
case 0:
//查看指令。
ShowOrder();
break;
default:
printf("输入的指令不对");
break;
}
}
//保存。
SaveStuToFile();
//释放链表。
FreeLinkData();
system("pause");
return 0;
}
//保存信息进入文件。
void SaveStuToFile()
{//判断链表是否为空。
FILE* pFile = NULL;
STUNODE* pTemp = g_pHead;
char strBuf[30] = { 0 };
char strScore[10] = { 0 };
if (NULL == g_pHead)
{
printf("链表为空,没有学生信息\n");
return;
}
//打开文件。
pFile = fopen("dad.txt", "wb+");
if (NULL == pFile)
{
printf("没有学生\n");
return;
}
//操作文件指针。
while (pTemp)
{//学号复制进去。
strcpy(strBuf, pTemp->arrStuNum);
strcat(strBuf, ",");
//姓名复制进去。
strcat(strBuf, pTemp->arrStuName);
strcat(strBuf, ",");
//分数复制。
itoa(pTemp->iStuScore, strScore, 10);//先将整型转换为字符串。
strcat(strBuf, strScore);
fwrite(strBuf, 1, strlen(strBuf), pFile);//每次写入1*strLen(strBuf)个字节。
fwrite("\r\n", 1, strlen("\r\n"), pFile);
pTemp = pTemp->pNext;
}
//关闭文件。
fclose(pFile);
}
边栏推荐
- VoLTE Basic Self-Learning Series | What is Forking in SIP and IMS
- Web网页端IM产品RainbowChat-Web的v4.1版已发布
- 别看了,这就是你的题呀(二)
- 家居江湖掀起「夺魁战」,红星美凯龙如何打造品牌增量场?
- LeetCode points to Offer 24. Reverse linked list
- 接口的安全设计要素:ticket,签名,时间戳
- Why NIO is more efficient than BIO
- The number of [NOIP2001 improve group] division
- VoLTE Basic Self-study Series | Summary
- FPGA开发第二弹:流水灯实验
猜你喜欢

VoLTE basic self-study series | VoWIFI architecture diagram

FPGA开发第四弹:触摸按键控制LED灯实验

【Tic Tac Toe Chess】

VoLTE Basic Self-Learning Series | IMS Network Overview

Gaussian Temporal Awareness Networks GTAN论文阅读笔记

Detailed explanation of fixture test fixture of pytest framework

NIO learning

OC-run loop

servlet tutorial 2: return to the jsp page

LeetCode 剑指 Offer 30. 包含min函数的栈
随机推荐
Actionformer: Localizing moments of actions with transformers 论文阅读笔记
Web网页端IM产品RainbowChat-Web的v4.1版已发布
Are there MCUs with 5nm process technology?
【C语言】内存函数
LNK2001 unresolved external symbol cuGetErrorName resolved
MySQL:索引的底层实现 | 聚集索引和非聚集索引 | 自适应哈希索引
Ali cloud message service, SMS
DeFi Prospects: An Overview of Q2 Progress of Mainstream DeFi Protocols
Sort---Insertion sort
大一大二拾光日记
The second bullet of FPGA development: running water lamp experiment
LeetCode刷题笔记:1403.非递增顺序的最小子序列
NIO learning
FPGA开发第五弹:手搓呼吸灯代码
有 5nm 制程工艺的 MCU 吗?
WeChat applet--" applet global configuration and detailed explanation pull-down refresh and pull-up bottom page events
LeetCode 1163. The last substring lexicographically
明明加了唯一索引,为什么还是产生重复数据?
递归:理解和应用
排序---插入排序