学生管理系统Word文档格式.docx

上传人:b****7 文档编号:22170407 上传时间:2023-02-02 格式:DOCX 页数:34 大小:130.82KB
下载 相关 举报
学生管理系统Word文档格式.docx_第1页
第1页 / 共34页
学生管理系统Word文档格式.docx_第2页
第2页 / 共34页
学生管理系统Word文档格式.docx_第3页
第3页 / 共34页
学生管理系统Word文档格式.docx_第4页
第4页 / 共34页
学生管理系统Word文档格式.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

学生管理系统Word文档格式.docx

《学生管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《学生管理系统Word文档格式.docx(34页珍藏版)》请在冰豆网上搜索。

学生管理系统Word文档格式.docx

score[0]=t->

score[1]=t->

score[2]=0;

returnt;

}

/*保存数据*/

voidsave(student*stu)

FILE*fp;

if((fp=fopen("

score1"

"

w"

))==NULL)/*为输出打开文件score1*/

{

printf("

cannotopenfile\n"

);

exit(0);

}

stu=stu->

next;

while(stu!

=NULL)

if(fwrite(stu,sizeof(student),1,fp)!

=1)

filewriteerror\n"

fclose(fp);

/*读取数据*/

student*load(student*stu)

student*p,*r;

r=stu;

if((fp=fopen("

r"

))==NULL)/*为输入打开文件score1*/

returnstu;

do

{p=(student*)malloc(sizeof(student));

p->

if((fread(p,sizeof(student),1,fp)!

=1)){fclose(fp);

returnstu;

};

r->

next=p;

r=r->

}while

(1);

/*输出一个特定的学生的成绩*/

voidoutput1(student*t)

{intk;

%s\t%s\t"

t->

num,t->

name);

for(k=0;

k<

5;

k++)

%d\t"

score[k]);

\n"

/*输出全体学生的成绩*/

voidoutput(student*stu)

学号\t姓名\t数学\t语文\t英语\t总分\t平均分\n"

output1(stu);

/*将stu后插在t中*/

student*charu(student*stu,student*t)

