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

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

发布时间: 2020-12-07 17:59:23

① 高分急求一个C++数据结构课设 学生成绩管理系统

#include<iostream>
#include<iomanip>
#include<fstream>
#include<string>

using namespace std;

#define max 100;

class student
{
public:
student *next;
public:
string name;//姓名
long num;//学号
int x,y,z;//数学,语文,英语
int AA;//总分
void play(){cout<<name<<"学生的学号是"<<num<<",数学:"<<x<<",语文:"<<y<<",英语:"<<z<<",总分:"<<AA<<endl;};
student(string sname,long snum,int sx,int sy,int sz)
{
name=sname;
num=snum;
x=sx;
y=sy;
z=sz;
}
};

class cla
{
public:
cla()//构造函数
{
stu=0;
sload();
}
~cla()//析构函数
{
student *p;
p=stu;
while(p)
{
p=p->next;
delete stu;
stu=p;
}
stu=0;
}
void sadd(); //添加
void sremove(); //删除
void samend(); //修改
void ssearch(); //查询
void staxis(); //排序
void ssave(); //保存
void sload(); //读取

//排序函数
void pxh();
void psx();
void pyw();
void pyy();
void pAA();
private:
student *stu; //头接点
};

void cla::sadd()//添加
{
student *q;
string name1;
long num1;
int x1,y1,z1;

system("cls");
cout<<"\n **增加的学生** \n"<<endl;
cout<<"请输入学生的(中间用空格间隔) "<<endl;
cout<<"姓名 学号 数学成绩 语文成绩 英语成绩:"<<endl;
cin>>name1>>num1>>x1>>y1>>z1;

q=new student(name1,num1,x1,y1,z1);
q->next=0;
q->AA=x1+y1+z1;

if(stu)
{
student *t;
t=stu;
if(t->num==num1)
{
cout<<"学号已存在,请重新输入"<<endl;
return;
}
while(t->next)
{
if(t->num==num1)
{
cout<<"学号已存在,请重新输入"<<endl;
return;
}
t=t->next;
}
t->next=q;
}
else
{
stu=q;
}
cout<<"输入完毕"<<endl;
}

void cla::sremove()//删除
{
system("cls");
int num1;
cout<<"\n** 删除学生信息 **\n";
cout<<"请输入想要删除学生的学号:";
cin>>num1;

//查找要删除的结点
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1->num==num1)
break;
else
{
p2=p1;
p1=p1->next;
}
}

//删除结点
if(p1!=NULL)//若找到结点,则删除
{
p1->play();
cout<<"确定删除吗?[Y/N]"<<endl;
char c;cin>>c;
if(toupper(c)!='Y') return;

if(p1==stu) //若要删除的结点是第一个结点
{
stu=p1->next;
delete p1;
}
else //若要删除的结点是后续结点
{
p2->next=p1->next;
delete p1;
}
cout<<"找到学号为"<<num1<<"的学生,并删除\n";
}
else //未找到结点
cout<<"未找到想要删除的学生!\n";
}

void cla::samend()//修改
{
system("cls");
long num1;
cout<<"\n** 修改学生信息 **\n";
cout<<"输入要修改学生的学号";
cin>>num1;

//查找要修改的结点
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1->num==num1)
break;
else
{
p2=p1;
p1=p1->next;
}
}
if(p1!=NULL)
{
cout<<"学号是"<<num1<<"的学生的信息"<<endl;
cout<<"姓名 "<<p1->name<<"数学"<<p1->x<<"语文"<<p1->y<<"英语"<<p1->z<<endl;
cout<<"请输入修改后的信息:姓名 数学成绩 语文成绩 英语成绩"<<endl;
cin>>p1->name>>p1->x>>p1->y>>p1->z;
p1->AA=p1->x+p1->y+p1->z;
cout<<"修改成功"<<endl;
}
else //未找到接点
cout<<"未找到!\n";
}

void cla::ssearch()//查询
{
system("cls");
cout<<"\n** 查询学生信息 **\n"<<endl;
cout<<"请输入查询方式:"<<endl;
cout<<"1.按学号查询"<<endl;
cout<<"2.按姓名查询"<<endl;
cout<<"3.返回"<<endl;
char c; cin>>c;
switch (c)
{
case '1':
{
long num1;
cout<<"要查询的学号"<<endl;
cin>>num1;
//查找要查询的结点
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1->num==num1)
break;
else
{
p2=p1;
p1=p1->next;
}
}

if(p1!=NULL)
{
cout<<"学号是"<<num1<<"的学生的信息"<<endl;
cout<<"姓名:"<<p1->name<<" 数学:"<<p1->x<<" 语文:"<<p1->y<<" 英语:"<<p1->z<<endl;
cout<<"查询完毕...";
}
else //未找到接点
cout<<"未找到!\n";
break;
}
case '2':
{
string name1;
cout<<"要查询的学生姓名"<<endl;
cin>>name1;
//查找要查询的结点
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1->name==name1)
break;
else
{
p2=p1;
p1=p1->next;
}
}

if(p1!=NULL)
{
cout<<name1<<"的学生的信息"<<endl;
cout<<"学号:"<<p1->num<<" 数学:"<<p1->x<<" 语文:"<<p1->y<<" 英语:"<<p1->z<<endl;
cout<<"查询完毕...";
}
else //未找到接点
cout<<"未找到!\n";
break;
}
case '3': return;
}

}

void cla::pxh() //按学号排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{
p1=stu;
if (p1->num>p1->next->num) // 如果头结点大于第二个的
{
p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->next) //中间的交换
{
p2=p1;
p1=p1->next;
if(p1->num>p1->next->num)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}

p1=stu;
do
{
p1->play();
p1=p1->next;
}while(p1);
}

void cla::psx()//按数学成绩排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{ p1=stu;
if (p1->x>p1->next->x) // 如果头结点大于第二个的
{ p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->next) //中间的交换
{ p2=p1;
p1=p1->next;
if(p1->x>p1->next->x)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{ p1->play();
p1=p1->next;
}while(p1);
}

void cla::pyw()//按语文成绩排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{ p1=stu;
if (p1->y>p1->next->y) // 如果头结点大于第二个的
{ p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->next) //中间的交换
{ p2=p1;
p1=p1->next;
if(p1->y>p1->next->y)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{ p1->play();
p1=p1->next;
}while(p1);
}

void cla::pyy()//按英语成绩排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{ p1=stu;
if (p1->z>p1->next->z) // 如果头结点大于第二个的
{ p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->next) //中间的交换
{ p2=p1;
p1=p1->next;
if(p1->z>p1->next->z)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{ p1->play();
p1=p1->next;
}while(p1);
}

void cla::pAA()//按总分排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{ p1=stu;
if (p1->AA>p1->next->AA) // 如果头结点大于第二个的
{ p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->next) //中间的交换
{ p2=p1;
p1=p1->next;
if(p1->AA>p1->next->AA)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{ p1->play();
p1=p1->next;
}while(p1);
}

void cla::staxis()//排序
{

system("cls");
char c;
cout<<"请选择以何种方式排序:"<<endl;
cout<<"1……以学号排序"<<endl;
cout<<"2……以数学成绩排序"<<endl;
cout<<"3……以语文成绩排序"<<endl;
cout<<"4……以英语成绩排序"<<endl;
cout<<"5……以总分排序"<<endl;
cout<<"6……返回"<<endl;
cout<<"请选择(1-6)"<<endl;
cin>>c;

switch (c)
{
case '1':pxh(); break;
case '2':psx(); break;
case '3':pyw(); break;
case '4':pyy(); break;
case '5':pAA(); break;
case '6':return;
}

}

void cla::ssave() //保存到文件
{
system("cls");
char c;
cout<<"\n保存学生信息(将覆盖原文件),是否继续?[Y/N]:"; cin>>c;
if(toupper(c)!='Y') return;

ofstream tfile("date.txt",ios_base::binary);
student *p=stu;
while(p)// 写入文件
{
tfile<<p->name<<"\t"<<p->num<<"\t"<<p->x<<"\t"<<p->y<<"\t"<<p->z;
tfile<<endl;
p=p->next;
}
tfile.close();
cout<<"保存完毕..."<<endl;
}

void cla::sload() //读取
{
student *p;
p=stu;
while(p)
{
stu=p->next;
delete p;
p=stu;
}

ifstream tfile("date.txt",ios_base::binary);

string name1;
long num1;
int x1,y1,z1;

tfile>>name1>>num1>>x1>>y1>>z1;
while(tfile.good())
{
//创建学生接点
student *s;
s=stu;
s=new student(name1,num1,x1,y1,z1);
s->next=0;
s->AA=x1+y1+z1;
if(stu) //若已经存在结点
{
student *p2;
p2=stu;
while(p2->next) //查找尾结点
{
p2=p2->next;
}
p2->next=s; //连接
}
else //若不存在结点(表空)
{
stu=s; //连接
}
tfile>>name1>>num1>>x1>>y1>>z1;
}
tfile.close();
cout<<"\n学生信息已经装入...\n";

}

void main()
{
char c;
cla a;
do
{
cout<<"\n 学 生 成 绩 管 理 系 统 \n";
cout<<"**************************************\n";
cout<<" 作者:软件工程06110119:zgjxwl \n";
cout<<" 1……增加学生 \n";
cout<<" 2……删除学生 \n";
cout<<" 3……修改学生 \n";
cout<<" 4……查询学生信息 \n";
cout<<" 5……排序 \n";
cout<<" 6……保存信息 \n";
cout<<" 7……读取信息 \n";
cout<<" 8……退出 \n";
cout<<"**************************************\n";
cout<<"请选择(1-8):";
cin>>c;
switch(c)
{
case '1': a.sadd();break;
case '2': a.sremove();break;
case '3': a.samend();break;
case '4': a.ssearch();break;
case '5': a.staxis();break;
case '6': a.ssave();break;
case '7': a.sload();break;
}

}while(c!='8');
}

② 数据结构用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;
}

④ c语言数据结构学生成绩管理系统怎么限制学号范围

你用int类型来当作学号的类型,首先学号的第一位如果是0则无法显示出来专,其次是int类型能表示属的数的范围问题。去掉这些问题,8位数的最大数字为99999999,只需要判断这个数小于99999999即可。

⑤ 数据结构,用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;}

⑥ 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);
}

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

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "windows.h"
int shoudsave=0; /* */
struct student
{
char num[10];/* 学号 */
char name[20];
char sex[4];
int cgrade;
int mgrade;
int egrade;
int totle;

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

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

⑨ 求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);
}

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