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

上传人:b****3 文档编号:6793911 上传时间:2023-05-07 格式:DOCX 页数:24 大小:190.56KB
下载 相关 举报
学生成绩管理系统文档格式.docx_第1页
第1页 / 共24页
学生成绩管理系统文档格式.docx_第2页
第2页 / 共24页
学生成绩管理系统文档格式.docx_第3页
第3页 / 共24页
学生成绩管理系统文档格式.docx_第4页
第4页 / 共24页
学生成绩管理系统文档格式.docx_第5页
第5页 / 共24页
学生成绩管理系统文档格式.docx_第6页
第6页 / 共24页
学生成绩管理系统文档格式.docx_第7页
第7页 / 共24页
学生成绩管理系统文档格式.docx_第8页
第8页 / 共24页
学生成绩管理系统文档格式.docx_第9页
第9页 / 共24页
学生成绩管理系统文档格式.docx_第10页
第10页 / 共24页
学生成绩管理系统文档格式.docx_第11页
第11页 / 共24页
学生成绩管理系统文档格式.docx_第12页
第12页 / 共24页
学生成绩管理系统文档格式.docx_第13页
第13页 / 共24页
学生成绩管理系统文档格式.docx_第14页
第14页 / 共24页
学生成绩管理系统文档格式.docx_第15页
第15页 / 共24页
学生成绩管理系统文档格式.docx_第16页
第16页 / 共24页
学生成绩管理系统文档格式.docx_第17页
第17页 / 共24页
学生成绩管理系统文档格式.docx_第18页
第18页 / 共24页
学生成绩管理系统文档格式.docx_第19页
第19页 / 共24页
学生成绩管理系统文档格式.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

charname[20];

charsex[4];

intscore[M];

inttotal;

}stu[N];

2.输入若干学生的信息(人数自定,这里总分不能输入,需要通过计算求得),并按学号升序输出所有学生的完整信息到屏幕,并将结果写到文件stu_info.dat中。

以写的方式创建文件stu_info.da,并检查创建是否成功:

FILE*fp;

if((fp==fopen("

stu_info.dat"

"

r"

))==NULL)

Printf("

cannotopenfile!

"

);

Exit(0);

}

将结构体数组中的学生信息顺序地输入到文件stu_info.da。

这样的操作我给它声明了一个函数,函数声明如下:

voidinput(structStudentst[],intn);

3.根据总分,选择一种排序方法按总分由高到低排名,用一个函数来实现,函数声明在下面,给出每个学生的名次,并将每个学生的学号,姓名,名次这3个信息写入到rank.dat文件中。

一般来说,只要是按序输入的话,名次就很好给出。

FILE*fp;

fp=fopen("

Q:

\\rank.dat"

wb"

if(fp==NULL)

{

printf("

不能打开文件!

\n"

exit

(1);

}

voidsort_sum(structStudentst[],intn);

4.对学生信息的查找可以有多中方法,在这里我用折半查找和顺序查找这两种方法,自己定义两个函数分别实现两种功能。

注意查找的学生学号肯定是已经写入到stu_info.da文件中,下面是两个函数的声明,具体代码在源程序中:

voidseek_1(structStudentst[],intno,intn);

voidseek_2(structStudentst[],intno,intn);

5.对学生信息的更新包括插入,删除,修改等操作,将用三个函数分别来实现这些功能。

(1).增加一条学生信息时,先根据学号找到要插入的位置(数组下标),然后插入,插入点后的个数组的下标加1,如果结构体数组有n个学生信息,则结果数组中的学生信息个数为n+1,注意n+1<

=N;

(2).删除一条学生信息时,先根据学号找到要删除的位置(数组下标),然后删除指定元素,删除点后的个数组的下标减1,如果结构体数组有n个学生信息,则结果数组中的学生信息个数为n-1;

(3)修改一条学生信息时,先根据学号找到要修改元素的位置(数组下标),然后对指定元素(结构体变量)的每个成员分别修改。

这个3个函数的声明如下:

voiddel(structStudentst[],intno,intn);

voidins(structStudentst[],intno,intn);

voidmod(structStudentst[],intno,intn);

6.在main()函数中设计一个菜单对以上模块选择执行,实现完整的学生成绩管理系统。

#include<

stdio.h>

stdlib.h>

intmain()

intchoice,i,n;

printf("

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

欢迎进入学生成绩管理系统\n\n"

menu();

while

(1)

请选择:

scanf("

%d"

&

choice);

switch(choice)

{

case1:

请输入你将要录入学生的个数:

scanf("

n);

input(stu,n);

menu();

break;

case2:

按总分排序后如下:

sort_sum(stu,n);

menu();

case3:

\n请输入你要查找的学生的学号:

i);

seek_1(stu,i,n);

case4:

seek_2(stu,i,n);

case5:

\n请输入要删除的学生的学号:

del(stu,i,n);

case6:

\n请输入你要插入的学生的学号:

ins(stu,i,n);

case7:

\n请输入你要修改的学号:

mod(stu,i,n);

case8:

\n打印n个学生信息:

print(stu,n);

case0:

exit(0);

default:

printf("

errorinput!

请重输!

}

return0;

}可以声明一个menu()函数。

voidmenu()

1.录入学生信息\n"

2.根据总分排序\n"

3.用折半查找学生信息\n"

4.用顺序法查找学生信息\n"

5.根据学号删除学生信息\n"

6.根据学号插入学生信息\n"

7.根据学号修改学生信息\n"

8.打印n个学生信息\n"

0.退出\n"

7.需要同学们自己定义的函数的原型如下:

voidsort_sum(structStudentst[],intn);

voidprint(structStudentst[],intn);

三.程序源代码:

windows.h>

string.h>

conio.h>

#defineM3

voidmenu();

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

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

请输入要录入学生的个数:

请重新输入!

voidinput(structStudentst[],intn)

inti=0,j;

charch;

F:

\\stu_info.dat"

\t\t\t\t1.录入学员信息\n"

do

\t\n输入第%d个学生的信息\n"

i+1);

输入学生学号:

scanf("

st[i].num);

fflush(stdin);

输入学生姓名:

gets(st[i].name);

输入学生性别:

gets(st[i].sex);

输入学生成绩:

for(j=0;

j<

M;

j++)

st[i].score[j]);

