该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
求大佬来助,学院让做课设,学生兴趣管理系统,要求能添加删除修改学生信息,学生兴趣类型和兴趣项,我写完发现不能进行兴趣类型和兴趣项的添加和删除,但是想不到怎么写,用的c语言,大概知道用结构体,但是不知道怎么联系上,求帮忙
#include
#include
#define FILENAME "studentIntrest.txt"
typedef enum{MAN, WOMAN} SEX;
typedef struct tagStudent
{
int num; //学号
char name[20]; //姓名
SEX sex; //性别
int grade; // 年级
char major[20]; //学生的专业
char *Kind;
char *Intrest;
struct tagStudent *next;//下一个节点的指针
}STUDENT, *PSTUDENT;
STUDENT g_head;
void Menu();
int GetMenuChoose();
PSTUDENT CreateStudent();
int AddStudent(PSTUDENT pstu);
PSTUDENT GetPrevAddr(int num); //返回指定编号学生节点的上一个节点的指针
void ShowAll();
int ShowStudentCount();
void ModityStudent(int num);//修改信息
int Question(const char *pstr);//获取用户的选择
int GetInputNum(); //获取用户输入的学生的编号
void DelStudent(int num); //删除信息
void DelAll();
void SaveToFile(); //把学生信息保存到文件当中
void LoadFromFile(); //从文件中读取学生信息
int main()
{
int running = 1;
while(running)
{
switch(GetMenuChoose())
{
case 0:
running = 0;
break;
case 1:
printf("你选择了菜单1\n");
AddStudent(CreateStudent());
break;
case 2:
printf("你选择了菜单2\n");
DelStudent(GetInputNum());
break;
case 3:
printf("你选择了菜单3\n");
ModityStudent(GetInputNum());
break;
case 4:
printf("你选择了菜单4\n");
DelAll();
break;
case 5:
printf("你选择了菜单5\n");
ShowAll();
break;
case 6:
printf("你选择了菜单6\n");
ShowStudentCount();
break;
case 7:
printf("你选择了菜单7\n");
LoadFromFile();
break;
case 8:
printf("你选择了菜单8\n");
SaveToFile();
break;
}
system("pause");
}
return 0;
}
void Menu()
{
system("cls");
printf(" 学生管理系统\n");
printf("\n\t1.添加学生信息 2.删除某个学生信息 3.修改学生信息 \n");
printf("\t4.删除所有学生信息 5.显示所有学生信息 6.显示信息数量\n");
printf("\t7.读取文件学生信息 8.保存学生信息至文件 9.退出系统\n");
printf("\n-------------------------------------------------------------------------\n");
}
int GetMenuChoose()
{
int num;
Menu();
printf("请选择菜单(1 ~ 9):");
while(1 != scanf("%d", &num) || num < 1 || num > 9)
{
Menu();
printf("选择菜单错误,请重新选择(0 ~ 9):");
fflush(stdin);
}
return num;
}
PSTUDENT CreateStudent()
{
int sex;
PSTUDENT pstu = (PSTUDENT)malloc(sizeof(STUDENT));
if(!pstu)
{
printf("申请内存空间失败!\n");
return NULL;
}
printf("请输入学生的学号:");
while(1 != scanf("%d", &pstu->num) || GetPrevAddr(pstu->num))
{
printf("学生学号输入错误或已经存在,请重新输入:");
fflush(stdin);
}
printf("请输入学生的姓名:");
scanf("%20s", 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("请输入学生的年级(0~ 2018):");
while(1 != scanf("%d", &pstu->grade) || pstu->grade <0 || pstu->grade > 2018)
{
printf("输入错误!请重新输入学生年级(0 ~ 2018):");
fflush(stdin);
}
printf("请输入学生的专业:");
scanf("%20s", pstu->major);
int a,b;
printf("请选择兴趣类型:");
printf("1.球类\t 2.棋类\t 3.田径\t 4.文化\t 5.舞蹈 \n");
scanf("%d",&a);
while(a<0||a>5){
printf("输入错误请重新输入!");
}
if(a==1)
{
pstu->Kind="球类";
printf("1.篮球\t 2.足球\t 3.排球\t 4.羽毛球\t 5.乒乓球\t 6.网球\t 7.棒球\n");
scanf("%d",&b);
switch(b){
case 1:pstu->Intrest="篮球";
case 2:pstu->Intrest="足球";
case 3:pstu->Intrest="排球";
case 4:pstu->Intrest="羽毛球";
case 5:pstu->Intrest="乒乓球";
case 6:pstu->Intrest="网球";
case 7:pstu->Intrest="棒球";
}
}
if(a==2)
{
pstu->Kind="棋类";
printf("1.象棋\t 2.围棋\t 3.跳棋\t4.飞行棋\t5.斗兽棋\t 6.国际象棋\n") ;
scanf("%d",&b);
switch(b){
case 1:pstu->Intrest="象棋";
case 2:pstu->Intrest="围棋";
case 3:pstu->Intrest="跳棋";
case 4:pstu->Intrest="飞行棋";
case 5:pstu->Intrest="斗兽棋";
case 6:pstu->Intrest="国际象棋";
}
}
if(a==3){
pstu->Kind="田径";
printf("1.短跑\t 2.长跑\t 3.跳高\t 4.跳远\n");
scanf("%d",&b);
switch(b){
case 1:pstu->Intrest="短跑";
case 2:pstu->Intrest="长跑";
case 3:pstu->Intrest="跳高";
case 4:pstu->Intrest="跳远";
}
}
if(a==4)
{
pstu->Kind="文化";
printf("1.唱歌\t 2.朗诵\t 3.画画\t 4.考古\n");
scanf("%d",&b);
switch(b){
case 1:pstu->Intrest="唱歌";
case 2:pstu->Intrest="朗诵";
case 3:pstu->Intrest="画画";
case 4: