資源簡介
用申請動態(tài)內(nèi)存的方式實現(xiàn)C語言學生信息管理系統(tǒng), 可以實現(xiàn)學生的增、刪、改、查、列、保存、加載等功能的實現(xiàn),最大的特點就是全部用指針實現(xiàn)功能,不必進行傳參,節(jié)省了內(nèi)存。
代碼片段和文件信息
#include?
#include?
#include?
#define?STU?struct?Student
#define?LEN?sizeof(struct?Student)
void?back();
struct?Student{
int?no; //學號
char?name[40]; //名字
int?age; //年齡
char?sex; //性別
double?score[3]; //語數(shù)英三門成績
}*stu;
int?id?=?20191100; //學號?自動生成
int?count?=?0; //學生人數(shù)
void?save(){ //保存文件
FILE?*f?=?fopen(“file_stu.dat““w“);
if(f?!=?NULL){
fwrite(&countsizeof(count)1f);
fwrite(stuLEN*countcountf);
fclose(f);
}
}
void?load(){ //加載文件
FILE?*f?=?fopen(“file_stu.dat““r“);
if(f?!=?NULL){
fread(&countsizeof(count)1f);
fread(stuLEN*countcountf);
fclose(f);
}
}
STU?*add(){ //增加學生
STU?*p;
p?=?stu;
p+=count;
if(stu?==?NULL){
printf(“applied?failed!\n“);
back();
return;
}
int?flag?=?1;
while(flag){
p->no?=?id+count;
printf(“please?input?student‘s?name:“);
scanf(“%s“p->name);
printf(“please?input?student‘s?age:“);
scanf(“%d“&p->age);
printf(“please?input?student‘s?sex:“);
scanf(“%*[^\n]“);
scanf(“%*c“);
scanf(“%c“&p->sex);
printf(“please?input?student‘s?score:“);
scanf(“%lf%lf%lf“&p->score[0]&p->score[1]&p->score[2]);
printf(“add?student?more?(1-YES0-NO)\n“);
scanf(“%d“&flag);
p++;
count++;
}
back();
return?stu;
}
STU?*delete(){ //刪除學生
if(stu?==?NULL){
printf(“the?list?is?empty!\n“);
back();
return?stu;
}
STU?*p;
p?=?stu;
int?num;
printf(“please?input?student?id?that?you?want?to?delete:“);
scanf(“%d“&num);
int?i?=?0;
while(p[i].no?!=num?&&?i i++;
}
if(num?==?p[i].no){
for(;i p[i]?=?p[i+1];
}
count--;
}else{
printf(“student?No:%d?is?not?exist!\n“num);
}
back();
return?stu;
}
STU?*modif(){ //修改學生信息
if(stu?==?NULL){
printf(“the?list?is?empty!\n“);
back();
return?stu;
}
printf(“please?input?student‘s?id?that?you?want?to?modify:“);
int?num;
scanf(“%d“&num);
STU?*p;
p?=?stu;
int?i?=?0;
while(p->no?!=?num?&&?i i++;
p++;
}
if(p->no?==?num){
printf(“student?No:%d?‘s?information?showed?as?below:\n“num);
printf(“ID:%d????name:%s????age:%d?????sex:%c\n“p->nop->namep->agep->sex);
printf(“chinese:%g?? math:%g? english:%g\n“p->score[0]p->score[1]p->score[2]);
printf(“Please?select?the?items?you?want?to?change:\n“);
printf(“1~name??2~age??3~sex?4~chinese?score??5~math?score?6~english?score?0~done\n“);
while(1){
int?opt;
scanf(“%d“&opt);
switch(opt){
case?1:
printf(“input?new?name:“);
scanf(“%s“p->name);
break;
case?2:
printf(“input?new?age:“);
scanf(“%d“&p->age);
break;
case?3:
prin
評論
共有 條評論