‘壹’ 用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("