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/zh-tw/n/135111.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
VXIY的頭像VXIY
上一篇 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

發表回復

登錄後才能評論