c语言学生管理系统的删除模块,C语言编写学生管理系统

本文目录一览:

C语言成绩管理系统删除信息

void remove(MESSAGE message[]) {

int i,j,n,num;

int flag = 1;

n = ReadMESSAGEFromFILE(message);

printf(“请输入要删除学生的学号:”);

scanf(“%d”,num);

for(i = 0; i  n;i++) {

if(num == message[i].number) {

for(j = i; j  n – 1; ++j)

message[i] = message[i + 1];

printf(“该学生的信息已删除成功!\n”);

flag = 0;

–n;

break;

}

}

if(flag == 1) printf(“该学生的信息不存在。\n”);

WriteAllMESSAGEtoFILE(message,n);

}

求c语言 学生管理系统 程序 以下几个模块不必全有,少的我自己加,但发来的程序各模块必须标记清楚 谢谢

下面的程序中,你将单链表改为结构数组即可达到你的要求:

C 语言学生成绩管理系统

#includestdio.h

#includemalloc.h

#includeconio.h

#includestring.h

typedef struct STUDENT

{

char studentNumber[20];/*学生学号*/

char studentName[20];/*学生姓名*/

char className[20];/*班级名称*/

float mark1;/*第1门成绩*/

float mark2;/*第2门成绩*/

float mark3;/*第3门成绩*/

struct STUDENT *next;

}STUDENT;

STUDENT *headLink; /*链表表头指针*/

/*函数声明*/

void ReadInfoFormFile();

void Menu();

void CreateHeadLink();

STUDENT *MallocNode();

void GetInformation(STUDENT *t);

void OutputInformation();

void DesplayInfoBystudentName();

void DesplayInfoBystudentNumber();

void DesplayOneNode(STUDENT *t);

void InsertOneNode(STUDENT *t);

void DeleteNodeBystudentNumber();

void ChangeMarkByName();

void ChangeMarkByNumber();

void SaveLinkToFile();

void paixu();

void DesplayMarkSegment();

int choose;/*用于接受用户的选择*/

/*主函数*/

main()

{

system(“color 2a”);

printf(“\n\t\t欢迎进入***学院***班学生成绩管理系统\n\n\n”);

printf(“\t\t\t\tO(∩_∩)O\n\n\n\n”);

printf(“\t\t\t^_^\t\t\t^_^\n\n”);

printf(“\n\t\t 注意:请按照要求输入相应信息,谢谢!\n\n\n\n\n”);

printf(“\t\t\t\t\t\t\t\t制作人:***\n\n\n”);

printf(“\t\t\t 按任意键进入…………”);

getch();

system(“cls”);

CreateHeadLink();

ReadInfoFormFile();

Menu();

}

/*从文件中读学生信息到链表中*/

void ReadInfoFormFile(void)

{

FILE *fp;

STUDENT *p;

fp=fopen(“student.txt”,”r”);

if(!fp)

{

printf(“\n”);

return;

}

p=MallocNode();

while(fscanf(fp,”%s%s%s%f%f%f”,p-studentNumber,p-studentName,p-className,(p-mark1),(p-mark2),(p-mark3))0)

{

InsertOneNode(p);

p=MallocNode();

}

fclose(fp);

}

/*显示菜单,根据用户的输入完成相应的功能*/

void Menu(void)

{

STUDENT *p;

printf(“\t\t (^o^)欢迎使用学生成绩管理系统(^o^)\n\n”);

printf(“\t ※——————–请选择相应功能———————※\n\n”);

printf(“\t 1: 显示所有学生的信息 |”);

printf(” \t 2: 按姓名查询 |\n\n”);

printf(“\t 3: 按学号查询 |”);

printf(” \t\t 4: 增加学生 |\n\n”);

printf(“\t 5: 删除学生 |”);

printf(” \t\t 6: 按姓名修改学生成绩 |\n\n”);

printf(“\t 7: 按学号修改学生成绩 |”);

printf(” \t 8: 保存所有学生信息 |\n\n”);

printf(“\t 9: 按成绩输出学生信息 |”);

printf(“\t 10: 显示不及格及优秀学生 |\n\n”);

printf(“\t 11: 返回主菜单 |”);

printf(“\t\t 12: 退出 |\n\n”);

printf(“\t ※———————-O(∩_∩)O————————※\n\n”);

printf(“\t 请输入对应数字:”);

scanf(“%d”,choose);/*取得用户的选择*/

switch(choose)

{

case 1:system(“cls”);

OutputInformation();/*显示所有学生的信息*/

break;

case 2: system(“cls”);

DesplayInfoBystudentName();

break;

case 3: system(“cls”);

DesplayInfoBystudentNumber();/*根据用户输入的学号显示该学生的信息*/

break;

case 4: system(“cls”);

p=MallocNode();/*先申请一个新结点*/

GetInformation(p);/*要求用户输入信息到新结点中*/

InsertOneNode(p);/*将新结点加到链表中*/

break;

case 5: system(“cls”);

DeleteNodeBystudentNumber();/*根据用户输入的学号删除该学生*/

break;

case 6: system(“cls”);

ChangeMarkByName();/*根据用户输入的姓名修改学生成绩*/

break;

case 7: system(“cls”);

ChangeMarkByNumber();/*根据用户输入的学号修改学生成绩*/

break;

case 8: system(“cls”);

SaveLinkToFile();/*保存数据*/

break;

case 9: system(“cls”);

paixu();break;

case 10: system(“cls”);

DesplayMarkSegment();break;

case 11: system(“cls”);

break;

case 12: system(“cls”);

SaveLinkToFile();/*保存数据后再退出*/

free(headLink);

exit(1);

break;

default: system(“cls”); break;

}

Menu();/*递归调用*/

}

/*建立链表表头*/

void CreateHeadLink(void)

{

STUDENT *p;

p=(STUDENT*)malloc(sizeof(STUDENT));

headLink=p;

p-next=NULL;

}

/*申请一个新结点,并将其初始化*/

STUDENT *MallocNode(void)

{

STUDENT *p;

int i;

p=(STUDENT*)malloc(sizeof(STUDENT));

if(p==NULL)

return NULL;

for(i=0;i10;i++)

p-studentNumber=’\0′;

for(i=0;i20;i++)

p-studentName=’\0′;

for(i=0;i20;i++)

p-className=’\0′;

p-mark1=0.0;

p-mark2=0.0;

p-mark3=0.0;

p-next=NULL;

return p;

}

/*取得用户输入的学生信息*/

void GetInformation(STUDENT *t)

{

printf(“请输入学生学号:”);

scanf(“%s”,t-studentNumber);

printf(“请输入学生姓名:”);

scanf(“%s”,t-studentName);

printf(“请输入该生所在班级:”);

scanf(“%s”,t-className);

printf(“请输入第1门成绩:”);

scanf(“%f”,(t-mark1));

printf(“请输入第2门成绩:”);

scanf(“%f”,(t-mark2));

printf(“请输入第3门成绩:”);

scanf(“%f”,(t-mark3));

}

/*在链表的结尾处增加一个结点*/

void InsertOneNode(STUDENT *t)

{

STUDENT *p;

p=headLink;

while(p-next)

{

p=p-next;

}

p-next=t;

}

/*根据用户输入的学生姓名显示该学生的信息*/

void DesplayInfoBystudentName(void)

{

STUDENT *p;

char studentName[20];

char flag=0;

p=headLink-next;

printf(“请输入学生姓名:”);

scanf(“%s”,studentName);

while(p)

{

if(strcmp(p-studentName,studentName)==0)

{system(“cls”);

printf(“\t学号\t姓名\t班级\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n”);

DesplayOneNode(p);

flag=1;

break;

}

p=p-next;

}

if(!flag) {system(“cls”);

printf(“\t 对不起,不存在姓名为 %s 的学生\n”,studentName);}

}

/*根据用户输入的学号显示该学生的信息*/

void DesplayInfoBystudentNumber(void)

{

STUDENT *p;

char studentNumber[20];

char flag=0;

p=headLink-next;

printf(“请输入学生学号:”);

scanf(“%s”,studentNumber);

while(p)

{

if(strcmp(p-studentNumber,studentNumber)==0)

{ system(“cls”);

printf(“\t学号\t姓名\t班级\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n”);

DesplayOneNode(p);

flag=1;

break;

}

p=p-next;

}

if(!flag) {system(“cls”);

printf(“\t 对不起,不存在学号为 %s 的学生\n”,studentNumber);

}}

/*输出一个结点的信息*/

void DesplayOneNode(STUDENT *t)

{

printf(“\t%s\t”,t-studentNumber);

printf(“%s\t”,t-studentName);

printf(“%s\t”,t-className);

printf(“%.2f\t”,t-mark1);

printf(“%.2f\t”,t-mark2);

printf(“%.2f\t”,t-mark3);

printf(“%.2f\t”,t-mark1+t-mark2+t-mark3);

printf(“%.2f\t\n”,(t-mark1+t-mark2+t-mark3)/3);

}

