赞
踩
#学习笔记#
简单运用了struct 结构体和数组来储存学生的信息。
学生的信息有:学号id,姓名name,成绩math。
结构体的运用代码:
- typedef struct ssss
- {
- int id; // id 学号
- char name[100]; // name 姓名
- int math; // math 成绩
- }student;
学生管理系统主要实现的几个模式:
1.增加学生;
2.删除学生;
3.更改学生;
4.查找学生;
5.显示所有学生;
6.退出。
首先创建主函数
int maim()
{
}
在主函数外创建需要调用的函数,先把骨干创建出来,骨干创建完毕后再逐个完成各个需要调用函数的功能。在写代码过程中要边写边调试。完成一个项目可以说用两个小时写代码其中一个小时都在调试。
主函数创建完成后外面需要调用的函数有:
void add_student(student *pstu,int *sum,int n); // 增加学生;
void delete_student(student *pstu,int *sum);// 删除学生;
void update_student(student *pstu,const int *sum);// 更改学生信息;
void find_student(student *pstu,const int *sum);//查找学生信息;
void show_all_student(student *pstu,const int *sum);// 显示所有学生信息;
void menu(); // 选择模式菜单。
其中主函数主要代码:
- int main()
- {
- menu();
- return 0;
- }
创建选择模式的函数代码:
- void menu()
- {
- int N=0;// 数组的最大容量
- printf("请输入本系统最大学生容量:");
- scanf("%d",&N);
- student stu[N];
- int sum=0; // 实际学生数量
- int m=0; // 接受 1-6 菜单选项
- while(1)
- {
- printf("-------------学生管理系统-----------------\n");
- printf("-------------1.增加学生-------------------\n");
- printf("-------------2.删除学生-------------------\n");
- printf("-------------3.更改学生-------------------\n");
- printf("-------------4.查找学生-------------------\n");
- printf("-------------5.显示所有学生---------------\n");
- printf("-------------6.退出-----------------------\n");
- printf("请输入选项:\n");
- scanf("%d",&m);
- if(m==1)
- {
- printf("这是增加学生模式\n");
- add_student(stu,&sum,N);
- printf("请再继续选择:\n\n");
- }
- else if(m==2)
- {
- printf("这是删除学生模式\n");
- delete_student(stu,&sum);
- printf("请再继续选择:\n\n");
- }
- else if(m==3)
- {
- printf("这是更改学生信息模式\n");
- update_student(stu,&sum);
- printf("请再继续选择:\n\n");
- }
- else if(m==4)
- {
- printf("这是查找某个学生信息 模式\n");
- find_student(stu,&sum);
- printf("请再继续选择:\n\n");
- }
- else if(m==5)
- {
- printf("这是全部学生信息:\n");
- show_all_student(stu,&sum);
- printf("请再继续选择:\n\n");
- }
- else if(m==6)
- {
- printf("成功退出系统,欢迎下次使用~\n\n");
- break;
- }
- else
- {
- printf("请输入1-6的选项\n");
- }
- }
- }
由于只创建了结构体,结构体内并没有学生信息,下面写增加学生的函数,并调试成功。
增加学生函数代码如下:
- void add_student(student *pstu,int *sum,int n)
- {
- if(*sum>=n)
- {
- printf("学生数量已经超过了最大容量,请更新学生数量。 \n");
- return;
- }
- printf("学号:");
- scanf("%d",&pstu[*sum].id);
- printf("姓名:");
- scanf("%s",pstu[*sum].name);
- printf("成绩:");
- scanf("%d",&pstu[*sum].math);
- (*sum)++;
- }
既然已经有了增加函数了,应该写查找学生函数了,因为查找学生的函数写完了之后,在其他的函数体内可以直接调用或者复制粘贴代码。
查找学生函数代码如下:
- void find_student(student *pstu,const int *sum)
- {
- int id=0;
- printf("请输入要查找的学号:");
- scanf("%d",&id);
- int i=0;
- int flag=0;
- for(i=0;i<*sum;i++)
- {
- if(pstu[i].id==id)
- {
- printf("学号%d ",pstu[i].id);
- printf("姓名%s ",pstu[i].name);
- printf("成绩%d \n",pstu[i].math);
- flag=1;
- }
- }
- if(flag==0)
- {
- printf("查无此人\n");
- }
- }
然后写删除学生信息代码,删除某位学生信息,应该把这个学生信息查找出来,然后再进行删除,为了简单我们选用最省事的复制粘贴查找学生函数的代码。
删除学生信息代码如下:
- void delete_student(student *pstu,int *sum)
- {
- int id=0;
- printf("请输入要查找的学号:");
- scanf("%d",&id);
- int i=0;
- int flag=0;
- for(i=0;i<*sum;i++)
- {
- if(pstu[i].id==id)
- {
- printf("学号:%d ",pstu[i].id);
- printf("姓名:%s ",pstu[i].name);
- printf("成绩:%d \n",pstu[i].math);
- flag=1;
-
- int j=0;
- for(j=1;j<*sum;j++)
- {
- pstu[j]=pstu[j+1];
- }
- (*sum)--;
- return;
- }
- }
- if(flag==0)
- {
- printf("查无此人\n");
- }
- }
之后是更改学生信息的代码:
- void update_student(student *pstu,const int *sum)
- {
- int id=0;
- printf("请输入要修改的学生的学号:");
- scanf("%d",&id);
- int i=0;
- int flag=0;
- for(i=0;i<*sum;i++)
- {
- if(pstu[i].id==id)
- {
- printf("旧的 学号%d ",pstu[i].id);
- printf("姓名%s ",pstu[i].name);
- printf("成绩%d \n",pstu[i].math);
- flag=1;
-
- printf("请输入新的学号:");
- scanf("%d",&pstu[i].id);
- printf("请输入新的姓名:");
- scanf("%s",pstu[i].name);
- printf("请输入新的成绩:");
- scanf("%d",&pstu[i].math);
- printf("修改成功!\n");
- return;
- }
- }
- if(flag==0)
- {
- printf("查无此人\n");
- }
-
- }
若管理学生信息完毕,要求显示所有已经在录的信息需要写显示所有信息代码。
显示所有学生信息函数代码如下:
- void show_all_student(student *pstu,const int *sum)
- {
- // printf("5 \n");
- int i=0;
- for(i=0;i<*sum;i++)
- {
- printf("学号%d ",pstu[i].id);
- printf("姓名%s ",pstu[i].name);
- printf("成绩%d \n",pstu[i].math);
- }
- }
到这里项目已经完成了90%了,接下来就是调试修改调试修改,嘻嘻嘻。
完整代码如下:
- #include <stdio.h>
- #include <string.h>
- typedef struct ssss
- {
- int id; // id 学号
- char name[100]; // name 姓名
- int math; // math 成绩
- }student;
- void add_student(student *pstu,int *sum,int n)
- {
- if(*sum>=n)
- {
- printf("学生数量已经超过了最大容量,请更新学生数量。 \n");
- return;
- }
- printf("学号:");
- scanf("%d",&pstu[*sum].id);
- printf("姓名:");
- scanf("%s",pstu[*sum].name);
- printf("成绩:");
- scanf("%d",&pstu[*sum].math);
- (*sum)++;
- }
- void delete_student(student *pstu,int *sum)
- {
- int id=0;
- printf("请输入要查找的学号:");
- scanf("%d",&id);
- int i=0;
- int flag=0;
- for(i=0;i<*sum;i++)
- {
- if(pstu[i].id==id)
- {
- printf("学号:%d ",pstu[i].id);
- printf("姓名:%s ",pstu[i].name);
- printf("成绩:%d \n",pstu[i].math);
- flag=1;
-
- int j=0;
- for(j=1;j<*sum;j++)
- {
- pstu[j]=pstu[j+1];
- }
- (*sum)--;
- return;
- }
- }
- if(flag==0)
- {
- printf("查无此人\n");
- }
- }
- void update_student(student *pstu,const int *sum)
- {
- int id=0;
- printf("请输入要修改的学生的学号:");
- scanf("%d",&id);
- int i=0;
- int flag=0;
- for(i=0;i<*sum;i++)
- {
- if(pstu[i].id==id)
- {
- printf("旧的 学号%d ",pstu[i].id);
- printf("姓名%s ",pstu[i].name);
- printf("成绩%d \n",pstu[i].math);
- flag=1;
-
- printf("请输入新的学号:");
- scanf("%d",&pstu[i].id);
- printf("请输入新的姓名:");
- scanf("%s",pstu[i].name);
- printf("请输入新的成绩:");
- scanf("%d",&pstu[i].math);
- printf("修改成功!\n");
- return;
- }
- }
- if(flag==0)
- {
- printf("查无此人\n");
- }
-
- }
- void find_student(student *pstu,const int *sum)
- {
- int id=0;
- printf("请输入要查找的学号:");
- scanf("%d",&id);
- int i=0;
- int flag=0;
- for(i=0;i<*sum;i++)
- {
- if(pstu[i].id==id)
- {
- printf("学号%d ",pstu[i].id);
- printf("姓名%s ",pstu[i].name);
- printf("成绩%d \n",pstu[i].math);
- flag=1;
- }
- }
- if(flag==0)
- {
- printf("查无此人\n");
- }
- }
- void show_all_student(student *pstu,const int *sum)
- {
- int i=0;
- for(i=0;i<*sum;i++)
- {
- printf("学号%d ",pstu[i].id);
- printf("姓名%s ",pstu[i].name);
- printf("成绩%d \n",pstu[i].math);
- }
- }
- void menu()
- {
- int N=0;// 数组的最大容量
- printf("请输入本系统最大学生容量:");
- scanf("%d",&N);
- student stu[N];
- int sum=0; // 实际学生数量
- int m=0; // 接受 1-6 菜单选项
- while(1)
- {
- printf("-------------学生管理系统-----------------\n");
- printf("-------------1.增加学生-------------------\n");
- printf("-------------2.删除学生-------------------\n");
- printf("-------------3.更改学生-------------------\n");
- printf("-------------4.查找学生-------------------\n");
- printf("-------------5.显示所有学生---------------\n");
- printf("-------------6.退出-----------------------\n");
- printf("请输入选项:\n");
- scanf("%d",&m);
- if(m==1)
- {
- printf("这是增加学生模式\n");
- add_student(stu,&sum,N);
- printf("请再继续选择:\n\n");
- }
- else if(m==2)
- {
- printf("这是删除学生模式\n");
- delete_student(stu,&sum);
- printf("请再继续选择:\n\n");
- }
- else if(m==3)
- {
- printf("这是更改学生信息模式\n");
- update_student(stu,&sum);
- printf("请再继续选择:\n\n");
- }
- else if(m==4)
- {
- printf("这是查找某个学生信息 模式\n");
- find_student(stu,&sum);
- printf("请再继续选择:\n\n");
- }
- else if(m==5)
- {
- printf("这是全部学生信息:\n");
- show_all_student(stu,&sum);
- printf("请再继续选择:\n\n");
- }
- else if(m==6)
- {
- printf("成功退出系统,欢迎下次使用~\n\n");
- break;
- }
- else
- {
- printf("请输入1-6的选项\n");
- }
- }
- }
- int main()
- {
- char x1[20]; // 进入系统的变量
- printf("请输入是否进入系统(是/否):");
- scanf("%[^\n]",x1);
- if(strcmp(x1,"否")==0)
- {
- printf("随时欢迎进入系统哦~\n");
- printf("已关闭\n");
- return 0;
- }
- else if(strcmp(x1,"是")==0)
- {}
- else
- {
- printf("您的输入有误,禁止使用本系统~\n");
- printf("已关闭\n");
- return 0;
-
- }
- menu();
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。