學生成績管理系統
『壹』 一個學生成績管理系統
#include<stdio.h>
#include<string.h>
#include<math.h>
struct student_type
{
char name[8];
int num;
int Class; /*把class第一個字母大寫了,因為在VC中class為類關鍵字*/
float score[3];
double ave;
}stud[4];
int main()
{
void Write (); /*把write第一個字母大寫了,因為C語言中有write函數 */
void save ();
void display ();
int n=0;
while (1)
{
printf ("\n\t\t\t\t學生成績管理\n\n");
printf ("\t1:請輸入學生的成績記錄\n");
printf ("\t2:顯示成績記錄\n");
printf ("\t3:退出系統\n");
printf ("\t輸入操作選項序號:");
scanf ("%d",&n);
switch (n)
{
case 1 : Write (); break;
case 2 : display (); break;
case 3 : printf("\n\t\t\t**************謝謝使用!**************\n");break;
default : printf("\n請輸入1、2或3!!!");
}
if (n==3) break;
}
system("pause");
return 0;
}
/* *********輸入學生成績**********/
void Write()
{
int i=0, j=0;
for(i=0; i<4 ;i++)
{
printf("\n請輸入學號 姓名 班級 :");
scanf("%d%s%d",&stud[i].num, &stud[i].name, &stud[i].Class);
printf("\n請依次輸入課程成績 :"); /*這句話從循環中移了出來 */
for(j=0; j<3; j++)
{
scanf("%f", &stud[i].score[j]);
}
stud[i].ave = (stud[i].score[0] + stud[i].score[1]
+ stud[i].score[2]) / 3;
}
printf ("\n\t\t是否保存?\n\t\t\t是:1;\n\t\t\t否:2.\n");
scanf ("%d", &i); /* i前面加& */
if (i==1)
save();
else
main();
}
/**********讀出文件資料***********/
void display ()
{
int i=0;
FILE *fp;
fp = fopen ("score.txt","r");
if ((fp=fopen("score.txt","r")) == NULL)
{
printf("cannot open this score");
exit (0);
}
for (i=0; i<4; i++)
{
fscanf (fp, "%11d%s%2d%5.2f%5.2f%5.2f%5.2f\n", &stud[i].num, &stud[i].name[i],
&stud[i].Class, &stud[i].score[0], &stud[i].score[1], &stud[i].score[2],
&stud[i].ave);
printf ("%11d%s%2d%5.2f%5.2f%5.2f%5.2f\n", stud[i].num, stud[i].name[i],
stud[i].Class, stud[i].score[0], stud[i].score[1], stud[i].score[2],
stud[i].ave);
}
fclose (fp);
}
/**********資料寫入文件**********/
void save()
{
FILE *fp ; /* fp無需賦NULL */
int i=0; /* i定義在開始會好些 * /
fp = fopen ("score.txt","w");
fprintf (fp,"學號 姓名 班級 課程1 課程2 課程3 平均成績\n");
for (i=0; i<4; i++)
{
//fwrite(&stud[i], sizeof(struct student_type), 1, fp);
fprintf (fp, "%11d%s%2d%5.2f%5.2f%5.2f%5.2lf\n", stud[i].num, stud[i].name,
stud[i].Class, stud[i].score[0], stud[i].score[1], stud[i].score[2],
stud[i].ave); /*把stud[i].name[i] 改成了stud[i].name */
}
fclose (fp);
printf ("\n\n*******************恭喜,保存完成!*******************\n\n");
}
『貳』 學生成績管理系統c
#include "stdio.h"
#include<conio.h>
#include<string.h>
#include<stdlib.h>
struct book{
char number[21];
char shuming[30];
int shuliang;
int jiage;
char zhuanye[20];
char zuozhe[26];
char chubanshe[20];
char beizhu[100];
struct book *next;
};
struct book *creat() /*創建鏈表*/
{
struct book *p,*head,*end;
head=end=p=(struct book *)malloc(sizeof(struct book));
printf("輸入教材編號為0結束輸入,每項信息都必須輸入內容。\n");
do
{
printf("\n教材編號:");
gets(p->number);
if(strcmp(p->number,"0")==0){ end->next=NULL; return head;}
end=p;
printf("\n教材名稱:");
gets(p->shuming);
printf("\n教材數量:");
scanf("%d",&p->shuliang);
printf("\n教材價格:");
scanf("%d",&p->jiage);
getchar();
printf("\n教材專業:");
gets(p->zhuanye);
printf("\n教材作者:");
gets(p->zuozhe);
printf("\n教材出版社:");
gets(p->chubanshe);
printf("\n備注:");
gets(p->beizhu);
p=(struct book *)malloc(sizeof(struct book));
end->next=p;
}while(1);
}
void save(struct book *head) /*保存鏈表*/
{FILE *fp;
struct book *p;
char filename[30];
int ch;
printf("請輸入「文件名.後綴」:");
scanf("%s",filename);
if((fp=fopen(filename,"r"))!=NULL)
{
printf("\n該文件已存在,是否覆蓋?1,是 2,否");
scanf("%d",&ch);
if(ch!=1)
return;
}
if((fp=fopen(filename,"w"))==NULL) { printf("\n文件保存失敗");getchar();return;}
p=head;
do{
fprintf(fp,"\n%s",p->number);
fprintf(fp,"\n%s",p->shuming);;
fprintf(fp,"\n%d",p->shuliang);
fprintf(fp,"\n%d",p->jiage);
fprintf(fp,"\n%s",p->zhuanye);
fprintf(fp,"\n%s",p->zuozhe);
fprintf(fp,"\n%s",p->chubanshe);
fprintf(fp,"\n%s",p->beizhu);
p=p->next;
}while(p!=NULL);
fprintf(fp," over");
printf("\n成功保存");
getchar();
getchar();
fclose(fp);
}
void print(struct book *head) /*輸出鏈表*/
{
struct book *p;
p=head;
if(p==NULL) { printf("未打開任何文件,無法顯示"); getch();return;}
do{
printf("\n\n教材編號:%s",p->number);
printf("\n教材名稱:%s",p->shuming);;
printf("\n數量:%d",p->shuliang);
printf("\n價格:%d",p->jiage);
printf("\n專業:%s",p->zhuanye);
printf("\n作者:%s",p->zuozhe);
printf("\n出版社:%s",p->chubanshe);
printf("\n備註:%s",p->beizhu);
p=p->next;
}while(p!=NULL);
}
struct book *openfile() /*打開文件*/
{struct book *p,*f,*head;
FILE *fp;
char filename[20];
printf("\n請輸入路徑,文件名,和後綴):");
scanf("%s",filename);
if((fp=fopen(filename,"r"))==NULL){ printf("\n文件找不到,請檢查是否有該文件和路徑是否正確");getchar();return NULL;}
head=f=p=(struct book *)malloc(sizeof(struct book));
fscanf(fp,"%s%s%d%d%s%s%s%s",p->number,p->shuming,&p->shuliang,&p->jiage,p->zhuanye,p->zuozhe,p->chubanshe,p->beizhu);
while(!feof(fp))
{ p=(struct book *)malloc(sizeof(struct book));
f->next=p;
fscanf(fp,"%s%s%d%d%s%s%s%s",p->number,p->shuming,&p->shuliang,&p->jiage,p->zhuanye,p->zuozhe,p->chubanshe,p->beizhu);
if(strcmp(p->number,"over")==0){ f->next=NULL; printf("\n文件打開成功,可以顯示此信息");getchar(); return head; }
f=p;
}
return head;
}
void namesort(struct book *head) /*按教材名稱排序*/
{ struct book *p,*t,*f,*h;
char ch[20];
int i;
h=t=f=p=head;
if(head==NULL) {printf("未打開任何文件");getchar();return; };
f=p->next;
for(p=head;p->next!=NULL;p=p->next)
{
for(t=head,f=t->next;t->next!=NULL;f=f->next,t=t->next)
{
if(strcmp(t->shuming,f->shuming)>0)
{
strcpy(ch,t->number );
strcpy(t->number,f->number);
strcpy(f->number,ch);
strcpy(ch,t->shuming );
strcpy(t->shuming,f->shuming);
strcpy(f->shuming,ch);
i=t->shuliang ;
t->shuliang=f->shuliang;
f->shuliang=i;
i=t->jiage ;
t->jiage=f->jiage;
f->jiage=i;
strcpy(ch,t->zhuanye);
strcpy(t->zhuanye,f->zhuanye);
strcpy(f->zhuanye,ch);
strcpy(ch,t->zuozhe);
strcpy(t->zuozhe,f->zuozhe);
strcpy(f->zuozhe,ch);
strcpy(ch,t->chubanshe);
strcpy(t->chubanshe,f->chubanshe);
strcpy(f->chubanshe,ch);
strcpy(ch,t->beizhu);
strcpy(t->beizhu,f->beizhu);
strcpy(f->beizhu,ch);
}
}
}
print(h);
}
void chubanshesort(struct book *head) /*按出版社排序*/
{ struct book *p,*t,*f,*h;
char ch[20];
int i;
h=t=f=p=head;
if(head==NULL) {printf("未打開任何文件");getchar();return; }
f=p->next;
for(p=head;p->next!=NULL;p=p->next)
{
for(t=head,f=t->next;t->next!=NULL;f=f->next,t=t->next)
{
if(strcmp(t->chubanshe,f->chubanshe)>0)
{
strcpy(ch,t->number );
strcpy(t->number,f->number);
strcpy(f->number,ch);
strcpy(ch,t->shuming );
strcpy(t->shuming,f->shuming);
strcpy(f->shuming,ch);
i=t->shuliang ;
t->shuliang=f->shuliang;
f->shuliang=i;
i=t->jiage ;
t->jiage=f->jiage;
f->jiage=i;
strcpy(ch,t->zhuanye);
strcpy(t->zhuanye,f->zhuanye);
strcpy(f->zhuanye,ch);
strcpy(ch,t->zuozhe);
strcpy(t->zuozhe,f->zuozhe);
strcpy(f->zuozhe,ch);
strcpy(ch,t->chubanshe);
strcpy(t->chubanshe,f->chubanshe);
strcpy(f->chubanshe,ch);
strcpy(ch,t->beizhu);
strcpy(t->beizhu,f->beizhu);
strcpy(f->beizhu,ch);
}
}
}
print(h);
}
void shumingsearch(struct book *head) /*按教材名稱查找*/
{ struct book *p;
char name[20];
int c;
if(head==NULL) {printf("未打開任何文件");getchar();return;}
printf("1,查找專業 2,查找教材名稱:");
scanf("%d",&c);
getchar();
if(c==2)
printf("請輸入要查找的教材名稱:");
else printf("請輸入要查找的專業:");
gets(name);
p=head;
do{ if(c==2)
if(strcmp(p->shuming,name)==0)
{
printf("教材編號:%s\n教材名稱:%s\n數量:%d\n價格:%d\n專業:%s\n作者:%s\n出版社:%s\n備註:%s\n",p->number,p->shuming,p->shuliang,p->jiage,p->zhuanye,p->zuozhe,p->chubanshe,p->beizhu);
}
if(c==1)
if(strcmp(p->zhuanye,name)==0)
{
printf("教材編號:%s\n教材名稱:%s\n數量:%d\n價格:%d\n專業:%s\n作者:%s\n出版社:%s\n備註:%s\n",p->number,p->shuming,p->shuliang,p->jiage,p->zhuanye,p->zuozhe,p->chubanshe,p->beizhu);
}
p=p->next;
}while(p!=NULL);
printf("查找完成");
return;
}
struct book *add(struct book *head) /*增加記錄*/
{ struct book *p,*e,*f,*h;
if(head==NULL) {printf("未打開任何文件");getchar(); return NULL;}
h=f=e=head;
p=(struct book *)malloc(sizeof(struct book));
printf("\n教材編號:");
gets(p->number);
printf("\n教材名稱:");
gets(p->shuming);
printf("\n數量:");
scanf("%d",&p->shuliang);
printf("\n價格:");
scanf("%d",&p->jiage);
getchar();
printf("\n專業:");
gets(p->zhuanye);
printf("\n作者:");
gets(p->zuozhe);
printf("\n出版社:");
gets(p->chubanshe);
printf("\n備注:");
gets(p->beizhu);
if(strcmp(f->number,p->number)>0) { p->next=f;h=p;printf("\n添加成功");return h;}
if(f->next==NULL) { f->next=p;p->next=NULL;printf("\n添加成功");return h;}
do{
if(f->next!=NULL)
if(strcmp(f->number,p->number)>0)
{
e->next=p;p->next=f;printf("\n添加成功");return h;
}
if(f->next==NULL)
{
f->next=p;
p->next=NULL;
printf("\n添加成功");
return h;
}
f=f->next;
e=e->next;
}while(1);
}
struct book *delet(struct book *head) /*刪除記錄*/
{ struct book *p,*e;
char num[20];
if(head==NULL) {printf("未打開任何文件");getchar();return NULL;}
printf("請輸入要刪除的教材編號:");
scanf("%s",num);
p=e=head;
if(strcmp(p->number,num)==0) { head=head->next; print(head);return head;}
else p=p->next;
do{
if(strcmp(p->number,num)==0)
{
if(p->next!=NULL)
e->next=p->next;
if(p->next==NULL) e->next=NULL;
print(head);
return head;
}
p=p->next;
e=e->next;
}while(p!=NULL);
printf("搜索完畢,未找到該記錄");
return head;
}
struct book *change(struct book *head) /*修改記錄*/
{ struct book *p;
char num[20];
if(head==NULL) {printf("未打開任何文件");getchar();return NULL;}
printf("請輸入要修改的教材編號:");
scanf("%s",num);
getchar();
p=head;
do{
if(strcmp(p->number,num)==0)
{
printf("教材編號:%s\n教材名稱:%s\n數量:%d\n價格:%d\n專業:%s\n作者:%s\n出版社:%s\n備註:%s\n",p->number,p->shuming,p->shuliang,p->jiage,p->zhuanye,p->zuozhe,p->chubanshe,p->beizhu);
printf("\n教材編號:");
gets(p->number);
printf("\n教材名稱:");
gets(p->shuming);
printf("\n數量:");
scanf("%d",&p->shuliang);
printf("\n價格:");
scanf("%d",&p->jiage);
getchar();
printf("\n專業:");
gets(p->zhuanye);
printf("\n作者:");
gets(p->zuozhe);
printf("\n出版社:");
gets(p->chubanshe);
printf("\n備注:");
gets(p->beizhu);
printf("修改成功");
return head;
}
p=p->next;
}while(p!=NULL);
printf("未找到要修改的記錄");
return head;
}
int mima()
{ FILE *fp;
char mima1[20],mima2[20];
if((fp=fopen("mima","r"))==NULL)
{ printf("尚未設置密碼請輸入:");
scanf("%s",mima1);
printf("請再次輸入密碼:");
scanf("%s",mima2);
if(strcmp(mima1,mima2)!=0) { printf("兩次密碼不一樣");return 0;}
else {
fp=fopen("mima","w");
fprintf(fp,"%s",mima1);
printf("密碼設置成功");
return 1;
}
}
printf("請輸入初始化密碼:");
scanf("%s",mima1);
fscanf(fp,"%s",mima2);
if(strcmp(mima1,mima2)==0)
{
printf("密碼正確");
printf("請輸入要刪除的文件名:");
scanf("%s",mima1);
if(remove(mima1)==0)
{
printf("刪除成功");
getchar();
return 1;
}
else {
printf("刪除失敗,請檢查是否存在該文件或路徑是否正確");
getchar();
return 0;
}
}
else {
printf("密碼錯誤");
getchar();
return 0;
}
}
void main()
{
struct book *head=NULL;
char i;
printf(" 88888888888 \n");
printf(" d88888888888b \n");
printf(" d88888 88888b \n");
printf(" d88P 88b \n");
printf(" 888' `88b \n");
printf(" 88P Y88 \n");
printf(" 88 88\n");
printf(" 88 88\n");
printf(" 88 88\n");
printf(" 88 88\n");
printf(" 88 88\n");
printf(" 88 ,aa. ,aa. 88 \n");
printf(" 88 d88b d88b 88 \n");
printf(" ,=88 Y88P Y88P 88=, \n");
printf(" ,d88P' `' _aa_ `' `Y88b, \n");
printf(" 88P' (8888) `Y88 ad88888b \n");
printf(" 88 ~^^~ 88 d88Y Y8b\n");
printf(" Yb._ _.d8 d8Y 88\n");
printf(" d88888888ba888=,. .,=8888 d88 88 \n");
printf(" ★☆88P Y88~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~★☆\n");
printf(" ★☆ 88 88 ★☆\n");
printf(" ★☆88 88 歡迎使用本教材系統,按任意鍵進入系統 ★☆\n");
printf(" ★☆ 8b,___,d8 ★☆\n");
printf(" ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n");
getch();
system("cls");
do{
printf(" ☆★☆★☆★ 教材管理系統 ☆★☆★☆★\n");
printf("m--菜單 h--幫助");
printf("\n請輸入命令:");
i=getch();
if(i=='h')
{ printf("\n1,錄入教材信息的時候,每一個項目都必須輸入相應的內容。\n2,修改,增加,刪除,查找記錄前必須先打開一個文件,修改完後必須記得保存教材信息。\n3,必須使用正確的路徑打開文件,建議保存文件時候不用輸入路徑(此時是默認路徑,即保存在程序目錄下。)");
getch();
break;
}
if(i=='m')
break;
system("cls");
}while(i!='m'||i!='h');
system("cls");
do{
printf(" ☆★☆★☆★ 教材管理系統 ☆★☆★☆★\n");
printf("┌————-———┐\n");
printf("│1,錄入教材信息│\n│2,顯示教材信息│\n│3,打開一個記錄│\n│4,編輯一個記錄│\n│5,保存教材信息│\n│6,查找記錄 │\n│s,初始化系統 │\n│e,退出系統 │\n");
printf("└———————-┘\n");
printf("\n請輸入功能編號:");
i=getch();
system("cls");
switch(i)
{
case '1': head=creat();save(head);break;
case '2': print(head);break;
case '3': head=openfile();break;
case '4': system("cls");
printf("┌————-———┐\n");
printf("│1,增加一個記錄│\n");
printf("│2,刪除一個記錄│\n");
printf("│3,修改一個記錄│\n");
printf("└———————-┘\n");
i=getch();
switch(i)
{
case '1':
head=add(head);break;
case '2':
head=delet(head);break;
case '3': head=change(head);break;
default: break;
}
break;
case '5': save(head);break;
case '6': shumingsearch(head);break;
case 's': mima();break;
case 'e': exit(0);
default :break;
}
system("cls");
}while(1);
}
我想這個程序包含了你那個成績管理系統的全部要求,但我這個是教材管理系統我想改一下就可以了,具體如何改就要看樓主的天賦咯,呵呵。參考一下吧
『叄』 c++ 學生成績管理系統
如果你是計算機系的學生真的希望你不要完全復制,做下參考自己編寫出來才能有所收獲,這是對你的將來負責;如果你只是應付一下作業,那就隨便了。
# include <iostream>
# include <fstream>
# include <string.h>
#include <conio.h>//用getch();
using namespace std;
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student類﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Student
{
public:
char name[20];
char Id[20];
int Cnum; //C課程得分
int Mnum; //數學課程得分
int Enum; //英語課程得分
int sum; //總分
Student * Next;
void Input()
{
cout<<"\t\t請輸入學生的姓名:"; cin>>name;
cout<<"\t\t請輸入學生的學號:"; cin>>Id;
cout<<"\t\t請輸入C課程的成績:"; cin>>Cnum;
cout<<"\t\t請輸入數學課程的成績:"; cin>>Mnum;
cout<<"\t\t請輸入英語課程的成績:"; cin>>Enum;
sum=Cnum+Mnum+Enum;
}
void ReadFile(istream & in)
{
in>>name>>Id>>Cnum>>Mnum>>Enum>>sum;
}
void Show()
{
cout<<"姓名:"<<name<<endl<<"學號:"<<Id<<endl<<"C++:"<<Cnum<<endl
<<"數學:"<<Mnum<<endl<<"外語:"<<Enum<<endl<<"總成績:"<<sum<<endl<<endl<<endl;
}
};
//﹌﹌﹌﹌﹌﹌﹌﹌﹌Studentmassage類﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Studentmassage
{
public:
Studentmassage();
~Studentmassage();
void ShowMenu();
void Find();
void Save();
void ModifyItem();
void RemoveItem();
void Swap(Student *,Student *);
void Sort();
//void Unpass();
int ListCount();
//void Average();
void Display()
{
for(Student * p=Head->Next;p!=End;p=p->Next)
p->Show();
cout<<"輸入任意字元!繼續……";
getch();
}
void AddItem()
{
End->Input();
End->Next=new Student;
End=End->Next;
cout<<"添加成功!"<<endl;
cout<<"輸入任意字元!繼續……";
getch();
}
private:
Student * Head,* End;
ifstream in;
ofstream out;
Student *FindItem(char * name)
{
for(Student * p=Head;p->Next!=End;p=p->Next)//匹配成功則返回上一個指針,不成功就返回空
if(!strcmp(p->Next->name,name))return p;
return NULL;
}
Student *FindID(char * Id)
{
for(Student * p=Head;p->Next!=End;p=p->Next)//匹配成功則返回上一個指針,不成功就返回空
if(!strcmp(p->Next->Id,Id))return p;
return NULL;
}
};
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌構造函數﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Studentmassage::Studentmassage()
{
Head=new Student;
Head->Next=new Student;
End=Head->Next;
in.open("sort.txt");
if(!in)
cout<<"這是一個新系統,無學生信息。請先輸入。"<<endl;
else
{
while(!in.eof())
{
End->ReadFile(in);
if(End->name[0]=='\0')break;
End->Next=new Student;
End=End->Next;
}
in.close();
cout<<"\t\t讀取學生信息成功!"<<endl;
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析構函數﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Studentmassage::~Studentmassage()
{
Save();
for(Student * temp;Head->Next!=End;)
{
temp=Head->Next;
Head->Next=Head->Next->Next;
delete temp;
}
delete Head,End;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜單﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::ShowMenu()
{
cout<<"〓〓〓〓〓〓〓〓〓〓 ☆ 學 生 成 績 管 理 系 統 ☆ 〓〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓★★★★★ ★★★★★★★ ★★★★★〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 1.增加學生成績 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 2.顯示學生成績 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 3.排序統計成績 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 4.查找學生成績 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 5.刪除學生成績 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 6.修改學生信息 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 0.安全退出系統 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"\n\t\t\n\t\t請選擇:";
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函數﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Find()
{
char name[20] ,Id[10];
int x;
Student * p=NULL;
cout<<"\n\t\t*********************************\n";
cout<<"\t\t※ 1.按學生的姓名查找\n\t\t※ 2.按學生學號查找";
cout<<"\n\t\t*********************************\n請選擇:";
cin>>x;
switch(x)
{
case 1:{cout<<"\t\t請輸入要查找的學生的姓名:";cin>>name;
if(p=FindItem(name))
{
p->Next->Show();
cout<<"輸入任意字元!繼續……";
getch();
}
else
{
cout<<"\t\t沒有找到該姓名的學生!"<<'\n'<<endl;
cout<<"輸入任意字元!繼續……";
getch();
}
}break;
case 2:
{
cout<<"\t\t請輸入要查找的學生的學號:";cin>>Id;
if(p=FindID(Id))
{
p->Next->Show();
cout<<"輸入任意字元!繼續……";
getch();
}
else
{
cout<<"\t\t沒有找到該學好的學生!"<<'\n'<<endl;
cout<<"輸入任意字元!繼續……";
getch();
}
}break;
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::ModifyItem() //修改信息
{
char name[20];
Student * p=NULL;
cout<<"\t\t請輸入要修改的人的姓名:";cin>>name;
if(p=FindItem(name))
{
cout<<"\t\t已找到學生的信息,請輸入新的信息!"<<endl;
p->Next->Input();
cout<<"修改成功!"<<endl;
cout<<"輸入任意字元!繼續……";
getch();
}
else
{
cout<<"\t\t沒有找到!"<<endl;
cout<<"輸入任意字元!繼續……";
getch();
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌刪除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::RemoveItem() // 刪除信息
{
char name[20];
Student * p=NULL,*temp=NULL;
cout<<"\t\t請輸入要刪除的學生的姓名:"<<endl;cin>>name;
if(p=FindItem(name))
{
temp=p->Next;
p->Next=p->Next->Next;
delete temp;
cout<<"\t\t刪除成功!"<<endl;
cout<<"輸入任意字元!繼續……";
getch();
}
else
{
cout<<"\t\t沒有找到!"<<endl;
cout<<"輸入任意字元!繼續……";
getch();
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Swap(Student *p1, Student *p2)//交換兩個combox變數的數據域
{
Student *temp=new Student;
strcpy(temp->name,p1->name);
strcpy(temp->Id,p1->Id);
temp->Cnum=p1->Cnum;
temp->Mnum=p1->Mnum;
temp->Enum=p1->Enum;
temp->sum=p1->sum;
strcpy(p1->name,p2->name);
strcpy(p1->Id,p2->Id);
p1->Cnum=p2->Cnum;
p1->Mnum=p2->Mnum;
p1->Enum=p2->Enum;
p1->sum=p2->sum;
strcpy(p2->name,temp->name);
strcpy(p2->Id,temp->Id);
p2->Cnum=temp->Cnum;
p2->Mnum=temp->Mnum;
p2->Enum=temp->Enum;
p2->sum=temp->sum;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int Studentmassage::ListCount()//統計當前鏈表的記錄總數,返回一個整數
{
if(! Head)
return 0;
int n=0;
for(Student * p=Head->Next;p!=End;p=p->Next)
{
n++;
}
return n;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Sort()//對當前鏈表進行排序
{
cout <<"Sorting..."<<endl;
Student *p=NULL,*p1=NULL,*k=NULL;
int n=Studentmassage::ListCount();
if(n<2)
return;
for(p=Head->Next;p!=End;p=p->Next)
for(k=p->Next;k!=End;k=k->Next)
{
if(p->sum>k->sum)
{
Studentmassage::Swap(p,k);
}
}
cout <<"排序完成!"<<endl;
getch();
return;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函數﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Save()
{
out.open("sort.txt");
for(Student *p=Head->Next;p!=End;p=p->Next)
out<<p->name<<"\t"<<p->Id<<"\t"<<p->Cnum<<"\t"
<<p->Mnum<<"\t"<<p->Enum<<"\t"<<p->sum<<'\n';
out.close();
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函數﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int main()
{
int x,i=0;
bool quit=false;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"<<endl;
for(i=0;i<3;i++)
cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
cout<<"\t\t◎★★★★【 歡迎進入學生成績管理系統 】★★★★◎"<<endl;
for(i=0;i<3;i++)
cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n"<<endl;;
Studentmassage Grade;
cout<<"按任意鍵開始……";
getch();
while(!quit)
{
system("cls");
Grade.ShowMenu();
cin>>x;
switch(x)
{
case 0:quit=true;break;
case 1:Grade.AddItem();break;
case 2:Grade.Display();break;
case 3:Grade.Sort();break;
case 4:Grade.Find();break;
case 5:Grade.RemoveItem();break;
case 6:Grade.ModifyItem();break;
}
}
return 0;
}
打字不易,如滿意,望採納。
『肆』 學生成績管理系統
學生成績管理系統C代碼
/ *頭文件* /
#包括
包括
#包括 / *其他指令* /
包括中/ *字元串函數* /
/ *內存操作函數* /
/ *字元處理函數* /
包括 / *動態地址分配函數* /
定義:LEN大小(學生)
typedef結構中,學??生/ *定義結構數組,用於緩存數據* /
{字元數[6];
字元名稱[5];
得分[3];
int總和;
>浮動平均水平;
詮釋訂單
結構STU *下;
}的學生;
/ *函數原型* /
學生的init( );/ /初始化函數* /
詮釋MENU_SELECT的(); / *菜單函數* /
學生的create(); / *創建的鏈表* /
無效列印(學生*頭); / *顯示所有記錄* /
無效搜索(學生*頭); / *找到記錄* /
學生刪除(STUDENT *頭); / *刪除記錄* / />學生排序(學生頭); / *排序* /
學生(學生*頭,新的學生*); *插入/ *插入記錄* /
無效保存(的學生頭); / *保存文件* /
學生的load(); / *讀取文件* /
/ *主函數介面* /
主()
{的學生*頭,新的;
頭的init(); / *初始化鏈表頭的值是NULL * /
(;) / *循環無限* /
{開關(menu??_select())
{
案例1:頭= create()方法的突破;
案例2:列印(頭);休息;
案例3:搜索(頭);突破;
情況下,4頭=刪除(頭);突破;
情況下5頭排序(頭);突破;
案例6:頭插入(頭,與新的);打破; / *新的返回地址* /
案例7:保存(頭);
案例8:頭=負載(
案例9:退出);突破;(0)/ *如果菜單,返回值是年底的9個項目* /
}
}
}
/ *初始化函數* /
學生的init()
{
返回NULL; / *返回一個空指針* /
}
a>
/ *菜單選擇功能* /
menu_select
{N;
結構日期d / *定義的時間結構* / /> GETDATE(&D)/ *讀取系統日期,並把它在結構上D * /
printf的(「按任意鍵進入菜單......」); / *按任意鍵進入主菜單* /
的getch(); / *讀取從鍵盤輸入一個字元,但不顯示在屏幕上* /
clrscr(); / *清屏* / /> printf(「請********************************************* *********************************** \ n「);
printf(」請\ T \噸的\ n「);
printf(」請\ n \ t \ t學生成績管理系統\ n「);
printf(」請************ ************************* MENU ************************ *************** \ n「);
printf的(」\ t \ t \ T1輸入記錄\ n「); / *輸入學生記錄* / BR /> printf的(「\ t \ t \ T2列印記錄\ n」); / *顯示* /
printf的(「\ t \ t \ T3的搜索記錄名稱\ n」); / * * /
printf的(「\ t \ t \ T4。刪除記錄\ n」); / *刪除* /
printf的(「\ t \ t \ T5。排序,使新的文件\ n「); / *排序* / <br /輸出(」\ t \ t \ T6插入記錄到列表\ n「); / *插入* /
printf的(」\ t \ t \ T7保存的文件\ n「); / *保存* /
printf的(」\ t \ t \ T8負載的文件\ n「); / *讀* /
printf的(」\ t \ T \ T9退出\ n「); / *退出* /
printf的(」\ n \ t \ t胡嘿黌\ n「);
printf的(」****** ************************************************** ************************ \ n「);
printf的(」\ t \ t \ t \ t%d \ \%d的\ \%e\「,d.da_year,d.da_mon,d.da_day); / *顯示當前系統日期* /
做{
printf的(」\ n \ t \ t \拉幅機的選擇(1?9):「);
scanf的(」%d「,&N);
}(N 9)/ *如果該選項是不減肥9 * /
回報率(N); / *返回選項的數量,主要功能調用相應的函數* /
}
/ *輸入函數* /
學生創??建()
{I,S
學生頭= NULL,* P / *定義函數這個函數返回一個指針表頭指針* /
Clrscr();
(;)
{P =(學生)的malloc(LEN); / *打開了一個新的單元* / BR />(P)/ *如果指針p是空* /
{printf的(「\ Nout的記憶。」); / *輸出內存溢出* /
回報(頭); / *返回頭指針,下同* /
}
printf的(「請輸入NUM(0:列表結束):」);
scanf的(「%s」,P-> NUM);
(P->數[0] == '0')打破; / *如果第一個字元的學生數0輸入* /
printf(「請結束輸入姓名:「);
scanf的(」%s「,P->名稱);
printf(」請輸入%D分數\ n「); / *迅速啟動分型結果* /
= 0; / *計算每個學生的總成績,初始值為0 * /
(i = 0; I <3; i + +)/ * 3個療程周期的3倍* /
{
做{
printf的(「得分%D:」,i +1);
scanf的(「%d」的,普 - >得分[I]);
(P->得分[I] 得分[I]> 100)/ *確保得分在0至100之間* /
printf的(「數據錯誤,請重新輸入\ n」);
}而(P>得分[I] [I]> 100分);
= S + P->得分[I] / *堆積門的成績* /
}
P->總和= S / *節省的總成績* /
對平均= (浮)/ 3; / *首先轉換類型轉換s轉換為float類型,然後尋求的平均* /
P->訂單= 0; / *在此之前的值排序為0 * / BR /> P> =頭; / *頭節點作為一個新的輸入節點的後繼節點* /
頭= P / *新的輸入節點作為新的頭節點* /
}
a>回報(頭);
}
/ *顯示所有記錄函數* / >無效列印(學生頭)
{i = 0; / *統計記錄數* /
學生* P / *移動指針* /
Clrscr();
P =頭; / *初始的頭指針* / /> printf(「請\ n ************************************學生****** ****************************** \ n「);
printf(」請---- -------------------------------------------------- --------------------- \ n「); <br /輸出(」|記錄|編號|名稱| SC1 SC2 SC3 |森|大道|訂單| \ n「);
printf的(」------------------------------------ ------------------------------------------- \ n「); ...... />而(p! = NULL)
{
+ +;
printf的(「|%3D |%4 |%|%-4S 3D | 3D | 3D | %的3d |%4.2f |%-5d的| \「,
,對 - >數,對 - >名稱,對 - >分數[0],對 - >分數[1],對 - > [2分],P->總之,對平均,P->訂單);
P = P->下;
}
printf的(「------ -------------------------------------------------- ----------------------- \ n「);
printf的(」*************** *********************** END ************************** ************ \ n「);
}
/ *查找錄音功能* /
無效搜索(學生*頭) BR /> {STUDENT * p; / *移動指針* /
個char [5]; / *商店的名稱的字元數組* /
Clrscr();
scanf函數
printf的(「請輸入您的名字進行搜索。\ n」);(%S「,S);
P =頭; / *分配的頭指針P * /
而(STRCMP(P->名稱,s)&& P = NULL)/ *的名稱的記錄時不看,或指針的時空* /
P = P-> / *移動指針指向下一個節點* /
(p! = NULL)/ *如果指針不為空* /
{printf(「請\ n ******** ***************************** FOUND ******************** **************** \ n「);
printf(」請---------------------- -------------------------------------------------- ------- \ n「);
printf的(」|編號|名稱| SC1 SC2 | SC3 |森|大道|訂購| \ n「);
printf的(」 - -------------------------------------------------- --------------------------- \ n「);
printf的(」| 4 |%4S |%3D |%三維|%的3d |%的3d |%4.2f |%-5d的| \ N「,
對 - >數,對 - >名稱,對 - >分數[0],對 - >分數[1],對 - >分數[2],對 - >總和,對 - >平均,對 - >順序);
printf(「請------------------- -------------------------------------------------- --------- \ n「);
printf的(」***************************** ********** END ************************************** \ N「);
}
其他
printf的(」\ n該網頁的沒有NUM%的學生在名單上。\ n「); / *學生* /
}
/ *刪除記錄的函數* /
學生*頭*刪除(學生)
學生{N; * P1 * P2 / * P1是找到要刪除一個節點的指針,P2及其前體的指針* /
字元c的s [6] / [6]用來存儲學生數,c是用於輸入字母* / </ clrscr();
printf的(「請輸入刪除的民:」);
scanf的(「%s」);
P1 = P2 =頭; / * P1和P2富最初的頭指針* /
(STRCMP(P1-NUM)&& P1 = NULL)/ *當記錄數的學校不看,或指針不為空* / /> {P2 = P1 / * P1指針的值分配給P2 P1前體指針* /
P1 = P1->; / *點p1指針到下一條記錄* /
} BR />(STRCMP(P1->民)== 0)/ *學生ID * /
{printf的(「***************** ********************* FOUND **************************** ******** \ n「);
printf(」請------------------------------ ------------------------------------------------- \ N「);
printf的(」|編號|名稱| SC1 SC2 | SC3 |森|大道|在線訂單| \ n「);
printf的(」--------- -------------------------------------------------- -------------------- \ n「);
printf的(」| 4 |%4S |%3D | 3D | 3D | 3D |%4.2f%5D | \ n「,
P1->民,P1->名稱,P1->得分[0],P1 - > [1分],P1->得分[2] ,P1->總之,P1->平均,P1->訂單);
printf的(「-------------------------- -------------------------------------------------- --- \ n「);
printf(」請*********************************** **** END ************************************** \ n「); ...... /> printf的(「你確定要刪除的學生Y / N?」); / *提示你是否要刪除,輸入y刪除n退出* /
(;)
/> {scanf函數(「%C」,&C);
(C =='N'| | C =='N'); / *如果你不刪除,然後跳出循環* /
(C =='Y'| | C =='Y')
{
(P1 ==頭)/ * P1 ==頭,被刪除節點是第一個節點* /
頭= P1->下; / *第二個節點的地址給頭* /
其他
P2->下一個= P1-> /否則,請單擊節點地址被分配到前一個節點的地址* /
N = N-1; <br /輸出(「\ nNum%的學生已被刪除。\ n」,S); /> printf的(「不要忘記保存。\ n」); / *循環後已被刪除* /
}
}
} 其他
printf的(「\ n該網頁的沒有NUM%的學生在名單上。\ n」); /,找不到節點* /
回報(頭);
}
/ *排序函數* /
學生排序(學生頭)
{INT I = 0; / *保存排名* /
學生* P1, * P2 * T,*溫度; / *定義一個臨時指針* /
溫度=頭下; / *原來的下一個節點的指針表頭的頭指針* /
頭> = NULL; / *頭節點的新表的第一個節點* /
(temp! = NULL)/ *當原表不為空,進行排??序* /
{
T =溫度; / *取前表節點* /
TEMP =溫度 - >; / *原來的頭節點的指針向後* /
P1 =頭/頭*移動指針P1指針從頭開始* /
P2 =頭; / *移動指針P2為的P1前驅體的頭指針的初始值* /
而(平均平均&& P1 = NULL)/ *成績平均比??較* /
{
P2 = P1 / *點值小進行排序,新表指針落後* /
P1 = P1->下;
}
(P1 == P2)/ * P1 == P2,點值進行排序,應該排在第一個* / BR /> {
T-> = P1;進行排序的繼任者的p * /
頭= T / * / *新的頭節點進行排序點* /
}
的else / *進行排序點應插入在中間的位置p2和p1的,例如為p的空尾之間* /
{
叔 - >下一個= p1的; / * t的後繼是p1 * /
P2-> = T / * P2的繼任噸* /
}
}
P1 =頭; / *排序頭指針被分配到P1准備填寫的排名* /
(p1! = NULL)/ * p1是不是空的,下面的操作* /
{
+ +; / *節點數量* /
P1->訂單; / *分配的節點數量的排名* /
P1 = P1->; / *指針後移* /
}
printf的(「的排序是SUCESSFUL。\ n」排序;} / *成功* /
回報(頭);
}
/ *插入記錄功能* /
學生插入(學生頭STUDENT *新)
{STUDENT * P0,P1,P2;
整數N,SUM1;
P1 =頭/ * P1點的第一個節點* /
P0 =新/ * P0點要插入節點* /
printf的(「\ n請輸入一個新的記錄。\ n」) / *提示信息記錄* /
printf的(「請輸入數量:」);
scanf函數(「%s」的新數);
printf(「輸入的名稱:「);
scanf的(」%s「的新名);
printf的(」請輸入%d的分數。\ n「);
SUM1 = 0; / *保存新的得分紀錄,初始值為0 * /
為(i = 0; I <3; i + +)
{
做{
printf的(「得分%D:「,i +1);
scanf的(」%d「的,與新>得分[]);
(新 - >得分[I]> 100 | |新 - >得分[I] <0)
printf(「請數據錯誤,請重新輸入。\ n」);
}而(新 - >評分[我]> 100 | |新 - >評分[I] <0);
SUM1 = SUM1 +新 - >得分[I] / *累計門成績* /
}
新 - >金額= SUM1; /存款總額新的記錄* /
新的平均=()SUM1 / 3;
新訂單= 0;
(頭== NULL)/ *原鏈表為空表* /
{頭= P0,P0-> = NULL;} / *節點指出P0口作為頭節點* /
其他
{((P0->平均平均)&&(P1->!= NULL))
{P2 = P1 / P2點只是P1結點* /
P1 = P1->; / * P1落後節點* /
}
(P0->平均> = P1->平均)
{如果(頭== P1)頭= P0 / *插入到原來的第一個節點* / />其他P2-> = P0 / *在插入節點* /
P0-> = P1;}
其他
{P1->下一個= P0到P2點P0-> = NULL;} / *上的最後一個節點* /
}
N = N +1; / *節點數目加1 * /
頭排序(頭); / *調用sort函數的學生的成績重新排序* /
printf的(「,已插入\ nStudent%s的。\ n」,新名);
printf的(「不要忘記保存新的文件。\ n「);
回報(頭);
}
/ *將數據保存到文件函數* /
無效保存(學生*頭)
{FILE * FP; / *定義點文件指針* /
STUDENT * p; / *定義移動指針* /
字元,OUTFILE [10];
輸出(「請輸入OUTFILE名稱,例如C:\ \成績\ n」);
scanf的(「%s」,OUTFILE);
((FP =打開(OUTFILE,「WB」) )== NULL)/ *為輸出打開一個二進制文件,只寫* /
{
printf的(「無法打開文件\ n」);
回報; / *如果您無法打開返回菜單* /
}
printf的(「\ nSaving的文件... \ n」);
P =頭; / *移動指針從頭開始* /
而(p! = NULL)/ * p不為空* /
{
FWRITE(P,LEN,1,FP); / *寫的指針記錄* /
P = P->下; / *指針後移* /
}
FCLOSE(FP); / *關閉文件* /
printf的(「將文件保存成功!\ n「);
}
/ *從文件功能* /
學生中讀取數據負載()
{STUDENT * P1 * P2 *頭= NULL; / *定義記錄指針變數* /
FILE * FP / *定義指向文件的指針* /
字元的infile [10];
printf的(「輸入INFILE名稱,例如c:\ \成績\ n「);
scanf的(」%s「,infile中);
((FP =的FOPEN(INFILE,」包「))= = NULL)/ *打開一個二進制文件只讀* /
{
printf的(「無法打開文件\ n」);
回報(頭);
}
printf的(「\ n載入的文件!\ n」);
P1 =(學生)的malloc(LEN); / *開辟了一條新的單位* /
(P1 )
{
printf的(「內存不足!\ n」);
回報(頭);
}
頭= P1 / *適用於空間,作為頭指針* /
同時(!的feof(FP))/ *循環讀取數據,直到年底結束的文件* / {
(FREAD(P1,LEN,1,FP)= 1)打破; / *如果你不讀出的數據的循環* /
P1-> =(學生)的malloc(LEN); / *下一個結點打開空間* /
(P1->)
{
printf的(「內存不足!\ n」);
回報(頭); BR />}
P2 = P1 / P2點只是P1結點* /
P1 = P1->; / *指針回新讀入數據鏈當前的表* /
}
P2-> = NULL; / *最後一個節點的繼任指針為空* /
FCLOSE(FP);
輸出( 「你已經成功從文件中讀取數據!\ n」);
回報(頭);
}
『伍』 學生成績管理系統的代碼是什麼
代碼如下:
for(i=0;i<66;i++)
printf("*");
printf(" ");
printf("1.Input record ");
printf("2.Caculate totel and average score of every course ");
printf("3.Caculate totel and average score of every student ");
printf("4.Sort in descending order by total score of every student ");
printf("5.Sort in ascending order by total score of every student ");
printf("6.Sort in ascending order by number ");
printf("7.Sort in ascending order by name ");
printf("8.Search by number ");
printf("9.Search by name ");
printf("10.Statistic analysis for every course ");
printf("11.List record ");
printf("12.Write to a file ");
printf("13.Read from a file ");
printf("0.Exit ");
for(i=0;i<66;i++)
printf("*");
printf(" ");
printf("Please enter your choice:");
printf(" ");
『陸』 什麼是學生成績管理系統
管理學生成績的系統,裡面需要定義一個class student,其中要有學生的編號,姓名各項成績,總分,平局分等等。會要定義可以顯示學生成績的函數,排列成績的函數,添加和刪除學生的函數,修該成績的函數,查詢學生的函數,文件保存與讀寫的函數,主頁面顯示選擇的函數。其他的你也可以再多加些功能。
『柒』 C語言程序設計學生成績管理系統
#include
"stdio.h"
/*定義學生結構體*/
struct
Student
{
char
ID[20];
char
Name[20];
float
Mark1;
float
Mark2;
float
Mark3;
float
Average;
};
/*聲明學生數組及學生數量*/
struct
Student
students[1000];
int
num=0;
/*求平均值*/
float
Avg(struct
Student
stu)
{
return
(stu.Mark1+stu.Mark2+stu.Mark3)/3;
}
/*通過學號返回數組下標*/
int
Student_SearchByIndex(char
id[])
{
int
i;
for
(i=0;i<num;i++)
{
if
(strcmp(students[i].ID,id)==0)
{
return
i;
}
}
return
-1;
}
/*通過姓名返回數組下標*/
int
Student_SearchByName(char
name[])
{
int
i;
for
(i=0;i<num;i++)
{
if
(strcmp(students[i].Name,name)==0)
{
return
i;
}
}
return
-1;
}
/*顯示單條學生記錄*/
void
Student_DisplaySingle(int
index)
{
printf("%10s%10s%8s%8s%8s%10s\n","學號","姓名","成績","成績","成績","平均成績");
printf("-------------------------------------------------------------\n");
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[index].ID,students[index].Name,
students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);
}
/*插入學生信息*/
void
Student_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;
}
}
}
/*修改學生信息*/
void
Student_Modify()
{
float
mark1,mark2,mark3;
while(1)
{
char
id[20];
int
index;
printf("請輸入要修改的學生的學號:");
scanf("%s",&id);
getchar();
index=Student_SearchByIndex(id);
if
(index==-1)
{
printf("學生不存在!\n");
}
else
{
printf("你要修改的學生信息為:\n");
Student_DisplaySingle(index);
printf("--
請輸入新值--\n");
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;
}
}
}
/*刪除學生信息*/
void
Student_Delete()
{
int
i;
while(1)
{
char
id[20];
int
index;
printf("請輸入要刪除的學生的學號:");
scanf("%s",&id);
getchar();
index=Student_SearchByIndex(id);
if
(index==-1)
{
printf("學生不存在!\n");
}
else
{
printf("你要刪除的學生信息為:\n");
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;
}
}
}
/*按姓名查詢*/
void
Student_Select()
{
while(1)
{
char
name[20];
int
index;
printf("請輸入要查詢的學生的姓名:");
scanf("%s",&name);
getchar();
index=Student_SearchByName(name);
if
(index==-1)
{
printf("學生不存在!\n");
}
else
{
printf("你要查詢的學生信息為:\n");
Student_DisplaySingle(index);
}
printf("是否繼續?(y/n)");
if
(getchar()=='n')
{
break;
}
}
}
/*按平均值排序*/
void
Student_SortByAverage()
{
int
i,j;
struct
Student
tmp;
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;
}
}
}
}
/*顯示學生信息*/
void
Student_Display()
{
int
i;
printf("%10s%10s%8s%8s%8s%10s\n","學號","姓名","成績","成績","成績","平均成績");
printf("-------------------------------------------------------------\n");
for
(i=0;i<num;i++)
{
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[i].ID,students[i].Name,
students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);
}
}
/*將學生信息從文件讀出*/
void
IO_ReadInfo()
{
FILE
*fp;
int
i;
if
((fp=fopen("Database.txt","rb"))==NULL)
{
printf("不能打開文件!\n");
return;
}
if
(fread(&num,sizeof(int),1,fp)!=1)
{
num=-1;
}
else
{
for(i=0;i<num;i++)
{
fread(&students[i],sizeof(struct
Student),1,fp);
}
}
fclose(fp);
}
/*將學生信息寫入文件*/
void
IO_WriteInfo()
{
FILE
*fp;
int
i;
if
((fp=fopen("Database.txt","wb"))==NULL)
{
printf("不能打開文件!\n");
return;
}
if
(fwrite(&num,sizeof(int),1,fp)!=1)
{
printf("寫入文件錯誤!\n");
}
for
(i=0;i<num;i++)
{
if
(fwrite(&students[i],sizeof(struct
Student),1,fp)!=1)
{
printf("寫入文件錯誤!\n");
}
}
fclose(fp);
}
/*主程序*/
main()
{
int
choice;
IO_ReadInfo();
while(1)
{
/*主菜單*/
printf("\n------
學生成績管理系統------\n");
printf("1.
增加學生記錄\n");
printf("2.
修改學生記錄\n");
printf("3.
刪除學生記錄\n");
printf("4.
按姓名查詢學生記錄\n");
printf("5.
按平均成績排序\n");
printf("6.
退出\n");
printf("請選擇(1-6):");
scanf("%d",&choice);
getchar();
switch(choice)
{
case
1:
Student_Insert();
break;
case
2:
Student_Modify();
break;
case
3:
Student_Delete();
break;
case
4:
Student_Select();
break;
case
5:
Student_SortByAverage();
Student_Display();
break;
case
6:
exit();
break;
}
IO_WriteInfo();
}
}
你的串號我已經記下,採納後我會幫你製作
『捌』 簡單學生成績管理系統
//基本的都有了,c 的,文字說明自己加。有問題再找。
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
struct Student
{
string num;
double gra1;
double gra2;
double gra3;
double ave;
int t;//標志是不是被刪除的。
};
Student stu[100];
int n;// 表示總人數
Student temp;
//輸入成績
void Input()
{
int t,i;
t=n;
for(i=0;i<n;i )
{
(stu[i].t==0) {t=i;break;}
}
cin>>temp.num>>temp.gra1 >>temp.gra2 >>temp.gra3 ;
stu[t]=temp;
stu[t].t=1;
if(t==n) n ;
}
void Sort()
{
int i,j;
for(i=0;i<n;i )
{
for(j=i 1;j<n;j )
{
if(stu[j].ave>stu[j-1].ave)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void Ave()
{
int i;
for(i=0;i<n;i ) stu[i].ave=(stu[i].gra1 stu[i].gra2 stu[i].gra3 )/3;
}
void Dis ()
{
int i;
for(i=0;i<n;i )
{
if(stu[i].t==1)
{
cout<<stu[i].num<<" "<<stu[i].gra1<<" "<<stu[i].gra2
<<" "<<stu[i].gra3<<" "<<stu[i].ave<<endl;
}
}
}
void Del(int t)
{
int i;
string name;
cin>>name;
int p=-1;
for(i=0;i<n;i )
{
if(stu[i].t==1
『玖』 求學生成績管理系統的源代碼
#include<stdio.h>
#include<stdlib.h>
#defineFILENAME"student.dat"
typedefenum{MAN,WOMAN}SEX;
typedefstructtagStudent
{
intnum; //學生的編號
charname[20]; //學生的姓名
SEX sex; //學生的性別
intage; //學生的年齡
charmajor[20]; //學生的專業
structtagStudent*next;//下一個節點的指針
}STUDENT,*PSTUDENT;
STUDENTg_head; //頭節點
//1.顯示菜單
voidShowMenu();
//2.獲取用戶選擇的菜單的編號
intGetMenuChoose();
//3.創建一個節點,它會返回一個新創建的學生信息節點的指針
PSTUDENTCreateStudent();
//4.把學生信息節點加入到鏈表中
intAddStudent(PSTUDENTpstu);
//5.返回指定編號學生節點的上一個節點的指針
PSTUDENTGetPrevAddr(intnum);
//6.顯示所有學生信息
voidShowAll();
//7.顯示信息數量
intShowStudentCount();
//8.修改學生信息,參數為要修改的學生的編號
voidModityStudent(intnum);
//9.獲取用戶的選擇
intQuestion(constchar*pstr);
//10.獲取用戶輸入的學生的編號
intGetInputNum();
//11.刪除編號為num的學生信息
voidDelStudent(intnum);
//12.刪除所有的學生信息
voidDelAll();
//13.把學生信息保存到文件當中
voidSaveToFile();
//14.從文件中讀取學生信息
voidLoadFromFile();
intmain()
{
intrunning=1;
while(running)
{
switch(GetMenuChoose())
{
case0:
running=0;
break;
case1:
// printf("你選擇了菜單1 ");
AddStudent(CreateStudent());
break;
case2:
// printf("你選擇了菜單2 ");
DelStudent(GetInputNum());
break;
case3:
printf("你選擇了菜單3 ");
break;
case4:
// printf("你選擇了菜單4 ");
ModityStudent(GetInputNum());
break;
case5:
// printf("你選擇了菜單5 ");
DelAll();
break;
case6:
// printf("你選擇了菜單6 ");
ShowAll();
break;
case7:
// printf("你選擇了菜單7 ");
ShowStudentCount();
break;
case8:
// printf("你選擇了菜單8 ");
LoadFromFile();
break;
case9:
// printf("你選擇了菜單9 ");
SaveToFile();
break;
}
system("pause");
}
return0;
}
//1.顯示菜單
voidShowMenu()
{
system("cls");
printf("-----------------------------學生管理系統-------------------------------- ");
printf(" 1.添加學生信息2.刪除某個學生信息3.顯示某個學生信息 ");
printf(" 4.修改學生信息5.刪除所有學生信息6.顯示所有學生信息 ");
printf(" 7.顯示信息數量8.讀取文件學生信息9.保存學生信息至文件 ");
printf(" 0.退出系統 ");
printf(" ------------------------------------------------------------------------- ");
}
//2.獲取用戶選擇的菜單的編號
intGetMenuChoose()
{
intnum;//保存用戶選擇的菜單編號
ShowMenu();
printf("請選擇菜單(0~9):");
while(1!=scanf("%d",&num)||num<0||num>9)
{
ShowMenu();
printf("選擇菜單錯誤,請重新選擇(0~9):");
fflush(stdin);//清空輸入緩沖區
}
returnnum;
}
//3.創建一個節點,它會返回一個新創建的學生信息節點的指針
PSTUDENTCreateStudent()
{
intsex;
PSTUDENTpstu=(PSTUDENT)malloc(sizeof(STUDENT));//在堆內存申請空間,存儲學生信息
if(!pstu)
{
printf("申請內存空間失敗! ");
returnNULL;
}
printf("請輸入學生的編號(整型):");
while(1!=scanf("%d",&pstu->num)||GetPrevAddr(pstu->num))
{
printf("學生編號輸入錯誤或已經存在,請重新輸入學生的編號(整型):");
fflush(stdin);
}
printf("請輸入學生的姓名(小於20字元):");
scanf("%20s",pstu->name);//(*pstu).name
printf("請選擇學生的性別(1.男2.女):");
while(1!=scanf("%d",&sex)||sex<1||sex>2)
{
printf("性別選擇錯誤,請重新選擇學生的性別(1.男2.女):");
fflush(stdin);
}
if(1==sex)
pstu->sex=MAN;
else
pstu->sex=WOMAN;
printf("請輸入學生的年齡(10~40):");
while(1!=scanf("%d",&pstu->age)||pstu->age<10||pstu->age>40)
{
printf("年齡輸入錯誤!請重新輸入學生的年齡(10~40):");
fflush(stdin);
}
printf("請輸入學生的專業(小於20字元):");
scanf("%20s",pstu->major);
pstu->next=NULL;
returnpstu;
}
//4.把學生信息節點加入到鏈表中
intAddStudent(PSTUDENTpstu)
{
PSTUDENTps=&g_head;
if(!pstu)
{
return0;
}
//判斷一下該學生信息是不是已經存在
if(GetPrevAddr(pstu->num))
{
printf("編號為%d的學生信息已經存在! ",pstu->num);
free(pstu);//釋放該節點內存空間
return0;
}
//while循環的作用是找到當前鏈表的最後一個節點
while(ps->next)
ps=ps->next;
//把新節點加入到最後那個節點的後面
ps->next=pstu;
pstu->next=NULL;
return1;
}
//5.返回指定編號學生節點的上一個節點的指針
PSTUDENTGetPrevAddr(intnum)
{
PSTUDENTpstu=&g_head;
while(pstu->next)
{
if(pstu->next->num==num)
returnpstu;
pstu=pstu->next;
}
returnNULL;
}
//6.顯示所有學生信息
voidShowAll()
{
PSTUDENTpstu=&g_head;
printf("-------------------------------------------------------------------- ");
printf("編號姓名性別年齡專業 ");
printf("-------------------------------------------------------------------- ");
while(pstu->next)
{
printf("%-8d",pstu->next->num);
printf("%-20s",pstu->next->name);
printf("%-6s",pstu->next->sex==MAN?"男":"女");
printf("%4d",pstu->next->age);
printf("%20s ",pstu->next->major);
pstu=pstu->next;//讓指針指向下一個節點
}
printf("-------------------------------------------------------------------- ");
}
//7.顯示信息數量
intShowStudentCount()
{
intcount=0;
PSTUDENTpstu=&g_head;
while(pstu->next)
{
++count;
pstu=pstu->next;
}
printf(" 當前共有%d位學生信息。 ",count);
returncount;
}
//8.修改學生信息,參數為要修改的學生的編號
voidModityStudent(intnum)
{
PSTUDENTpstu=GetPrevAddr(num);//獲取要修改的學生節點的上一個節點
intchoose;
if(!pstu)
{
printf("沒有編號為%d的學生信息。 ",num);
return;
}
pstu=pstu->next;//將要修改的學員節點的指針改為指向自己的
printf("當前學生的姓名為%s,",pstu->name);
if(Question("確定要修改嗎?"))
{
printf("請輸入學生的姓名(小於20字元):");
scanf("%20s",pstu->name);
}
printf("當前學生的性別為%s,",pstu->sex==MAN?"男":"女");
if(Question("確定要修改嗎?"))
{
printf("請輸入學生的性別(1.男2.女):");
while(1!=scanf("%d",&choose)||choose<1||choose>2)
{
printf("輸入錯誤,請重新輸入學生的性別(1.男2.女):");
fflush(stdin);
}
if(1==choose)
pstu->sex=MAN;
else
pstu->sex=WOMAN;
}
printf("當前學生的年齡為%d,",pstu->age);
if(Question("確定要修改嗎?"))
{
printf("請輸入學生的年齡(10~40):");
while(1!=scanf("%d",&pstu->age)||pstu->age<10||pstu->age>40)
{
printf("年齡輸入錯誤!請重新輸入學生的年齡(10~40):");
fflush(stdin);
}
}
printf("當前學生的專業為%s,",pstu->major);
if(Question("確定要修改嗎?"))
{
printf("請輸入學生的專業(小於20字元):");
scanf("%20s",pstu->major);
}
printf("修改完畢! ");
}
//9.獲取用戶的選擇
intQuestion(constchar*pstr)
{
charanswer;
printf("%s請選擇(yorn):",pstr);
while(1!=scanf("%c",&answer)||(answer!='y'&&answer!='n'))
{
printf("輸入錯誤!%s請重新選擇(yorn):",pstr);
fflush(stdin);//清空輸入緩沖區,C庫函數
}
if('y'==answer)
return1;
else
return0;
}
//10.獲取用戶輸入的學生的編號
intGetInputNum()
{
intnum;
printf("請輸入學生的編號(整型):");
while(1!=scanf("%d",&num))
{
printf("編號輸入錯誤!請重新輸入學生的編號(整型):");
fflush(stdin);
}
returnnum;
}
//11.刪除編號為num的學生信息
voidDelStudent(intnum)
{
PSTUDENTpstu,ptmp;
if(pstu=GetPrevAddr(num))
{
if(!Question("確定要刪除該學生信息嗎?"))
{
return;
}
ptmp=pstu->next;
pstu->next=ptmp->next;
free(ptmp);
printf("刪除了編號為%d的學生信息。 ",num);
}
else
{
printf("沒有找到編號為%d的學生信息。 ",num);
}
}
//12.刪除所有的學生信息
voidDelAll()
{
PSTUDENTpstu=g_head.next,ptmp;
intcount=0;
if(!Question("確定要刪除當前所有的學生信息嗎?"))
{
return;
}
while(pstu)
{
ptmp=pstu;
pstu=pstu->next;
free(ptmp);
++count;
}
printf("共刪除了%d位學生信息。 ",count);
g_head.next=NULL;
}
//13.把學生信息保存到文件當中
voidSaveToFile()
{
FILE*pf=fopen(FILENAME,"wb");
PSTUDENTpstu=&g_head;
inti=0,count=ShowStudentCount();
if(!pf)
{
printf("打開待寫入的文件失敗! ");
return;
}
if(!Question("確定要將當前學生信息保存到文件中嗎?"))
{
fclose(pf);
return;
}
fwrite(&count,1,sizeof(count),pf);//把學生信息的數量先寫入到文件頭
while(pstu->next)
{
fwrite(pstu->next,1,sizeof(STUDENT),pf);//把每位學生信息寫入文件
++i;
pstu=pstu->next;
}
fclose(pf);
if(i==count)
{
printf("成功的寫入了%d條學生信息。 ",count);
}
else
{
printf("應寫入%d條學生信息,實際寫入%d條學生信息。 ",count,i);
}
}
//14.從文件中讀取學生信息
voidLoadFromFile()
{
inti,count=0,repeat=0;
FILE*pf;
PSTUDENTpstu;
printf("提示:從文件中讀取學生信息會詢問是否清空當前學生信息(不清空表示合並所有信息)。 ");
if((pf=fopen(FILENAME,"rb"))==NULL)
{
printf("文件還沒有創建,請手工輸入學生信息並保存吧! ");
return;
}
DelAll();//刪除之前的所有學生信息,然後從文件中讀取
fread(&count,1,sizeofcount,pf);//獲取學生信息的數量
for(i=0;i<count;++i)
{
pstu=(PSTUDENT)malloc(sizeof(STUDENT));
fread(pstu,1,sizeof(STUDENT),pf);
if(!AddStudent(pstu))
{
++repeat;//保持有多少個和當前鏈表中相重復的學生信息
}
}
fclose(pf);
printf("文件讀取完畢!新增學生信息%d條。 ",count-repeat);
}
這個累死我了,我要財富值。。。為了這個不容易啊
『拾』 學生成績管理系統
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
structtime
{
intyear;
intmouth;
intday;
};
typedefstructstudent
{
intid;
charname[20];
intage;
structtimebsday;
structstudent*next;
}stu_t,*stu2;
#defineLENsizeof(structstudent)
stu2creat_list(intlen);
voidxianshi(stu2head,intlen);
stu2shanchu(stu2head,intlen);
voidchazhao(stu2head,intlen);
voidxiugai(stu2head,intlen);
voidtianjia(stu2head,intlen);
voidpaixu(stu2head,intlen);
intmain()
{
system("clear");
stu2head=NULL;
intlen;
charch;
while(1)
{
system("clear");
printf("********************************* ");
printf("歡迎來到學生系統 ");
printf("********************************* ");
printf("1.學生的錄入 ");
printf("2.學生的查詢 ");
printf("3.學生的添加 ");
printf("4.學生的修改 ");
printf("5.學生的刪除 ");
printf("6.學生的顯示 ");
printf("7.學生的排序 ");
printf("8.退出 ");
printf("請輸入要進入的編號:");
scanf("%c",&ch);
switch(ch)
{
case'1':system("clear");head=creat_list(len);break;
case'2':system("clear");chazhao(head,len);break;
case'3':system("clear");tianjia(head,len);break;
case'4':system("clear");xiugai(head,len);break;
case'5':system("clear");head=shanchu(head,len);break;
case'6':system("clear");xianshi(head,len);break;
case'7':system("clear");paixu(head,len);break;
case'8':exit(0);
default:printf("輸入錯誤按回車繼續.... ");getchar();break;
}
}
return0;
}
stu2creat_list(intlen)
{
stu2p1=NULL;
stu2p2=NULL;
stu2head=NULL;
inti=0;
printf("請輸入要添加學生的個數:");
scanf("%d",&len);
for(i=1;i<=len;i++)
{
p1=(stu2)malloc(LEN);
printf("添加的第%d個學生信息為 ",i);
printf("請輸入考生的id號:");
scanf("%d",&p1->id);
printf("請輸入學生的名字:");
scanf("%s",p1->name);
printf("請輸入該學生的年齡:");
scanf("%d",&p1->age);
printf("請輸入該學生的生日:");
scanf("%d%d%d",&p1->bsday.year,&p1->bsday.mouth,&p1->bsday.day);
p1->next=NULL;
if(i==1)head=p1;
elsep2->next=p1;
p2=p1;
}
getchar();
returnhead;
}
voidxianshi(stu2head,intlen)
{
stu2p1=NULL;
if(head==NULL)return;
if(len<=0)return;
printf("----------------以下為顯示的結果--------- ");
printf(" ID號 名字 年齡 生日 ");
while(1)
{
p1=head;
printf(" %d %s %d %d-%d-%d ",p1->id,p1->name,p1->age,p1->bsday.year,p1->bsday.mouth,p1->bsday.day);
head=head->next;
if(head==NULL)break;
}
getchar();
printf("按回車鍵繼續........");
getchar();
}
stu2shanchu(stu2head,intlen)
{
charch;
stu2p1=NULL;
stu2p2=NULL;
p1=(stu2)malloc(LEN);
printf("請輸入要刪除學生的id號:");
scanf("%d",&len);
getchar();
p1=head;
if(head==NULL)
{
printf("在內存中不存在id號為%d的學生按回車返回",len);
getchar();
return;
}
while(1)
{
//p1=head;
if(p1->id==len)
{
printf("該學生已找到是否要刪除(X/Y):");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{
if(p1==head){head=head->next;}
else{p2->next=p1->next;}
break;
}
elsebreak;
}
if(p1->id!=len)
{
p2=p1;
//p1=head;
p1=p1->next;
}
if(p1==NULL)
{
printf("不存在該學生按回車返回:");
getchar();
break;
}
}
getchar();
returnhead;
}
voidchazhao(stu2head,intlen)
{
stu2p1=NULL;
p1=(stu2)malloc(LEN);
printf("請輸入要茶找的id號:");
scanf("%d",&len);getchar();
p1=head;
if(head==NULL)
{
printf("內存中不存在id為%d的學生按回車鍵返回.....",len);
getchar();
return;
}
while(1)
{
//p1=head;
if(len==p1->id)
{
printf("該同學的名字:%s ",p1->name);
printf("該同學的年齡:%d ",p1->age);
printf("該同學的生日:%d-%d-%d ",p1->bsday.year,p1->bsday.mouth,p1->bsday.day);
break;
}
if(len!=p1->id)
{
p1=p1->next;
}
if(p1==NULL)
{
printf("meiyougaitongxue,按回車返回...");
getchar();
break;
}
}
getchar();
}
voidxiugai(stu2head,intlen)
{
stu2p1=NULL;
if(head==NULL)return;
printf("請輸入要修改的id號:");
scanf("%d",&len);
p1=head;
while(1)
{
if(len==p1->id)
{
printf("同學名字為:");
scanf("%s",p1->name);
printf("同學的年齡為:");
scanf("%d",&p1->age);
printf("該同學的生日為:");
scanf("%d%d%d",&p1->bsday.year,&p1->bsday.mouth,&p1->bsday.day);
break;
}
if(p1->id!=len)
{
p1=p1->next;
}
if(p1==NULL)
{
printf("沒有要修改的同學按回車返回.....");
getchar();
return;
}
}
getchar();
}
voidtianjia(stu2head,intlen)
{
stu2p2=NULL;
stu2p1=NULL;
p1=head;
if((p2=(stu2)malloc(LEN))==NULL)return;
if(head==NULL)return;
printf("請輸入要在拿個id號後插入學生:");
scanf("%d",&len);
printf("要插入學生的id號:");
scanf("%d",&p2->id);
printf("請輸入要插入學生的姓名:");
scanf("%s",p2->name);
printf("請輸入插入學生的年齡:");
scanf("%d",&p2->age);
printf("請輸入要插入學生的生日:");
scanf("%d%d%d",&p2->bsday.year,&p2->bsday.mouth,&p2->bsday.day);
while(1)
{
if(p1->id==len)
{
p2->next=p1->next;
p1->next=p2;
break;
}
if(p1->next==NULL)
{
p1->next=p2;
p2->next=NULL;
break;
}
if(p1->id!=len)p1=p1->next;
if(p1==NULL)
{
printf("不存在這樣的學生按回車返回....");
getchar();
return;
}
}
getchar();
}