當前位置:編程學習大全網 - 編程語言 - C語言大作業,C語言高手們救下小弟啊```

C語言大作業,C語言高手們救下小弟啊```

這是我在大學做過的課程設計,妳看看:

/*

程序功能:

能完成每位學生的某門課程的平時成績和期末考試成績的錄入,

完成每位學生的總評成績計算(平時成績*30%+期末考試成績*70%)並生成數據文件,

生成分數段統計文件(不及格人數,60-69數,70-79人數,80-89人數,90-100人數,及格率),

通過學生成績的數據文件查詢學生成績(查詢條件自定)。

通過學生成績的分段統計文件輸出學生成績分段情況和及格率。

程序要求:

(1)能夠完成300人以內任何人數的成績處理。

(2)程序要有主控菜單

*/

#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");

}

  • 上一篇:獨立任務最優調度問題
  • 下一篇:寶馬7系轎車檢查車輛低速行駛時變速箱故障燈亮、且停在原地時變速箱會跳入"N"檔?
  • copyright 2024編程學習大全網