,,C语言实现简单学生信息管理系统

,,C语言实现简单学生信息管理系统

本文主要详细介绍了用C语言实现的简单的学生信息管理系统。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

学生信息管理系统的功能包括,或者你可以自己添加或者改进一些功能。

在主函数中调用这八个函数。

学生信息包括他们的姓名、年龄、学号和成绩。需要定义一个结构(结构是一个全局变量,所以需要全局声明):

typedef struct _student{

char name[20];

int age

int stuNum

int分数;

}学生;

需要有存储数据的空间,所以使用单链表存储,定义如下:

typedef struct _Node{

学生stu1

struct _ Node * pNext

}节点;

此时,您需要给链表一个头:

Node * g _ head=NULL

录入学生信息:

1)创建一个新节点,它包括结构数据和下一个指针。

2)需要判断头节点是否为空。如果为空,此时新节点需要支付给头节点。如果不为空,则节点的下一个指针=头节点(头插入法,如果可以的话)。

3)然后输入数据scanf('%s ',p-stu 1 . age);

4)最后提醒学生,信息输入完整!

5)现在只输入了一个学生信息。这时候你只需要在main函数中写一个循环就可以无限调用这个函数进行数据录入。

void输入(){

Printf('请输入学生信息\ t \ n ');

Node * pNewNode=(Node *)malloc(sizeof(Node));//创建一个新节点。

pNewNode-pNext=NULL;

if(g_head==NULL){

g _ head=pNewNode

}

否则{

pNewNode-pNext=g _ head;

g _ head=pNewNode

}

Printf('请输入您的姓名:');

scanf('%s ',pNewNode-stu 1 . name);

Printf('请输入年龄:');

scanf('%d ',pNewNode-stu 1 . age);

Printf('请输入您的学号:');

scanf('%d ',pNewNode-stu 1 . stunum);

Printf('请输入等级:');

scanf('%d ',pNewNode-stu 1 . score);

Printf('学生信息已输入!\ n \ n’);

}

查看信息:

1)需要遍历链表,然后打印f;

2)创建一个新的节点指针然后Node * p=g _ head而(p!=NULL){ printf p=p-next}(注:以上代码仅为函数描述)

代码:

void printdate(){

Node * p=g _ head

printf(' \ tName \ tAge \ t student ID \ tachievent \ n ');

而(p!=空)

{

printf('\t%s\t,%d\t,%d\t,%d\t\n ',p-stu1.name,p-stu1.age,p-stu1.stuNum,p-stu 1 . score);

p=p-pNext;

}

}

保存信息:

1)首先用文件指针指向要使用的文件,

2)方便所有链表数据,将遍历的数据写入文件指针指向的文件。

void save(){

FILE *fp=fopen('E:\\stu.data ',' w ');

if(fp==NULL){

Printf('文件打开失败');

返回;

}

Node * p=g _ head

而(p!=NULL){

fwrite(p-stu1,1,sizeof(学生),FP);

p=p-pNext;

}

fclose(FP);

Printf('文件保存成功!\ n’);

}

文件读取:

1)首先用文件指针指向一个使用过的文件,

2)这里,需要打开一个链表,将读取的数据写入链表中数据的结构中,

3)你需要判断是否读取了数据,先将文件中的数据读入结构数组。

4)然后在while循环中,将结构数组中的数据复制到链表中,

5)每个节点都需要排队。这里使用了头插入方法,每个副本都会打开一个节点。

代码:

void rs(){

FILE* fp=fopen('E:\\stu.data ',' r ');

if(fp==NULL){

Printf('文件打开失败');

}

printf('文件已成功读取!\n要查看文件,请按2 \ n’);

学生stu

while(fread(stu,1,sizeof(student),fp)){

Node * pNewNode=(Node *)malloc(sizeof(Node));

pNewNode-pNext=NULL;

memcpy(pNewNode,stu,sizeof(student));

if(g_head==NULL){

g _ head=pNewNode

}

否则{

pNewNode-pNext=g _ head;

g _ head=pNewNode

}

}

}

统计人数:

1)遍历链表时,定义一个整数数组来添加最终输出。

