您的位置:首页 > 财经 > 金融 > wto最新新闻_微信广告朋友圈投放_网络营销策划书的结构_赚钱软件

wto最新新闻_微信广告朋友圈投放_网络营销策划书的结构_赚钱软件

2024/12/23 10:18:40 来源:https://blog.csdn.net/KBDYD1010/article/details/142368750  浏览:    关键词:wto最新新闻_微信广告朋友圈投放_网络营销策划书的结构_赚钱软件
wto最新新闻_微信广告朋友圈投放_网络营销策划书的结构_赚钱软件
一、编写代码,完成学生管理系统,实现以下操作:
1、输入学生信息
2、任意位置插入学生信息
3、任意位置删除学生信息
4、查找任意位置学生信息
5、修改任意位置学生信息
6、表头插入学生信息
7、表尾插入学生信息
8、表头删除学生信息
9、表尾删除学生信息
10、去除重复学生信息
11、按名字查找学生信息
12、退出系统
二、实现过程
1、代码如下:
(1)头文件的创建
//判断头文件是否被重复引用
#ifndef _LIST_
#define _LIST_
#include <myhead.h>
//定义宏常量最大长度
#define MAX 30
//学生信息结构体
typedef struct
{int id;//学号char name[20];char major[20];//专业int age;
}student;
//顺序表结构体
typedef struct
{student data[MAX];//存储学生信息的数组int len;//统计学生个数
}list,*Plist;
//函数声明
//创建顺序表
Plist create_list();
//判断顺序表是否为满
int full(Plist);
//判断是否为空
int empty(Plist);
//输入学生信息
int input_list(Plist);
//输出学生信息
int output_list(Plist);
//插入学生信息
int insert_stu(Plist,int,student);
//按位置删除学生信息
int delete_stu(Plist,int);
//按位置查找学生信息
int inserach_stu(Plist,int);
//按位置修改学生信息
int change_stu(Plist,int,student);
//表头插入学生信息
int insert_front(Plist,student);
//表尾插入
int insert_rear(Plist,student);
//表头删除
int delete_front(Plist);
//表尾删除
int delete_rear(Plist);
//去除重复学生信息
int delete_cf(Plist);
//按姓名查找学生信息
int find_stu_all(Plist,char *);
#endif
(2)管理系统模式搭建
#include <myhead.h>
#include "list.h"
int main(int argc, const char *argv[])
{//存放操作数int n;//创建顺序表Plist L = create_list();//存储增删改查位置int pos;//存储增改的学生信息student s;//存放按姓名查找的姓名char key[20];//管理系统框架while(1){printf("\t++++++++++学生管理系统++++++++++++++++\n");printf("\t\t1、输入学生信息\n");printf("\t\t2、任意位置插入学生信息\n");printf("\t\t3、任意位置删除学生信息\n");printf("\t\t4、查找任意位置学生信息\n");printf("\t\t5、修改任意位置学生信息\n");printf("\t\t6、表头插入学生信息\n");printf("\t\t7、表尾插入学生信息\n");printf("\t\t8、表头删除学生信息\n");printf("\t\t9、表尾删除学生信息\n");printf("\t\t10、去除重复学生信息\n");printf("\t\t11、按名字查找学生信息\n");printf("\t\t12、退出系统\n");printf("\t+++++++++++++++++++++++++++++++++++++++\n");printf("请输入要执行的操作:\n");scanf("%d",&n);//switch循环判断操作数,执行对应功能switch(n){case 1:input_list(L);break;case 2:printf("请输入要插入的学生信息:");scanf("%d %s %s %d",&s.id,s.name,s.major,&s.age);printf("请输入要插入的位置:");scanf("%d",&pos);insert_stu(L,pos,s);output_list(L);break;case 3:printf("请输入要删除学生位置:");scanf("%d",&pos);delete_stu(L,pos);output_list(L);break;case 4:printf("请输入要查找的学生位置:");scanf("%d",&pos);inserach_stu(L,pos);break;case 5:printf("请输入要修改的学生信息:");scanf("%d %s %s %d",&s.id,s.name,s.major,&s.age);printf("请输入要修改的位置:");scanf("%d",&pos);change_stu(L,pos,s);output_list(L);break;case 6://表头插入printf("请输入要插入的学生信息:");scanf("%d %s %s %d",&s.id,s.name,s.major,&s.age);insert_front(L,s);output_list(L);break;case 7://表尾插入printf("请输入要插入的学生信息:");scanf("%d %s %s %d",&s.id,s.name,s.major,&s.age);insert_rear(L,s);output_list(L);break;case 8://表头删除delete_front(L);output_list(L);break;case 9://表尾删除delete_rear(L);output_list(L);break;case 10://去除重复delete_cf(L);output_list(L);break;case 11:printf("请输入学生姓名:");scanf("%s",key);find_stu_all(L,key);break;case 12:return 0;default:printf("输入有误\n");break;}}return 0;
}
(3)各功能函数的编写
#include "list.h"
Plist create_list()
{Plist L=malloc(sizeof(list));if(NULL==L){printf("申请空间失败\n");return NULL;}L->len = 0;printf("创建成功\n");return L;//返回顺序表地址
}
int input_list(Plist L)
{int n;printf("要输入的学生个数:");scanf("%d",&n);for(int i=0;i<n;i++){printf("请输入第%d个学生信息\n",i+1);printf("请输入学号:");//循环嵌套输入信息scanf("%d",&L->data[i].id);printf("请输入姓名:");scanf("%s",L->data[i].name);printf("请输入专业:");scanf("%s",L->data[i].major);printf("请输入年龄:");scanf("%d",&L->data[i].age);L->len++;}return 0;
}
//输出函数
int output_list(Plist L)
{for(int i=0;i<L->len;i++){//结构体嵌套输出printf("学号:%d\t姓名:%s\t专业:%s\t年龄:%d\n",L->data[i].id,L->data[i].name,L->data[i].major,L->data[i].age);}return 0;
}
//判满
int full(Plist L)
{if(L->len==MAX)return 1;return 0;
}
//插入函数
int insert_stu(Plist L,int pos,student s)
{int sub=pos-1;//数组下标==位置-1//判断插入位置是否正确和顺序表是否为空if(sub<1||sub>L->len||L==NULL||full(L)){printf("插入失败!\n");return -1;}//循环移动元素//从尾元素开始,到要插入位置,其他元素循环向后移动一位for(int i=L->len-1;i>=sub;i--){L->data[i+1]=L->data[i];}//插入新学生L->data[sub]=s;//长度+1L->len++;printf("插入成功\n");return 0;
}
//判断表是否为空
int empty(Plist L){if(L->len==0)return 1;return 0;
}
//删除函数
int delete_stu(Plist L,int pos)
{int sub=pos-1;//判断位置是否合法if(sub<0||sub>L->len-1||L==NULL||empty(L)){printf("删除失败\n");return -1;}//从输入位置到最后for(int i=sub;i<=L->len-1;i++){//后一个元素覆盖前一个元素,实现删除L->data[i]=L->data[i+1];}//顺序表长度-1L->len--;printf("删除成功\n");return 0;
}
//查找函数
int inserach_stu(Plist L,int pos)
{int sub=pos-1;if(sub<0||sub>L->len-1||L==NULL||empty(L)){printf("查找失败\n");return -1;}printf("该生存在\n");printf("学号:%d\t姓名:%s\t专业:%s\t年龄:%d\n",L->data[sub].id,L->data[sub].name,L->data[sub].major,L->data[sub].age);return 0;
}
//修改函数
int change_stu(Plist L,int pos,student e)
{int sub =pos-1;if(sub<0||sub>L->len-1||L==NULL||empty(L)){printf("修改失败\n");return -1;}//将修改信息直接赋值给要求位置元素L->data[sub]=e;printf("修改成功\n");return 0;
}
//表头插入
int insert_front(Plist L,student e)
{//判断顺序表是否为满if(L==NULL||full(L)){printf("插入失败\n");return -1;}//从最后元素到指定位置for(int i=L->len-1;i>=0;i--){//后一元素被前一元素覆盖,实现插入后移L->data[i+1]=L->data[i];}L->data[0]=e;L->len++;printf("表头插入成功\n");return 0;
}
//表尾插入
int insert_rear(Plist L,student e)
{if(L==NULL||full(L)){printf("表尾插入失败\n");return -1;}L->data[L->len]=e;L->len++;printf("表尾插入成功\n");return 0;
}
//表头删除
int delete_front(Plist L)
{//判断表是否为空if(L==NULL||empty(L)){printf("表头删除失败\n");return -1;}for(int i=0;i<L->len;i++){L->data[i]=L->data[i+1];}L->len--;printf("表头删除成功\n");return 0;
}
//表尾删除
int delete_rear(Plist L)
{if(L==NULL||empty(L)){printf("表尾删除失败\n");return -1;}L->data[L->len-1]=L->data[L->len];L->len--;printf("表尾删除成功\n");return 0;
}
//去除重复学生信息
int delete_cf(Plist L)
{for(int i=0;i<L->len;i++){for(int j=0;j<L->len;j++){//判断两者姓名是否相同if(strcmp(L->data[i].name,L->data[j].name)==0){//删除相同信息delete_stu(L,j+1);//指针回退,避免相同信息连续被跳过j--;}}}return 0;
}
//按照学生姓名查找信息
int find_stu_all(Plist L,char key[20])
{int sub=-1;for(int i=0;i<L->len;i++){if(strcmp(L->data[i].name,key)==0){printf("位置:%d\t是%s\n",i+1,L->data[i].name);sub=i;}}if(sub==-1){printf("查找失败,该生不存在\n");return -1;}return 0;}
2、运行结果如图所示:

 

 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com