链表不会用

文件不会使

在这种情况下就边写边做

希望这个月能做完这个作业


 #include<stdio.h>
#include<stdlib.h>
#include<string.h> #define StuIdlen 12//学生学号长度
#define StuNamelen 12//学生姓名长度
typedef struct Stu
{
char StuName[StuNamelen];
char StuId[StuIdlen];
int score;
struct Stu* pNext;//下一个指针
}Stu_data; //学生数据类型
//声明链表的头和尾
Stu_data* g_pHead =NULL;
Stu_data* g_pEnd =NULL; //初始化0 //清空列表
void FreeLinkData();
//打印数据
void showStu_data();
//链表头添加一个节点
void HeadAddStu( char *iStuName,char *iStuId,int iscore);//添加学生信息
//查找指定学生
Stu_data* FindStu(char* iStuId);
void insert();
int main()
{
void show_main();//展示功能面板 声明
void AddStu( char *iStuName,char *iStuId,int iscore);//添加学生信息 int chose;
int run =;//永真run
show_main();//调用
while(run)//永真执行操作
{
scanf("%d",&chose);
switch(chose)
{
case :
printf("*****************1.增加学生信息***************************\n");
char iStuName[StuNamelen];
char iStuId[StuIdlen];
int iscore;
printf("输入学生姓名:");
scanf("%s",iStuName);
getchar();
printf("输入学生学号:");
scanf("%s",iStuId);
printf("输入学生成绩:");
scanf("%d",&iscore);
AddStu(iStuName,iStuId,iscore);
printf("*******************增加信息成功***************************\n"); break;
case :
printf("*****************11.增加学生信息(头添加)******************\n");
/*char iStuName[StuNamelen];
char iStuId[StuIdlen];
int iscore;
*/
printf("输入学生姓名:");
scanf("%s",iStuName);
getchar();
printf("输入学生学号:");
scanf("%s",iStuId);
printf("输入学生成绩:");
scanf("%d",&iscore);
HeadAddStu(iStuName,iStuId,iscore);
printf("*******************增加信息成功***************************\n");
//头添加
break;
case :
{ Stu_data* pTemp =NULL;
printf("输入指定学号");
scanf("%s",iStuId);
pTemp=FindStu(iStuId);
if(NULL==pTemp)
{ }
}
case :
printf("*****************9.显示所有的学生的信息*******************\n");
showStu_data();
printf("*******************信息显示成功***************************\n");
break;
case :
printf("*****************0.退出系统*******************************\n");
run=;
break;
case :
show_main();//调用
break;
default:
printf("*****************!.输入错误*******************************\n");
break;
} }
FreeLinkData();
system("PAUSE");
return ;
} void show_main()//展示功能面板 定义
{
printf("*******************学生管理系统***************************\n");
printf("*******************系统功能如下***************************\n");
printf("*****************1.增加学生信息(尾添加)*******************\n");
printf("*****************11.增加学生信息(头添加)******************\n");
printf("*****************111.增加学生信息(指定位置添加)***********\n");
printf("*****************2.查找指定的学生信息*********************\n");
printf("*****************3.修改指定的学生信息*********************\n");
printf("*****************4.保存业主的信息到文件中*****************\n");
printf("*****************5.读取文件中的业主的信息*****************\n");
printf("*****************6.删除指定的学生的信息*******************\n");
printf("*****************7.恢复删除的学生的信息*******************\n");
printf("*****************9.显示所有的学生的信息*******************\n");
printf("*****************10.查看面板******************************\n");
printf("*****************0.退出系统*******************************\n");
printf("**********************************************************\n"); }
void AddStu(char *iStuName,char *iStuId,int iscore)
{ //检验合法性质
if(NULL == iStuName||NULL == iStuId||iscore<)
{
printf("输入学生信息错误");
return ;
}
//逻辑判断-
//创建一个节点 Stu_data* pTemp=malloc(sizeof(Stu_data));
//节点成员附初始值
strcpy(pTemp->StuName,iStuName);
strcpy(pTemp->StuId,iStuId); pTemp->score=iscore;
pTemp->pNext=NULL;
// 接在链表上
if(g_pHead==NULL||g_pEnd==NULL)
{
g_pHead =pTemp;//link
g_pEnd =pTemp;//向后移动
}
else
{
g_pEnd->pNext = pTemp;
g_pEnd=pTemp;
} }
void FreeLinkData() //清空列表
{
Stu_data* pTemp = g_pHead;//记录节点
while(g_pHead !=NULL)
{
g_pHead=g_pHead->pNext;//向后移动了一个 free(pTemp);//删除节点 }
}
void showStu_data()//展示链表 showStu_data();
{
Stu_data* pTemp = g_pHead;
while(pTemp != NULL)
{
printf("学号:%s,姓名:%s,分数:%d\n",pTemp->StuName,pTemp->StuId,pTemp->score);
pTemp=pTemp->pNext;//向后移动了一个
}
}
//链表头添加一个节点
void HeadAddStu( char *iStuName,char *iStuId,int iscore)//添加学生信息
{
//检测合法性
if(NULL == iStuName||NULL == iStuId||iscore < )
{
printf("学生信息输入错误");
return ;
}
//创建一个节点
Stu_data* pTemp = malloc(sizeof(Stu_data));
//成员赋值
strcpy(pTemp->StuName,iStuName);
strcpy(pTemp->StuId,iStuId);
pTemp->score = iscore;
pTemp->pNext = NULL;
if(NULL == g_pHead||NULL == g_pEnd)
{//链表为空
g_pHead = pTemp;
g_pEnd =pTemp; }
else
{
//新节点的下一个指向头先连后断
pTemp->pNext = g_pHead;
g_pHead=pTemp;
}
}
//查找指定学生
Stu_data* FindStu(char* iStuId)//201801013 12356
{
//检测参数合法性
if(NULL == iStuId)
{
printf("学号输入错误");
return NULL;
}
//遍历链表
Stu_data* pTemp=g_pHead;
while(pTemp)
{
if(==strcmp(pTemp->StuId,iStuId))
{
return pTemp;
}
pTemp=pTemp->pNext;
}
printf("查无此节点");
return NULL;
}

#004 C语言大作业学生管理系统试着做的更多相关文章

  1. #006 C语言大作业学生管理系统第三天

    还差最后两部分 读取文件 恢复删除的学生信息 先学会处理文件的 知识点,再继续跟着视频做这个作业. 应该明天周六能把视频里手把手教的学生管理系统敲完 第二周尽量自己能完成C语言课本最后面那道学生管理系 ...

  2. #007 C语言大作业学生管理系统第四天

    第四天还差恢复已删除学生功能 对于我来说,已经开始很复杂了. 小细节太重要了,边写边出错 1 #include<stdio.h> #include<stdlib.h> #inc ...

  3. 【C】C语言大作业——学生学籍管理系统

    文章目录 学生管理系统 界面 主界面 登陆界面 注册界面 管理界面 学生界面 退出界面 链接 注意 学生管理系统 学C语言时写的一个大作业,弄了一个带图形界面的,使用的是VS配合EasyX图形库进行实 ...

  4. C语言大作业---学生信息管理系统

    xxxx信息管理系统 简介 因为大作业规定的踩分项就那么多,为了不浪费时间 + 得分,就写成这样.现在看看,命名不规范,书写风格糟糕,全塞在一个源代码中······ 不过,应付大作业是没问题的 实验报 ...

  5. BMP图像直方图均衡算法(C语言大作业)

    万丈高楼平地起 C语言大作业 一.学习笔记篇 1.学习MarkDown MarkDown注重写作本身,而非花俏的界面 编辑器:vscode 插件:Markdown,Markdown Preview 2 ...

  6. 从零开始的C程序设计大作业——学生成绩管理系统

    前言 学生成绩管理系统可以说是C语言程序设计的结课的必备大作业了.花了些时间,费了些头发肝了下,完成了两个系统,一个是控制台版本的,另一个用easyx图形库进行了优化. 先放出完成后的演示图片占个坑. ...

  7. C++项目作业 学生管理系统

    /*Student.h*/#pragma once #include<string.h> using namespace std; #include<string> class ...

  8. 大一上C语言期末大作业-成绩管理系统

    都过了半年的作业了,觉得做过去得留下点什么,所以整理了代码发一下博客. 声明:程序在DevC++下用c文件模式可以正常编译使用.(控制台程序) 程序结构:

  9. c++大作业--学籍管理系统--

    1.题目描写叙述 学籍管理系统: 依据信息管理系统的业务流程.要求以及所要实现的目标,完毕下面功能: (1)建立学生档案的管理和维护.实现计算机自己主动化管理体制. (2)建立学生成绩管理机制,在计算 ...

随机推荐

  1. iOS多线程(上)——GCD详解(上)

    GCD(Grand central Dispatch)是Apple开发的一个多核编程的较新的解决方法.它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统.下面我讲讲述关于GCD的点,通篇读完 ...

  2. WPF 获取DataGrid 控件选中的单元格信息

    获取 DataGrid 选中的单元格的信息DataGridCellInfo cell_Info = this.studentTable.SelectedCells[0]; studentTableIt ...

  3. Tesseract 引擎翻译

    Tesseract 引擎翻译 Category: 图像识别 Last Edited: Sep 17, 2018 10:29 AM Tags: tesseract,字符识别,翻译 1.英文原文(中文翻译 ...

  4. 4.6 explain 之 rows

    一.说明 根据表统计信息及索引选用情况,大致估算出找到所需的记录所需读取的行数. 二.示例 关注我的公众号,精彩内容不能错过

  5. javascript对象与方法

    对象与方法 一.数组(Array) 1.使用new关键字创建数组 var box = new Array();                                     //创建了一个数 ...

  6. JS中的call、apply、bind方法详解

    bind 是返回对应函数,便于稍后调用:apply .call 则是立即调用 . apply.call 在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(co ...

  7. FUNCTIONALITY OF ITEM CATEGORY

    Item Category Purpose This wiki page will breify discuss about functionality of Item Category in SAP ...

  8. Linux 安装 jdk8

    切换目录 cd /usr 创建目录 mkdir java cd java 下载 jdk rz 或者 ftp 都行,只要能成功上传 解压 tar zxvf jdk-8u181-linux-x64.tar ...

  9. OpenVDB for Mitsuba

    https://github.com/zhoub/mitsuba-vdb

  10. <自动化测试方案_6>第六章、API自动化测试

    第六章.API自动化测试 (一)工具实现 目前大众接口测试的工具有:Postman.SoupUI.jmeter他们的特点介绍有人做个宏观的研究,这里进行引用:https://blog.csdn.net ...