无效计数(){

int a=0;

FILE* fp=fopen('E:\\stu.data ',' r ');

if(fp==NULL){

Printf('文件打开失败');

返回;

}

Node * p=g _ head

而(p!=NULL){

p=p-pNext;

a;

}

Printf('总数%d ',a);

}

查找学生:

(1)定义整型数据,输入学号,先遍历再如果是判断输入的学号和p-斯图一号是否相等,相等的话输出:

请参阅查找()

内部编号;

printf('请输入要查找的学生学号:\ n);

扫描文件(" %d,num ");

节点* p=g_head:

而(p!=空)

如果(p-stu 1。Sturm==num)}

printf(\ t % s \ t,%d\t,%d\t,%d\t\n),p-stu1.name,p-stu1.age,p-stu1。斯特姆,p-stu 1。分数;

}

p=p-pnext;

}

printf('无该学生信息');

}

修改信息:美元

(1)定义整型数据,输入学号,先遍历再如果是判断输入的学号和p-斯图一号是否相等,相等的话重新输入:

请参见更改()

内部编号;

printf('请输入要修改的学生的学号");

扫描文件(" %d,num ");

节点* p=g_head:

而(p!=空)

如果(p-stu 1。Sturm==num)}

printf('请输入姓名:\ n);

扫描f("% s ",p-stu 1。姓名);

printf('请输入年龄:\ n);

scanf("% d,p-stu 1。年龄”);

printf('请输入学号:\ n);

scanf(% d,p-stu 1。Sturm);

printf('请输入成绩:\ n);

scanf("% d,p-stu 1。分数”);

printf('信息更改完毕我的天);

}

p=p-pnext;

}

if(p==null)}

printf('该学生不存在!\ n ';

}

}

删除信息:美元

(1)思路是先遍历,找到了免费的就可以了,

(2)需要定义两个节点指针,如果找到了是头结点直接将头结点付给定义的节点,然后免费的,

如果不是头结点,将该节点付给定义的节点,p-next=p-next;

然后免费的

S7-1200可编程控制器

内部编号;

printf('请输入要删除的学号');

扫描文件(" %d,num ");

节点* p=g_head:

节点*p1 、* p2

如果(p-stu 1。Sturm==num)}

P1=p-p next;

自由(p-1);

}

if(p-pNext!=空)

p2=p-pnext;

p-pnext=p-pnext-pnext;

自由(p-2);

}

printf('学号为%d的信息删除成功!\n,编号;

}

下面是完整代码:

# includestdio.h

#includeconio。h

#includestdlib.h

#includestring.h

typedef结构_学生

茶名称[20];

(同Internationalorganizations)国际组织年龄;

内部斯特姆;

(同Internationalorganizations)国际组织分数;

}学生;

typedef结构节点

学生stu 1;

struct _Node* pNext:

}节点;

Node *g_head=NULL:

请参阅菜单()

printf("-\ n ");