{student*p;

intk;

p=(student*)malloc(sizeof(student));

strcpy(p->

num,stu->

num);

name,stu->

score[k]=stu->

score[k];

next=t->

returnp;

/*按成绩排序*/

voidpaixu(student*stu,inti)

student*t,*p,*r;

intj,k;

p=stu;

输入0按数学成绩\n"

输入1按语文成绩\n"

输入2按英语成绩\n"

输入3按总分\n"

输入4按平均分\n"

scanf("

%d"

&

j);

if(j<

0&

&

j>

4)printf("

输入错误请重新输入\n"

elsebreak;

t=init(t);

r=t;

if(t->

next==NULL)

r=charu(stu,t);

/*在排序好的链表t中插入第一个节点*/

if(i==0)/*按升序排序*/

while(stu->

next!

if(r->

score[j]>

stu->

score[j])r=t;

/*如果待插入的score[j]<

当前的score[j],指针r回溯*/

while(r->

next->

score[j]<

score[j]&

r->

/*找到比待插入的score[j]大的指针r->

next*/

r=charu(stu,r);

/*在r后面插入stu*/

else

output(t);

/*排序菜单*/

voidoutput2(student*stu)

{inti;

output(stu);

输入0升序\n"

输入1降序\n"

输入其他任意字符退出\n"

i);

if(i==0||i==1)

paixu(stu,i);

输入任意字符结束\n"

getch();

/*查找学生号为num是否存在*/

student*findnum(char*num,student*t,int*i)

*i=1;

*i=strcmp(t->

num,num);

while(*i<

0)/*t->

num<

num时查找下一个*/

t=t->

/*t->

num>

=num时返回,此时i>

=0*/

/*插入一个学生信息*/

student*insertstu(char*num,student*stu,char*name)

{student*p,*t;

int*i,j;

i=&

j;

t=findnum(num,stu,i);

/*查找该学号是否存在*/

if(j!

=0)/*该学号不存在,则插入*/

p=init(p);

name,name);

{printf("

已有此学号\n学号\t姓名\n%s\t%s\n"

/*录入新学生信息*/

voidbase(student*stu)

charnum[10],name[20];

输入e结束输入新学生的信息\n"

num(不超过10个数)\tname(不超过10个字)\n"

%s"

num);

\t\t\t"

name);

stu=insertstu(num,stu,name);

}while(num[0]!

='

e'

输入任意字符退出\n"

/*增加修改一门课程成绩*/

voidzengjia(student*t,inti)

score[3]-=t->

score[i];

/*总分减去第i门课的成绩*/

(t->

score[i]));

/*输入第i门课的成绩*/

score[3]+=t->

/*总分加上第i门课的成绩*/

voiddeletegrade(student*t,inti)

score[i]=0;

/*第i门课的成绩归零*/

/*修改成绩*/

voidaltergrade(student*stu)

intj,*i;

student*t;

chara,*num;

i=&

0修改数学成绩\n"

1修改语文成绩\n"

2修改英语成绩\n"

3删除数学成绩\n"

4修改语文成绩\n"

5修改英语成绩\n"

输入e结束操作\n"

a=getch();

学号\t成绩\n"

a===%cnum===%s"

a,num);

/*按学生号查找学生信息*/

if(j==0)/*学生号存在*/

switch(a)

case'

0'

:

zengjia(t,0);

break;

1'

zengjia(t,1);

2'

zengjia(t,2);

3'

deletegrade(t,0);

4'

deletegrade(t,1);

5'

deletegrade(t,2);

default:

break;

score[3]/3;

无此学号\n"

/*第i科成绩录入*/

studentgradeenter(student*stu,inti)

student*t;

t=stu;

学号\t该科成绩\n"

while(t!

%s\t"

score[i]==0)/*如果学号为t->

num的同学该科成绩没有*/

t->

score[i]);

/*学号为t->

num的总分*/

num的平均分*/

%d\n"

/*录入下一个同学的该科成绩*/

该科全部输入完成\n输入任意字符结束\n"

/*成绩录入菜单*/

voidentergrade(student*stu)

inti;

0录入数学成绩\n"

1录入语文成绩\n"

2录入英语成绩\n"

switch(i)

case0:

gradeenter(stu,i);

case1:

case2:

printf("

输入错误请输入相应操作的题号\n"

/*按学生号查找学生*/

voidchaxun(student*stu)

char*num;

intj,k,*i;

输入要查询的学生学号\n"

if(j==0)/*该学生号存在*/

查询结果为\n"

output1(t);

/*输出此学生信息*/

查无此号\n"

/*统计全班人数和平均分*/

voidtongji(student*stu)

inttotal=0,score=0;

score+=stu->

score[3];

total++;

score=score/total;

班级总人数为:

%d平均分为:

%d\n输入任意字符退出\n"

total,score);

/*按分数段查询*/

voidfenshuduan(student*stu)

inti,min,max,j;

输入0按数学分数段\n"

输入1按语文分数段\n"

输入2按英语分数段\n"

输入3按总分分数段\n"

输入4按平均分分数段\n"

输入分数段上限:

"

max);

\n输入分数段下限:

min);

if(max<

min)

{j=max;

max=min;

min=j;

if(min<

=stu->

score[i]&

score[i]<

=max)/*将分数段内的同学信息输出*/

voidmain()

chara='

8'

;

student*stu;

stu=init(stu);

/*初始化stu*/

stu=load(stu);

/*读取score1的数据*/

while(a!

7'

clrscr();

************************************************************\n"

学生成绩管理系统\n"

-------madeinchina\n"

0录入学生基本信息\n"

1修改或删除学生成绩\n"

2录入学生成绩\n"

3显示指定学生的信息\n"

4输出指定分数段的学生信息\n"

5输出班级总人数和平均分\n"

6输出全体学生的信息\n"

7退出\n"

*************************************************************\n"

case'

base(stu);

altergrade(stu);

entergrade(stu);

chaxun(stu);

fenshuduan(stu);

tongji(stu);

6'

output2(stu);

iamsorrytohearthatyouenterthewrongnum\n"

按任意键重新输入\n"

getch();

continue;

save(stu);

/*将数据保存在score1中*/

欢迎再次使用学生成绩管理系统........请按任意键退出......."

 

_

层次图描

实验结果记录以及与预期结果比较以及分析

记录每次实验结果以及分析情况

总结以及心得体会

本实验经过我深思熟虑采用链表!

通过本实验的加强功能即文件的操作(保存及导出),我巩固了这部分的功能。

在编写对链表进行升序排序时候,大大的提高了我对链表的操作。

指导老师评阅意见

指导老师:

年月日

填写内容时,可把表格扩大。

实验的源程序代码(要有注释)附在表后。

name

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1