• 大小: 5KB
    文件类型: .c
    金币: 2
    下载: 1 次
    发布日期: 2021-06-18
  • 语言: C/C++
  • 标签: C语言  

资源简介

用申请动态内存的方式实现C语言学生信息管理系统, 可以实现学生的增、删、改、查、列、保存、加载等功能的实现,最大的特点就是全部用指针实现功能,不必进行传参,节省了内存。

资源截图

代码片段和文件信息

#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]; //语数英三门成绩
}*stu;

int id = 20191100; //学号 自动生成
int count = 0; //学生人数

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

评论

共有 条评论