打印(1录入信息-\ n ';

打印(2查看信息-\ n ';

打印(3保存信息-\ n ';

打印(4读取信息-\ n ';

打印(5统计人数-\ n ';

打印(6查找信息-\ n ';

打印(7修改信息-\ n ';

printf(-8删除信息-\ n ';

打印(0退出-\ n ';

printf('退出不要直接点叉,请按0退出!\n查看文件之前请先读取文件!\ n ';

}

请参见输入()

printf('请输入学生信息\ t \ n ';

node * pnewnode=(node *)malloc(sizeof(node));//创建一个新节点。

pnewnode-pnext=null;

if(g_head==NULL)>

S7-1200可编程控制器:

}

其他

pnewnode-pnext=g _ head;

S7-1200可编程控制器:

}

printf('请输入姓名");

scanf("% s ",pnewnode-stu 1。姓名);

printf('请输入年龄");

scanf("% d ",pnewnode-stu 1。年龄);

printf('请输入学号");

scanf("% d ",pnewnode-stu 1。Sturm);

printf('请输入成绩");

scanf("% d ",pnewnode-stu 1。分数);

printf('该学生信息输入完毕!\ n \ n ';

}

请参见打印日期()

节点* p=g_head:

printf("\ t姓名\t年龄\t学号\t成绩\ n ';

而(p!=空)

{

printf(\ t % s \ t,%d\t,%d\t,%d\t\n),p-stu1.name,p-stu1.age,p-stu1。斯特姆,p-stu 1。分数;

p=p-pnext;

}

}

请参阅保存()

文件*fp=fopen('E:\\stu.data ',' w ');

if(FP==null)}

printf('文件打开失败');

返回;

}

节点* p=g_head:

而(p!=空)

fwrite(p-stu 1.1,sizeof(学生),FP);

p=p-pnext;

}

fclose(FP);

printf('文件保存成功!\ n ';

}

请参见rs()

文件* fp=fopen('E:\\stu.data ',' r ');

if(FP==null)}

printf('文件打开失败');

}

printf('文件读取成功!\n查看文件请按2 \ n ';

学生斯图;

while(fread(stu,1,sizeof(student,FP))& gt;

node * pnewnode=(node *)malloc(sizeof(node));

pnewnode-pnext=null;

memcpy(pNewNode,stu,sizeof(学生));

if(g_head==NULL)>

S7-1200可编程控制器:

}

其他

pnewnode-pnext=g _ head;

S7-1200可编程控制器:

}

}

}

请参见计数()

内部a=0

文件* fp=fopen('E:\\stu.data ',' r ');

if(FP==null)}

printf('文件打开失败');

返回;

}

节点* p=g_head:

而(p!=空)

p=p-pnext;

(一)在下列情况下:

}

printf('总人数%d,a。

}

请参阅查找()

内部编号;

printf('请输入要查找的学生学号:\ n’);

scanf('%d ',编号);

节点* p=g _ head

而(p!=NULL){

if(p-stu1.stuNum==num){

printf('\t%s\t,%d\t,%d\t,%d\t\n ',p-stu1.name,p-stu1.age,p-stu1.stuNum,p-stu1。分数);

}

p=p-pNext;

}

printf(' have not ');

}

无效更改(){

整数

printf('请输入要修改的学生的学号: ');

scanf('%d ',编号);

节点* p=g _ head

而(p!=NULL){

if(p-stu1.stuNum==num){

printf('请输入姓名:\ n’);

扫描f('%s ',p-stu 1。姓名);

printf('请输入年龄:\ n’);

扫描f('%d ',p-stu 1。年龄);

printf('请输入学号:\ n’);

扫描f('%d ',p-stu 1。stunum);

printf('请输入成绩:\ n’);

扫描f('%d ',p-stu 1。分数);

printf('信息更改完毕!');

}

p=p-pNext;

}

if(p==NULL){

printf('该学生不存在!\ n’);

}

}

void del(){

整数

printf('请输入要删除的学号');

scanf('%d ',编号);

节点* p=g _ head

节点*p1,* p2

if(p-stu1.stuNum==num){

P1=p-p next;

免费(P1);

}

if(p-pNext!=NULL){

p2=p-pNext;

p-pNext=p-pNext-pNext;

免费(p2);

}

printf('学号为%d的信息删除成功!\n ',编号);

}

int main()

{

menu();

while(1)

{

char ch=getch();

开关(通道){

事例"1":输入();打破;

事例“2”:打印日期();打破;

案例“3”:save();打破;

案例“4”:RS();打破;

事例“5”:count();打破;

案例“6”:find();打破;

事例“7”:change();打破;

案例“8”:del();打破;

案例"0":退出(0);

}

}

返回0;

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: