C语言程序报告学生学籍信息管理系统Word文档格式.docx
《C语言程序报告学生学籍信息管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序报告学生学籍信息管理系统Word文档格式.docx(21页珍藏版)》请在冰点文库上搜索。
综合成绩在90-100之间,应得学分=学分*100%;
综合成绩在80-90之间,应得学分=-学分*80%;
综合成绩在70-80之间,应得学分=学分*75%;
综合成绩在60-70之间,应得学分=学分*60%;
综合成绩在60以下,应得学分=学分*0%。
(2)查询功能;
分为学生基本情况查询和成绩查询两种
1》学生基本情况查询:
输入一个学生的学号活姓名,查出此生的基本信息并显示输出。
输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。
成绩查询:
输入一个学号时,查询出此生的所有课程情况,格式如下:
学号:
姓名;
课程编号:
课程名称:
综合成绩:
实得学分:
课程名称:
综合成绩:
实得学分:
课程编号;
共修:
XX科,
实得总学分为:
XXX
删除功能:
当在
A.TXT中删除一个学生时,自动地在B.TXT中删除此人所
有的信息
排序功能:
能实现选择按综合成绩或实得学分升序或降序排序并显示数据
第二部分需求分析
根据题目要求,由于学生信息是存放在文件中,所以应该提供文件的输入、输出等操作;
在程序中要浏览学生的信息,应提供显示、查找、排序等操作;
另外还应该提供键盘式选择菜单实现功能选择。
第三部分总体设计
根据上面的需求分析,可以将这个系统的设计分为以下几个模块:
学生成绩管理系统
第四部分详细设计
主函数
主函数设计一般要简单,只提供输入,处理和输出部分的函数调用。
其中
各功能模块用菜单方式选择
【流程图】
[程序]
#include<
stdio.h>
voidmenu(){intn,w;
puts("
\t1.browse2.enter3.Search"
);
\t4.browse25.enter26.Search2"
\t7.exit"
**\n"
\n\n\t\t
printf("
Choiceyournumber(1-7):
[]\b\b\b\b"
输入模块:
先采用结构体数组存储数据
structa{intxuehao;
charname[15];
charsex[10];
intshushenum;
inttelenum;
}a[10];
structb
{
intxuehao;
intkechenghao;
charkechengming[15];
intxuefen;
intpingshichengji;
intshiyanchengji;
intjuanmianchengji;
intzonghechengji;
intshidechengji;
中每个数组元素对应一个学生
}b[10];
a[10].b[10]voidjisuan(){inti,n,n1,n2,n3,n4;
for(i=0;
i<
10;
i++)
{if(b[i].shiyanchengji==-1)
{b[i].zonghechengji=b[i].pingshichengji*0.3+b[i].juanmianchengji
0.7;
break;
}
if(b[i].shiyanchengji!
=-1)
{b[i].zonghechengji=b[i].pingshichengji*0.15+b[i].juanmianchengji*0.7+b[i].shiyanchengji*0.15;
if(b[i].zonghechengji>
90&
&
b[i].zonghechengji<
100){n4=b[i].xuefen;
b[i].shidechengji=(n4)*
(1);
elseif(b[i].zonghechengji>
80&
90)
{n3=b[i].xuefen;
b[i].shidechengji=(n3)*0.9;
70&
80){n2=b[i].xuefen;
b[i].shidechengji=(n2)*0.8;
60&
70)
{n1=b[i].xuefen;
b[i].shidechengji=(n1)*0.7;
break;
elseif(b[i].zonghechengji<
60)
{n=b[i].xuefen;
b[i].shidechengji=n*0;
}此简单程序计算综合成绩与实得学分
【程序】
enter()
{inti,n;
Howmanychengjijibenxinxidatas(0-%d)?
:
"
10);
scanf("
%d"
&
n);
\nEnterdatanow\n\n"
for(i=0;
n;
{printf("
\nInput%dthchengjijibenxinxirecord.\n"
i+1);
input(i);
}调用输入函数
if(i!
=0)save(n);
调用保存函数
printf_back();
一个任务结束时让用户选择是浏览还是返回}
浏览模块:
该模块的功能是显示所有学生记录信息。
流程图】
显示学生记录
按任意键【显程示序】下一屏
按任意b键ro返ws回e()主菜单浏览全部模块
{inti,j,n;
n=load();
加载记录
printf_face();
调用显示数据结构项目函数for(i=0;
目的
{if(i%10==0){printf("
\n\nPassanykeytocontiune..."
是分屏显示
getch();
puts("
\n\n"
printf_one(i);
printf("
\n"
}调用显示一个记录的函数
\tThereare%drecord.\n"
n);
\nPassanykeytoback"
按任意键menu();
browse2()该浏览模块的功能是显示所有学生的成绩基本信息
n=load2();
printf_face2();
}printf_one2(i);
menu();
}查找模块;
该模块的功能是根据输入的学生姓名查找对应的记录,找到以后,增加删除功能。
search()查找学生基本信息的模块
{inti,n,k,w1=1,w2,w3,w4;
structas;
do{
do
{k=-1;
\n\nEnternumberthatyouwanttosearch!
number"
scanf("
s.xuehao);
输入要修改的数据的学号printf_face();
i++)查找要修改的数据if(s.xuehao==a[i].xuehao)
调用显示一个记录的函数
{k=i;
printf_one(k);
if(k==-1)
\n\nNoexist!
please"
\n\nAreyouagain?
\n\t1).Again2)Noandback[]\b\b\b"
w1);
}保证在第一次找的的基础上再查找找不到时能退出
}while(k==-1&
w1==1);
如果W1不等于1时直返回
search2()查找学生成绩基本信息的模块{inti,n,k,w1=1,w2,w3,w4;
printf_face2();
i++)if(s.xuehao==a[i].xuehao)
printf_one2(k);
删除模块:
该模块的功能是先显示所有学生的信息,考虑到记录的数据较多,建议采用分屏显示
Voiddel()
}排序模块:
该功能模块的功能是要求将学生记录的综合成绩或实得分升序或降序排序并显示数据。
假设这里采用选择法排序。
保返存回主用【菜选程单择序法】排序
排序模块
Voidorder(){intI,j,n;
Structstudents;
For(i=0;
n-1;
Save(n);
Puts(“\n\n”);
Printf_back();
设计出的程序如下
voidjisuan()
{inti,n,n1,n2,n3,n4;
{b[i].zonghechengji=b[i].pingshichengji*0.3+b[i].juanmianchengji*0.7;
=-1){b[i].zonghechengji=b[i].pingshichengji*0.15+b[i].juanmianchengji*0.7+b[i].shiyanchengji*0.15;
b[i].shidechengji=(n3)*0.9;
input(i);
printf_back();
}browse()
printf_face();
getch();
}printf_one(i);
}printf("
menu();
}search(){inti,n,k,w1=1,w2,w3,w4;
structas;
n=load();
i++)if(s.xuehao==a[i].xuehao){k=i;
}if(k==-1)
\n\t1).Again2)Noandback[]\b\b\b);
}}while(k==-1&
w4=0;
w3=0;
if(k!
=-1){printf("
\n\nWhatdoyouwanttodo?
\n\t1.Search
another2.Modify3.Delete4.Backmenu[]\b\b\b"
w2);
switch(w2)
{case2:
w3=modify(k);
case3:
{printf("
\nAreyousure?
\n\t1).sure2).Noandback[]\b\b\b"
w4);
if(w4==1)
b[k].xuehao=0;
b[k].kechenghao=0;
strcpy(b[k].kechengming,"
xxxx"
b[k].xuefen=0;
b[k].pingshichengji=0;
b[k].shiyanchengji=0;
b[k].juanmianchengji=0;
b[k].zonghechengji=0;
b[k].shidechengji=0;
a[i].xuehao=0;
strcpy(a[i].name,"
xxxx"
strcpy(a[i].sex,"
)
;
a[i].shushenum=0;
a[i].telenum=0;
}if(w3==1||w4==1){save(n);
\n\nSuccessful."
\n\t1).Searchanother2).Back[]\b\b\b"
}while(w2==1);
}input(inti)
{scanf("
%d%d%s%d%d%d%d%d%d"
b[i].xuehao,&
b[i].kechenghao,b[i].kechengming,&
b[i].xuefen,&
b[i].pingshichengji,&
b[i].shiyanchengji,&
b[i].juanmianchengji)
jisuan();
save(intn)
{FILE*fp;
inti;
if((fp=fopen("
b.txt"
"
wb"
))==NULL)
\nCannotopenfile\n"
returnNULL;
if(a[i].xuehao!
=0)
if(fwrite(&
b[i],sizeof(structb),1,fp)!
=1)printf("
filewriteerror\n"
fclose(fp);
load()
if((fp=fopen("
rb"
))==NULL){printf("
}for(i=0;
!
feof(fp);
i++)fread(&
b[i],sizeof(structb),1,fp);
return(i-1);
}printf_face()
\n\txuehaokechenghaokechengmingxuefenpingshichengjishiyanchengjijuanmianchengjizonghechengjishidechengji"
}printf_one(inti)
%5d%5d%15s%5d%5d%5d%5d%5d%5d"
b[i].xuehao,b[i].kechenghao,b[i].kechengming,b[i].xuefen,b[i].pingshichengji,b[i].shiyanchengji,
b[i].juanmianchengji,b[i].zonghechengji,b[i].shidechengji);
}printf_back()
{intk,w;
\n\n\tSuccessful.\n\n"
Whatdoyouwanttodo?
\n\n\t1).Browseallnow2).Back;
[]\b\b\b"
w);
if(w==1)browse();
elsemenu();
modify(inti)
{intc,w1=2;
do{puts("
\nmodifyby=>
1).xuehao2).kechenghao3).kechengming4).xuefen5).pingshichengji6).shiyanchengji7).juanmianchengji8)zonghechengji
9)shidechengji10).alldata11).cancelandback"
Whichyouneeded?
c);
if(c>
11||c<
1){puts("
\nChoiceerror!
Pleaseagain!
getchar();
}}while(c>
1);
do{switch(c)
{case1:
xuehao:
b[i].xuehao);
case
2:
kechenghao:
b[i].kechenghao);
kechengming:
%s"
b[i].kechengming);
case4:
xuefen:
b[i].xuefen);
case5:
pingshichengji:
b[i].pingshichengji);
case6:
shiyanchengji:
b[i].shiyanchengji);
case7:
juanmianchengji:
b[i].juanmianchengji);
case8:
case9:
}puts("
\nNow:
\n\n\t1).Sure2).Noandremodify3).Backwithoutsaveinthistime[]\b\