用C语言编一个学籍管理的程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言编一个学籍管理的程序相关的知识,希望对你有一定的参考价值。

毕业设计 急急急急急急急急!!!!!!!!!!!!!!!!!
要简单的,越简单选为最佳答案的概率越大,前提是可以运行

#include<stdio.h>

//定义结构体
struct student

int number;
char name[20];
float score1;
float score2;
float score3;
float ave;
;

//单个学员录入函数
void input(struct student *st)

printf("\n学号: ");
scanf("%d",&st->number);
printf("姓名: ");
fflush(stdin);
gets(st->name);
printf("三门课成绩:\n成绩1: ");
scanf("%f",&st->score1);
printf("成绩2: ");
scanf("%f",&st->score2);
printf("成绩3: ");
scanf("%f",&st->score3);
st->ave=(st->score1+st->score2+st->score3)/3;


//显示学员信息函数
void display(struct student *st,int n)

int i;
printf("\n\t学号\t姓名\t平均成绩\n");
for(i=0; i<n; i++)

printf("\t%d\t%s\t%5.2f\n",st->number,st->name,st->ave);
st++;



//排序函数,大到小
void sorting(struct student stu[],int n)

struct student temp;
int i,j;
for(i=0; i<n-1; i++)

for(j=0; j<n-i-1; j++)

if(stu[j].ave<stu[j+1].ave)

temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;





//插入函数
void insertinfo(struct student stu[], struct student *st1, int n)

int i,j;
for(i=0; i<n; i++)

if(stu[i].ave<st1->ave)
break;

for(j=n; j>i; j--)
stu[j]=stu[j-1];
stu[i]=*st1;


//删除学员信息函数
void deleteinfo(struct student stu[], int num, int n)

int i,j;
for(i=0; i<n; i++)

if(stu[i].number==num)
break;

for(j=i; j<n; j++)
stu[j]=stu[j+1];


void main()

struct student stu[50],stu1;
char ch;
int i=0,num;

//通过调用函数录入学员的信息
printf(" 请输入学员信息: \n\n");
do

input(&stu[i++]);
printf("是否继续(Y/N)? ");
fflush(stdin);
ch=getchar();
while(ch=='Y'||ch=='y');

//显示学员信息
printf("\n排序前学员的信息如下: \n");
display(stu,i);

//排序函数
sorting(stu,i);

//显示学员信息
printf("\n排序后学员的信息如下: \n");
display(stu,i);

//插入函数
printf("\n是否要插入新学员(Y/N)? ");
fflush(stdin);
ch=getchar();
while(ch=='Y'||ch=='y')

printf("\n请输入要插入学员的信息: \n");
input(&stu1);
insertinfo(stu,&stu1,i);
i++;
printf("\n是否继续插入新学员(Y/N)? ");
fflush(stdin);
ch=getchar();


//显示学员信息
printf("\n插入后学员的信息如下: \n");
display(stu,i);

//删除函数
printf("\n是否要删除某个学员(Y/N)? ");
fflush(stdin);
ch=getchar();
while(ch=='Y'||ch=='y')

printf("\n请输入要删除学员的学号: \n");
scanf("%d",&num);
deleteinfo(stu,num,i);
i--;
printf("\n是否继续删除某个学员(Y/N)? ");
fflush(stdin);
ch=getchar();


//显示学员信息
printf("\n删除后学员的信息如下: \n");
display(stu,i);
参考技术A 这是我大二时做的课程设计,可以运行,有主控菜单。你试试。

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

struct stud

long num;
char name[20];
double score;
;

typedef struct stucode

struct stud student ;
struct stucode *next;
L;

void menu();
void createlist(struct stucode **r);
void out(struct stucode *r);
void search1(struct stucode *r);
void search2(struct stucode *r);
void del(struct stucode **r);
void insert(struct stucode **r);
void sort(struct stucode **r);

void main()

char choose;
int flag=1;
struct stucode *r=NULL;

while(flag)

system("cls");
menu();
choose=getchar();
switch(choose)

case '1':
createlist(&r);
out(r);
printf("Testing function 1\nPress any key to continue\n");
getchar();
getchar();
break;

case '2':
search1(r);
printf("Testing function 1\nPress any key to continue\n");
getchar();
getchar();
break;

case '3':
search2(r);
printf("Testing function 1\nPress any key to continue\n");
getchar();
getchar();
break;

case '4':
del(&r);
out(r);
printf("Testing function 1\nPress any key to continue\n");
getchar();
getchar();
break;

case '5':
insert(&r);
out(r);
printf("Testing function 1\nPress any key to continue\n");
getchar();
getchar();
break;

case '6':
sort(&r);
out(r);
printf("Testing function 1\nPress any key to continue\n");
getchar();
getchar();
break;

case '7':
out(r);
printf("Testing function 7\nPress any key to continue\n");
getchar();
getchar();
break;

case '0':
flag=0;
printf("The end.\n");
break;

default: printf("\nWrong Selection!(选择错误,请重选!)\n");getchar();getchar();




void createlist(struct stucode **r)

struct stucode *p,*t;
long n;
char a[20];
double s;
if(*r) *r=NULL;
printf(" \n请输入:\n 学号(请按学号升序排列) 姓名 分数 (若要结束请输入三个为零)\n");
scanf("%ld%s%lf",&n,a,&s);
if(n==0) return;

p=(L *)malloc(sizeof(L));
p->student.num=n;
strcpy(p->student.name,a);
p->student.score=s;
p->next=NULL;
*r=p;

scanf("%ld%s%lf",&n,a,&s);

while(n)

t=p;
p=(L *)malloc(sizeof(L));
p->student.num=n;
strcpy(p->student.name,a);
p->student.score=s;
p->next=NULL;
t->next=p;
scanf("%ld%s%lf",&n,a,&s);



void search1(struct stucode *r)

long x;
if(!r)

printf("没有学生信息可查询!\n");
return ;

printf(" 请输入要查询的学生信息的学生学号:\n");
scanf("%ld",&x);
while(r&&r->student.num!=x)
r=r->next;
if(r==NULL)
printf("Error! No such student !\n");
else
printf("%ld %s %.2lf\n",r->student.num,r->student.name,r->student.score);


void search2(struct stucode *r)

char m[20];
if(!r)

printf("没有学生信息可查询!\n");
return ;


printf(" 请输入要查询的学生信息的学生姓名:\n");
scanf("%s",m);
while(r&&strcmp(r->student.name,m))
r=r->next;
if(r==NULL)
printf("Error! No such student !\n");
else
printf("%ld %s %.2lf\n",r->student.num,r->student.name,r->student.score);


void del(struct stucode **r)

long k;
struct stucode *p=*r,*t;
if(!(*r))

printf("没有学生信息可删除 !\n");
return ;

printf(" 请输入要删除的学生信息的学生学号:\n");
scanf("%ld",&k);

if(p->student.num==k)
*r=(*r)->next,free(p);
else

while(p->next&&p->next->student.num!=k)
p=p->next;
if(p->next==NULL)
printf("Error! No such student !\n");
else

t=p->next;
p->next=p->next->next;
free(t);




void insert(struct stucode **r)

long n;
char a[20];
double s;

L *p,*t,*k;
printf(" 请输入要插入的学生信息的学生学号 姓名 分数:\n");
scanf("%ld%s%lf",&n,a,&s);
p=(L *)malloc(sizeof(L));
p->student.num=n;
p->student.score=s;
strcpy(p->student.name,a);
if(!(*r))

*r=p;
(*r)->next=NULL;
return ;

if(p->student.num<(*r)->student.num)
p->next=(*r),(*r)=p;
else

t=*r;
k=t;
while(t->next&&t->next->student.num<=p->student.num)
t=t->next;
p->next=t->next;
t->next=p;
*r=k;



void sort(struct stucode **r)

struct stucode *t,*p,*q,*z;
if(!r)

printf("没有学生信息可排序!\n");
return ;


if(!(*r)||!(*r)->next)
return;

t=*r;
p=t->next;
t->next=NULL;
while(p)

q=p->next;
if(p->student.score>t->student.score)

p->next=t;
t=p;

else

z=t;
while(z->next&&z->next->student.score>=p->student.score)
z=z->next;
p->next=z->next;
z->next=p;

p=q;

*r=t;


void out(struct stucode *r)

printf("\n\n");
if(!r)

printf("没有学生信息可输出!\n");
return ;


while(r)

printf("%ld %s %.2lf\n",r->student.num,r->student.name,r->student.score);
r=r->next;

printf("\n\n");


void menu()

printf("\n 学生信息管理系统\n");
printf("\n 菜单\n\n");
printf("\n 1建立链表并显示\n");
printf("\n 2查找某学号的学生信息\n");
printf("\n 3查找某姓名的学生信息\n");
printf("\n 4删除某学号的学生信息\n");
printf("\n 5插入新的学生信息\n");
printf("\n 6按分数降序排列输出\n");
printf("\n 7输出\n");
printf("\n 0退出\n");

printf("\n 请选择您要执行的选项:\n");
参考技术B C语言实现简单学籍管理系统
已经发消息给你了,注意查收baidu短信。

怎样用C语言编出在n个数里找最大值的程序?

用循环语句!答案若好,另有悬赏!

找最大的值
max=0;
for(int i=0;i<n;i++) if(max<a[i]) max=a[i]; printf("%d",max);
找最小的值
min=100;
for(int i=0;i<n;i++) if(min>a[i]) min=a[i]; printf("%d",min);
找某个值
scanf("%d",&value);
for(int i=0;i<n;i++) if(a[i]==value) printf("%d",i);break;
参考技术A 定义一个数组,能够容纳足够多的数

定义一个max变量,将数组第一个元素赋值给max

数组下标自增,逐一与max比较

如果大于max,就将这个元素的值赋给max

最后输出元素
参考技术B #include<stdio.h>
main()

int max,a,n,i;
scanf("%d",&n);
scanf("%d",&max);
for(i=0;i<n-1;i++)

scanf("%d",&a);
if(max<a) max=a;

printf("max=%d\n",max);
参考技术C int num[n];
int tmp1,max;
tmp1 = num[0];
for (int i=1; i<n; i++)

if ( tmp1 ? num[i] : tmp1 > num[i] )
max = tmp1;
else max = num[i];
tmp1 = max;


是一个对比循环
参考技术D int num[n];
tmp1 = num[0];
int tmp1,tmp2;
for (int i=1; i<n; i++)


tmp2 = num[i];
tmp1 ? num[i] : tmp1 > tmp2;

参考资料:自己想的

以上是关于用C语言编一个学籍管理的程序的主要内容,如果未能解决你的问题,请参考以下文章

初学C语言,编一个成绩判断的程序,有点问题

用c语言编一个程序:从任意10个数中任选4个数并全输出?

怎样用C语言编出在n个数里找最大值的程序?

怎样用C语言编一个解一元二次方程的程序?

C语言链表问题,作业编程。编好出现问题。高手看下。

怎么用C语言编定时器?