当前位置:首页 » 考试成绩 » c语言怎么录入一个学生的成绩

c语言怎么录入一个学生的成绩

发布时间: 2021-02-05 20:59:24

㈠ 用C语言做一个学生成绩管理系统 输入学生人数,录入学生成绩

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
using namespace std;

/*定义学生结构体*/

struct Student

{

char ID[20];

char Name[20];

float Mark1;

float Mark2;

float Mark3;

float Average;

};

/*声明学生数组及学生数量*/

struct Student students[1000];

int num=0;

/*求平均值*/

float Avg(struct Student stu)

{

return (stu.Mark1+stu.Mark2+stu.Mark3)/3;

}

/*通过学号返回数组下标*/

int Student_SearchByIndex(char id[])

{

int i;

for (i=0;i<num;i++)

{

if (strcmp(students[i].ID,id)==0)

{

return i;

}

}

return -1;

}

/*通过姓名返回数组下标*/

int Student_SearchByName(char name[])

{

int i;

for (i=0;i<num;i++)

{

if (strcmp(students[i].Name,name)==0)

{

return i;

}

}

return -1;

}

/*显示单条学生记录*/

void Student_DisplaySingle(int index)

{

printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");

printf("-------------------------------------------------------------\n");

printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[index].ID,students[index].Name,

students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);

}

/*插入学生信息*/

void Student_Insert()

{

while(1)

{

printf("请输入学号:");

scanf("%s",&students[num].ID);

getchar();

printf("请输入姓名:");

scanf("%s",&students[num].Name);

getchar();

printf("请输入成绩:");

scanf("%f",&students[num].Mark1);

getchar();

printf("请输入成绩:");

scanf("%f",&students[num].Mark2);

getchar();

printf("请输入成绩:");

scanf("%f",&students[num].Mark3);

getchar();

students[num].Average=Avg(students[num]);

num++;

printf("是否继续?(y/n)");

if (getchar()=='n')

{

break;

}

}

}

/*修改学生信息*/

void Student_Modify()

{

//float mark1,mark2,mark3;

while(1)

{

char id[20];

int index;

printf("请输入要修改的学生的学号:");

scanf("%s",&id);

getchar();

index=Student_SearchByIndex(id);

if (index==-1)

{

printf("学生不存在!\n");

}

else

{

printf("你要修改的学生信息为:\n");

Student_DisplaySingle(index);

printf("-- 请输入新值--\n");

printf("请输入学号:");

scanf("%s",&students[index].ID);

getchar();

printf("请输入姓名:");

scanf("%s",&students[index].Name);

getchar();

printf("请输入成绩:");

scanf("%f",&students[index].Mark1);

getchar();

printf("请输入成绩:");

scanf("%f",&students[index].Mark2);

getchar();

printf("请输入成绩:");

scanf("%f",&students[index].Mark3);

getchar();

students[index].Average=Avg(students[index]);

}

printf("是否继续?(y/n)");

if (getchar()=='n')

{

break;

}

}

}

/*删除学生信息*/

void Student_Delete()

{

int i;

while(1)

{

char id[20];

int index;

printf("请输入要删除的学生的学号:");

scanf("%s",&id);

getchar();

index=Student_SearchByIndex(id);

if (index==-1)

{

printf("学生不存在!\n");

}

else

{

printf("你要删除的学生信息为:\n");

Student_DisplaySingle(index);

printf("是否真的要删除?(y/n)");

if (getchar()=='y')

{

for (i=index;i<num-1;i++)

{

students[i]=students[i+1];//把后边的对象都向前移动

}

num--;

}

getchar();

}

printf("是否继续?(y/n)");

if (getchar()=='n')

{

break;

}

}

}

/*按姓名查询*/

void Student_Select()

{

while(1)

{

char name[20];

int index;

printf("请输入要查询的学生的姓名:");

scanf("%s",&name);

getchar();

index=Student_SearchByName(name);

if (index==-1)

{

printf("学生不存在!\n");

}

else

{

printf("你要查询的学生信息为:\n");

Student_DisplaySingle(index);

}

printf("是否继续?(y/n)");

if (getchar()=='n')

{

break;

}

}

}

/*按平均值排序*/

void Student_SortByAverage()

{

int i,j;

struct Student tmp;

for (i=0;i<num;i++)

{

for (j=1;j<num-i;j++)

{

if (students[j-1].Average<students[j].Average)

{

tmp=students[j-1];

students[j-1]=students[j];

students[j]=tmp;

}

}

}

}

/*显示学生信息*/

void Student_Display()

{

int i;

printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");

printf("-------------------------------------------------------------\n");

for (i=0;i<num;i++)

{

printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[i].ID,students[i].Name,

students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);

}

}

/*将学生信息从文件读出*/

void IO_ReadInfo()

{

FILE *fp;

int i;

if ((fp=fopen("Database.txt","rb"))==NULL)

{

printf("不能打开文件!\n");

return;

}

if (fread(&num,sizeof(int),1,fp)!=1)

{

num=-1;

}

else

{

for(i=0;i<num;i++)

{

fread(&students[i],sizeof(struct Student),1,fp);

}

}

fclose(fp);

}

/*将学生信息写入文件*/

void IO_WriteInfo()

{

FILE *fp;

int i;

if ((fp=fopen("Database.txt","wb"))==NULL)

{

printf("不能打开文件!\n");

return;

}

if (fwrite(&num,sizeof(int),1,fp)!=1)

{

printf("写入文件错误!\n");

}

for (i=0;i<num;i++)

{

if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1)

{

printf("写入文件错误!\n");

}

}

fclose(fp);

}

/*主程序*/

void main()

{

int choice;

IO_ReadInfo();

while(1)

{

/*主菜单*/

printf("\n------ 学生成绩管理系统------\n");

printf("1. 增加学生记录\n");

printf("2. 修改学生记录\n");

printf("3. 删除学生记录\n");

printf("4. 按姓名查询学生记录\n");

printf("5. 按平均成绩排序\n");

printf("6. 退出\n");

printf("请选择(1-6):");

scanf("%d",&choice);

getchar();

switch(choice)

{

case 1:

Student_Insert();

break;

case 2:

Student_Modify();

break;

case 3:

Student_Delete();

break;

case 4:

Student_Select();

break;

case 5:

Student_SortByAverage();

Student_Display();

break;

case 6:

exit(0);

break;

}

IO_WriteInfo();

}

}

㈡ C语言怎么用数组录入3个学生成绩,每个学生有5门课成绩,并统计每个学生的平均分

#include<stdio.h>
#include<math.h>

intmain()

{
floatg[3][5];

for(inti=0;i<3;i++){
printf("请输入第%d个学生的成绩中间用空格分开: ",i+1);
scanf("%f%f%f%f%f",&g[i][0],&g[i][1],&g[i][2],&g[i][3],&g[i][4]);
}
for(inti=0;i<3;i++){
floatavg=0.0;
floatsum=0.0;
for(intj=0;j<5;j++){
sum+=g[i][j];
}
avg=sum/5;
printf("第%d个学生的平均成绩为:%f ",i+1,avg);
}

return0;

}

望采纳,谢谢

㈢ 如何用C语言编一个学生成绩管理系统

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define NULL 0
int shoudsave=0;
struct student
{
char num[10];
char name[20];
char sex[4];
int cgrade;
int mgrade;
int egrade;
int totle;
int ave;
char neartime[10];
};
typedef struct node
{
struct student data;
struct node *next;
}Node,*Link;
void menu()
{
printf("********************************************************************************");
printf("\t1输入学生资料\t\t\t\t\t2删除学生资料\n");
printf("\t3查询学生资料\t\t\t\t\t4修改学生资料\n");
printf("\t5显示学生资料\t\t\t\t\t6统计学生成绩\n");
printf("\t7排序学生成绩\t\t\t\t\t8保存学生资料\n");
printf("\t9获取帮助信息\t\t\t\t\t0退出系统\n");
printf("********************************************************************************\n");
}

㈣ 如何用C语言编写一个程序实现学员成绩

这是我写的,或许对你有帮助~
#include<time.h>
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#define MAX 50
void input();
void sort();
void display();
void insert();
void del();
void average();
int now_no=0;
struct student
{
int no;
char name[20];
char sex[4];
float score1;
float score2;
float score3;
float sort;
float ave;
float sum;
};
struct student stu[MAX],*p;
main()//主函数
{
char as;
start: printf("\t\t\t欢迎使用学生成绩管理系统\n\n");
//一下为功能选择模块
do{
printf("\n\t\t\t\t1.录入学员信息\n\t\t\t\t2.显示学员信息\n\t\t\t\t3.成绩排序信息\n\t\t\t\t4.添加学员信息\n\t\t\t\t5.删除学员信息\n\t\t\t\t6.退出\n");
printf("\t\t\t\t选择功能选项:");
as=getch();
switch(as)
{
case '1':
system("cls");
input();
break;
case '2':
system("cls");
display();
break;
case '3':
system("cls");
sort();
break;
case '4':
system("cls");
insert();
break;
case '5':
system("cls");
del();
break;
case '6':
system("exit");
exit(0);
default:
system("cls");
goto start;
}
}while(1);
//至此功能选择结束
}
void input()//原始数据录入模块
{
int i=0;
char ch;
do
{
printf("\t\t\t\t1.录入学员信息\n输入第%d个学员的信息\n",i+1);
printf("\n输入学生编号:");
scanf("%d",&stu[i].no);
fflush(stdin);
printf("\n输入学员姓名:");
fflush(stdin);
gets(stu[i].name);
printf("\n输入学员性别:");
fflush(stdin);
gets(stu[i].sex);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[i].score1);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("\n\n");
i++;
now_no=i;
printf("%d",now_no);
printf("是否继续输入?(Y/N)");
ch=getch();
system("cls");
}
while(ch!='n');
system("cls");
}
void sort()//排序数据函数
{
struct student temp;
int i,j;
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1].ave<stu[j].ave)
{temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}}}
}
void display()//显示数据函数
{
int i;
char as;
float ave;
do
{
printf("\t\t班级学员信息列表\n");
printf("\t编号\t姓名\t性别\t成绩\t成绩\t成绩\t平均值\n");
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
}
printf("\t\t按任意键返回主菜单.");
as=getch();
goto exit;
}
while(as!='n');
exit: system("cls");
}
void insert()//插入数据函数
{
char ch;
do
{
printf("\n\t\t输入新插入学员队信息\n");
printf("\n输入学生编号:");
scanf("%d",&stu[now_no].no);
fflush(stdin);
printf("\n输入学员姓名:");
fflush(stdin);
gets(stu[now_no].name);
printf("\n输入学员性别:");
fflush(stdin);
gets(stu[now_no].sex);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[now_no].score1);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[now_no].score2);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[now_no].score3);
printf("\n\n");
now_no=now_no+1;
sort();
printf("是否继续输入?(Y/N)");
ch=getch();
system("cls");
}
while(ch!='n');
}
void del()//删除数据函数
{
int inum,i,j;
printf("输入要删除学员的编号:");
fflush(stdin);
scanf("%d",&inum);
for(i=0;i<now_no;i++)
{
if(stu[i].no==inum)
{
for(j=i;j<now_no;j++)
{
stu[i]=stu[i+1];
}
now_no=now_no-1;
}
break;
}
system("cls");
}

㈤ 编写一个c语言程序,实现录入学生学号和姓名信息的功能

#include<stdio.h>

#include<stdlib.h>

intmain(void)

{

chars[10];//姓名

intnum;//学号

printf("请输入姓名: ");

gets(s);

printf("请输学号: ");

scanf("%d",&num);

printf("姓名是:%s 学号是:%d ",s,num);

system("pause");

return0;

}

(5)c语言怎么录入一个学生的成绩扩展阅读

c语言建立学生档案

#include<stdio.h>

#include<string.h>

结构学生

{

整数

字符名称[10];

intEng;

垫子;

};

//s_number-检索的学号

//numebr-文档已经存储的学号

//按学号查找

布尔搜索(chars_New[],charNew[])

{

如果(strcmp(s_New,New))

{

返回true;//查找成功

}

其他

{

returnfalse;//查找失败

}

}

无效menu()

{

printf(“----------------------------------------------------------- “);

printf(“菜单: ”);

printf(“ 1。建立学生档案 ”);

printf(“ 2。读取所有学生记录 ”);

printf(“ 3。在文件尾添加学生记录 ”);

printf(“ 4。查询学生姓名 ”);

printf(“ 5。结束程序 ”);

printf(“----------------------------------------------------------- “);

}

无效menu_2()

{

printf(“----------------------------------------------------------- “);

printf(“查找选择菜单: ”);

printf(“ 1。按名字查找 ”);

printf(“ 2。按学号查找 ”);

printf(“请选择: ”);

printf(“----------------------------------------------------------- “);

}

intmain()

{

而(1)

{

菜单();

法官

printf(“请输入你的选项:”);

判断=scanf(“%d”,&n);

如果(判断==0)

{

printf(“输入格式错误! ”);

}

开关(n)

{

情况1:

{

FILE*pf=fopen(“Student.txt”,“w+”);

字符标志='Y';

while(flag=='Y'|flag=='y')

{

学生stu;//创建学生结构体

printf(“请输入学生的学号: ”);

scanf(“%d”,&stu.number);

getchar();//吃掉以上一个输入的回车符

printf(“请输入学生的姓名: ”);

scanf(“%s”,stu.name);

printf(“请输入学生的语文成绩: ”);

scanf(“%d”,&stu.Chi);

printf(“请输入学生的英语成绩: ”);

scanf(“%d”,&stu.Eng);

printf(“请输入学生的数学成绩: ”);

scanf(“%d”,&stu.Mat);

//把学生档案导入Student.txt文档

fprintf(pf,“#姓名:%s 学号:%d 语言成绩:%d 英语成绩:%d 数学成绩:%d ”,stu.name,stu.number,stu.Chi,stu.Eng,stu.Mat);

getchar();//吃掉以上一个输入的回车符

printf(“是否继续输入学生档案?(是或否) ”);

判断=scanf(“%c”,&flag);

如果(判断==0)

{

printf(“输入格式错误! ”);

}

}

fclose(pf);

打破;

}

㈥ 【C语言】输入学生姓名和成绩排序

这种一般都是要用到结构体的,不用结构体很难讲名字和成绩这种数据一一对应起来。内

结构体容都是设置一种结构,这个结构中可以放置各个类型的数据,比如说一个人是一个结构体,那么名字,身高,体重,性别,等等都可以作为结构体里的数据。然后用这个结构体来初始化一些人,比如说小明,你将小明的身高,体重,性别等等初始化赋值给这个结构体,就可以使用 . 这个运算符号来调用结构体里成员数据。比如说 小明.姓名 的值就是小明。

根据你的提问,具体代码如下:

首先定义一个结构体的定义:

typedef struct Student
{
char name[20]; //名字

int grade; //成绩

}

初始化各个实例:
struct Student Jack, Tom, Tim;

将各个成员赋值:
Jack.name[20] = Jack;
Jack.grade = 63;

以此类推。

排序的具体方法也不难,自己看看书吧。

使用结构体的好处就是将一组与一个事物相关的数值放在一起,统一的管理和调用。

㈦ c语言 写程序(1)输入十个学生的学号和成绩(2)输入一个学号,查找

#include<stdio.h>
typedefstruct
{
charno[20];
intscore;
}STU;
intmain()
{
STUs[10],t;
charno[20];
inti,j;
for(i=0;i<10;i++)
{
scanf("%s%d",t.no,&t.score);
for(j=i;j>=0;j--)
if(s[j].score<t.score)s[j+1]=s[j];
elsebreak;
s[j+1]=t;
}
for(i=0;i<10;i++)
printf("%s%d ",s[i].no,s[i].score);

printf("输入要查询的学号:");
scanf("%s",no);

for(i=0;i<10;i++)
if(strcmp(s[i].no,no)==0)break;
if(i==10)printf("不在十个学生中 ");
elseprintf("该学生分数为%d ",s[i].score);

return0;
}

㈧ 求怎么用C语言做一个学生成绩管理系统

去年写的,你稍微改下加个成绩就行

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
FILE *fp;
struct student{
char name[10];
char number[12];
char age[3];
struct student *next;
};
struct student *creat(); //手动创建链表
struct student *build_list(); //从文件读取信息创建链表
void read_list(struct student *head); //打印链表
void search(struct student *head); //查找相应信息
struct student *delete_(struct student *head); //删除相应信息
void ad_list(struct student *head); //增加信息
int control(struct student *head); //控制函数
void head_print(); //打印界面函数
void change_list(struct student *head); //更改链表信息函数
void save(struct student *head); //保存文件
void remove(struct student *head); //递归释放链表空间
char name[10],number[12],age[3]; //学生姓名、学号、年龄全局变量
int main(){
struct student *head;
head=(struct student*)malloc(sizeof(struct student));
control(head);
free(head);
fclose(fp);
return 0;
}
struct student *creat(){
struct student *head;
char name[10],number[12],age[3];
struct student *p,*r,*p1;
head=(struct student *)malloc(sizeof(struct student));
p=head->next;
r=head;
printf("依次输入姓名学号年龄(按q退出):\n");
scanf("%s",name);
while(name[0]!='q'){
p1=(struct student*)malloc(sizeof(struct student));
scanf("%s",number);
scanf("%s",age);
strcpy(p1->name,name);
strcpy(p1->number,number);
strcpy(p1->age,age);
p1->next=NULL;
r->next=p1;
r=p1;
scanf("%s",name);
}
printf("建立成功\n");

return head;
}
/*若无文件或文件为空,用链表创建函数,为防止占用多余内存在循环入口处进行判断,函数返回头指针地址*/
struct student *build_list(){
char ch;
struct student *head;
struct student *p1,*r;
rewind(fp);
head=(struct student*)malloc(sizeof(struct student));
r=head;
while(!feof(fp)){
p1=(struct student*)malloc(sizeof(struct student));
fscanf(fp,"%s%s%s",p1->name,p1->number,p1->age);
p1->next=NULL;
r->next=p1;
r=p1;
fseek(fp,2L,SEEK_CUR);
if((ch=getc(fp))==EOF)
break;
else
fseek(fp,-3L,SEEK_CUR);
}
return head;
}
/*文件内有信息时按行读取文件信息并创建链表,为防止误读结尾换行符,用fseek函数在每次循环后移两单位判断是否为空
,若为空结束循环,若不为空则用fseek函数前移三个单位*/
void read_list(struct student *head){
struct student *p;
p=head->next;
if(p==NULL){
head=creat();
}
printf("*******************************************\n");
while(p!=NULL){
printf("%-20s%-12s%-3s\n",p->name,p->number,p->age);
p=p->next;
}
printf("*******************************************\n");
}
/*输出链表信息,如果进行删除操作后链表为空则转到链表创建函数;按行读取文件信息并输出。*/
void search(struct student *head){
char s[20];
struct student *p;
int k=0;
printf("请输入要查询的字符串:\n");
p=head->next;
scanf("%s",s);
printf("查询结果:\n");
while(p!=NULL){
if((strcmp(s,p->age)&&strcmp(s,p->name)&&strcmp(s,p->number))==0){
printf("%-20s%-12s%-3s\n",p->name,p->number,p->age);
k=1;
}
p=p->next;
}
if(k==0)
printf("无记录\n");
}
/*查找函数,*/
struct student *delete_(struct student *head){
char s[20];
char ch;
int v=0;
struct student *p,*q;
printf("请输入要删除的学生的学号:\n");
scanf("%s",s);
p=head->next;
q=head;
while(p!=NULL){
if(strcmp(s,p->number)==0){
q->next=p->next;
v=1;
free(p);
break;
}
q=p;
p=p->next;
}
if(v==1)
printf("删除成功\n");
else{
printf("未删除成功\n");
return q->next;
}
if(head->next==NULL){
printf("已无信息,是否输入新的(Y/N):\n");
scanf("%c",&ch);
ch=getchar();
if(ch=='y')
head=creat();
return head;
}
return q->next;
}
void ad_list(struct student *head){
char s[20];
int v=0;
struct student *p,*q;
q=(struct student *)malloc(sizeof(struct student));
p=head->next;
printf("插在学号为多少的学生后?\n");
scanf("%s",s);
while(p!=NULL){
if(strcmp(s,p->number)==0){
printf("请输入学生信息(姓名 学号 年龄):\n");
scanf("%s%s%s",q->name,q->number,q->age);
q->next=p->next;
p->next=q;
v=1;
break;
}
p=p->next;
}
if(v==0)
printf("插入失败\n");
}
void change_list(struct student *head){
char s1[12];
char ch;
struct student *p;
printf("请输入要更改的学生的学号:\n");
scanf("%s",s1);
p=head->next;
while(p!=NULL){
if(strcmp(s1,p->number)==0)
break;
p=p->next;
}
printf("请输入要更改的内容:\na.姓名\nb.学号\nc.年龄\n");
scanf("%c",&ch);
ch=getchar();
printf("请输入更改后结果:\n");
scanf("%s",s1);
switch(ch){
case'a':strcpy(p->name,s1);break;
case'b':strcpy(p->number,s1);break;
case'c':strcpy(p->age,s1);break;
}
}
void save(struct student *head){
struct student *p;
p=head->next;
fp=fopen("stu.out","w+");
rewind(fp);
while(p!=NULL){
fprintf(fp,"%-20s%-12s%3s\n",p->name,p->number,p->age);
p=p->next;
}
printf("保存成功\n");
}
void remove(struct student *head){
if(head==NULL)
return;
remove(head->next);
free(head);
}
int control(struct student *head){
int i=0;
char ch;
head_print();
if((fp=fopen("stu.out","r"))==NULL){
printf("无文件,请先建立:\n");
head=creat();
}
else if((ch=getc(fp))==EOF){
printf("无信息,请先建立:\n");
head=creat();
}
else
head=build_list();
while((ch=getchar())!='q'){
switch(ch){
case'a':search(head);break;
case'b':delete_(head);break;
case'c':ad_list(head);break;
case'd':change_list(head);break;
case'e':read_list(head);break;
case'f':save(head);break;
case'h':head_print();
}
}
if(ch=='q')
remove(head);
return 0;
}
void head_print(){
printf("%13.0s********************************************%13.0s\n");
printf("%13.0s**%40.0s**\n");
printf("%13.0s**%9.0sa.查找%9.0sb.删除%10.0s**\n");
printf("%13.0s**%40.0s**\n");
printf("%13.0s**%9.0sc.增加%9.0sd.更改%10.0s**\n");
printf("%13.0s**%40.0s**\n");
printf("%13.0s**%9.0se.查看%9.0sf.存档%10.0s**\n");
printf("%13.0s**%40.0s**\n");
printf("%13.0s**%9.0s按h显示提示信息,q退出%10.0s**\n");
printf("%13.0s********************************************%13.0s\n");
}

㈨ c语言如何编写一个输出学生成绩等级的程序

一、首先打开VC++

㈩ 用c语言设计一个学生成绩管理系统 该系统要实现的功能为:成绩录入:输入学生的学号、姓名及三门课成绩

我只有差不多的你可以自己改一改

/* ************************************************************************

* Filename: student_system.c

* Description:

* Version: 1.0

* Created: 2016年03月30日 17时27分11秒

* Revision: none

* Compiler: gcc

* Author: YOUR NAME (),

* Company:

* ************************************************************************/


#include <stdio.h>

#include <stdlib.h>

typedef struct stu

{

int num;

char name[20];

int score;

struct stu *next;

}STU;

void link_add_end(STU **head,STU *p_new)

{

p_new->next = *head;

*head = p_new;

}

void link_print(STU **head)

{

if(*head == NULL)

{

return;

}

STU *p_mov = *head;

while(p_mov != NULL)

{

printf("num==%d score==%d name==%s ",p_mov->num,p_mov->score,p_mov->name);

p_mov=p_mov->next;

}

}

void link_find_num(STU **head,int num)

{

STU *p_mov = *head;

while(p_mov != NULL)

{

if(p_mov->num == num)

{

printf("num==%d score==%d name==%s ",p_mov->num,p_mov->score,p_mov->name);

}

p_mov=p_mov->next;

}


}

void link_find_name(STU **head,char name[])

{

STU *p_mov = *head;

while(p_mov != NULL)

{

if(strcmp(p_mov->name,name)==0)

{

printf("num==%d score==%d name==%s ",p_mov->num,p_mov->score,p_mov->name);

}

p_mov=p_mov->next;

}


}

void link_delete_num(STU **head,int num)

{

STU *p_mov = *head;

STU *p_sav = p_mov;

while(p_mov != NULL)

{

if(p_mov->num == num)

{

if(p_mov == *head)

{

*head = p_mov->next;

free(p_mov);

}else if(p_mov->next == NULL)

{

p_sav->next=NULL;

free(p_mov);

}else

{

p_sav->next=p_mov->next;

free(p_mov);

}

}

p_sav=p_mov;

p_mov=p_mov->next;

}

}

void add(STU **head)

{

STU *p_new;

p_new = (STU *)malloc(sizeof(STU));

printf("请输入 学号 分数 姓名 ");

printf("例如 1 99 张三 ");

scanf("%d %d %s",&p_new->num,&p_new->score,p_new->name);

getchar();

link_add_end(head,p_new);

}

void prin(STU **head)

{

link_print(head);

}

void find(STU **head)

{

int num;

char name[20];

char cmd[20];

printf("1 find for num ");

printf("2 find for name ");

gets(cmd);

if(strcmp("1",cmd) == 0)

{

printf("please input find for num");

scanf("%d",&num);

getchar();

link_find_num(head,num);

}else if(strcmp("2",cmd)==0)

{

printf("please input find for name ");

gets(name);

link_find_name(head,name);

}else

{

printf("error!!");

return;

}

}

void delete(STU **head)

{

int num;

printf("please input delete for num ");

scanf("%d",&num);

getchar();

link_delete_num(head,num);

}

void help()

{

printf("************************ ");

printf("*add add link * ");

printf("*prt print link * ");

printf("*fid find link * ");

printf("*del delete link * ");

printf("*help print help * ");

printf("************************ ");

}


int main(int argc, char *argv[])

{

char cmd_key[20];

STU *head=NULL;

int i;

typedef void (*FUN)(STU **);

typedef struct cmd_fun

{

char key_cmd[20];

FUN fun;

}CMD;

CMD cmd[]={{"add",add},

{"prt",prin},

{"fid",find},

{"del",delete}};

help();

while(1)

{

gets(cmd_key);

if(strcmp(cmd_key,"help")==0)

{

help();

}

for(i=0; i<4; i++)

{

if(strcmp(cmd[i].key_cmd,cmd_key)==0)

{

cmd[i].fun(&head);

}

}

}

return 0;

}

热点内容
武汉大学学生会辅导员寄语 发布:2021-03-16 21:44:16 浏览:612
七年级学生作文辅导学案 发布:2021-03-16 21:42:09 浏览:1
不屑弟高考成绩 发布:2021-03-16 21:40:59 浏览:754
大学毕业证会有成绩单 发布:2021-03-16 21:40:07 浏览:756
2017信阳学院辅导员招聘名单 发布:2021-03-16 21:40:02 浏览:800
查询重庆2018中考成绩查询 发布:2021-03-16 21:39:58 浏览:21
结业考试成绩怎么查询 发布:2021-03-16 21:28:40 浏览:679
14中医医师资格笔试考试成绩查分 发布:2021-03-16 21:28:39 浏览:655
名著赏析课程标准 发布:2021-03-16 21:27:57 浏览:881
北京大学商业领袖高端培训课程 发布:2021-03-16 21:27:41 浏览:919