/*根据用户输入的学号删除该学生*/

void DeleteNodeBystudentNumber(void)

{

char studentNumber[10];

STUDENT *p,*q;

char flag=0;

printf(“请输入要删除的学生学号:”);

scanf(“%s”,studentNumber);

p=headLink;

q=headLink-next;

while(q)

{

if(strcmp(q-studentNumber,studentNumber)==0)

{

p-next=q-next;

free(q);

flag=1;

break;

}

p=p-next;

q=q-next;

}

if(!flag)

{ system(“cls”);

printf(“\t 不存在该学号的学生\n”);

return;

}

system(“cls”);

printf(“\t 成功删除\n”);

}

/*显示所有学生的信息*/

void OutputInformation(void)

{

STUDENT *p;

p=headLink-next;

if(p==NULL)

{

printf(“\t 现在没有学生信息,请先输入学生信息\n\n”);

return;

}

printf(“\t学号\t姓名\t班级\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n”);

while(p)

{

DesplayOneNode(p);

p=p-next;

}

}

/*根据输入的姓名修改成绩*/

void ChangeMarkByName(void)

{

STUDENT *p;

char studentName[20];

char flag=0;

float mark1,mark2,mark3;

p=headLink-next;

printf(“请输入学生姓名:”);

scanf(“%s”,studentName);

while(p)

{

if(strcmp(p-studentName,studentName)==0)

{

printf(“请输入新的第1门成绩:\n”);

scanf(“%f”,mark1);

printf(“请输入新的第2门成绩:\n”);

scanf(“%f”,mark2);

printf(“请输入新的第3门成绩:\n”);

scanf(“%f”,mark3);

p-mark1=mark1;

p-mark2=mark2;

p-mark3=mark3;

flag=1;

printf(“修改成功\n”);

break;

}

p=p-next;

}

if(!flag) {system(“cls”);

printf(“\t 对不起,不存在姓名为 %s 的学生\n”,studentName);

} }

/*根据输入的姓名修改成绩*/

void ChangeMarkByNumber(void)

{

STUDENT *p;

char studentNumber[20];

char flag=0;

float mark1,mark2,mark3;

p=headLink-next;

printf(“请输入学生学号:”);

scanf(“%s”,studentNumber);

while(p)

{

if(strcmp(p-studentNumber,studentNumber)==0)

{

printf(“请输入新的第1门成绩:\n”);

scanf(“%f”,mark1);

printf(“请输入新的第2门成绩:\n”);

scanf(“%f”,mark2);

printf(“请输入新的第3门成绩:\n”);

scanf(“%f”,mark3);

p-mark1=mark1;

p-mark2=mark2;

p-mark3=mark3;

flag=1;

printf(“修改成功\n”);

break;

}

p=p-next;

}

if(!flag){system(“cls”);

printf(“\t 对不起,不存在学号为 %s 的学生\n”,studentNumber);

}}

/*保存链表数据到文件中*/

void SaveLinkToFile(void)

{

STUDENT *p;

FILE *fp;

p=headLink-next;

if(p==NULL)

{

printf(“\t 现在没有学生信息,请先输入学生信息\n\n”);

return;

}

fp=fopen(“student.txt”,”w+”);

if(!fp)

{

printf(“文件不存在\n”);

return;

}

while(p)

{

fprintf(fp,”%s %s %s %f %f %f\n”,p-studentNumber,p-studentName,p-className,p-mark1,p-mark2,p-mark3);

p=p-next;

}

fclose(fp);

}

/*显示优秀和不及格学生成绩*/

void DesplayMarkSegment(void)

{

STUDENT *p;

int count=0;

p=headLink-next;

printf(“\t60分以下(不及格)的学生成绩如下:\n”);

printf(“\t学号\t姓名\t班级\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n\n”);

while(p)

{

if((6((int)(p-mark1/10)))||(6((int)(p-mark2/10)))||(6((int)(p-mark3/10))))/*只要有一科不及格就认为该生不及格*/

{

count++;

DesplayOneNode(p);

}

p=p-next;

}

printf(“\t不及格的学生一共有%d人\n”,count);

p=headLink-next;

printf(“\t成绩优秀的学生成绩如下:\n”);

printf(“\t学号\t姓名\t班级\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n\n”);

count=0;

while(p)

{

if((8=((int)(p-mark1/10)))(8=((int)(p-mark2/10)))(8=((int)(p-mark3/10))))

{

count++;

DesplayOneNode(p);

}

p=p-next;

}

printf(“\t成绩优秀的学生一共有%d人\n”,count);

}

