概述
学习数据结构之后,我们可以将这些综合起来,利用C语言和数据结构,可以完成一个简单的学生信息的管理系统,动态申请存储,可以对学生信息进行排序,查找,删除等操作,下面是我简单完成的学生信息管理系统,大体功能实现了,细化的没时间弄,大家可以相互借鉴一下,勿喷!!!
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
float average=0;
int count=0;
struct student
{
char name[10];
int id;
char sex;
int class;
float score;
struct student * next;
};
typedef struct student student_info;
student_info stuHead;
//打印所有学生的信息
void pr_All(student_info *pt)
{
student_info *pt1=pt->next;
while(pt1)
{
printf("姓名:%s 学号:%d 性别:%c 成绩:%f 班级:%dn",pt1->name,pt1->id,
pt1->sex,pt1->score,pt1->class);
pt1=pt1->next;
}
}
//录入学生信息
void add_stu(student_info *pSTU)
{
student_info *pt;
student_info *pHead=pSTU;
while(1){
pt=malloc(sizeof(student_info));
memset(pt,0,sizeof(student_info));
printf("请输入学生信息:(姓名 学号 性别 成绩 班级n");
scanf("%s %d %c %f %d",pt->name,&pt->id,&pt->sex,&pt->score,&pt->class);
//printf("姓名:%s 学号:%d 性别:%c 成绩:%f 班级:%dn",pt->name,pt->id,
// pt->sex,pt->score,pt->class);
if(strcmp(pt->name,"#")==0)
{
free(pt);
break;
}
count++;
pHead->next=pt;
pHead=pHead->next;
}
return ;
}
//删除学生信息
int del_stu(student_info *pSTU)
{
char num[10];
student_info* pre=pSTU;
student_info* p=pSTU->next;
printf("请输入学生的姓名:");
scanf("%s",num);
while(p)
{
pre=pre->next;
p=p->next;
if(strcmp(p->name,num))
{
//printf("找打了");
pre->next=p->next;
free(p);
return 1;
}
}
return 0;
}
//查询学生信息
int look_info(student_info *pSTU)
{
char num[10];
int i;
printf("请输入学生的姓名:");
scanf("%s",num);
while(pSTU)
{
if(strcmp(pSTU->name,num)==0)
{
printf("姓名:%s 学号:%d 性别:%c 成绩:%f 班级:%dn",pSTU[i].name,pSTU[i ].id,pSTU[i].sex,pSTU[i].score,pSTU[i].class);
return 1;
}
pSTU=pSTU->next;
}
return 0;
}
//查询学生平均成绩
void aver_sc(student_info *pSTU)
{
int i;
while(pSTU){
average+=pSTU->score;
pSTU=pSTU->next;
}
average=average/(float)(count);
printf("平均成绩:%fn",average);
return ;
}
//更改学生信息
int chang_stuinfo(student_info *pSTU)
{
char num[10];
int a;
printf("请输入学生的姓名:");
scanf("%s",num);
while(pSTU)
{
if(strcmp(pSTU->name,num)==0)
{
printf("请选择要更改的内容:n1、姓名n2、学号n3、性别n4、成绩n5、班级n");
scanf("%d",&a);
switch(a)
{
case 1: //更改姓名
printf("请输入更改后的内容:n");
scanf("%s",pSTU->name);
break;
case 2: //更改学号
printf("请输入更改后的内容:n");
scanf("%d",&pSTU->id);
break;
case 3: //更改性别
printf("请输入更改后的内容:n");
scanf("%c",&pSTU->sex);
break;
case 4: //更改成绩
printf("请输入更改后的内容:n");
scanf("%f",&pSTU->score);
break;
case 5: //更改班级
printf("请输入更改后的内容:n");
scanf("%d",&pSTU->class);
break;
}
//printf("姓名:%s 学号:%d 性别:%c 成绩:%f 班级:%dn",pSTU->name,pSTU-> id,pSTU->sex,pSTU->score,pSTU->class);
return 1;
}
pSTU=pSTU->next;
}
return 0;
}
//插入学生信息
int inset_Stu(student_info *phead,char *name,student_info *insertname)
{
student_info *p = phead->next;
while(p){
if( strcmp(p->name, name) == 0){
break;
}
p=p->next;
}
// p is somebody
if(p==NULL){
printf("sorry,no found name=%sn",name);
return 0;
}
//insert
insertname->next=p->next;
p->next=insertname;
return 1;
}
int main(int val, char *argv[])
{
int a;
student_info *pt1;
student_info *p=NULL;
while(1)
{
printf("1、录入学生信息n2、删除学生信息n3、学生信息查询n4、查看平均成绩n5、修改学生信息n6、查看全部学生信息n7、插入学生信息n8、退出n请输入要操作指令:");
scanf("%d",&a);
switch(a)
{
case 1: //添加学生数据
add_stu(&stuHead);
//pr_All(&stuHead);
break;
case 2: //删除学生数据
if(del_stu(&stuHead)){
printf("删除成功n");
}else{
printf("没有查询到相关的信息!!!n");
}
break;
case 3: //查询学生信息
if(!look_info(&stuHead)){
printf("没有查询到相关的信息!!!n");
}
break;
case 4: //查看平均成绩
aver_sc(&stuHead);
break;
case 5: //更改学生信息
if(chang_stuinfo(&stuHead)) printf("修改成功n");
else printf("未查询到此人n");
break;
case 6: //打印所有学生的信息
pr_All(&stuHead);
break;
case 7://插入学生信息
pt1=malloc(sizeof(student_info));
memset(pt1,0,sizeof(student_info));
printf("请输入学生信息:(姓名 学号 性别 成绩 班级n");
scanf("%s %d %c %f %d",pt1->name,&pt1->id,&pt1->sex,&pt1->score,&pt1->class);
if(inset_Stu(&stuHead,"li",pt1)) printf("插入成功n");
else printf("未查询到此人n");
break;
case 8://退出
return 0;
}
}
return 0;
}
最后
以上就是无私嚓茶为你收集整理的嵌入式培训经验分享——数据结构小项目(动态学生信息存储)的全部内容,希望文章能够帮你解决嵌入式培训经验分享——数据结构小项目(动态学生信息存储)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复