当前位置:首页 » 考试成绩 » c数据结构学生成绩管理系统

c数据结构学生成绩管理系统

发布时间: 2021-01-20 23:07:15

A. 数据结构(学生成绩管理系统)

http://wenku..com/view/dc69e8ef5ef7ba0d4a733bff.html

B. 数据结构课程设计:学生成绩管理系统(C++和C),求大神帮帮忙,求代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
structSTUDENT{
floatscore[3];
longid;
charnames[20];
};
typedefstructSTUDENTstudent;//simplifythestructSTUDENT
typedefstructSTUDENT*Pstudent;

voidprint();
voidappend();
voidcourse_total();
voidstudent_total();
voidscore_sort(int(*compare)(floata,floatb));
voidnumber_sort();
voidname_sort(Pstudentnames_[30]);
voidnumber_search();
voidname_search();
voidstatistic(Pstudentscores_[30]);

voidshow(inti);

intascend(floata,floatb){
if(a>b)return1;
elsereturn0;
}
intdescend(floata,floatb){
if(a<b)return1;
elsereturn0;
}
intn;//thenumberofstudents

intflg=1;//trueprinttheresult
student*stuArray[30];//

intagain=1;//whethertocontinue
intmain(){
inti;
printf("Inputstudentnumber(n<30):");
scanf("%d",&n);
intchoice;
while(again){
print();
scanf("%d",&choice);
switch(choice){
case1:
append();
break;
case2:
course_total();//useflagtodefinewhethertoprint
break;
case3:
student_total();
break;
case4:
score_sort(descend);
if(flg){
printf(": ");
printf("NO Name MT EN PH SUM AVER ");
for(i=0;i<n;i++)
show(i);
}
break;
case5:
score_sort(descend);
if(flg){
printf(": ");
printf("NO Name MT EN PH SUM AVER ");
for(i=0;i<n;i++)
show(n-1-i);
}
break;
case6:
number_sort();
break;
case7:
name_sort(stuArray);
break;
case8:
number_search();
break;
case9:
name_search();
break;
case10:
statistic(stuArray);
break;
case0:
again=0;
printf("Endofprogram! ");
break;
default:
printf("Inputerror! ");
break;
}

}
return0;
}