/*按总成绩排序*/

void paixu(void)

{

STUDENT exchange,*r,*p,*q;

r=headLink-next;

if(r==NULL)

{

printf(“\t 现在还没学生信息,请先输入学生信息\n”);

return;

}

while(r)/*两层while循环实现排序*/

{

p=r;

q=r-next;

while(q)

{

if((q-mark1+q-mark2+q-mark3)(p-mark1+p-mark2+p-mark3))

{

strcpy(exchange.studentNumber,q-studentNumber);/*先复制q结点信息到exchange*/

strcpy(exchange.studentName,q-studentName);

strcpy(exchange.className,q-className);

exchange.mark1=q-mark1;

exchange.mark2=q-mark2;

exchange.mark3=q-mark3;

strcpy(q-studentNumber,p-studentNumber);/*再复制p结点信息到q*/

strcpy(q-studentName,p-studentName);

strcpy(q-className,p-className);

q-mark1=p-mark1;

q-mark2=p-mark3;

q-mark3=p-mark3;

strcpy(p-studentNumber,exchange.studentNumber);/*最后复制exchange结点信息到p*/

strcpy(p-studentName,exchange.studentName);

strcpy(p-className,exchange.className);

p-mark1=exchange.mark1;

p-mark2=exchange.mark2;

p-mark3=exchange.mark3;

}

q=q-next;

}

r=r-next;

}

OutputInformation();

}

我用C语言写了一个学生管理系统,就是删除功能不知如何编写,想问问如何实现对结构体数组其中的一项清空?

很简单。

假设你定义的结构体数组大小为MaxSize=1000,你可以定义一个当前数组中的学生数Size,

该数值随着录入的学生信息的多少而变化。

现在假设数组中有500个学生的信息,也即Size=500;你需要删除其中一个学生的资料。

通过查找你得到这个学生的信息存储在第100号结构中,

那么你将101号的学生的信息覆盖到100号结构中(例如:student[99]=student[100]),再将102号的学生的信息复制到101号结构中,依次复制,直到将500号结构中的学生信息复制到499号结构中。然后改写Size=499。

上面的复制过程可以通过一个for循环来实现,100号之前的结构都不用动。

这样,当前学生结构数组中就少了原来100号结构中的学生信息,也就是删除掉了。

用c语言编写学生管理系统时如何实现对学生信息的删除操作???

遍历所有学生信息。(可以按学号查询)

删除指定的学生信息。

将剩余的信息重新写入到文件中。

可以加群讨论,IT交流群 278697954。

原创文章,作者:VXIY,如若转载,请注明出处:https://www.506064.com/n/135111.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
VXIYVXIY
上一篇 2024-10-04 00:10
下一篇 2024-10-04 00:10

相关推荐

  • 银行资金管理系统总结

    银行资金管理系统是银行日常业务运营的核心支撑系统,主要负责处理银行的资金流动、结算、清算等业务。本文将从功能特点、技术架构、安全性以及未来发展趋势等多个方面对银行资金管理系统进行详…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • 北化教务管理系统介绍及开发代码示例

    本文将从多个方面对北化教务管理系统进行介绍及开发代码示例,帮助开发者更好地理解和应用该系统。 一、项目介绍 北化教务管理系统是一款针对高校学生和教职工的综合信息管理系统。系统实现的…

    编程 2025-04-29
  • 光模块异常,SFP未认证(entityphysicalindex=6743835)——解决方案和

    如果您遇到类似optical module exception, sfp is not certified. (entityphysicalindex=6743835)的问题,那么…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • 数据结构学生成绩管理系统

    在现代教育中,学生成绩的管理已经成为了一个不可或缺的部分。借助数据结构,一个高效、可靠的学生成绩管理系统可以被轻松实现。 一、数据结构的选择 在构建学生成绩管理系统时,选择合适的数…

    编程 2025-04-29
  • Python模块下载与安装指南

    如果想要扩展Python的功能,可以使用Python模块来实现。但是,在使用之前,需要先下载并安装对应的模块。本文将从以下多个方面对Python模块下载与安装进行详细的阐述,包括使…

    编程 2025-04-29

发表回复

登录后才能评论