當前位置:首頁 » 編程語言 » c語言學生管理系統設計

c語言學生管理系統設計

發布時間: 2024-12-13 15:57:42

A. c語言課程設計 學生成績管理系統

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int shoudsave=0; /* */
struct student
{
char num[10];/* 學號 */
char name[20];
char class[10];
char term[2];
int ygrade;
int cgrade;
int mgrade;
int egrade;
int totle;
int ave;
char neartime[10];/* 最近更新時間 */
};

typedef struct node
{
struct student data;
struct node *next;
}Node,*Link;

void menu()
{
printf("********************************************************************************");
printf("\t1登記學生資料\t\t\t\t\t2刪除學生資料\n");
printf("\t3查詢學生資料\t\t\t\t\t4修改學生資料\n");
printf("\t5保存學生資料\t\t\t\t\t0退出系統\n");
printf("********************************************************************************\n");
}

void printstart()
{
printf("-----------------------------------------------------------------------\n");
}
void Wrong()
{
printf("\n=====>提示:輸入錯誤!\n");
}

void Nofind()
{
printf("\n=====>提示:沒有找到該學生!\n");
}

void printc() /* 本函數用於輸出中文 */
{
printf(" 學號\t 姓名 班級 學期 語文成績 英語成績 數學成績 C語言成績 總分 平均分\n");
}

void printe(Node *p)/* 本函數用於輸出英文 */
{
printf("%-12s%s\t%s\t\%s\t%d\t%d\t%d\t %d\t %d\n",p->data.num,p->data.name,p->data.class,p->data.term,p->data.ygrade,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.totle,p->data.ave);
}

Node* Locate(Link l,char findmess[],char nameornum[]) /* 該函數用於定位連表中符合要求的接點,並返回該指針 */
{
Node *r;
if(strcmp(nameornum,"num")==0) /* 按學號查詢 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.num,findmess)==0)
return r;
r=r->next;
}
}
else if(strcmp(nameornum,"name")==0) /* 按姓名查詢 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.name,findmess)==0)
return r;
r=r->next;
}
}
return 0;
}

void Add(Link l) /* 增加學生 */
{
Node *p,*r,*s;
char num[10];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; /* 將指針置於最末尾 */
while(1)
{
printf("請你輸入學號(以'0'返回上一級菜單:)");
scanf("%s",num);
if(strcmp(num,"0")==0)
break;
while(s)
{
if(strcmp(s->data.num,num)==0)
{
printf("=====>提示:學號為'%s'的學生已經存在,若要修改請你選擇'4 修改'!\n",num);
printstart();
printc();
printe(s);
printstart();
printf("\n");
return;
}
s=s->next;
}

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

strcpy(p->data.num,num);
printf("請你輸入姓名:");
scanf("%s",p->data.name);
getchar();
printf("請你輸入班級:");
scanf("%s",p->data.class);
getchar();
printf("請你輸入學期:");
scanf("%s",p->data.term);
getchar();
printf("請你輸入語文成績:");
scanf("%d",&p->data.ygrade);
getchar();
printf("請你輸入c語言成績:");
scanf("%d",&p->data.cgrade);
getchar();
printf("請你輸入數學成績:");
scanf("%d",&p->data.mgrade);
getchar();
printf("請你輸入英語成績:");
scanf("%d",&p->data.egrade);
getchar();
p->data.totle=p->data.ygrade+p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle / 3;
/* 信息輸入已經完成 */
p->next=NULL;
r->next=p;
r=p;
shoudsave=1;

}
}

void Qur(Link l) /* 查詢學生 */
{
int sel;
char findmess[20];
Node *p;

if(!l->next)
{
printf("\n=====>提示:沒有資料可以查詢!\n");
return;

}
printf("\n=====>1按學號查找\n=====>2按姓名查找\n");
scanf("%d",&sel);
if(sel==1)/* 學號 */
{
printf("請你輸入要查找的學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("\t\t\t\t查找結果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else if(sel==2) /* 姓名 */
{
printf("請你輸入要查找的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
printf("\t\t\t\t查找結果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else
Wrong();

}

void Del(Link l) /* 刪除 */
{
int sel;
Node *p,*r;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:沒有資料可以刪除!\n");
return;
}
printf("\n=====>1按學號刪除\n=====>2按姓名刪除\n");
scanf("%d",&sel);
if(sel==1)
{
printf("請你輸入要刪除的學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:該學生已經成功刪除!\n");
shoudsave=1;
}
else
Nofind();
}
else if(sel==2)
{
printf("請你輸入要刪除的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:該學生已經成功刪除!\n");
shoudsave=1;
}
else
Nofind();
}
else
Wrong();
}

void Modify(Link l)
{
Node *p;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:沒有資料可以修改!\n");
return;
}
printf("請你輸入要修改的學生學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("請你輸入新學號(原來是%s):",p->data.num);
scanf("%s",p->data.num);
printf("請你輸入新姓名(原來是%s):",p->data.name);
scanf("%s",p->data.name);
getchar();
printf("請你輸入新班級(原來是%s):",p->data.class);
scanf("%s",p->data.class);
getch();
printf("請你輸入新學期(原來是%s):",p->data.term);
scanf("%s",p->data.term);
getchar();
printf("請你輸入新的語文成績(原來是%d分):",p->data.ygrade);
scanf("%d",&p->data.ygrade);
getchar();
printf("請你輸入新的c語言成績(原來是%d分):",p->data.cgrade);
scanf("%d",&p->data.cgrade);
getchar();
printf("請你輸入新的數學成績(原來是%d分):",p->data.mgrade);
scanf("%d",&p->data.mgrade);
getchar();
printf("請你輸入新的英語成績(原來是%d分):",p->data.egrade);
scanf("%d",&p->data.egrade);
p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle/3;
printf("\n=====>提示:資料修改成功!\n");
shoudsave=1;
}
else
Nofind();

}

void Disp(Link l)
{
int count=0;
Node *p;
p=l->next;

if(!p)
{
printf("\n=====>提示:沒有資料可以顯示!\n");
return;
}
printf("\t\t\t\t顯示結果\n");
printstart();
printc();
printf("\n");
while(p)
{
printe(p);
p=p->next;
}
printstart();
printf("\n");
}

void Tongji(Link l)
{
Node *pm,*pe,*pc,*pa; /* 用於指向不及格學生的接點 */
Node *r=l->next;
if(!r)
{
printf("\n=====>提示:沒有資料可以統計!\n");
return ;
}
pm=pe=pc=pa=r;
while(r!=NULL)
{
if(r->data.ygrade<60)
pa=r;
if(r->data.cgrade<60)
pc=r;
if(r->data.mgrade<60)
pm=r;
if(r->data.egrade<60)
pe=r;
r=r->next;
}
printf("------------------------------統計結果--------------------------------\n");
printf("語文不及格:\t%s %d分\n",pe->data.name,pe->data.ygrade);
printf("英語不及格:\t%s %d分\n",pe->data.name,pe->data.egrade);
printf("數學不及格:\t%s %d分\n",pm->data.name,pm->data.mgrade);
printf("c語言不及格:\t%s %d分\n",pc->data.name,pc->data.cgrade);
printstart();
}

void Sort(Link l)
{
Link ll;
Node *p,*rr,*s;

ll=(Link)malloc(sizeof(Node)); /* 用於做新的連表 */
ll->next=NULL;

if(l->next==NULL)
{
printf("\n=====>提示:沒有資料可以排序!\n");
return ;
}
p=l->next;
while(p)
{
s=(Node*)malloc(sizeof(Node)); /* 新建接點用於保存信息 */
s->data=p->data;
s->next=NULL;

rr=ll;
while(rr->next!=NULL && rr->next->data.totle>=p->data.totle)
rr=rr->next;
if(rr->next==NULL)
rr->next=s;
else
{
s->next=rr->next;
rr->next=s;
}
p=p->next;
}
free(l);
l->next=ll->next;
printf("\n=====>提示:排序已經完成!\n");
}

void Save(Link l)
{
FILE* fp;
Node *p;
int flag=1,count=0;
fp=fopen("c:\\student","wb");
if(fp==NULL)
{
printf("\n=====>提示:重新打開文件時發生錯誤!\n");
exit(1);
}
p=l->next;

while(p)
{
if(fwrite(p,sizeof(Node),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("\n=====>提示:文件保存成功.(有%d條記錄已經保存.)\n",count);
shoudsave=0;
}
fclose(fp);
}

void main()
{
Link l;/* 連表 */
FILE *fp; /* 文件指針 */
int sel;
char ch;
char jian;

int count=0;
Node *p,*r;

l=(Node*)malloc(sizeof(Node));
l->next=NULL;
r=l;

fp=fopen("C:\\student","rb");
if(fp==NULL)
{
printf("\n=====>提示:文件還不存在,是否創建?(y/n)\n");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
fp=fopen("C:\\student","wb");
else
exit(0);
}
printf("\n=====>提示:文件已經打開,正在導入記錄......\n");

while(!feof(fp))
{
p=(Node*)malloc(sizeof(Node));
if(fread(p,sizeof(Node),1,fp)) /* 將文件的內容放入接點中 */
{
p->next=NULL;
r->next=p;
r=p; /* 將該接點掛入連中 */
count++;
}
}

fclose(fp); /* 關閉文件 */
printf("\n=====>提示:記錄導入完畢,共導入%d條記錄.\n",count);

while(1)
{
menu();
printf("請你選擇操作:");
scanf("%d",&sel);

if(sel==0)
{
if(shoudsave==1)
{ getchar();
printf("\n=====>提示:資料已經改動,是否將改動保存到文件中(y/n)?\n");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save(l);
}
printf("\n=====>提示:你已經退出系統,再見!\n");
break;
}
switch(sel)
{
case 1:Add(l);break; /* 增加學生 */
case 2:Del(l);break;/* 刪除學生 */
case 3:Qur(l);break;/* 查詢學生 */
case 4:Modify(l);break;/* 修改學生 */
case 5:Save(l);break;/* 保存學生 */
case 9:printf("\t\t\t==========幫助信息==========\n");break;
default: Wrong();getchar();break;
}
}
}

B. 如何用C語言編寫學生信息管理系統

參考如下學生信息管理系統的C源代碼吧。

#include<stdio.h>
#include<string.h>
/*定義學生結構體*/
structStudent
{
charID[20];
charName[20];
floatMark1;
floatMark2;
floatMark3;
floatAverage;
};
/*聲明學生數組及學生數量*/
structStudentstudents[1000];
int腔源num=0;
/*求平均值*/
floatAvg(structStudentstu)
{
return(stu.Mark1+stu.Mark2+stu.Mark3)/3;
}
/*通過學號返回數組下標*/
intStudent_SearchByIndex(charid[])
{
inti;
for(i=0;i<num;i++)
{
if(strcmp(students[i].ID,id)==0)
{
returni;
}
}
return-1;
}
/*通過姓名返回數組下標*/
intStudent_SearchByName(charname[])
{
inti;
for(i=0;i<num;i++)
{
if(strcmp(students[i].Name,name)==0)
{
returni;
}
}
return-1;
}
/*顯示單條學生記錄*/
voidStudent_DisplaySingle(intindex)
{
printf("%10s%10s%8s%8s%8s%10s ","學號","姓名","成績","成績","成績","平均成績");
printf("------------------------------------------------------------- ");
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f ",students[index].ID,students[index].Name,
students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);
}
/*插入學生信息*/
voidStudent_Insert()
{
while(1)
{
printf("請輸入學號:");
scanf("%s",&students[num].ID);
getchar();
printf("請銀脊輸入姓名:");
scanf("%s",&students[num].Name);
getchar();
printf("請輸入成績:");
scanf("%f",&students[num].Mark1);
getchar();
printf("請輸入成績:");
scanf("%f",&students[num].Mark2);
getchar();
printf("請輸入成績:");
scanf("%f",&students[num].Mark3);
getchar();
students[num].Average=Avg(students[num]);
num++;
printf("是否繼續?(y/n)");
if(getchar()=='n')
{
break;
}
}
}
/*修改學生信息*/
voidStudent_Modify()
{
//floatmark1,mark2,mark3;
while(1)
{
charid[20];
intindex;
printf("請輸入要修改的學生的學號:");
scanf("%s",&id);
getchar();
index=Student_SearchByIndex(id);
if(index==-1)
鋒圓滲{
printf("學生不存在! ");
}
else
{
printf("你要修改的學生信息為: ");
Student_DisplaySingle(index);
printf("--請輸入新值-- ");
printf("請輸入學號:");
scanf("%s",&students[index].ID);
getchar();
printf("請輸入姓名:");
scanf("%s",&students[index].Name);
getchar();
printf("請輸入成績:");
scanf("%f",&students[index].Mark1);
getchar();
printf("請輸入成績:");
scanf("%f",&students[index].Mark2);
getchar();
printf("請輸入成績:");
scanf("%f",&students[index].Mark3);
getchar();
students[index].Average=Avg(students[index]);
}
printf("是否繼續?(y/n)");
if(getchar()=='n')
{
break;
}
}
}
/*刪除學生信息*/
voidStudent_Delete()
{
inti;
while(1)
{
charid[20];
intindex;
printf("請輸入要刪除的學生的學號:");
scanf("%s",&id);
getchar();
index=Student_SearchByIndex(id);
if(index==-1)
{
printf("學生不存在! ");
}
else
{
printf("你要刪除的學生信息為: ");
Student_DisplaySingle(index);
printf("是否真的要刪除?(y/n)");
if(getchar()=='y')
{
for(i=index;i<num-1;i++)
{
students[i]=students[i+1];//把後邊的對象都向前移動
}
num--;
}
getchar();
}
printf("是否繼續?(y/n)");
if(getchar()=='n')
{
break;
}
}
}
/*按姓名查詢*/
voidStudent_Select()
{
while(1)
{
charname[20];
intindex;
printf("請輸入要查詢的學生的姓名:");
scanf("%s",&name);
getchar();
index=Student_SearchByName(name);
if(index==-1)
{
printf("學生不存在! ");
}
else
{
printf("你要查詢的學生信息為: ");
Student_DisplaySingle(index);
}
printf("是否繼續?(y/n)");
if(getchar()=='n')
{
break;
}
}
}
/*按平均值排序*/
voidStudent_SortByAverage()
{
inti,j;
structStudenttmp;
for(i=0;i<num;i++)
{
for(j=1;j<num-i;j++)
{
if(students[j-1].Average<students[j].Average)
{
tmp=students[j-1];
students[j-1]=students[j];
students[j]=tmp;
}
}
}
}
/*顯示學生信息*/
voidStudent_Display()
{
inti;
printf("%10s%10s%8s%8s%8s%10s ","學號","姓名","成績","成績","成績","平均成績");
printf("------------------------------------------------------------- ");
for(i=0;i<num;i++)
{
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f ",students[i].ID,students[i].Name,
students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);
}
}
/*將學生信息從文件讀出*/
voidIO_ReadInfo()
{
FILE*fp;
inti;
if((fp=fopen("Database.txt","rb"))==NULL)
{
printf("不能打開文件! ");
return;
}
if(fread(&num,sizeof(int),1,fp)!=1)
{
num=-1;
}
else
{
for(i=0;i<num;i++)
{
fread(&students[i],sizeof(structStudent),1,fp);
}
}
fclose(fp);
}
/*將學生信息寫入文件*/
voidIO_WriteInfo()
{
FILE*fp;
inti;
if((fp=fopen("Database.txt","wb"))==NULL)
{
printf("不能打開文件! ");
return;
}
if(fwrite(&num,sizeof(int),1,fp)!=1)
{
printf("寫入文件錯誤! ");
}
for(i=0;i<num;i++)
{
if(fwrite(&students[i],sizeof(structStudent),1,fp)!=1)
{
printf("寫入文件錯誤! ");
}
}
fclose(fp);
}
/*主程序*/
voidmain()
{
intchoice;
IO_ReadInfo();
while(1)
{
/*主菜單*/
printf(" ------學生成績管理系統------ ");
printf("1.增加學生記錄 ");
printf("2.修改學生記錄 ");
printf("3.刪除學生記錄 ");
printf("4.按姓名查詢學生記錄 ");
printf("5.按平均成績排序 ");
printf("6.退出 ");
printf("請選擇(1-6):");
scanf("%d",&choice);
getchar();
switch(choice)
{
case1:
Student_Insert();
break;
case2:
Student_Modify();
break;
case3:
Student_Delete();
break;
case4:
Student_Select();
break;
case5:
Student_SortByAverage();
Student_Display();
break;
case6:
exit(0);
break;
}
IO_WriteInfo();
}
}

C. 用C語言編寫一個學生管理系統。

概述

  • 單純只用多個數組管理學生成績信息,不使用結構體,該程序最主要的難點是依據學號或總成績對學生信息進行排序,藉助了臨時數組來標記排好序的下標。

  • 運行結果如下:

輸入數據:

貼上代碼(有點多)

#include <stdio.h>

#include <stdlib.h> //exit函數頭文件

#include <string.h> //字元串相關操作頭文件

#define MAX_STUDENT 30 //最大學生數

//函數聲明,本程序共10個子函數,每個函數對應一個操作

void student_scanf(int n);

void student_printf(int n);

int student_find_name(int n);

int student_find_num(int n);

void student_sort_num(int n);

void student_sort_sum(int n);

int student_alter_num(int n);

int student_alter_name(int n);

int student_delete_num(int n);

int student_delete_name(int n);

//全局數組變數,用於存儲學生信息

char names[MAX_STUDENT][50];

int math[MAX_STUDENT];

int english[MAX_STUDENT];

int computer[MAX_STUDENT];

int sum[MAX_STUDENT];

int num[MAX_STUDENT];

//以下變數用於學生信息數組排序,作為臨時數組

int temp_num[MAX_STUDENT];

char temp_names[MAX_STUDENT][50];

int temp_math[MAX_STUDENT];

int temp_english[MAX_STUDENT];

int temp_computer[MAX_STUDENT];

int temp_sum[MAX_STUDENT];

//sort數組存儲排好序的學號或姓名下標

int sort[MAX_STUDENT];

//循環全局變數

int i, j;

//main主函數

int main(void)

{

int choice,n;

while (1)

{

printf("************************************* ");

printf("歡迎使用學生成績管理系統 ");

printf("[1] 輸入所有學生信息 ");

printf("[2] 輸出所有學生成績 ");

printf("[3] 按學號查找某個學生信息 ");

printf("[4] 按姓名查找某個學生信息 ");

printf("[5] 按學號對學生排序 ");

printf("[6] 按總成績對學生排序 ");

printf("[7] 按學號修改某個學生信息 ");

printf("[8] 按姓名修改某個學生信息 ");

printf("[9] 按學號刪除某個學生信息 ");

printf("[10] 按姓名刪除某個學生信息 ");

printf("[0] 退出程序 ");

printf("請輸入您的選擇(0 - 9):");

scanf("%d",&choice);

printf("**************************************) ");

switch (choice)

{

case 1://錄入;

printf("請輸入錄入的學生信息數: ");

scanf("%d",&n);

student_scanf(n);

break;

case 2://輸出;

student_printf(n);

break;

case 3://根據學號查找

student_find_num(n);

break;

case 4://根據姓名查找

student_find_name(n);

break;

case 5://按學號排序

student_sort_num(n);

break;

case 6://按姓名排序

student_sort_sum(n);

break;

case 7://按學號修改

student_alter_num(n);

break;

case 8://按姓名修改

student_alter_name(n);

break;

case 9://按學號刪除

student_delete_num(n);

n--;

break;

case 10://按姓名刪除

student_delete_name(n);

n--;

break;

case 0://退出程序

printf("退出程序 ");

printf("程序結束,謝謝使用! ");

exit(0);

default:

printf("您輸入的菜單有誤。請重新輸入! ");

}

}

return 0;

}

//1.輸入信息

void student_scanf(int n)

{

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

{

printf(" 請輸入第%d個學生的信息: ", i + 1);

printf(" 學號:");

scanf("%d", &num[i]);

printf(" 姓名:");

scanf("%s", names[i]);

printf(" 數學成績:");

scanf("%d", &math[i]);

printf(" 英語成績:");

scanf("%d", &english[i]);

printf(" 計算機成績:");

scanf("%d", &computer[i]);

//計算總成績

sum[i] = math[i] + english[i] + computer[i];

}

}

//2.列印信息

void student_printf(int n)

{

printf(" 學號 姓名 數學成績 英語成績 計算機成績 總成績 ");

printf("---------------------------------------------------------- ");

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

{

printf("%d %s %d %d %d %d ", num[i], names[i], math[i], english[i], computer[i], sum[i]);

}

printf("------------------------------------------------------- ");

}

//3.按學號查找

int student_find_num(int n)

{

int nums;

int result;

printf("請輸入待查找的學生學號:");

scanf("%d",&nums);

result= -1;

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

{

if (nums == num[i])

{

result = i;

break;

}

}

//最後判斷q值

if (result == -1)

{

printf("沒有該學生信息! ");

return 0;

}

else

{

//先列印表頭

printf(" 學號 姓名 數學成績 英語成績 計算機成績 總成績 ");

//再列印數據

printf("%d %s %d %d %d %d ", num[result], names[result], math[result], english[result], computer[result], sum[result]);

printf("列印出查找結果! ");

}

return 1;

}

//4.用姓名查找成績

int student_find_name(int n)

{

char name[200];

int result;

printf("請輸入待查找的學生姓名:");

scanf("%s", name);

result = -1;

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

{

if (strcmp(name, names[i]) == 0)

{

result = i;

break;

}

}

if (result == -1)

{//未找到結果

printf("沒有該學生信息! ");

return 0;

}

else//找到結果

{

printf(" 學號 姓名 數學成績 英語成績 計算機成績 總成績 ");

printf("%d %s %d %d %d %d ", num[result], names[result], math[result], english[result], computer[result], sum[result]);

printf("已完成查找! ");

}

return 1;

}

//5.按學號排序

void student_sort_num(int n)

{

int min,max;

for(i=0; i<n; ++i) //復制臨時數組

{

temp_num[i] = num[i];

}

max = 0; //查找學號最大值,將其下標存至sort數組的最後一個值中

for(j=1; j<n; j++)

{

if(temp_num[max]<temp_num[j])

max = j;

}

sort[n-1] = max; //sort數組的最後一個數

for(i=0; i<n-1; ++i)

{

min = i; //查找學號最小值

for(j=0; j<n; ++j)

{

if(temp_num[min]>temp_num[j])

min = j;

}

//sort數組記錄排序的學生信息的下標

sort[i] = min;

temp_num[min] = temp_num[max]; //利用臨時數組將查找過的學生信息的學號設為最大值,排除查找干擾

}

for(i=0; i<n; ++i) //再復制一次臨時數組

{

temp_num[i] = num[i];

strcpy(temp_names[i],names[i]);

temp_math[i] = math[i];

temp_english[i] = english[i];

temp_computer[i] = computer[i];

temp_sum[i] = sum[i];

}

for(i=0; i<n; i++) //按照下標對原數組進行修改

{

num[i] = temp_num[sort[i]];

strcpy(names[i],temp_names[sort[i]]);

math[i] = temp_math[sort[i]];

english[i] = temp_english[sort[i]];

computer[i] = temp_computer[sort[i]];

sum[i] = temp_sum[sort[i]];

}

printf("排序完畢,請按菜單鍵2查看排序結果! ");

return ;

}

//6.按總成績排序

void student_sort_sum(int n)

{

int min,max;

for(i=0; i<n; ++i) //復制臨時數組

{

temp_sum[i] = sum[i];

}

max = 0; //查找總成績最大值,將其下標存至sort數組的最後一個值中

for(j=1; j<n; j++)

{

if(temp_sum[max]<temp_sum[j])

max = j;

}

sort[n-1] = max; //sort數組的最後一個數

for(i=0; i<n-1; ++i)

{

min = i; //查找總成績最小值

for(j=0; j<n; ++j)

{

if(temp_sum[min]>temp_sum[j])

min = j;

}

//sort數組記錄排序的學生信息的下標

sort[i] = min;

temp_sum[min] = temp_sum[max]; //利用臨時數組將查找過的學生信息的總成績設為最大值,排除查找干擾

}

for(i=0; i<n; ++i) //再復制一次臨時數組

{

temp_num[i] = num[i];

strcpy(temp_names[i],names[i]);

temp_math[i] = math[i];

temp_english[i] = english[i];

temp_computer[i] = computer[i];

temp_sum[i] = sum[i];

}

for(i=0; i<n; i++) //按照下標對原數組進行修改

{

num[i] = temp_num[sort[i]];

strcpy(names[i],temp_names[sort[i]]);

math[i] = temp_math[sort[i]];

english[i] = temp_english[sort[i]];

computer[i] = temp_computer[sort[i]];

sum[i] = temp_sum[sort[i]];

}

printf("排序完畢,請按菜單鍵2查看排序結果! ");

return ;

}

//7.按學號修改學生信息

int student_alter_num(int n)

{

int nums;

int result;

printf("請輸入待修改的學生學號:");

scanf("%d",&nums);

result= -1;

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

{

if (nums == num[i])

{

result = i;

break;

}

}

//最後判斷q值

if (result == -1)

{

printf("沒有該學生信息! ");

return 0;

}

else //修改信息值

{

printf("請重新輸入該學生信息: ");

printf("學號: ");

scanf("%d",&num[result]);

printf("姓名: ");

scanf("%s",names[result]);

printf("數學成績: ");

scanf("%d",&math[result]);

printf("英語成績: ");

scanf("%d",&english[result]);

printf("計算機成績: ");

scanf("%d",&computer[result]);

sum[result] = math[result] + english[result] + computer[result];

}

return 1;

}

//8.按姓名修改學生信息

int student_alter_name(int n)

{

char name[50];

int result;

printf("請輸入待修改的學生姓名:");

scanf("%s",name);

result= -1;

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

{

if (strcmp(name,names[i])==0)

{

result = i;

break;

}

}

//最後判斷q值

if (result == -1)

{

printf("沒有該學生信息! ");

return 0;

}

else //修改信息值

{

printf("請重新輸入該學生信息: ");

printf("學號: ");

scanf("%d",&num[result]);

printf("姓名: ");

scanf("%s",names[result]);

printf("數學成績: ");

scanf("%d",&math[result]);

printf("英語成績: ");

scanf("%d",&english[result]);

printf("計算機成績: ");

scanf("%d",&computer[result]);

sum[result] = math[result] + english[result] + computer[result];

}

return 1;

}

//9.按學號刪除學生信息

int student_delete_num(int n)

{

int nums;

int result;

printf("請輸入待刪除的學生學號:");

scanf("%d",&nums);

result= -1;

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

{

if (nums == num[i])

{

result = i;

break;

}

}

//最後判斷q值

if (result == -1)

{

printf("沒有該學生信息! ");

return 0;

}

else //刪除當前學生信息即為將數組從result的位置依次前挪一個位置

{

for(i=result; i<n-1; ++i) //最後在main函數中,要將n的值減1

{

num[i] = num[i+1];

strcpy(names[i],names[i+1]);

math[i] = math[i+1];

english[i] = english[i+1];

computer[i] = computer[i+1];

sum[i] = sum[i+1];

}

}

return 1;

}

//10.按姓名刪除學生信息

int student_delete_name(int n)

{

char name[50];

int result;

printf("請輸入待刪除的學生姓名:");

scanf("%s",name);

result= -1;

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

{

if (strcmp(name,names[i])==0)

{

result = i;

break;

}

}

//最後判斷q值

if (result == -1)

{

printf("沒有該學生信息! ");

return 0;

}

else //刪除當前學生信息即為將數組從result的位置依次前挪一個位置

{

for(i=result; i<n-1; ++i) //最後在main函數中,要將n的值減1

{

num[i] = num[i+1];

strcpy(names[i],names[i+1]);

math[i] = math[i+1];

english[i] = english[i+1];

computer[i] = computer[i+1];

sum[i] = sum[i+1];

}

}

return 1;

}

D. 學生信息管理系統C語言編程

#include<stdio.h> /*I/O函數*/
#include<stdlib.h> /*其它說明*/
#include<string.h> /*字元串函數*/
#define BUFLEN 100 /* 緩沖區最大字元數 */
#define LEN 15 /* 學號和姓名最大字元數,實際請更改 */
#define N 100 /* 最大學生人數,實際請更改*/
struct record /*結構體*/
{
char code[LEN+1]; /* 學號 */
char name[LEN+1]; /* 姓名 */
int age; /* 年齡 */
char sex[3]; /* 性別 */
char time[LEN+1]; /* 出生年月 */
char add[30]; /* 家庭地址 */
char tel[LEN+1]; /* 電話號碼 */
char mail[30]; /* 電子郵件地址 */
}stu[N];
int k=1,n,m; /* 定義全局變數 */
void readfile();/* 函數聲明 */
void seek();
void modify();
void insert();
void del();
void display();
void save();
void menu();
int main()
{
while(k)
menu();
system("pause");
return 0;
}
void help()
{
printf("\n0.歡迎使用系統幫助!\n");
printf("\n1.進入系統後,先刷新學生信息,再查詢;\n");
printf("\n2.按照菜單提示鍵入數字代號;\n");
printf("\n3.增加學生信息後,切記保存按7;\n");
printf("\n4.謝謝您的使用!\n");
}
void readfile()/* 建立信息 */
{
char *p="student.txt";
FILE *fp;
int i=0;
if ((fp=fopen("student.txt","r"))==NULL)
{
printf("Open file %s error! Strike any key to exit!",p);
system("pause");
exit(0);
}
while(fscanf(fp,"%s %s%d%s %s %s %s %s",stu[i].code,stu[i].name,&stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8)
{
i++;
i=i;
}
fclose(fp);
n=i;
printf("錄入完畢!\n");
}

void seek() /*查找*/
{
int i,item,flag;
char s1[21]; /* 以姓名和學號最長長度+1為准 */
printf("------------------\n");
printf("-----1.按學號查詢-----\n");
printf("-----2.按姓名查詢-----\n");
printf("-----3.退出本菜單-----\n");
printf("------------------\n");
while(1)
{
printf("請選擇子菜單編號:");
scanf("%d",&item);
flag=0;
switch(item)
{
case 1:
printf("請輸入要查詢的學生的學號:\n");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(stu[i].code,s1)==0)
{
flag=1;
printf("學生學號 學生姓名 年齡 性別 出生年月 地址 電話 E-mail\n");
printf("--------------------------------------------------------------------\n");
printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
if(flag==0)
printf("該學號不存在!\n"); break;
case 2:
printf("請輸入要查詢的學生的姓名:\n");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(stu[i].name,s1)==0)
{
flag=1;
printf("學生學號 學生姓名 年齡 性別 出生年月 地址 電話 E-mail\n");
printf("--------------------------------------------------------------------\n");
printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
if(flag==0)
printf("該姓名不存在!\n"); break;
case 3:return;
default:printf("請在1-3之間選擇\n");
}
}
}
void modify() /*修改信息*/
{
int i,item,num;
char sex1[3],s1[LEN+1],s2[LEN+1]; /* 以姓名和學號最長長度+1為准 */
printf("請輸入要要修改的學生的學號:\n");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(stu[i].code,s1)==0) /*比較字元串是否相等*/
num=i;
printf("------------------\n");
printf("1.修改姓名\n");
printf("2.修改年齡\n");
printf("3.修改性別\n");
printf("4.修改出生年月\n");
printf("5.修改地址\n");
printf("6.修改電話號碼\n");
printf("7.修改E-mail地址\n");
printf("8.退出本菜單\n");
printf("------------------\n");
while(1)
{
printf("請選擇子菜單編號:");
scanf("%d",&item);
switch(item)
{
case 1:
printf("請輸入新的姓名:\n");
scanf("%s",s2);
strcpy(stu[num].name,s2); break;
case 2:
printf("請輸入新的年齡:\n");
scanf("%d",&stu[num].age);break;
case 3:
printf("請輸入新的性別:\n");
scanf("%s",sex1);
strcpy(stu[num].sex,sex1); break;
case 4:
printf("請輸入新的出生年月:\n");
scanf("%s",s2);
strcpy(stu[num].time,s2); break;
case 5:
printf("請輸入新的地址:\n");
scanf("%s",s2);
strcpy(stu[num].add,s2); break;
case 6:
printf("請輸入新的電話號碼:\n");
scanf("%s",s2);
strcpy(stu[num].tel,s2); break;
case 7:
printf("請輸入新的E-mail地址:\n");
scanf("%s",s2);
strcpy(stu[num].mail,s2); break;
case 8:return;
default:printf("請在1-8之間選擇\n");
}
}
}
void sort()/*按學號排序*/
{
int i,j,*p,*q,s;
char temp[10];
for(i=0;i<n-1;i++)
{
for(j=n-1;j>i;j--)
if(strcmp(stu[j-1].code,stu[j].code)>0)
{
strcpy(temp,stu[j-1].code);
strcpy(stu[j-1].code,stu[j].code);
strcpy(stu[j].code,temp);
strcpy(temp,stu[j-1].name);
strcpy(stu[j-1].name,stu[j].name);
strcpy(stu[j].name,temp);
strcpy(temp,stu[j-1].sex);
strcpy(stu[j-1].sex,stu[j].sex);
strcpy(stu[j].sex,temp);
strcpy(temp,stu[j-1].time);
strcpy(stu[j-1].time,stu[j].time);
strcpy(stu[j].time,temp);
strcpy(temp,stu[j-1].add);
strcpy(stu[j-1].add,stu[j].add);
strcpy(stu[j].add,temp);
strcpy(temp,stu[j-1].tel);
strcpy(stu[j-1].tel,stu[j].tel);
strcpy(stu[j].tel,temp);
strcpy(temp,stu[j-1].mail);
strcpy(stu[j-1].mail,stu[j].mail);
strcpy(stu[j].mail,temp);
p=&stu[j-1].age;
q=&stu[j].age;
s=*q;
*q=*p;
*p=s;
}
}
}
void insert() /*插入函數*/
{
int i=n,j,flag;
printf("請輸入待增加的學生數:\n");
scanf("%d",&m);
do
{
flag=1;
while(flag)
{
flag=0;
printf("請輸入第 %d 個學生的學號:\n",i+1);
scanf("%s",stu[i].code);
for(j=0;j<i;j++)
if(strcmp(stu[i].code,stu[j].code)==0)
{
printf("已有該學號,請檢查後重新錄入!\n");
flag=1;
break; /*如有重復立即退出該層循環,提高判斷速度*/
}
}
printf("請輸入第 %d 個學生的姓名:\n",i+1);
scanf("%s",stu[i].name);
printf("請輸入第 %d 個學生的年齡:\n",i+1);
scanf("%d",&stu[i].age);
printf("請輸入第 %d 個學生的性別:\n",i+1);
scanf("%s",stu[i].sex);
printf("請輸入第 %d 個學生的出生年月:(格式:年.月)\n",i+1);
scanf("%s",stu[i].time);
printf("請輸入第 %d 個學生的地址:\n",i+1);
scanf("%s",stu[i].add);
printf("請輸入第 %d 個學生的電話:\n",i+1);
scanf("%s",stu[i].tel);
printf("請輸入第 %d 個學生的E-mail:\n",i+1);
scanf("%s",stu[i].mail);
if(flag==0)
{
i=i;
i++;
}
}
while(i<n+m);
n+=m;
printf("錄入完畢!\n\n");
sort();
}
void del()
{
int i,j,flag=0;
char s1[LEN+1];
printf("請輸入要刪除學生的學號:\n");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(stu[i].code,s1)==0)
{
flag=1;
for(j=i;j<n-1;j++)
stu[j]=stu[j+1];
}
if(flag==0)
printf("該學號不存在!\n");
if(flag==1)
{
printf("刪除成功,顯示結果請選擇菜單6\n");
n--;
}
}
void display()
{
int i;
printf("所有學生的信息為:\n");
printf("學生學號 學生姓名 年齡 性別 出生年月 地址 電話 E-mail\n");
printf("--------------------------------------------------------------------\n");
for(i=0;i<n;i++)
{
printf("%6s %7s %5d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
}
void save()
{
int i;
FILE *fp;
fp=fopen("student.txt","w"); /*寫入*/
for(i=0;i<n;i++)
{
fprintf(fp,"%s %s %d %s %s %s %s %s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
fclose(fp);
}
void menu()/* 界面 */
{
int num;
printf("*********************系統功能菜單************************ \n");
printf("友情提醒:查詢前請先刷新系統! \n");
printf(" ---------------------- ---------------------- \n");
printf(" ********************************************* \n");
printf(" * 0.系統幫助及說明 * * 1.刷新學生信息 * \n");
printf(" ********************************************* \n");
printf(" * 2.查詢學生信息 * * 3.修改學生信息 * \n");
printf(" ********************************************* \n");
printf(" * 4.增加學生信息 * * 5.按學號刪除信息 * \n");
printf(" ********************************************* \n");
printf(" * 6.顯示當前信息 * * 7.保存當前學生信息* \n");
printf(" ********************** ********************** \n");
printf(" * 8.退出系統 * \n");
printf(" ********************** \n");
printf(" ---------------------- ---------------------- \n");
printf("請選擇菜單編號:");
scanf("%d",&num);
switch(num)
{
case 0:help();break;
case 1:readfile();break;
case 2:seek();break;
case 3:modify();break;
case 4:insert();break;
case 5:del();break;
case 6:display();break;
case 7:save();break;
case 8:k=0;break;
default:printf("請在0-8之間選擇\n");
}

E. C語言設計一個學生學籍管理系統,要求文件形式保存,且用到鏈表

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

//鏈表結點結構體聲明
typedefstructsubjects
{
charname[20];
floatscore;
}sub;

typedefstructstudent
{
intnum;
charname[20];
subsubject[3];
structstudent*next;
}stu,*pstu;

#defineSIZEsizeof(stu)

//函數申明
pstuLoadInfo();
voidPrintMenu();
pstuAddStu(pstu);
pstuDeleStu(pstu);
pstuRwrStu(pstu);
voidFindStu(pstu,char);
voidCount(pstu,char*,float,float);
voidRank(pstu,char*);
voidSaveQuit(pstu);

//主函數
intmain()
{
floatscore1,score2;
charn,j;
charsubname[20];
pstuhead,ptr;

head=LoadInfo();
ptr=head->next;

//創建菜單,進入選擇循環
while(1)
{
PrintMenu();
printf("請輸入您的選擇編號:");
scanf("%d",&n);
getchar();
switch(n)
{
case1:
{
system("cls");
j=0;
while(4!=j)
{
printf("歡迎進入信息管理版塊! ");
printf("251、添加學生 ");
printf("252、刪除學生 ");
printf("253、修改學生信息 ");
printf("254、返回 ");
printf("請輸入您的選擇編號: ");
scanf("%d",&j);
getchar();

if(1==j)head=AddStu(head);
elseif(2==j)head=DeleStu(head);
elseif(3==j)head=RwrStu(head);
elseif(4==j);
elseprintf("輸入有誤,請重新輸入! ");

}
printf("請輸入回車鍵返回主菜單!");//此處本意按任意鍵返回,但是任意鍵的話,需要按鍵A,再按回車確定
getchar(); //則會連續收到兩個按鍵,造成錯誤讀入,可以改進scanf接收字元串,
system("cls"); //以下所有getchar()、system("cls")同理
break;
}
case2:
{
//信息查詢
system("cls");
printf("歡迎進入信息查詢版塊! ");
printf("請輸入要查詢的學生編號:");
scanf("%d",&j);
getchar();
//printf("%d ",j); //檢測輸入是否成功,調試程序用
FindStu(head,j); //查詢並輸出
printf(" 請輸入回車鍵返回主菜單!");
getchar();
system("cls");
break;
}
case3:
{
//成績統計
system("cls");
printf("歡迎進入成績統計版塊! ");
printf("請輸入科目:");
scanf("%s",&subname);
getchar();
printf("請輸入分數范圍(score1,score2):");
scanf("%f,%f",&score1,&score2);
getchar();
/*printf("%s%5.2f%5.2f ",subname,
score1,score2);*///檢測輸入是否成功,調試程序用
Count(head,subname,score1,score2); //統計並輸出
printf("請輸入回車鍵返回主菜單!");
getchar();
system("cls");
break;
}
case4:
{
//成績排序
system("cls");
printf("歡迎進入成績排序版塊,請輸入科目:");
scanf("%s",&subname);
getchar();
Rank(head,subname); //排序並輸出
printf(" 請輸入回車鍵返回主菜單! ");
getchar();
system("cls");
break;
}
case5:
{
//保存退出
SaveQuit(head); //文件操作,保存並退出
free(head);
return0;
}
default:
{
printf("輸入有誤,按回車鍵重新選擇! "); //主菜單錯誤輸出檢測
getchar();
system("cls");
}
}
}


}

//載入data數據,文件操作
pstuLoadInfo()
{
intnum;
charname[20];
charsub1[20];
charsub2[20];
charsub3[20];
floatscore1;
floatscore2;
floatscore3;

charfilename[]="D:\編程學習\編程實踐\c語言課程設計1學生信息管理\data.txt";//文件名,此處為簡化編程,採用固定地址名稱,未作輸入
FILE*fp;
pstuhead,ptr;

//創建帶表頭結點的空單鏈表head,用來存放載入信息
head=(pstu)malloc(SIZE);
ptr=head;
ptr->next=NULL;


//載入data文件,存入head鏈表
if(NULL==(fp=fopen(filename,"r"))) //判斷文件是否存在及可讀
{
printf("error!");
exit(0);
}

while(!feof(fp))
{
fscanf(fp,"%d%s%s%f%s%f%s%f ",&num,&name,
&sub1,&score1,&sub2,&score2,&sub3,&score3);//讀取一行,採用格式化讀取,避免了其他各種讀取方法的數據處理問題
//該方法缺點明顯,對數據格式要求教研,故data文件規定數據格式
ptr->next=(pstu)malloc(SIZE);
ptr=ptr->next;
ptr->next=NULL;

ptr->num=num;
strcpy(ptr->name,name);
strcpy(ptr->subject[0].name,sub1);
ptr->subject[0].score=score1;
strcpy(ptr->subject[1].name,sub2);
ptr->subject[1].score=score2;
strcpy(ptr->subject[2].name,sub3);
ptr->subject[2].score=score3;

}

fclose(fp); //關閉文件,已得到保存data信息的鏈表head

returnhead;
}


//列印主菜單
voidPrintMenu()
{
printf("*************************************** ");
printf("楓楓學生信息管理系統 ");
printf("*************************************** ");
putchar(' ');
printf("菜單 ");
printf("251、信息管理 ");
printf("252、信息查詢 ");
printf("253、成績統計 ");
printf("254、成績排序 ");
printf("255、保存退出 ");
}

//添加學生
pstuAddStu(pstux)
{
charnamestu[20];
char*p;
charsubname1[20],subname2[20],subname3[20];
pstuhead,ptr;

head=x;
ptr=head;

while(NULL!=ptr->next) //遍歷鏈表,找到鏈尾結點
{
ptr=ptr->next;
}

ptr->next=(pstu)malloc(SIZE); //默認在鏈表末追加添加信息
ptr=ptr->next;
ptr->next=NULL;

printf("請輸入添加學生的信息: ");

printf("請輸入添加學生的學號:");
scanf("%d",&ptr->num);
getchar();

printf("請輸入添加學生的姓名:");
scanf("%s",namestu);
getchar();
p=namestu;
strcpy(ptr->name,p);

printf("請輸入添加學生的科目1名稱:");
scanf("%s",&subname1);
getchar();
p=subname1;
strcpy(ptr->subject[0].name,p);

printf("請輸入添加學生的科目1成績:");
scanf("%f",&ptr->subject[0].score);
getchar();

printf("請輸入添加學生的科目2名稱:");
scanf("%s",&subname2);
getchar();
p=subname2;
strcpy(ptr->subject[1].name,p);

printf("請輸入添加學生的科目2成績:");
scanf("%f",&ptr->subject[1].score);
getchar();

printf("請輸入添加學生的科目3名稱:");
scanf("%s",&subname3);
getchar();
p=subname3;
strcpy(ptr->subject[2].name,p);

printf("請輸入添加學生的科目3成績:");
scanf("%f",&ptr->subject[2].score);
getchar();

putchar(' ');
returnhead;
}

//刪除學生
pstuDeleStu(pstux)
{
intnum;
pstuhead,ptr,qtr;

head=x;
ptr=head->next;
qtr=head;

printf("請輸入要刪除的學生的學號:");
scanf("%d",&num);
getchar();

while(ptr!=NULL)
{
if(ptr->num!=num) //遍歷查找鏈表結點,未找到跳過該結點
{
ptr=ptr->next;
qtr=qtr->next;
}
else //找到則刪除結點
{
ptr=ptr->next;
qtr->next=ptr;
break;
}
}

printf("該學生信息已刪除! ");
returnhead;
}

//修改學生信息
pstuRwrStu(pstux)
{
charnamestu[20];
char*p;
charsubname1[20],subname2[20],subname3[20];
intnum;
pstuhead,ptr;

head=x;
ptr=head->next;

printf("請輸入要修改的學生的學號:");
scanf("%d",&num);
getchar();

while(ptr!=NULL)
{
if(ptr->num==num)
{
printf("已找到該學生信息,請填入修改項目:");

printf("請輸入修改學生的姓名:");
scanf("%s",namestu);
getchar();
p=namestu;
strcpy(ptr->name,p);

printf("請輸入修改學生的科目1名稱:");
scanf("%s",subname1);
getchar();
p=subname1;
strcpy(ptr->subject[0].name,p);

printf("請輸入修改學生的科目1成績:");
scanf("%f",&ptr->subject[0].score);
getchar();

printf("請輸入修改學生的科目2名稱:");
scanf("%s",subname2);
getchar();
p=subname2;
strcpy(ptr->subject[1].name,p);

printf("請輸入修改學生的科目2成績:");
scanf("%f",&ptr->subject[1].score);
getchar();

printf("請輸入修改學生的科目3名稱:");
scanf("%s",subname3);
getchar();
p=subname3;
strcpy(ptr->subject[2].name,p);

printf("請輸入修改學生的科目3成績:");
scanf("%f",&ptr->subject[2].score);
getchar();

printf("該學生信息已修改! ");
break;
}
else
{
ptr=ptr->next;
}
}

returnhead;
}

//查找學生,參數為鏈表指針,和學生學號
//不好,應該將學號輸入放進子函數,簡化主函數結構,減少子函數參數
voidFindStu(pstux,chary)
{
pstuhead,ptr;

head=x;
ptr=head->next;

while(ptr!=NULL)
{
if(ptr->num==(int)y) //因主函數中為節省空間,學號輸入採用char數據,故強行准換
{
printf("已找到該學生信息! 如下:");
printf("%03d%s%s%5.2f%s%5.2f%s%5.2f ",
ptr->num,ptr->name,ptr->subject[0].name,ptr->subject[0].score,ptr->subject[1].name,ptr->subject[1].score,ptr->subject[2].name,ptr->subject[2].score); break; //注意此處找到並輸出信息後要手動退出循環
}
else
{
ptr=ptr->next;
}
}
if(ptr==NULL) //查詢成功檢測,while循環中若找到,則ptr停留在當前學生的結點上
{
printf("未能找到該學生信息! ");
}
}


//統計科目分數區間段的學生,參數為鏈表指針,科目名稱,分數區間上下限
//同理,參數的錄入應放入子函數,簡化結構和編程
voidCount(pstux,char*y,floatq,floatp)
{
pstuhead,ptr;
charname[20];
charflag=0; //手動設置的查找結果flag

head=x;
ptr=head->next;
strcpy(name,y);

//printf("%s%5.2f%5.2f ",name,q,p); //檢測輸入參數的傳遞,調試程序用

while(ptr!=NULL) //開始查找統計,科目查找用strcmp函數比較科目字元串,返回值0為字元串相等
{ //此處while循環體中,重復的查找步驟太多,應設置科目匹配flag,參照rank()函數
if(strcmp(name,ptr->subject[0].name)==0) //通過flag將科目確認放在while之外,循環體內只做分數區間的掃描和輸出
{
if(q<=ptr->subject[0].score&&ptr->subject[0].score<=p)
{
printf("%03d%s%s%5.2f ",ptr->num,ptr->name,ptr->subject[0].name,ptr->subject[0].score);
flag++;
}
}
if(strcmp(name,ptr->subject[1].name)==0)
{
if(q<=ptr->subject[1].score&&ptr->subject[1].score<=p)
{
printf("%03d%s%s%5.2f ",ptr->num,ptr->name,ptr->subject[1].name,ptr->subject[1].score);
flag++;
}
}
if(strcmp(name,ptr->subject[2].name)==0)
{
if(q<=ptr->subject[2].score&&ptr->subject[2].score<=p)
{
printf("%03d%s%s%5.2f ",ptr->num,ptr->name,ptr->subject[2].name,ptr->subject[2].score);
flag++;
}
}

ptr=ptr->next;
}

if(flag==0)
{
printf("未能找到該課程該區間分數段的學生! ");
}
}


//學科成績排名,採用交換數據的方法,參數為鏈表指針,科目名稱
//同理參數問題
//鏈表排序問題,此處用交換結點數據方法,還有其他多種排序方法
//如,交換結點,輔助指針數組排序(未實現,過程繁雜),插入法排序等
voidRank(pstux,char*y)
{
pstuhead,ptr,qtr;
charname[20];
charlen=0;
charflag=0; //簡化演算法,設置科目查找結果判斷值,flag=0表示科目輸入為未知科目,不存在
inti=0; //i、j循環次數控制參數
intj=0;
chartemp_name[20]; //數據交換時的暫存信息變數
floattemp0,temp1,temp2;
inttemp_num;

strcpy(name,y);
head=x;

ptr=head->next;
while(ptr!=NULL) //測鏈表長度,不包括表頭結點
{
ptr=ptr->next;
len++;
}
ptr=head->next; //指針ptr用過之後記得回原位


//開始查找科目
if(strcmp(name,ptr->subject[0].name)==0) flag=1;
if(strcmp(name,ptr->subject[1].name)==0) flag=2;
if(strcmp(name,ptr->subject[2].name)==0) flag=3;
if(flag==0)
{
printf("未找到該科目!");
return;
}

//開始排序,冒泡法比較各結點數據
//此處3個並列的if用switchcase更清晰結構
if(n==1)
{
for(i=0;i<len;i++)
{
ptr=head->next->next; //每一次內循環之後,ptr、qtr必然在最後兩個節點上
qtr=head->next; //故在進行內循環之前,要重新復位ptr、qtr
for(j=0;j<len-i-1;j++)
{
if(qtr->subject[0].score<ptr->subject[0].score)
{
temp_num=qtr->num; //交換數據,因數據格式(科目順序)明確規定,故不再做科目名稱的替換
strcpy(temp_name,qtr->name);
temp0=qtr->subject[0].score;
temp1=qtr->subject[1].score;
temp2=qtr->subject[2].score;

qtr->num=ptr->num;
strcpy(qtr->name,ptr->name);
qtr->subject[0].score=ptr->subject[0].score;
qtr->subject[1].score=ptr->subject[1].score;
qtr->subject[2].score=ptr->subject[2].score;

ptr->num=temp_num;
strcpy(ptr->name,temp_name);
ptr->subject[0].score=temp0;
ptr->subject[1].score=temp1;
ptr->subject[2].score=temp2;
}
qtr=qtr->next;
ptr=ptr->next;
}
}
}

if(n==2)
{
for(i=0;i<len;i++)
{
ptr=head->next->next;
qtr=head->next;
for(j=0;j<len-i-1;j++)
{
if(qtr->subject[1].score<ptr->subject[1].score)
{
temp_num=qtr->num;
strcpy(temp_name,qtr->name);
temp0=qtr->subject[0].score;
temp1=qtr->subject[1].score;
temp2=qtr->subject[2].score;

qtr->num=ptr->num;
strcpy(qtr->name,ptr->name);
qtr->subject[0].score=ptr->subject[0].score;
qtr->subject[1].score=ptr->subject[1].score;
qtr->subject[2].score=ptr->subject[2].score;

ptr->num=temp_num;
strcpy(ptr->name,temp_name);
ptr->subject[0].score=temp0;
ptr->subject[1].score=temp1;
ptr->subject[2].score=temp2;
}
qtr=qtr->next;
ptr=ptr->next;
}
}
}

if(n==3)
{
for(i=0;i<len;i++)
{
ptr=head->next->next;
qtr=head->next;
for(j=0;j<len-i-1;j++)
{
if(qtr->subject[2].score<ptr->subject[2].score)
{
temp_num=qtr->num;
strcpy(temp_name,qtr->name);
temp0=qtr->subject[0].score;
temp1=qtr->subject[1].score;
temp2=qtr->subject[2].score;

qtr->num=ptr->num;
strcpy(qtr->name,ptr->name);
qtr->subject[0].score=ptr->subject[0].score;
qtr->subject[1].score=ptr->subject[1].score;
qtr->subject[2].score=ptr->subject[2].score;

ptr->num=temp_num;
strcpy(ptr->name,temp_name);
ptr->subject[0].score=temp0;
ptr->subject[1].score=temp1;
ptr->subject[2].score=temp2;
}
qtr=qtr->next;
ptr=ptr->next;
}
}
}

//輸出排序過後的鏈表
ptr=head->next;
while(ptr!=NULL)
{
printf("%03d%s%s%5.2f%s%5.2f%s%5.2f ",
ptr->num,ptr->name,ptr->subject[0].name,ptr->subject[0].score,
ptr->subject[1].name,ptr->subject[1].score,
ptr->subject[2].name,ptr->subject[2].score);
ptr=ptr->next;
}
}


//保存文件並退出,文件操作
voidSaveQuit(pstux)
{
pstuhead,ptr;
FILE*fp;
charfilename[]="D:\編程學習\編程實踐\c語言課程設計1學生信息管理\data.txt";
head=x;
ptr=head->next;

if(NULL==(fp=fopen(filename,"w"))) //判斷文件是否存在及可讀
{
printf("error!");
exit(0);
}

while(ptr!=NULL) //遍歷鏈表結點,按data約定格式輸出數據
{
fprintf(fp,"%03d%s%s%5.2f%s%5.2f%s%5.2f ",
ptr->num,ptr->name,ptr->subject[0].name,ptr->subject[0].score,

F. 用c語言編寫一個學生管理系統

#include<iostream>
#include<string>
#include<fstream>

#include<iomanip>
using namespace std;

class student
{
protected:
int number;
char name[20];
char sex[6];
char place[20];
char nation[6];
char birth[20];
char party[10];
char id[20];
double score[3];
public:
student *next;
student(){ }
~student(){ }
char* getname(){ return name; }
int getnumber(){ return number;}
double getscore(int i) { return score[3];}
float getg(){ return (score[0]+score[1]+score[2]); }
void input()
{
int e=1;
cout<<"\t\t\t按提示輸入:"<<endl;
cout<<"\t\t輸入編號: ";
cin>>number;
cout<<"\t\t輸入姓名: ";
cin>>name;
do
{
cout<<"\t\t輸入性別: ";
cin>>sex;
if(strcmp(sex,"男")==0 || strcmp(sex,"女")==0)
{
cout<<"\t\t輸入籍貫: ";
cin>>place;
cout<<"\t\t輸入民族: ";
cin>>nation;
cout<<"\t\t輸入生日: ";
cin>>birth;
cout<<"\t\t輸入政治面貌: ";
cin>>party;
cout<<"\t\t輸入身份證號: ";
cin>>id;
cout<<"\t\t輸入數學分數: ";
cin>>score[0];
cout<<"\t\t輸入英語分數: ";
cin>>score[1];
cout<<"\t\t輸入計算機分數: ";
cin>>score[2];
e=0;
}
else
{
cout<<"\t\t\t無此類型性別!重新輸入!"<<endl;
e=1;
}
}while(e);
return ;
}
void input(ifstream & is)
{
is>>number>>name>>sex>>place>>nation>>birth>>party>>id
>>score[0]>>score[1]>>score[2];
is.get();
}
void output()
{
cout<<"學生基本信息如下:"<<endl;
cout<<"編號:"<<number
<<" 姓名:"<<name
<<" 性別:"<<sex
<<" 籍貫:"<<place
<<" 民族:"<<nation
<<" 生日:"<<birth
<<" 政治面貌:"<<party<<endl
<<"身份證號:"<<id
<<" 數學:"<<score[0]
<<" 英語:"<<score[1]
<<" 計算機:"<<score[2]
<<" 總分:"<<getg()<<endl<<endl;
}
void output(ofstream & os)
{
os<<setw(6)<<number
<<setw(15)<<name
<<setw(6)<<sex
<<setw(20)<<place
<<setw(6)<<nation
<<setw(20)<<birth
<<setw(20)<<party
<<setw(20)<<id
<<setw(6)<<score[0]
<<setw(6)<<score[1]
<<setw(6)<<score[2]<<endl;
}
};

class school
{
public:
school(){ head=new student; head->next=NULL; key=0; }
~school(){ delete head; }
void input();
void mend();
void del();
int find(student **p,int num,char *pn="^");
void found();
void show();
void count();
void save();
void begin();
void clear();
char mainmenu();
int getkey(){ return key;}
void setkey(int k){ key=k; }
private:
student *head;
int key;
};
//錄入函數
void school::input()
{
student *p,*p2=NULL;
p=head;
int n;
while(p->next)
p=p->next;
while(n)
{
p2=new student;
p2->input();
p->next=p2;
p2->next=NULL;
p=p->next;
school::setkey(1);
cout<<"\t\t\t按1繼續,按0返回 : ";
cin>>n;
}
}
//子查找函數
int school::find(student **p1,int num,char *pn)
{
student *p;
p=head;
while(p->next)
{
(*p1)=p;
if( (p->next)->getnumber()==num||!strcmp( (p->next)->getname(),pn ) )
return 1;
p=p->next;
}
return 0;
}
//查找函數
void school::found()
{
student *p;
int num=-1,n=9;
char name[20]="^";
do
{
cout<<"\t\t1:按編號查找,2:按姓名查找: ";
cin>>n;
}while(n<1||n>2);
if(n==1)
{
cout<<"\t\t\t輸入編號: ";
cin>>num;
}
if(n==2)
{
cout<<"\t\t\t輸入姓名: ";
cin>>name;
}
if(!find(&p,num,name) )
{
cout<<"\t\t找不到你要查找的內容!"<<endl;
return;
}
(p->next)->output();
}
//刪除函數
void school::del()
{
student *p,*p2;
int num;
cout<<"\t\t\t輸入編號: ";
cin>>num;
if( !find(&p,num,"^") )
{
cout<<"\t\t找不到你要刪除的內容!"<<endl;
return;
}
(p->next)->output();
p2=p->next;
p->next=p2->next;
delete p2;
school::setkey(1);
}
//顯示函數
void school::show()
{
student *p;
p=head;
while(p->next)
{
(p->next)->output();
p=p->next;
}
}
//修改函數
void school::mend()
{
student *p;
int num=-1,n;
char name[20]="^";
do
{
cout<<"\t\t1:按編號修改,2:按姓名修改: ";
cin>>n;
}while(n<1||n>2);
if(n==1)
{
cout<<"\t\t\t輸入編號: ";
cin>>num;
}
if(n==2)
{
cout<<"\t\t\t輸入姓名: ";
cin>>name;
}
if( !find(&p,num,name) )
{
cout<<"\t\t找不到你要修改的內容!"<<endl;
return;
}
(p->next)->output();
(p->next)->input();
school::setkey(1);
}
//保存函數
void school::save()
{
student *p;
p=head;
ofstream os("student.txt",ios::out);
if (school::getkey()==1)
{
while(p->next)
{
(p->next)->output(os);
p=p->next;
}
}
cout<<"\t\t\t文件已保存! "<<endl;
school::setkey(0);
}
//初始化函數
void school::begin()
{
student *p,*p2;
p=head;
clear();
long t;
ifstream is("student.txt",ios::in);
if(!is)
{
ofstream os("student.txt",ios::out);
os.close();
return ;
}
int num=-1;
while(1)
{
num=-1;
t=is.tellg();
is>>num;
is.seekg(t);
if(num<0)
{
is.close();
return;
}
p2=new student;
p2->input(is);
p->next=p2;
p2->next=NULL;
p=p->next;
}
}
//清空函數
void school::clear()
{
student *p,*p2;
p=head->next;
while( p )
{
p2=p;
p=p->next;
delete p2;
}
}
//統計函數
void school::count()
{
student *p;
p=head;
int n=0;
double g[3]={0,0,0};
float j[3]={0,0,0};
while(p->next)
{
p=p->next;
n++;
for(int i=0;i<3;i++)
{
g[++i]=g[i]+( p->getscore(i) );
(p->getscore(i) )>=60? j[i++] : 0 ;
}
}
cout<<"\t\t\b\b\b\b數學總分:"<<g[0]<<" 平均分:"<<g[0]/n
<<" 及格率:"<<j[0]/n<<endl<<"\t\t\b\b\b\b英語總分:"<<g[1]
<<" 平均分:"<<g[1]/n<<" 及格率:"<<j[1]/n<<endl
<<"\t\t\b\b\b\b計算機總分: "<<g[2]<<" 平均分: "<<g[2]/n
<<" 及格率:"<<j[2]/n<<endl;
}
//主選菜單函數
char school::mainmenu()
{
char n[6];
cout<<"\n\n ☆☆☆☆歡迎進入高校學籍管理系統☆☆☆☆"<<endl<<endl
<<" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl
<<" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl
<<" * * 1: 錄入學生信息 * *"<<endl
<<" * * 2: 顯示學生信息 * *"<<endl
<<" * * 3: 查找學生信息 * *"<<endl
<<" * * 4: 刪除學生信息 * *"<<endl
<<" * * 5: 修改學生信息 * *"<<endl
<<" * * 6: 統計學生成績 * *"<<endl
<<" * * 7: 保存學生信息 * *"<<endl
<<" * * 0: 退出系統 * *"<<endl
<<" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl
<<" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl
<<" 請選擇:";
cin>>n;
return n[0];
}
//主函數
void main()
{
school pp;
int k=1;
char n;
pp.begin();
while(k==1)
{
n=pp.mainmenu();
switch(n)
{
case '1':pp.input(); break;
case '2':pp.show(); break;
case '3':pp.found(); break;
case '4':pp.del(); break;
case '5':pp.mend(); break;
case '6':pp.count(); break;
case '7':pp.save(); break;
case '0':
if(pp.getkey()==1)
{
cout<<"\t\t\t是否保存? 1 : 保存 0:不保存 : ";
cin>>k;
if(k==1)
pp.save();
}
pp.clear();
k=0;
break;
}
}
}

G. 用標准C語言編寫學生信息管理系統

把我之前做的給你吧,差不多的
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"conio.h"
#define N 50 //定義符號常量,代表學生人數最大值
int count=0; //全局變數,用於記錄數組的當前位置
struct student //定義結構體類型,代表學生信息*/
{
char name[9];
char number[10];
float math;
float english;
float physics;
float computer;
};
void input(struct student *arr); //函數聲明,輸入學生信息*/
void sort(struct student *arr); //函數聲明,按總分排序*/
void find(struct student *arr); //函數聲明,查找某位學生信息*/
void main()
{
char selmenu; //定義局部變數,用於記錄用戶選擇的功能編號*/
struct student stud[N]; //定義結構體數組,用於記錄學生信息*/
do //利用循環顯示界面*/
{
system("cls"); //清屏函數*/
printf("\n\n");
printf("歡迎使用學生管理系統\n");
printf("------------------------\n");
printf("學生成績管理系統 \n\n");
printf("1.輸入學生信息 \n");
printf("2.按總分進行排榜 \n");
printf("3.查找相應的學生信息 \n");
printf("4.退出學生成績管理系統 \n\n");
printf("請輸入功能選擇編號:");
fflush(stdin); //清空輸入緩沖區
scanf("%c",&selmenu); //接受用戶選擇的功能編號
switch(selmenu) //輸入不同功能編號調用相應函數來完成功能
{
case'1':
input(stud); //調用輸入學生信息函數,參數為學生信息數組名
break;
case'2':
sort(stud); //調用按總分排榜函數,參數是數組名
break;
case'3':
find(stud); //調用按學號和姓名查找學生信息函數
break;
}
}while(selmenu!='4'); //判斷是否退出
printf("*^-^* 謝謝使用 *^-^*\n"); //輸出告別詞
printf(" 任務完成 ");
getch();
}
void input(struct student *arr) //定義輸入學生信息函數
{
char ch; //用於接收用戶指令
do //利用循環,由用戶控制輸入學生成績
{
system("cls");
printf("\n輸入第%d個學生的信息:\n輸入學生姓名:",count+1);
scanf("%s",arr[count].name);
printf("\n輸入學生學號:");
scanf("%s",arr[count].number);
printf("\n輸入數學成績:");
scanf("%f",&arr[count].math);
printf("\n輸入英語成績:");
scanf("%f",&arr[count].english);
printf("\n輸入物理成績:");
scanf("%f",&arr[count].physics);
printf("\n輸入計算機成績:");
scanf("%f",&arr[count].computer);
count++; //記錄當前輸入的學生資料的個數
printf("\n是否繼續輸入(y/n)\n");
fflush(stdin); //清空輸入緩沖區
ch=getchar();
}while(ch=='y'||ch=='Y'); //判斷用戶指令,是否繼續輸入
}
void sort(struct student *arr) //定義按總分排榜函數
{
int i,j,k; //定義循環變數i,j,最小數位置k
struct student t; //定義交換臨時變數
if(count==0) //判斷數組中學生成績是否存在
printf("無學生成績,請先錄入學生信息\n");
else
{
for(i=0;i<count-1;i++) //用選擇法按總分對學生成績排序
{
k=i;
for(j=i+1;j<count;j++) //k為arr[i]到arr[count-1]中最小數的位置
if((arr[k].math+arr[k].english+arr[k].physics+arr[k].computer)<(arr[j].math+arr[j].english+arr[j].physics+arr[j].computer))
k=j;
if(k!=i) //如果最小數不是比較數列中第一個,對調
{
t=arr[k];
arr[k]=arr[i];
arr[i]=t;
}
}
printf("\n總分排榜版:\n\n");
printf("\t姓名\t學號\t數學\t英語\t物理\t計算機\t總分\t名次\n");
for(j=0;j<count;j++) //輸出按總分排榜後的學生成績和名次
printf("\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t%-5d\n",
arr[j].name,arr[j].number,arr[j].math,arr[j].english,arr[j].physics,arr[j].computer,arr[j].math+arr[j].english,j+1);
}
printf("\n回車鍵返回主程序\n");
fflush(stdin);
getchar();
}
void find(struct student *arr) //定義查找函數
{
int j;
char name[9]; //用於接收用戶輸入的學生姓名
char number[10]; //用於接收用戶輸入的學生學號
system("cls"); //清屏函數
printf("\n請輸入要查找的學生資料:\n");
printf("\n學生姓名:");
scanf("%s",name);
printf("\n學生學號:");
scanf("%s",number);
for(j=0;j<count;j++) //使用字元串比較函數查找兵書出符合條件的學生成績
{
if((strcmp(name,arr[j].name)==0)&&(strcmp(number,arr[j].number)==0))
{
printf("\n\t姓名\t學號\t數學\t英語\t物理\t計算機\t總分\n");
printf("\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\n",
arr[j].name,arr[j].number,arr[j].math,arr[j].english,arr[j].physics,arr[j].computer,arr[j].math+arr[j].english);
break;
}
}
if(j>=count) //如果沒找到,會從循環條件退出
printf("\n未找到該學生紀錄,請核對後重新查找!\n");
fflush(stdin); //清空輸入緩沖區
printf("\n回車鍵返回\n");
getchar();
}

H. 怎樣用C語言寫學生成績管理系統

程序如下: #includex0dx0avoid main()x0dx0a{x0dx0a float student[100][7];x0dx0a//student[][0]存放學號,student[][1]到student[][4]存放四門成績,x0dx0a//student[][5]存放總分,student[][6]存放平均分,student[][7]存放排名x0dx0a int n,i,j,k,p,t,count,flag;x0dx0a int a[100],b[100],c[100];x0dx0a//a[]存放排序後的下標,b[]存放總分(備份),c[]存放排名的數據x0dx0a printf("輸入學生的個數:\n");x0dx0a scanf("%d",&n);x0dx0a for(i=0;i<=n-1;i++)x0dx0a {x0dx0a printf("輸入第%d個學生的學號:",i+1);x0dx0a scanf("%f",&student[i][0]);x0dx0a for(j=0,student[i][5]=0;j<=3;j++)x0dx0a {x0dx0a printf("輸入第%d個學生的第%d門成績:",i+1,j+1);x0dx0a scanf("%f",&student[i][j+1]);x0dx0a student[i][5]+=student[i][j+1]; //計算總分x0dx0a }x0dx0a b[i]=student[i][5]; //把總分再賦給b[]數組,以後排序用x0dx0a student[i][6]=student[i][5]/4; //計算平均分x0dx0a }x0dx0a x0dx0a for(i=0;i<=n-2;i++) //對數組b[](即總分)進行排序x0dx0a for(j=0;j<=n-2-i;j++)x0dx0a {x0dx0a if(b[j]b[i+1])x0dx0a {x0dx0a c[i]=count;x0dx0a count++;x0dx0a }x0dx0a }x0dx0a printf("\n以下是統計結果:\n");x0dx0a printf("學號 s[1] s[2] s[3] s[4] 總分 平均分 排名\n");x0dx0a for(i=0;i<=n-1;i++)x0dx0a {x0dx0a printf("%.0f\t%.0f\t%.0f\t%.0f\t%.0f\t%.0f\t%f\t%d\n",student[a[i]][0],student[a[i]][1],student[a[i]][2],student[a[i]][3],student[a[i]][4],student[a[i]][5],student[a[i]][6],c[i]);x0dx0a }x0dx0a} 有疑問提出

熱點內容
機床配置導軌有什麼作用 發布:2025-01-15 08:22:51 瀏覽:460
谷歌視頻緩存怎麼提取 發布:2025-01-15 08:07:47 瀏覽:77
php多條件篩選 發布:2025-01-15 08:07:39 瀏覽:929
百度提問怎麼上傳圖片 發布:2025-01-15 08:07:33 瀏覽:838
yy圖片文件夾 發布:2025-01-15 08:01:00 瀏覽:842
可緩存影視 發布:2025-01-15 07:42:50 瀏覽:800
php函數默認值 發布:2025-01-15 07:34:31 瀏覽:239
編譯應用後apk無法打開 發布:2025-01-15 07:33:45 瀏覽:439
lc腳本編輯器 發布:2025-01-15 07:18:59 瀏覽:529
追劇腳本 發布:2025-01-15 07:00:39 瀏覽:446