voidprint(){
printf("1.Appendrecord ");
printf("2. ");
printf("3. ");
printf("4. ");
printf("5. ");
printf("6.Sortinascendingorderbynumber ");
printf("7.Sortindictionaryorderbyname ");
printf("8.Searchbynumber ");
printf("9.Searchbyname ");
printf("10.Statisticanalysis ");
printf("PleaseInputyourchoice:");
}
voidappend(){
inti;
printf("Inputstudent'sID,nameandscore: ");
for(i=0;i<n;i++){////
stuArray[i]=(student*)malloc(sizeof(student));
scanf("%ld%s",&stuArray[i]->id,stuArray[i]->names);
scanf("%f",&stuArray[i]->score[0]);
scanf("%f",&stuArray[i]->score[1]);
scanf("%f",&stuArray[i]->score[2]);
}
}
voidcourse_total(){
inti;
floatsum0=0.0,sum1=0.0,sum2=0.0;
for(i=0;i<n;i++){
sum0+=stuArray[i]->score[0];
sum1+=stuArray[i]->score[1];
sum2+=stuArray[i]->score[2];
}
if(flg){
printf("course%d:sum=%.0f,aver=%.0f ",1,sum0,sum0/n);
printf("course%d:sum=%.0f,aver=%.0f ",2,sum1,sum1/n);
printf("course%d:sum=%.0f,aver=%.0f ",3,sum2,sum2/n);
}
}
voidstudent_total(){
floattotal[30]={0.0};
inti;
for(i=0;i<n;i++){
total[i]=stuArray[i]->score[0]+stuArray[i]->score[1]+stuArray[i]->score[2];
}
if(flg){
for(i=0;i<n;i++)
printf("student%d:sum=%.0f,aver=%.0f ",i+1,total[i],total[i]/3);
}
}
voidscore_sort(int(*compare)(floata,floatb)){
inti,j;
floattotal[30]={0.0};
for(i=0;i<n;i++){
total[i]=stuArray[i]->score[0]+stuArray[i]->score[1]+stuArray[i]->score[2];
}
for(i=0;i<n;i++){
for(j=0;j<=i;j++)
//if((*compare)(stuArray[i]->score[0]+stuArray[i]->score[1]+stuArray[i]->score[2],stuArray[j]->score[0]+stuArray[j]->score[1]+stuArray[j]->score[2])==0){
if((*compare)(total[i],total[j])==0){//
student*tmp=(student*)malloc(sizeof(student));
memcpy(tmp,stuArray[i],sizeof(student));
memcpy(stuArray[i],stuArray[j],sizeof(student));
memcpy(stuArray[j],tmp,sizeof(student));
}//memcpy->theholethememory
}

}
voidnumber_sort(){//没必要传参
inti,j;
for(i=0;i<n;i++){
for(j=0;j<i;j++)
if(stuArray[i]->id<stuArray[j]->id){
student*tmp=(student*)malloc(sizeof(student));
memcpy(tmp,stuArray[i],sizeof(student));
memcpy(stuArray[i],stuArray[j],sizeof(student));
memcpy(stuArray[j],tmp,sizeof(student));
}
}
if(flg){
printf("Sortinascendingorderbynumber: ");
printf("NO Name MT EN PH SUM AVER ");
for(i=0;i<n;i++)
show(i);
}
}
voidname_sort(Pstudentnames_[30]){
inti,j;
for(i=0;i<n;i++){
for(j=0;j<=i;j++)
if(strcmp(names_[i]->names,names_[j]->names)<0){
student*tmp=(student*)malloc(sizeof(student));
memcpy(tmp,stuArray[i],sizeof(student));
memcpy(stuArray[i],stuArray[j],sizeof(student));
memcpy(stuArray[j],tmp,sizeof(student));
}
}
if(flg){
printf("Sortindictionaryorderbyname: ");
printf("NO Name MT EN PH SUM AVER ");
for(i=0;i<n;i++)
show(i);
}
}
voidnumber_search(){
longquery;
printf("Inputthenumberyouwanttosearch:");
scanf("%ld",&query);
inti;
score_sort(descend);//1009887
for(i=0;i<n;i++){
if(stuArray[i]->id==query)
break;
}
if(i!=n){
printf("%d ",i+1);
show(i);
}
else
printf("Notfound! ");
}
voidname_search(){
charquery[20];
score_sort(descend);
printf("Inputthenameyouwanttosearch:");
scanf("%s",query);
inti;
for(i=0;i<n;i++){
if(!strcmp(query,stuArray[i]->names)){
break;
}
}
if(i!=n){
printf("%d ",i+1);
show(i);
}
else
printf("Notfound! ");
}
voidstatistic(Pstudentscores_[30]){//apointerarraystandsforscores
floatMT[30],EN[30],PH[30];
inti;
for(i=0;i<n;i++){
MT[i]=scores_[i]->score[0];
EN[i]=scores_[i]->score[1];
PH[i]=scores_[i]->score[2];
}
intsta[6]={0};//(<60or60-70....)
for(i=0;i<n;i++){
if(MT[i]<60)
sta[0]++;
if(MT[i]==100)
sta[5]++;
if(MT[i]>=60&&MT[i]<=69)
sta[1]++;
if(MT[i]>=70&&MT[i]<=79)
sta[2]++;
if(MT[i]>=80&&MT[i]<=89)
sta[3]++;
if(MT[i]>=90&&MT[i]<=100)
sta[4]++;
}

if(flg){
printf("Forcourse%d: ",1);
printf("<60 %d %.2f%% ",sta[0],sta[0]/(float)n*100);//changentofloat
printf("60-69 %d %.2f%% ",sta[1],sta[1]/(float)n*100);
printf("70-79 %d %.2f%% ",sta[2],sta[2]/(float)n*100);
printf("80-89 %d %.2f%% ",sta[3],sta[3]/(float)n*100);
printf("90-100 %d %.2f%% ",sta[4],sta[4]/(float)n*100);
printf("100 %d %.2f%% ",sta[5],sta[5]/(float)n*100);
}
memset(sta,0,6*sizeof(int));//initializethestaarray
for(i=0;i<n;i++){
if(EN[i]<60)
sta[0]++;
if(EN[i]==100)
sta[5]++;
if(EN[i]>=60&&EN[i]<=69)
sta[1]++;
if(EN[i]>=70&&EN[i]<=79)
sta[2]++;
if(EN[i]>=80&&EN[i]<=89)
sta[3]++;
if(EN[i]>=90&&EN[i]<=100)
sta[4]++;
}

if(flg){
printf("Forcourse%d: ",2);
printf("<60 %d %.2f%% ",sta[0],sta[0]/(float)n*100);//changentofloat
printf("60-69 %d %.2f%% ",sta[1],sta[1]/(float)n*100);
printf("70-79 %d %.2f%% ",sta[2],sta[2]/(float)n*100);
printf("80-89 %d %.2f%% ",sta[3],sta[3]/(float)n*100);
printf("90-100 %d %.2f%% ",sta[4],sta[4]/(float)n*100);
printf("100 %d %.2f%% ",sta[5],sta[5]/(float)n*100);
}
memset(sta,0,6*sizeof(int));
for(i=0;i<n;i++){
if(PH[i]<60)
sta[0]++;
if(PH[i]==100)
sta[5]++;
if(PH[i]>=60&&PH[i]<=69)
sta[1]++;
if(PH[i]>=70&&PH[i]<=79)
sta[2]++;
if(PH[i]>=80&&PH[i]<=89)
sta[3]++;
if(PH[i]>=90&&PH[i]<=100)
sta[4]++;
}

if(flg){
printf("Forcourse%d: ",3);
printf("<60 %d %.2f%% ",sta[0],sta[0]/(float)n*100);//changentofloat
printf("60-69 %d %.2f%% ",sta[1],sta[1]/(float)n*100);
printf("70-79 %d %.2f%% ",sta[2],sta[2]/(float)n*100);
printf("80-89 %d %.2f%% ",sta[3],sta[3]/(float)n*100);
printf("90-100 %d %.2f%% ",sta[4],sta[4]/(float)n*100);
printf("100 %d %.2f%% ",sta[5],sta[5]/(float)n*100);
}
}

voidshow(inti){

printf("%ld %s ",stuArray[i]->id,stuArray[i]->names);//orderistheidaftersort
printf("%.0f %.0f %.0f ",stuArray[i]->score[0],stuArray[i]->score[1],stuArray[i]->score[2]);
floatsum=stuArray[i]->score[0]+stuArray[i]->score[1]+stuArray[i]->score[2];
printf("%.0f %.0f ",sum,sum/3);
}

C. 数据结构链表c语言建立学生成绩管理系统

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

typedefstructdata{
intnumber;
charname[20];
charid[20];
doublescore[3];
}dataType;

typedefstructlist{
dataTypepauline;
structlist*next;
}*LinkList,*pNode,Node;

