当前位置:首页 » 编程语言 » 建立学生信息用c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

建立学生信息用c语言

发布时间: 2022-09-22 01:33:36

‘壹’ 用c语言设计一个学生信息查询系统程序

1、首先创建一个c语言项目。然后右键头文件,创建一个Stu的头文件。

‘贰’ 用C语言创建学生信息处理系统,要求如下

你这来可以用基本的链表来创建。
链表就是结构体用指针连接起来。
学生的信息可以定义成结构类型。
每个学生就是一个结构体的变量。
每个结构体都有一个指针成员next指向下一个学生的结构体变量。
这样就构成了链表。对链表的增删就是对这个链表指针操作,并释放删除节点空间。

具体链表代码,在我回答记录里,我已经回答过很多次。各种都有,你需要去我回答记录找吧。

‘叁’ c语言!!!程序设计:建立一个学生信息链表,包括学号,姓名,成绩.(实现添加,删除,查询,排序,平均)

代码如下:

/*用c语言链表编写一个学生信息系统程序,要求输出学生的学号,姓名,性别,学号,姓名,成绩(实现添加,删除,查询,排序,平均)*/

#include <stdio.h>

#include <iostream>

#include <string.h>

#include <stdlib.h>

using namespace std;

const int n=5;

/*

* nodeEntry : 节点数据类型

* nodeADT : 节点结构

* linkADT : 链表结构

*/

typedef struct Student

{

int num;

char name[30];

char sex;

float score1;//语文

float score2;//数学

float score3;//英语

//struct Student *next;

}Student;

typedef struct linkCDT {

nodeADT head;

}*linkADT;

/*

* InitLink : 初始化链表

* CreateNode : 创建节点

* AppendLink : 添加数据

*/

nodeADT CreateNode(Student entry) {

nodeADT p=(nodeADT)malloc(sizeof*p);

p->entry=entry,p->next=0;

return p;

}

/*

SortLink : 排序链表

//按学号排序

void SortLinkID(linkADT link) {

nodeADT pHead,pRear,p,tp;

if (!link) return;

for (pHead=link->head,pRear=0;pHead;pHead=pHead->next) {

for (tp=pHead,p=pHead->next;p;tp=p,p=p->next)

if (pHead->entry.num>=p->entry.num)

tp->next=p->next,p->next=pHead,pHead=p,p=tp;

if (!pRear) link->head=pHead;

else pRear->next=pHead;

pRear=pHead;

}

//按英语成绩排序

void SortLinkEnglish(linkADT link) {

nodeADT pHead,pRear,p,tp;

if (!link) return;

for (pHead=link->head,pRear=0;pHead;pHead=pHead->next) {

for (tp=pHead,p=pHead->next;p;tp=p,p=p->next)

if (pHead->entry.score3>=p->entry.score3)

tp->next=p->next,p->next=pHead,pHead=p,p=tp;

if (!pRear) link->head=pHead;

else pRear->next=pHead;

pRear=pHead;

}

}

//按姓名的字典序进行排序

void SortLinkName(linkADT link) {

nodeADT pHead,pRear,p,tp;

if (!link) return;

for (pHead=link->head,pRear=0;pHead;pHead=pHead->next) {

for (tp=pHead,p=pHead->next;p;tp=p,p=p->next)

if (pHead->entry.name[0]>=p->entry.name[0])

tp->next=p->next,p->next=pHead,pHead=p,p=tp;

if (!pRear) link->head=pHead;

else pRear->next=pHead;

pRear=pHead;

}

}

//按姓名的长度进行排序

void SortLinkNameLength(linkADT link) {

nodeADT pHead,pRear,p,tp;

if (!link) return;

for (pHead=link->head,pRear=0;pHead;pHead=pHead->next) {

for (tp=pHead,p=pHead->next;p;tp=p,p=p->next)

if (strlen(pHead->entry.name)>=strlen(p->entry.name))

tp->next=p->next,p->next=pHead,pHead=p,p=tp;

if (!pRear) link->head=pHead;

else pRear->next=pHead;

pRear=pHead;

}

循环链表是与单链表一样

是一种链式的存储结构,所不同的是,循环链表的最后一个结点的指针是指向该循环链表的第一个结点或者表头结点,从而构成一个环形的链。

循环链表的运算与单链表的运算基本一致。所不同的有以下几点:

1、在建立一个循环链表时,必须使其最后一个结点的指针指向表头结点,而不是象单链表那样置为NULL。此种情况还使用于在最后一个结点后插入一个新的结点。

2、在判断是否到表尾时,是判断该结点链域的值是否是表头结点,当链域值等于表头指针时,说明已到表尾。而非象单链表那样判断链域值是否为NULL。

以上内容参考:网络-链表

‘肆’ 关于创建一个学生信息表的C语言问题

#include <stdio.h>
#include <windows.h>
#include <malloc.h>
#include <string.h>
#define N 3
typedef struct node
{
char name[20];
//################################################################
int score;
//################################################################
struct node *link;
}stud;

stud * creat(int n)
{
stud *p,*h,*s;
int i;
if((h=(stud *)malloc(sizeof(stud)))==NULL)
{
printf("不能分配内存空间!");
exit(0);
}
h->name[0]='\0';
h->link=NULL;
p=h;
for(i=0;i<n;i++)
{
if((s= (stud *) malloc(sizeof(stud)))==NULL)
{
printf("不能分配内存空间!");
exit(0);
}
p->link=s;
printf("请输入第%d个人的姓名",i+1);
scanf("%s",s->name);
//################################################################
printf("请输入第%d个人的分数",i+1);
scanf("%d",&s->score);
//################################################################
s->link=NULL;
p=s;
}
return(h);
}

void main()
{
stud *head,*searchpoint,*forepoint;
char fullname[20];
head=creat(N);
getchar();
}
我试了一下没有什么错误了,就是在在s->score前加了一个地址符,s->name前没有地址符是因为name是一个数组,其本身就是一个地址。

‘伍’ 建立一个学生信息系统C语言编程

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>

intbExit=0;
inttotal=0;
#defineCreate(the_one)the_one=(Stu*)malloc(sizeof(Stu))
typedef
structStudent
{
charcnum[20]; //字符串学号
intinum; //数字学号
charname[20]; //姓名
floatscore; //成绩
structStudent*next;
}Stu;
Stu*the_one,*h,*pr,*last,*end;//1.添加学生函数
voidADD()
{
intFour=0;
printf("================================ ");

Create(the_one);
the_one->next=NULL;

end=last;//end指向倒数第二个结点

last->next=the_one;//将the_one放在链表的最后
last=the_one;//last指向倒数第一个结点

//输入学号
printf("输入学生信息: 学号:");

while(!Four)
{
gets(the_one->cnum);
if(strlen(the_one->cnum)!=4)
printf("输入非法:学号必须是4位,请重新输入! 学号:");
else
Four=1;
}
the_one->inum=atoi(the_one->cnum); //int型学号

//输入姓名
printf("学生姓名:");
gets(the_one->name);
//输入成绩
printf("学生成绩:");
scanf("%f",&the_one->score);
getchar();//接收回车
//总数+1
total++;
//排序

//pr从空head开始,last指向下一个(前趋pr,后趋last)
for(pr=h,last=pr->next;last->next;pr=pr->next,last=pr->next)
{
if(last->inum>the_one->inum)
{
//插入元素the_one
the_one->next=last;
pr->next=the_one;

last=end;//插入完成,将last移到最后。
end->next=NULL;//最后结点指针域置空,last->next为NULL,跳出循环
break;
}
}
printf("================================ ");
}

//2.查询学生函数
voidCHECK()
{
Stu*target,*p;
intfond=0;
printf("================================ ");
printf("输入要查找学生的学号: 学号:");
Create(target);
gets(target->cnum);
for(p=h->next;p;p=p->next)
{
if(!strcmp(p->cnum,target->cnum))
{
printf("学号为%s的学生信息:姓名(%s),分数(%.2f) ",p->cnum,p->name,p->score);
free(target);
fond=1;
}
}
if(!fond)
printf("WrongStudentNO.! ");
printf("================================ ");
}
//3.编辑学生
voidEDIT()
{
Stu*target,*p;
intfond=0;
printf("================================ ");
printf("输入要编辑学生的学号: 学号:");
Create(target);
gets(target->cnum);
for(p=h->next;p;p=p->next)
{
if(!strcmp(p->cnum,target->cnum))
{
printf("学号为%s的学生信息:姓名(%s),分数(%.2f) ",p->cnum,p->name,p->score);
printf("请选择修改项目: 1:姓名 2:分数 ");
charc;
c=getch();
switch(c)
{
case'1':
printf("输入正确的姓名:");
gets(p->name);
break;
case'2':
printf("输入最新成绩:");
scanf("%f",&p->score);
break;
}
printf("学号为%s的学生最新信息:姓名(%s),分数(%.2f) ",p->cnum,p->name,p->score);

free(target);
fond=1;
}
}
if(!fond)
printf("NotExitThisNO.! ");
printf("================================ ");

}
//4.删除学生
voidDELETE1()
{
voidPRINALL();
PRINALL();
Stu*target,*p,*pr;
intfond=0;
printf("================================ ");
printf("输入要删除学生的学号:(如果删除所有学生信息,请输入0000) 学号:");
Create(target);
gets(target->cnum);
target->inum=atoi(target->cnum);
// char*zero=&"0000";

if(!strcmp(target->cnum,"0000"))
{
h->next=NULL;
total=0;
}
else
{

for(pr=h,p=h->next;p;pr=pr->next,p=p->next)
{
if(!strcmp(p->cnum,target->cnum))
{
printf("学号为%s的学生信息已删除 ",p->cnum);
free(target);
pr->next=p->next;
p->next=NULL;
// free(p);此句报错
fond=1;
total--;
}
}
if(!fond)
printf("没有找到学号为%s的学生,请确认学号输入是否正确 ");
}
printf("================================ ");
}
//5.打印全部
voidPRINALL()
{
intamounts=1;
Stu*Op;
printf("================================ ");
printf("所有学生信息: ");
for(Op=h->next;Op;Op=Op->next)
printf("%d.%s,%s,%.2f ",amounts++,Op->cnum,Op->name,Op->score);
printf("================================ ");
}
//6.总人数
voidTOTAL()
{
printf("================================ ");
printf("学生总人数:%d ",total);
printf("================================ ");
}

//菜单函数
voidMenu()
{
charorder;
printf("================================ ");
printf("|1.添加学生.| ");
printf("|2.查询学生.| ");
printf("|3.编辑学生.| ");
printf("|4.删除学生.| ");
printf("|5.打印全部.| ");
printf("|6.总人数.| ");
printf("|7.退出.| ");
printf("================================ ");

order=getch();
system("cls");


switch(order)
{
case'1':
ADD();
break;
case'2':
CHECK();
break;
case'3':
EDIT();
break;
case'4':
DELETE1();
break;
case'5':
PRINALL();
break;
case'6':
TOTAL();
break;
case'7':
bExit=1;
break;
}
while(!bExit)
{
getch();
system("cls");
Menu();
}
}
voidmain()
{
//创建链表头
Create(h);
pr=last=end=the_one=h;
the_one->next=NULL; Menu();
}

‘陆’ 如何用c语言制作一个学生信息管理系统,要求以文件形式保存

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

//链表结点结构体声明

typedef struct subjects

{

char name[20];

float score;

}sub;

typedef struct student

{

int num;

char name[20];

sub subject[3];

struct student* next;

}stu,*pstu;

#define SIZE sizeof(stu)

//函数申明

pstu LoadInfo();

void PrintMenu();

pstu AddStu(pstu );

pstu DeleStu(pstu );

pstu RwrStu(pstu );

void FindStu(pstu , char );

void Count(pstu ,char * ,float ,float );

void Rank(pstu ,char * );

void SaveQuit(pstu );

//创建菜单,进入选择循环

while(1)

{

PrintMenu();

printf("请输入您的选择编号:");

scanf("%d",&n);

getchar();

switch(n)

{

case 1:

{

system("cls");

j=0;

while(4!=j)

{

printf("欢迎进入信息管理版块! ");

printf("25 1、添加学生 ");

printf("25 2、删除学生 ");

printf("25 3、修改学生信息 ");

printf("25 4、返回 ");

printf("请输入您的选择编号: ");

scanf("%d",&j);

getchar();

if ( 1 == j) head = AddStu(head);

else if( 2 == j) head = DeleStu(head);

else if( 3 == j) head = RwrStu(head);

else if( 4 == j) ;

else printf("输入有误,请重新输入! ");

}

case 2:

{

//信息查询

system("cls");

printf("欢迎进入信息查询版块! ");

printf("请输入要查询的学生编号:");

scanf("%d",&j);

getchar();

//printf("%d ",j); //检测输入是否成功,调试程序用

FindStu(head,j); //查询并输出

printf(" 请输入回车键返回主菜单!");

getchar();

system("cls");

break;

}

(6)建立学生信息用c语言扩展阅读:

C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。

实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。

‘柒’ c语言学生信息管理系统 ,建立学生信息包括姓名学号,年龄,电话号码,生日,籍贯

在这个学生基本信息管理系统中,定义了函数void getInfo()、void SaveTxt()、void stuSaveTxt()、void showInfo()、void searchmenu()、void searchnum()、void searchname()、void searchsex()、void searchdormitory()、void countmenu()、void altermenu()、void alterstudent()、void erase()、int huoqu(int i)、进行学生信息的录入、保存、显示学生信息、按学号、姓名、性别、寝室号查询;统计学生信息、修改学生信息、删除学生信息等的实现,另外用函数实现了程序中的清屏和退出。在函数中,多次运用switch(),do while()函数,使程序简单顺利的进行。
当然,通过menu()等的菜单函数,来实现功能菜单显示在运行窗口以提示用户如何进行操作。
另外,主函数main()中,不再是全部在一个函数中实现,而是通过对函数的调用,让函数的功能进行实现。
另外,在函数中也用了大量的清屏和退出函数,使整个管理系统更为合理和完善

‘捌’ 如何用c语言编写学生信息管理系统

性别也就两种状态,你就 定义 1 表示男性 0 表示女性,用一个int类型存储,名字就定义一个20个字符长度的字符串,电话,学号这些都可以定义为字符串(长度自己选择) 寝室号看情况也可以定义int类型或者字符串类型;
输入就用字符串和整型数字的输入方式啊 scanf
存储的话,一般写入文件里面去,用结构体数组或链表进行 增删改查

‘玖’ 用c语言编写学生基本信息(最好用结构体)拜托啦,急求!

在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为:
struct 结构体名{
结构体所包含的变量或数组
};
结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。请看下面的一个例子:
struct stu{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
};
stu 为结构体名,它包含了 5 个成员,分别是 name、num、age、group、score。结构体成员的定义方式与变量和数组的定义方式相同,只是不能初始化。
注意大括号后面的分号;不能少,这是一条完整的语句。
结构体也是一种数据类型,它由程序员自己定义,可以包含多个其他类型的数据。

像 int、float、char 等是由C语言本身提供的数据类型,不能再进行分拆,我们称之为基本数据类型;而结构体可以包含多个基本类型的数据,也可以包含其他的结构体,我们将它称为复杂数据类型或构造数据类型。
结构体变量

既然结构体是一种数据类型,那么就可以用它来定义变量。例如:
struct stu stu1, stu2;
定义了两个变量 stu1 和 stu2,它们都是 stu 类型,都由 5 个成员组成。注意关键字struct不能少。

stu 就像一个“模板”,定义出来的变量都具有相同的性质。也可以将结构体比作“图纸”,将结构体变量比作“零件”,根据同一张图纸生产出来的零件的特性都是一样的。

你也可以在定义结构体的同时定义结构体变量:
struct stu{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
} stu1, stu2;
将变量放在结构体定义的最后即可。

如果只需要 stu1、stu2 两个变量,后面不需要再使用结构体名定义其他变量,那么在定义时也可以不给出结构体名,如下所示:
struct{ //没有写 stu
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
} stu1, stu2;
这样做书写简单,但是因为没有结构体名,后面就没法用该结构体定义新的变量。

理论上讲结构体的各个成员在内存中是连续存储的,和数组非常类似,例如上面的结构体变量 stu1、stu2 的内存分布如下图所示,共占用 4+4+4+1+4 = 17 个字节。

但是在编译器的具体实现中,各个成员之间可能会存在缝隙,对于 stu1、stu2,成员变量 group 和 score 之间就存在 3 个字节的空白填充(见下图)。这样算来,stu1、stu2 其实占用了 17 + 3 = 20 个字节。

关于成员变量之间存在“裂缝”的原因,我们将在《C语言和内存》专题中的《C语言内存对齐,提高寻址效率》一节中详细讲解。
成员的获取和赋值

结构体和数组类似,也是一组数据的集合,整体使用没有太大的意义。数组使用下标[ ]获取单个元素,结构体使用点号.获取单个成员。获取结构体成员的一般格式为:
结构体变量名.成员名;
通过这种方式可以获取成员的值,也可以给成员赋值:
#include <stdio.h>
int main(){
struct{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在小组
float score; //成绩
} stu1;
//给结构体成员赋值
stu1.name = "Tom";
stu1.num = 12;
stu1.age = 18;
stu1.group = 'A';
stu1.score = 136.5;
//读取结构体成员的值
printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", stu1.name, stu1.num, stu1.age, stu1.group, stu1.score);
return 0;
}
运行结果:
Tom的学号是12,年龄是18,在A组,今年的成绩是136.5!

除了可以对成员进行逐一赋值,也可以在定义时整体赋值,例如:
struct{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在小组
float score; //成绩
} stu1, stu2 = { "Tom", 12, 18, 'A', 136.5 };
不过整体赋值仅限于定义结构体变量的时候,在使用过程中只能对成员逐一赋值,这和数组的赋值非常类似。

‘拾’ c语言,结构体数组的应用练习:建立五名学生的信息表。

//希望我的回答对你的学习有帮助
#include<stdio.h>

#defineN5

structStudent
{
charID[20];
charName[10];
floatScore;
}Stu[N];

intmain()
{
for(inti=0;i<N;i++)
{
scanf("%s%s%f",Stu[i].ID,Stu[i].Name,&Stu[i].Score);
}

for(inti=0;i<N;i++)
{
printf("%s%s%f ",Stu[i].ID,Stu[i].Name,Stu[i].Score);
}

return0;
}