fwrite(&

stu,sizeof(stu),1,fp);

是否继续输入?

(Y/N)"

ch=getchar();

if(ch=='

N'

&

ch=='

n'

break;

else

i++;

}while(i<

fclose(fp);

voidsort_sum(structStudentst[],intn)

inti,j,sum=0,k;

structStudenttemp;

}

for(i=0;

i<

n;

i++)

for(j=0;

sum+=st[i].score[j];

st[i].total=sum;

sum=0;

for(j=n-1;

j>

i;

j--)

if(st[j].total>

st[j-1].total)

temp=st[j-1];

st[j-1]=st[j];

st[j]=temp;

\n\t所有学生的个人信息如下\n"

k=i+1;

\n学号:

%5姓名:

%4s性别:

%3s名次:

%5d\n"

st[i].num,st[i].name,st[i].sex,k);

st,sizeof(stu),1,fp);

这个学生的各门成绩如下:

%5d"

st[i].score[j]);

\n\n\t\t\t按任意键返回主菜单...\n"

voidseek_1(structStudentst[],intno,intn)

intstart,end,flag=1,i,j,ans;

for(start=0,end=n;

start<

=end;

{

i=start+(end-start)/2;

if(no==st[i].num)

printf("

elseif(no<

st[i].num)

end=i-1;

start=i+1;

if(i<

n)

flag=0;

学号:

%5d姓名:

%4s性别:

%3s\n"

st[i].num,st[i].name,st[i].sex);

if(flag)

system("

cls"

没有你要查找的学生\n"

按1返回主菜单\n"

ans);

if(ans==1)

voidseek_2(structStudentst[],intno,intn)

{

inti,j,a,flag=1;

if(st[i].num==no)

break;

\n\n\t\t\t没有你要查找的学生\n"

\n\n\t\t\t按1返回主菜单\n"

a);

if(a==1)

voiddel(structStudentst[],intno,intn)

inti,j,flag=1;

charans1,ans3;

删除前此学号学生的有关信息如下:

删除前此学号学生的各门成绩如下:

break;

\n\n没有您输入的学号!

}while(flag);

\n是否真的要删除此学生的所有信息:

Y/N\b"

ans1=getchar();

if(ans1=='

Y'

n-1;

st[i]=st[i+1];

n--;

\n您已删除该学生学员信息!

\n\n\t\t\t是否继续删除?

ans3=getchar();

while(ans3=='

{

system("

del(stu,i,n);

else

voidins(structStudentst[],intno,intn)

inti;

\n\t请输入你要插入的学生的姓名:

%s"

st[no].name);

\n\t请输入你要插入的学生的性别:

st[no].sex);

\n\t请输入你要插入的学生的各门成绩:

st[no].score[i]);

你要插入的学生的信息成功!

voidmod(structStudentst[],intno,intn)

inti,j,x,flag=1;

修改前此学号学生的有关信息如下:

修改前此学号学生的各门成绩如下:

没有您输入的学号!

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2