void*getMemory(size_tsize){
returnmalloc(size);
}

LinkListgetEmptyList(){
LinkListhead=(pNode)getMemory(sizeof(Node));
memset(head,0,sizeof(Node));
returnhead;
}

intaddNode(LinkListhead,pNodepnode){
pNodeq;
for(q=head;q->next;q=q->next)
if(q->next->pauline.number==pnode->pauline.number){
printf("重复的学号:%d ",pnode->pauline.number);
return0;
}
q->next=pnode;
pnode->next=NULL;
return1;
}

//按学号升排序
voidsortNumber(LinkListhead){
pNodep,q,pt,qt;
p=head;
while(p->next){
qt=p;
q=p->next;
while(q->next){
if(qt->next->pauline.number>q->next->pauline.number)
qt=q;
q=q->next;
}
if(qt!=p){
pt=p->next;
p->next=qt->next;
qt->next=qt->next->next;
p->next->next=pt;
}
p=p->next;
}
}

//按第th门成绩降排序,th=1,2,3
voidsortScore(LinkListhead,intth){
pNodep,q,pt,qt;
inti;
if(th<1||th>3)return;
i=th-1;
for(p=head;p->next;p=p->next){
qt=p;
q=p->next;
while(q->next){
if(qt->next->pauline.score[i]<q->next->pauline.score[i])
qt=q;
q=q->next;
}
if(qt!=p){
pt=p->next;
p->next=qt->next;
qt->next=qt->next->next;
p->next->next=pt;
}
}
}

voidshow(LinkListhead){
pNodep;
for(p=head->next;p;p=p->next ){
printf("%d %s %s %.2lf %.2lf %.2lf ",
p->pauline.number,p->pauline.name,p->pauline.id,
p->pauline.score[0],p->pauline.score[1],p->pauline.score[2]);
}
}

pNodereadData(){
pNodepnode=(pNode)getMemory(sizeof(Node));
inti;
printf("学号:");
scanf("%d",&pnode->pauline.number);
printf("姓名:");
scanf("%s",pnode->pauline.name);
printf("身份证:");
scanf("%s",pnode->pauline.id);
for(i=0;i<3;++i){
printf("第%d门成绩:",i+1);
scanf("%lf",&pnode->pauline.score[i]);
}
returnpnode;
}

voidmenu(){
printf("******************************** ");
printf("******学生成绩管理系统****** ");
printf("******************************** ");
printf("*1、添加学生信息* ");
printf("*2、显示学生信息* ");
printf("*3、按学号排序* ");
printf("*4、按成绩排序* ");
printf("******************************** ");
printf("*0、退出* ");
printf("******************************** ");
}

intmain(){
charop[20];
intselect;
LinkListhead=getEmptyList();
do{
menu();
printf("请选择:");
fflush(stdin);
fgets(op,20,stdin);
fflush(stdin);
switch(op[0]-'0'){
case1:addNode(head,readData());break;
case2:show(head);break;
case3:sortNumber(head);break;
case4:printf("按第几门功课排序;");
scanf("%d",&select);
sortScore(head,select);
break;
}
}while(op[0]-'0');
printf("END ");
return0;
}

D. 数据结构用C语言编写学生成绩管理系统

我上个学期的实习作业,要求基本一样,不过你还是要改改的

E. 求c语言版数据结构课题 学生成绩管理系统的程序

|#include<stdio.h>
#include"malloc.h"
#include"string.h"
struct stu{
char name[20];
char stuno[10];
int yw;
int sx;
int yy;
};
struct link{
stu *astu;
link *next;
};
void printfile(link *head,char *s)
{
FILE *p=fopen(s,"w");
link *temp=head;
fprintf(p,"姓名\t学号\t语文\t数学\t英语\n");
while(temp->next!=NULL)
{
temp=temp->next;
fprintf(p,"%s\t%s\t%d\t%d\t%d\n",temp->astu->name,temp->astu->stuno,temp->astu->yw,temp->astu->sx,temp->astu->yy);
}
fclose(p);
}
link *getlink(char *s)
{
FILE *p=fopen(s,"r");
link *head=(link *)malloc(sizeof(link));
int pf;
head->astu=NULL;
head->next=NULL;
link *tail=head;
stu *temp;
fseek(p,sizeof("姓名\t学号\t语文\t数学\t英语\n"),0);
while(!feof(p))
{
pf=ftell(p);
temp=(stu *)malloc(sizeof(stu));
fscanf(p,"%s\t%s\t%d\t%d\t%d\n",temp->name,temp->stuno,&(temp->yw),&(temp->sx),&(temp->yy));
if(pf==ftell(p))break;
tail->next=(link *)malloc(sizeof(link));
tail=tail->next;
tail->astu=temp;
tail->next=NULL;
}
fclose(p);
return head;
}
int allscore(stu *astu)
{
return astu->sx+astu->yw+astu->yy;
}
bool fail(stu *astu)
{
return astu->sx<60||astu->yw<60||astu->yw<60;
}
link *input(char *s)
{
link *head=(link *)malloc(sizeof(link));
head->astu=NULL;
head->next=NULL;
link *tail=head;
stu *temp;
while(true)
{
temp=(stu *)malloc(sizeof(stu));
printf("请输入学生姓名或者输入0结束:");
scanf("%s",temp->name);
if(strcmp(temp->name,"0")==0)break;
printf("请输入学生学号:");
scanf("%s",temp->stuno);
printf("请输入学生语文成绩:");
scanf("%d",&(temp->yw));
printf("请输入学生数学成绩:");
scanf("%d",&(temp->sx));
printf("请输入学生英语成绩:");
scanf("%d",&(temp->yy));
tail->next=(link *)malloc(sizeof(link));
tail=tail->next;
tail->astu=temp;
tail->next=NULL;
}
printfile(head,s);
printf("已成功保存至文件%中\n",s);
return head;
}
void main()
{
link *p1,*p2,*p3,*p4,*temp1,*temp2,*temp3,*temp4;
stu *temp;
printf("请输入1.txt中的数据:\n");
input("1.txt");
printf("请输入2.txt中的数据:\n");
input("2.txt");
char s[20];
p1=getlink("1.txt");
p2=getlink("2.txt");
temp1=p1;
while(temp1->next!=NULL)temp1=temp1->next;
temp1->next=p2->next;
for(temp1=p1->next;temp1!=NULL;temp1=temp1->next)
for(temp2=temp1->next;temp2!=NULL;temp2=temp2->next)
if(allscore(temp1->astu)<allscore(temp2->astu))
{
temp=temp1->astu;
temp1->astu=temp2->astu;
temp2->astu=temp;
}
printfile(p1,"3.txt");
temp1=p1;
for(temp2=p1->next;temp2!=NULL;temp2=temp2->next)
if(fail(temp2->astu))
{
temp1->next=temp2;
temp1=temp2;
}
temp1->next=NULL;
printfile(p1,"4.txt");
p1=getlink("3.txt");
printf("结果已保存至文件\n");
printf("请输入要寻找的学生姓名:");
scanf("%s",s);
for(temp1=p1->next;temp1!=NULL;temp1=temp1->next)
if(strcmp(temp1->astu->name,s)==0)
printf("%s\t%s\t%d\t%d\t%d\n",temp1->astu->name,temp1->astu->stuno,temp1->astu->yw,temp1->astu->sx,temp1->astu->yy);
}

F. 数据结构课程设计--学生成绩管理系统C语言

一、需求分析
1. 系统菜单的主要功能
(1)输入若干条记录
(2)查找并修改记录
(3)查找并删除记录
(4)成绩排序
(5)查找并显示一条记录
(6)将数据载入内存中
(7)将所有数据写入文件中
(0)退出程序
2. 功能分析
功能1为输入一条记录到结构体中去。
功能2、3和5算法相似,都是先查找成绩,2、3在此基础上再对查找出的信息进行操作。因为学生姓名定义成了字符数组的形式,因此在运用选择法进行排序的时候,要用到strcmp,strcpy等函数
功能4为成绩排序,可按学生学号排序或某单科成绩或总分排序,并输出相关的学生信息等。
功能6和7是对文件的操作,提前准备好数据。
二、总体设计
“学生成绩管理系统”包括:成绩录入、修改、删除、成绩统计和信息保存、载入这几个模块。
1、 主函数 main()
利用无限次循环while(1)和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
2、 菜单选择函数showmenu ();
这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的各项功能选单,根据每个功能前面的序号进行选择。等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!3、 输入记录函数addstudent (stu *s) 这是一个带参函数,用来执行第学生成绩记录的输入,当学生为0时停止输入。
算法:利用函数参数s,并将s->next设为NULL。每输入一个数据就声明一个新节点p,把p->next设为NULL,并且链接到之前列表的尾端。4、 显示记录函数showstudent (stu *s) 这是一个不返回值的有参函数,形参为“链表头的指针”,负责对全部学生成绩记录的输出,不足之处就是不能对学生成绩进行分页显示。 算法:先将p结点的指针指向第一个结点,将p结点(即第一个结点)的数据输出。然后再将p结点的指针指向p指针的的指针(即下一结点),将p结点(即第一结点)的数据输出。重复执行此步聚直到p指针指向NULL为止。5、 查找记录函数findstudent (stu *s) 这是一个不返回值的有参函数,形参为“链表头的指针”,实现按学号对某个学生进行查找,并显示所查找到的记录。 算法:采用线性查找法往下一个节点查找。输入所要查找的学生的学号s,设一个指针变量p,先指向第一个结点,当strcmp(p->name,s) && p != NULL时,使p后移一个结点,如果p!=NULL,输出p所指的结点。6、 删除记录函数delstudent (stu *s) 这是一个有参函数,形参为“链表头的指针”,先输入要删除的学生记录的学号,找到后显示该学生信息,等确认后便可按“Y”进行删除。 算法:从p指向的第一个结点开始,检查该结点中的num值是否等于输入的要求删除的那个学号。如果相等就将该结点删除,如不相等,就将p后移一个结点,再如此进行下去,直到遇到表尾为止。7、保存数据到文件函数savestudent (stu *s) 这是一个不返回值的有参函数,形参为“链表头的指针”,可以把学生记录保存在电脑上由自己任意命名的二进制文件。8、从文件读数据函数loadstudent (stu *s) 这是一个不返回值的有参函数,形参为“链表头的指针”,根据输入的文件地址进行读取。

三、程序流程图
1)成绩统计:

2)信息录入:
3)信息修改:
4)信息删除:
4)信息查询:

4)信息保存:5)主函数:
四、程序调试及体会
1)程序演示:

2)程序调试:
(1)刚开始没有那个初始化函数,程序运行后,没有输入任何数据就试得去执行显示功能,结果显示的是一些乱码!加入初始化函数后,这种现象也随之消失。
(2)刚开始执行输入函数,按学号顺序输入十个学生的成绩,输完后执行显示功能,学生成绩记录是按学号的反顺序显示的,试着在其中增加一些语句,希望能把学号按正常顺序显示,但暂时没有成功,所以在输入成绩时只能按学号反顺序输入,最后就按学号正常顺序输出了。
(3)刚开始时,先把成绩按平均分排序,再插入一个学生的成绩,执行显示功能,虽然插入的学生的成绩能正常插入,但该学生的名次为0。后来,在插入成绩之后,调用排序函数,把所有成绩重新排序一次。
(4)在输入函数中设了一个无限循环,可以输入无数个学生的成绩信息,当学号为0的时候则停止输入。
(5)输入太多个学生的成绩时,屏幕显示不能控制为一页一页显示,所以为了方便起见,不要输入太多记录,十七左右为最佳。
(6)在没有输入任何信息的情况下,去执行排序功能,最后显示有一个记录,学号、姓名为空白,成绩都为0,名次为1。
(7)在输入选项时不能输入字母,否则会死循环,建议不要乱输字母。

3)心得体会:
经过一个星期的课程设计,感觉自己收获不少!
首先是:链表是数据结构的基本体现,所以这个课程设计里面主要都是用链表,而已要达到这样的功能,使用链表相当方便,但不容易理解,所以在这方面我很了很多的时间看课本和参考课外书,使C语言的知识强化了不少。
其次,在做课程设计的过程中,发现了平时很多没有注意到的问题,例如:返回值函数和不返回值函数两者在主函数中的调用是不同的…………
更重要的是,这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了要学好C语言,数据的处理是相当重要的。这个学生成绩管理系统都是在自己知识范围内完成的,所以界面清晰简单,可能不是很好看,但绝对实用!
从这里我也得到一个体会,做一个程序,或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或者软件。
相信这次的课程设计为我以后继续从事计算机工作打了一个小小的开头。

参考书目;

[1]谭浩强. C程序设计(第三版) . 北京:清华大学出版社, 2006
[2]谭浩强. C程序设计上机指导(第三版) . 北京:清华大学出版社, 2005
[3]严蔚敏、吴伟民. 数据结构(C语言版) . 北京:清华大学出版社, 2006
计算机科学与技术系课程设计评分表

G. 数据结构,用C语言实现,基于链表的学生成绩管理系统,根据学号和姓名创建索引

看可以不咯?#includeintavgGrade(inta[50]){inti,sum=0,max=0,min=0;doubleavg=0.0;max=a[0];min=a[0];for(i=0;imax)max=a[i];if(a[i]a[i]){temp=a[i];a[i]=a[j];a[j]=temp;}}else{if(a[j]a[i]){for(s=49;s>=i;s--)a[s+1]=a[s];break;}a[i]=n;}intdeleteGrade(inta[50]){intx,i,j;printf("请输入你要删除的成绩:\n");scanf("%d",&x);for(i=0;i<10;i++){if(a[i]==x)for(j=i+1;j<10;j++)a[i]=a[j];a[j]='\0';}}voidmain(){intn,i,a[50];printf("请输入50个学生的成绩:\n");for(i=0;i<50;i++){scanf("%d",&a[i]);}while(1){printf("--------------------------\n");printf("请选择您的功能:\n\n");printf("0录入成绩\n");printf("1输出成绩\n");printf("2输出平均分、最高分、最低分\n");printf("3成绩降序或升序排列\n");printf("4插入一个成绩\n");printf("5删除用户给定的成绩\n");printf("6退出\n\n");printf("--------------------------\n");scanf("%d",n);switch(n){case0:printf("请输入50个学生的成绩:\n");for(i=0;i<50;i++){scanf("%d",&a[i]);}break;case1:for(i=0;i<50;i++){printf("%d",a[i]);}break;case2:avgGrade(a);break;case3:compositor(a);break;case4:insertGrade(a);break;case5:deleteGrade(a);break;case6:exit(0);}}return0;}

H. C语言数据结构 编写【学生成绩管理系统】

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

#define FILE1 "1.txt"
#define FILE2 "2.txt"
#define FILE3 "3.txt"
#define FILE4 "4.txt"
struct STUDENT
{
char name[20];
int number;
int chinese;
int math;
int english;
int total;
};
typedef STUDENT student;
int count = 0;
student *ss = NULL;

void combine2files()
{
FILE *in, *out;
student s;

out = fopen(FILE3, "w");
in = fopen(FILE1, "r");

if (! || !out)
{
printf("can't open file(s)\n");
exit(-1);
}

while (1)
{
s.name[0] = '\0';
fscanf(in, "%s %d %d %d %d", s.name, &s.number, &s.chinese, &s.math, &s.english);

if (s.name[0] == '\0')
break;

++count;
fprintf(out, "%s %d %d %d %d\n", s.name, s.number, s.chinese, s.math, s.english);
/* printf("%s %d %d %d %d\n", s.name, s.number, s.chinese, s.math, s.english); */
}

fclose(in);
fflush(in);
in = fopen(FILE2, "r");

if (!in)
{
fclose(out);
printf("can't open file\n");
exit(-1);
}

while (1)
{
s.name[0] = '\0';
fscanf(in, "%s %d %d %d %d", s.name, &s.number, &s.chinese, &s.math, &s.english);

if (s.name[0] == '\0')
break;

++count;
fprintf(out, "%s %d %d %d %d\n", s.name, s.number, s.chinese, s.math, s.english);
/* printf("%s %d %d %d %d\n", s.name, s.number, s.chinese, s.math, s.english); */
}

fclose(in);
fclose(out);
}

