相信许多童鞋的第一次都给了这个项目吧,嘿嘿……嘿 0.0
员工经过长期磨合与沉淀,具备了协作精神,得以通过团队的力量开发出优质的产品。创新互联建站坚持“专注、创新、易用”的产品理念,因为“专注所以专业、创新互联网站所以易用所以简单”。公司专注于为企业提供成都网站建设、网站建设、微信公众号开发、电商网站开发,微信小程序定制开发,软件按需规划网站等一站式互联网企业服务。
这里提供了一份源码供大家参考,请自行食用。
项目功能:
(1)help函数,打印菜单,获取帮助信息。
(2)insert函数:插入数据信息。
(3)sort函数:对已有信息进行排序。
(4)find函数:索引查找信息。
(5)output函数:遍历信息。
(6)delete函数:通过索引删除信息。
运行展示:初始化界面:
运行界面:
到这里,我猜有人要说:"你啰嗦***呢?我不会自己操作吗,还不快把源码给朕呈上来?”
源码参上:
main.c文件
#include"student.h"
int main()
{
printf("\t\t\t\t\t迎使用学生信息管理系统\n");
Menu();
STU *head=NULL;
while(1)
{
printf("\t\t\t请输入操作指令: ");
char str[32]=" ";
scanf("%s",str);
if(strcmp(str,"insert")==0)
{
printf("\t\t\t请输入学生信息(学号 姓名 性别 年龄 四科成绩):\n");
STU tmp;
printf("\t\t\t");
scanf("%d %s %s %d %d %d %d %d",&tmp.num,tmp.name,tmp.sex,&tmp.age,&tmp.score_Chinese,&tmp.score_Math,&tmp.score_Computer,&tmp.score_English);
tmp.score_average=(tmp.score_Chinese+tmp.score_Computer+tmp.score_English+tmp.score_Math)/4.0;
tmp.score_sum=tmp.score_Chinese+tmp.score_Computer+tmp.score_English+tmp.score_Math;
head=Insert(head,tmp);
}
else if(strcmp(str,"sort")==0)
{
Sort_num(head);
}
else if(strcmp(str,"find")==0)
{
STU *pf=NULL;
int num;
printf("\t\t\t按照学号查找为1,按照姓名查找为2\n");
int t;
printf("\t\t\t");
scanf("%d",&t);
if(t==1)
{
printf("\t\t\t请输入查询学生的学号:\n");
printf("\t\t\t");
scanf("%d",&num);
pf=Find_num(head,num);
}
else if(t==2)
{
printf("\t\t\t请输入查询学生的姓名:\n");
char n_name[32];
printf("\t\t\t");
scanf("%s",n_name);
STU *pi=head;
while(pi!=NULL&&strcmp(pi->name,n_name)!=0)
{
pi=pi->next;
}
if(pi!=NULL)
{
pf=Find_num(head,pi->num);
}
}
if(pf!=NULL)
{
print_data(pf);
}
else
{
printf("\t\t\t未查询到该学生信息\n");
}
}
else if(strcmp(str,"output")==0)
{
output_a(head);
}
else if(strcmp(str,"delete")==0)
{
int num = 0;
printf("\t\t\t按照学号删除为1,按照姓名删除为2:\n");
int temp;
printf("\t\t\t");
scanf("%d",&temp);
if(temp == 1)
{
printf("\t\t\t请输入删除学生信息的学号:\n");
printf("\t\t\t");
scanf("%d",&num);
Delete_num(&head,num);
}
else
{
printf("\t\t\t请输入查询学生的姓名:\n");
char n_name[32];
printf("\t\t\t");
scanf("%s",n_name);
STU *pi = head;
while(pi && strcmp(pi->name,n_name) != 0)
{
pi = pi->next;
}
if(pi != NULL)
{
Delete_num(&head,pi->num);
}
}
}
else if(strcmp(str,"quit")==0)
{
printf("\t\t\t成功退出程序\n");
break;
}
else
{
printf("\t\t\t输出错入指令,请重新输入\n");
}
}
return 0;
}
student.h文件
#ifndef STUDENT_H
#define STUDENT_H
#include#include#includetypedef struct Student
{
//数据域
int num;
char name[20];
char sex[10];
int age;
int score_Chinese;
int score_Math;
int score_Computer;
int score_English;
double score_average;
int score_sum;
//指针域
struct Student *next;
}STU;
void Menu(void);
STU* Insert(STU *head,STU tmp);//按照顺序插入
void Sort_num(STU *head);//排序
STU* Find_num(STU *head,int num);//按照学号查找,按照姓名查找
void output_a(STU *head);//遍历所有学生信息
void Delete_num(STU **head,int num);//按照学号删除,按照学号删除
void print_data(STU* pf);//遍历单个学生信息
#endif
student.c文件
#include"student.h"
extern void Menu(void)
{
printf("\t\t\t----------------------------------------------------------\t\t\t\n");
printf("\t\t\t| (1)添加信息 insert |\n");
printf("\t\t\t| (2)信息排序 sort |\n");
printf("\t\t\t| (3)查找信息 find |\n");
printf("\t\t\t| (4)删除信息 delete |\n");
printf("\t\t\t| (5)遍历信息 output |\n");
printf("\t\t\t| (6)退出程序 quit |\n");
printf("\t\t\t----------------------------------------------------------\t\t\t\n");
return ;
}
STU* Insert(STU *head,STU tmp)
{
STU *pi=(STU*)calloc(1,sizeof(STU));
if(pi==NULL)
{
perror("calloc");
exit(-1);//如果申请失败直接结束程序
}
*pi=tmp;
pi->next=NULL;
if(head==NULL)
{
head=pi;
}
else
{
STU *pf=head;
while(pf->next!=NULL)
{
pf=pf->next;
}
pf->next=pi;
pi->score_average=(pi->score_Computer+pi->score_English+pi->score_Math+pi->score_Chinese)/4;
pi->score_sum=pi->score_Computer+pi->score_English+pi->score_Math+pi->score_Chinese;
}
return head;
}
void Sort_num(STU *head)
{
if(head==NULL)
{
printf("\t\t\t信息库为空\n");
}
else
{
STU *pi=head;
STU *pj=head;
//选择法排序
while(pi->next!=NULL)
{
STU *min=pi;
pj=pi->next;
while(pj!=NULL)
{
if(min->num>pj->num)
{
min=pj;
}
pj=pi->next;
}
if(pi!=pj)
{
//交换数据
STU tmp=*pi;
*pi=*min;
*min=tmp;
//交换指针
tmp.next=pi->next;
pi->next=pj->next;
pj->next=tmp.next;
}
pi=pi->next;
}
}
return ;
}
STU* Find_num(STU *head,int num)
{
STU *pf=head;
if(head==NULL)
{
printf("\t\t\t信息库为空\n");
}
else
{
while(pf!=NULL&&pf->num!=num)
{
pf=pf->next;
}
}
return pf;
}
void output_a(STU *head)
{
STU *pf = head;
if(pf == NULL)
{
printf("\t\t\t信息库为空\n");
}
else
{
printf("\t\t\t学号 姓名 性别 年龄 语文成绩 电脑成绩 数学成绩 英语成绩 平均成绩 总成绩 \n");
while(pf != NULL)
{
printf("\t\t\t%d %s %s %d %d %d %d %d %.2f %d\n",pf->num,pf->name,pf->sex,pf->age,pf->score_Chinese,pf->score_Math,pf->score_Computer,pf->score_English,pf->score_average,pf->score_sum);
pf = pf->next;
}
}
return ;
}
void Delete_num(STU **head,int num)
{
STU **pf = head;
STU **pi = NULL;
if(*head == NULL)
{
printf("\t\t\t信息库为空\n");
}
else
{
while(((*pf)->next != NULL) && ((*pf)->num != num))
{
*pi = *pf;
*pf = (*pf)->next;
}
if((*pf)->num == num)
{
if((*pf) == head)//头部删除
{
*head = (*head)->next;
//free(pf);
}
else//删除中尾部节点
{
(*pf)->next = (*pf)->next;
//free(pf);
}
free(*pf);
printf("\t\t\t信息删除成功\n");
}
else
{
printf("\t\t\t未查询到该学生信息\n");
}
}
}
void print_data(STU* pf)
{
printf("\t\t\t学号 姓名 性别 年龄 语文成绩 电脑成绩 数学成绩 英语成绩 平均成绩 总成绩 \n");
printf("\t\t\t%d %s %s %d %d %d %d %d %.2f %d\n",pf->num,pf->name,pf->sex,pf->age,pf->score_Chinese,pf->score_Math,pf->score_Computer,pf->score_English,pf->score_average,pf->score_sum);
return;
}
到这里,作为戏精的我已经忍不住开始得瑟了,又拯救哪个小伙伴的世界嘞?
木哈哈哈哈!!! 哈?看到这了竟还想要白嫖???那个……我承认刚才说话声音有点大,给个赞吧0.0
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