void check4makeup()
{
FILE *in, *out;
student s;

out = fopen(FILE4, "w");
in = fopen(FILE3, "r");

if (!in || !out)
{
printf("can't open file(s)\n");
exit(-1);
}

while (1)
{
s.name[0] = '\0';
fscanf(in, "%s %d %d %d %d", s.name, &s.number, &s.chinese, &s.math, &s.english);

if (s.name[0] == '\0')
break;

if (s.chinese < 60 || s.math < 60 || s.english < 60)
fprintf(out, "%s %d %d %d %d\n", s.name, s.number, s.chinese, s.math, s.english);
}

fclose(in);
fclose(out);
}

void selectsort(int type = 0)
{
int i, j, k;
student s;

for (i = 0; i < count - 1; ++i)
{
k = i;
for (j = i + 1; j < count; ++j)
{
if (type == 0)
{
if (ss[k].total < ss[j].total)
k = j;
}
else
{
if (strcmp(ss[k].name, ss[j].name) < 0)
k = j;
}
}

if (k != i)
{
memcpy(&s, &ss[i], sizeof(student));
memcpy(&ss[i], &ss[k], sizeof(student));
memcpy(&ss[k], &s, sizeof(student));
}
}
}

void bubblesort()
{
int i, j;
student s;

for (i = 0; i < count - 1; ++i)
{
for (j = count - 1; j > i; --j)
if (ss[j].total > ss[j-1].total)
{
memcpy(&s, &ss[j-1], sizeof(student));
memcpy(&ss[j-1], &ss[j], sizeof(student));
memcpy(&ss[j], &s, sizeof(student));
}
}
}

void outputrecords()
{
int i;
printf("No:\tName:\t\tTotal:\tChinese:\tMath:\tEnglish:\n");

for (i = 0; i < count; ++i)
{
printf("%d\t%s\t\t%d\t%d\t\t%d\t%d\n",
ss[i].number, ss[i].name, ss[i].total, ss[i].chinese, ss[i].math, ss[i].english);
}
}

void sortrecords()
{
int i = 0;
FILE *fp;
char choice;

fp = fopen(FILE3, "r+");

if (!fp)
{
printf("can't open file\n");
exit(-1);
}

while (1)
{
fscanf(fp, "%s %d %d %d %d", ss[i].name, &ss[i].number,
&ss[i].chinese, &ss[i].math, &ss[i].english);

if (i == count)
break;

ss[i].total = ss[i].chinese + ss[i].math + ss[i].english;
++i;
}

rewind(fp);
puts("Please select the sort method:");
puts("1. Bubble Sort");
puts("2. Selection Sort");
choice = getchar();

if (choice == '1')
bubblesort();
else
selectsort();

rewind(fp);
fclose(fp);
}
int binsearch(const char *name)
{
int low = 0;
int high = count - 1;

while (low <= high)
{
int mid = (low + high) / 2;

if (!strcmp(ss[mid].name, name))
{
return mid;
}
else
{
if (strcmp(ss[mid].name, name) > 0)
high = mid - 1;
else
low = mid + 1;
}
}

return -1;
}

int seqsearch(const char *name)
{
int i;

for (i = 0; i < count; ++i)
{
if (!strcmp(ss[i].name, name))
return i;
}
return -1;
}

void findrecord()
{
char nm[20], choice;
int i;

putchar('\n');
selectsort(1);
while (1)
{
printf("Please input the student name you want to find(!=end):\n");
scanf("%s", nm);

if (nm[0] == '!')
break;

puts("Please select the search method:");
puts("1. binary Search");
puts("2. Sequence Search");
choice = getchar();
getchar();

if (choice == '1')
i = binsearch(nm);
else
i = seqsearch(nm);

if (i != -1)
printf("No: %d Name: %s Total: %d Chinese: %d Math: %d English %d\n",
ss[i].number, ss[i].name, ss[i].total, ss[i].chinese, ss[i].math, ss[i].english);
else
printf("Not Found\n");
}
}

void main()
{
combine2files();
ss = (student *)malloc(sizeof(student) * count);
check4makeup();
sortrecords();
outputrecords();
findrecord();
free(ss);
}

I. C语言程序设计课程和数据结构课程的基础上,完成学生成绩管理系统的设计,求源代码。

#include<iostream.h>
#include<string>
class Score
{
private:
char name[20];
int no;//班级
int term;//学期
int ch,en,ma;//科目成绩
int total,average;
public:
Score();
Score(char [],int,int,int,int,int);
~Score();
void menu();
void inputC();//按班级C录入成绩
void inputT();//按学期T录入成绩
void alter();//修改学生成绩
int Average();
int Total();
void compute();//计算
void sort();//排序
void find();//查找
void output();//输出
void fund();//显示不及格名单
void quit();
};
Score *s[100];
static int i=0;
Score::Score(){}
Score::Score(char na[20],int n,int te,int a,int b,int c)
{
strcpy(name,na);
no=n;
term=te;
ch=a;
en=b;
ma=c;
}
Score::~Score(){}
void Score::menu()
{
int p;
cout<<endl<<"************ 请输入操作代码 *************"<<endl;
cout<<"************ 0-------- 按班级录入成绩 *************"<<endl;
cout<<"************ 1-------- 按学期录入成绩 *************"<<endl;
cout<<"************ 2-------- 修改学生成绩 *************"<<endl;
cout<<"************ 3-------- 计算总分与平均分 *************"<<endl;
cout<<"************ 4-------- 排名 *************"<<endl;
cout<<"************ 5-------- 查找 *************"<<endl;
cout<<"************ 6-------- 按班级显示成绩单 *************"<<endl;
cout<<"************ 7-------- 显示不及格名单 *************"<<endl;
cout<<"************ 8-------- 退出 *************"<<endl;
cin>>p;
switch(p)
{
case 0:inputC();break;
case 1:inputT();break;
case 2:alter();break;
case 3:compute();break;
case 4:sort();break;
case 5:find();break;
case 6:output();break;
case 7:fund();break;
case 8:quit();break;
}
}
void Score::inputC()//按班级C录入成绩
{
cout<<"按班级录入成绩,请输入以下学生的班级NO:";
cin>>no;
cout<<" 请输入姓名以输入x为结束,姓名:";
cin>>name;
while(*name!='x')
{
cout<<" 学期:";cin>>term;
cout<<" 语文:";cin>>ch;
cout<<" 英语:";cin>>en;
cout<<" 数学:";cin>>ma;
s[i]=new Score(name,no,term,ch,en,ma);
cout<<endl<<" 姓名:";cin>>name;
i++;
}
menu();
}
void Score::inputT()//按学期T录入成绩
{
cout<<"按学期录入成绩,请输入以下学生的成绩是第几学期:";
cin>>term;
cout<<" 请输入姓名以输入x为结束,姓名:";
cin>>name;
while(*name!='x')
{
cout<<" 班级:";cin>>no;
cout<<" 语文:";cin>>ch;
cout<<" 英语:";cin>>en;
cout<<" 数学:";cin>>ma;
s[i]=new Score(name,no,term,ch,en,ma);
cout<<endl<<" 姓名:";cin>>name;
i++;
}
menu();
}
void Score::alter()//修改成绩
{
cout<<"请输入您要修改的学生的姓名:";
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{ int n,te,a,b,c;
cout<<" 班级:"<<endl;cin>>n;
cout<<" 学期:";cin>>te;
cout<<" 语文:";cin>>a;
cout<<" 英语:";cin>>b;
cout<<" 数学:";cin>>c;
no=n;
s[h]->term=te;
s[h]->ch=a;
s[h]->en=b;
s[h]->ma=c;
cout<<"数据修改成功!";
break;
}
}
if(h==i) cout<<"对不起!您要修改的学生不存在!"<<endl;
menu();
}
int Score::Total()
{
total=ch+en+ma;
return total;
}
int Score::Average()
{
average=Total()/3;
return average;
}
void Score::compute()
{
for(int h=0;h<i;h++)
cout<<"学生姓名:"<<s[h]->name<<" 班级:"<<s[h]->no<<" 学期:"<<s[h]->term<<" 语文:"<<s[h]->ch<<" 英语:"<<s[h]->en<<" 数学:"<<s[h]->ma<<" 总分:"<<s[h]->Total()<<" 平均分:"<<s[h]->Average()<<endl;
menu();
}
void Score::sort()//排序
{
for(int k=0;k<i;k++)
{
for(int j=k+1;j<i;j++)
{
if(s[k]->Average()<s[j]->Average())
{
Score *t;
t=s[k];s[k]=s[j];s[j]=t;
}
}
}
for(int h=0;h<i;h++)
cout<<"学生姓名:"<<s[h]->name<<" 班级:"<<s[h]->no<<" 学期:"<<s[h]->term<<" 语文:"<<s[h]->ch<<" 英语:"<<s[h]->en<<" 数学:"<<s[h]->ma<<" 总分:"<<s[h]->Total()<<" 平均分:"<<s[h]->Average()<<endl;
menu();
}
void Score::find()//查找
{
cout<<"请输入您要查找的学生的姓名:";cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
cout<<"学生姓名:"<<s[h]->name<<" 班级:"<<s[h]->no<<" 学期:"<<s[h]->term<<" 语文:"<<s[h]->ch<<" 英语:"<<s[h]->en<<" 数学:"<<s[h]->ma<<endl;
break;
}
}
if(h==i) cout<<"对不起!您要查找的学生不存在!"<<endl;
menu();
}
void Score::fund()
{
cout<<"语文不及格的学生有:";
for(int h=0;h<i;h++)
if(s[h]->ch<60) cout<<s[h]->name;
cout<<"英语不及格的学生有:";
for(h=0;h<i;h++)
if(s[h]->en<60) cout<<s[h]->name;
cout<<"数学不及格的学生有:";
for(h=0;h<i;h++)
if(s[h]->ma<60) cout<<s[h]->name;
menu();
}
void Score::output()//输出
{
cout<<"本系统所有学生成绩如下:"<<endl;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
else
{ for(int m=0;m<i;m++)
for(int n=m+1;n<i;n++)
{
if(s[m]->no>s[n]->no)
{Score *t;t=s[m];s[m]=s[n];s[n]=t;}
}
for(int h=0;h<i;h++)
cout<<"学生姓名:"<<s[h]->name<<" 班级:"<<s[h]->no<<" 学期:"<<s[h]->term<<" 语文:"<<s[h]->ch<<" 英语:"<<s[h]->en<<" 数学:"<<s[h]->ma<<" 总分:"<<s[h]->Total()<<" 平均分:"<<s[h]->Average()<<endl;
}
menu();
}
void Score::quit(){exit(0);}
void main()
{
Score score1;
score1.menu();
}

J. 学生成绩管理系统数据结构

#include<stdio.h>
#include<stdlib.h>
int Shu;
typedef struct student
{
int num;
float mgar,cgar,egar;
float zong,ping;
}stu;

typedef struct node
{
stu xue;
struct node *next;
} LNode,*LinkList;

LinkList InitLinkList()
{
LinkList L;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
return L;
}

LinkList CreateTail() //尾插法,带头结点
{
LinkList L;
LNode *s,*r;
int i,x;
float m,c,e;
L=InitLinkList();
r=L;
x=0;
printf("输入学生信息的个数:");
scanf("%d",&Shu);
printf("学号 数学 语文 英语\n");
while(x<Shu)
{
s=(LNode *)malloc(sizeof(LNode));
scanf("%d",&i);
s->xue.num=i;
scanf("%f",&m);
s->xue.mgar=m;
scanf("%f",&c);
s->xue.cgar=c;
scanf("%f",&e);
s->xue.egar=e;
s->xue.zong=m+c+e;
s->xue.ping=(m+c+e)/3;
s->next=NULL;
r->next=s;
r=s;
x++;
}

return (L);
}
void prn(LinkList L)
{
LNode *p;
p=L->next;
printf("\n学号 数学 语文 英语 平均成绩 总成绩\n");
while (p!=NULL)
{
printf("%d %0.2f %0.2f %0.2f %0.2f %0.2f\n",p->xue.num,p->xue.mgar,p->xue.cgar,p->xue.egar,p->xue.ping,p->xue.zong);
p=p->next;
}
printf("\n");
}
void prn1(LinkList L)
{
LNode *p;
int x,y;
p=L->next;
printf("请输入要查询的学生学号:");
scanf("%d",&x);
while(p)
{
if(x==p->xue.num )
{
y=1;
printf("\n学号 数学 语文 英语 平均成绩 总成绩\n");
printf("%d %0.2f %0.2f %0.2f %0.2f %0.2f\n",p->xue.num,p->xue.mgar,p->xue.cgar,p->xue.egar,p->xue.ping,p->xue.zong);
}
p=p->next;
}
if(y!=1)
printf("不存在该学生\n");
}
void xs(LinkList L)
{
LNode *p;

p=L->next;
float x,y;
printf("输入要查询的数学成绩范围:");
scanf("%f",&x);
scanf("%f",&y);
while(p)
{
if(p->xue.mgar>=x && p->xue.mgar<=y)
{printf("\n学号 数学 语文 英语 平均成绩 总成绩\n");
printf("%d %0.2f %0.2f %0.2f %0.2f %0.2f\n",p->xue.num,p->xue.mgar,p->xue.cgar,p->xue.egar,p->xue.ping,p->xue.zong);
}
p=p->next;
}
}
void ren(LinkList L)
{
LNode *p;
float m,c,e,j;
int i=0;
m=0;c=0;e=0;j=0;
p=L->next;
while(p)
{
m=m+p->xue.mgar;
c=c+p->xue.cgar;
e=e+p->xue.egar;
j=j+p->xue.ping;
p=p->next;
i++;
}

printf("班级平均成绩\n");
printf("数学 语文 英语 总平均成绩 总人数\n");
printf("%0.2f %0.2f %0.2f %0.2f %d",m/i,c/i,e/i,j/i,i);
}
void del(LinkList L)
{
int x;
LNode *p,*q;
p=L->next;
q=L;
printf("请输入要删除的学生学号:");
scanf("%d",&x);
while(p)
{
if(p->xue.num==x)
{
q->next=p->next;
break;
}
else
{
p=p->next;
q=q->next;
}
}
Shu--;
}
LinkList add(LinkList L)
{
LNode *s;
int n,i,x;
float m,c,e;
i=0;
printf("请输入要添加的学生信息的人数:");
scanf("%d",&x);
printf("\n学号 数学 语文 英语 \n");
while(i<x)
{
s=(LinkList)malloc(sizeof(LNode));
scanf("%d",&n);
s->xue.num=n;
scanf("%f",&m);
s->xue.mgar=m;
scanf("%f",&c);
s->xue.cgar=c;
scanf("%f",&e);
s->xue.egar=e;
s->xue.zong=m+c+e;
s->xue.ping=(m+c+e)/3;
s->next=L->next;
L->next=s;
i++;
Shu++;
}
return L;
}
LinkList pxm(LinkList L)
{
printf("按数学成绩排名:");
int i;
LNode *p,*q,*a;

for(i=0;i<Shu;i++)
{
p=L->next;
q=p->next;
while(q)
{
if(p->xue.mgar<=q->xue.mgar)
{
p->next=q->next;
q->next=L->next;
L->next=q;
a=p;
p=q;
q=a;
}
p=p->next;
q=q->next;
}
}
prn(L);
}
void cd()
{
printf("\t\t\t1、输入学生信息\n");
printf("\t\t\t2、查询学生学号信息\n");
printf("\t\t\t3、查询学生成绩信息\n");
printf("\t\t\t4、班级平均成绩及人数\n");
printf("\t\t\t5、删除学生成绩\n");
printf("\t\t\t6、增加学生成绩\n");
printf("\t\t\t7、学生信息排序\n"); //按数学成绩排名
printf("\t请先进行操作1,按数字8可显示全部信息,再进行其他操作\n");
printf("请输入选项:");
}
int main()
{
int i;
LinkList L;
do
{
cd();
scanf("%d",&i);
switch(i)
{
case 1:
{
system("cls");
L=CreateTail();
prn(L);break;}
case 2:
{
system("cls");
prn1(L);
break;
}
case 3:
{
system("cls");
xs(L);break;
}
case 4:
{
system("cls");
ren(L);break;
}
case 5:
{
system("cls");
del(L);break;
}
case 6:
{
system("cls");
add(L);
prn(L); break;
}
case 7:
{
system("cls");
pxm(L); break;
}
case 8:
{
prn(L);break;
}
}}while(i<=8 && i>=1);
}
希望对你能有所帮助。

热点内容
武汉大学学生会辅导员寄语 发布: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