学生学籍信息管理系统.docx
- 文档编号:15118121
- 上传时间:2023-06-30
- 格式:DOCX
- 页数:51
- 大小:191.63KB
学生学籍信息管理系统.docx
《学生学籍信息管理系统.docx》由会员分享,可在线阅读,更多相关《学生学籍信息管理系统.docx(51页珍藏版)》请在冰点文库上搜索。
学生学籍信息管理系统
中国地质大学
C语言课程设计
综合实习报告
题目:
学籍信息管理系统
姓名:
黄凯
学号:
***********
班级号:
052081
院(系):
工程学院
专业:
土木工程
指导教师:
曹弘
一,题目要求
1.学生学籍信息管理系统设计
[要求]
使用下面的数据设计一个简单的学籍管理系统。
学生基本信息文件(A.TXT)极其内容:
学号姓名性别宿舍号码电话号码
01张成成男50187732111
02李成华女10187723112
03王成凤女10187723112
04张明明男50287734333
05陈东男50187732111
06李果男50287734333
07张园园女10287756112
学生成绩基本信息文件(B.TXT)极其内容:
.....................................................................................................................
学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分
01A01大学物理3667882
02B03高等数学478-190
01B03高等数学445-188
02C01VF3657666
................................................................................................................
功能要求极其说明:
(1)数据录入功能:
录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据。
实得成绩、实得学分根据条件自动运算。
综合成绩的计算:
a.如果本课程的实验成绩为-1,则表无实验成绩,综合成绩=平时成绩*30%+卷面成绩*70%
b.如果实验成绩不为-1,表示本课程有实验成绩,综合成绩=平时成绩*15%+实验成绩*15%+卷面成绩*70%
实得学分的计算:
采用等级学分制。
综合成绩在90~100之间,应得学分=学分*100%
综合成绩在80~90之间,应得学分=学分*80%
综合成绩在70~80之间,应得学分=学分*75%
综合成绩在60~70之间,应得学分=学分*60%
综合成绩在60分以下,应得学分=学分*0%
(2)查询功能:
分为学生基本情况查询和成绩查询两种
学生基本情况查询:
输入一个学号或姓名(可实现选择)查出此学生的基本信息并显示输出。
输入一个宿舍号码,可查出本室所有学生的基本信息并显示输出。
称号查询:
输入一个学号时,查出此学生所有课程情况,格式如下:
学号:
XX课程名称:
XXXX综合成绩:
XX实得学分:
XXX
...............................................................................
共修:
X科,实得总分为:
XXX
(3)删除功能:
当在A.TXT中删除一个学生时,自动地在B.TXT中删除此学生所有信息。
(4)排序功能:
能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
[提示]
数据结构采用结构体数组,提供学生基本信息和学生成绩基本信息结构体数组。
二,需求分析
根据题目要求,该程序应具备的功能有:
(1)数据录入功能:
录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据。
实得成绩、实得学分根据条件自动运算。
(2)查询功能:
分为学生基本情况查询和成绩查询两种
(3)删除功能:
当在A.TXT中删除一个学生时,自动地在B.TXT中删除此学生所有信息。
(4)排序功能:
能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
三,程序总体设计
退出
四,程序详细设计
⒈主函数
主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
[流程图]
[程序]
voidmain()
{
while
(1)
{
printf("\n<<<<<<<<<<<<<
printf("*=========================================================*\n");
printf("*1>input2>chazhao*\n");
printf("*3>delete4>paixuxianshi*\n");
printf("*5>exit*\n");
printf("**\n");
printf("*---------------------------------------------------------*\n");
printf("Pleaseinputwhichyouwant(1-5):
");
ch=getch();
switch(ch)
{
case'1':
input();break;
case'2':
search();getch();break;
case'3':
delete();getch();break;
case'4':
sort();getch();break;
case'5':
exit(0);
default:
continue;
}
}
}
⒉个功能模块设计
⑴数据录入。
[数据结构]
我们需要录入的信息数据有两类:
一类是学生基本信息,包括学号,学号姓名性别宿舍号码电话号码,存放在文件S_INFO.TXT中。
另一类信息是学生成绩基本信息,包括学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据。
实得成绩、实得学分根据条件自动运算。
这些信息存放在文件S_SCORE.TXT中。
学生基本信息的存放格式为:
structinfo
{
intsMingci;//名次
charxuehao[8];
charname[10];
charsex[2];
chard_num[4];//宿舍号码
chartel_num[9];//宿舍电话号码
}data,s_info[100];
成绩基本信息的存放格式为:
structcourse
{
charxuehao[8];
charcourse_No[6];//课程代号
charcourse_name[10];//课程名字
floatxuefen;//学分
floatp_chengji;//平时成绩
floats_chengji;//实验成绩
floatj_chengji;//卷面成绩
floatz_chengji;//综合成绩
floats_xuefen;//实际学分
}course_data,s_course[100];
[需求分析]
数据录入模块的功能是用户通过输入选项在基本信息和成绩信息的输入之间进行选择。
[程序]
voidinput()
{
while
(1)
{
printf("\nwhichinformationdoyouwanttoinput:
b(base)s(socre)e(exit)");
ch=getch();
if(ch=='b'||ch=='B')
{
if((fp=fopen("s_info.txt","at+"))==NULL)
{
printf("cannotopenthisfile.\n");
getch();exit(0);
}
printf("\nPleaseinputxuehao:
");
gets(sn);
while((fread(&data,sizeof(data),1,fp))==1)
{
if(strcmp(sn,data.xuehao)==0)
{
flag=1;
}
}
if(flag==1)
{
printf("\nthenumberhasexist,pressangkeycontinue:
\n");
flag=0;
getch();
continue;
}
else
{
strcpy(data.xuehao,sn);
}
printf("Pleaseinputname:
");
gets(data.name);
printf("Pleaseinputsex:
M(male)/F(female):
\n");
gets(data.sex);
printf("PleaseinputyourdormitoryNo:
");
gets(data.d_num);
printf("PleaseinputtelephoneNumber:
");
gets(data.tel_num);
fwrite(&data,sizeof(data),1,fp);//写入数据
fclose(fp);
}//if
elseif(ch=='s'||ch=='S')
{
if((fp1=fopen("s_score.txt","at+"))==NULL||(fp=fopen("s_info.txt","rt"))==NULL)
{
printf("cannotopenthisfile.\n");
getch();exit(0);
}
printf("\nPleaseinputxuehao:
");
gets(sn);
while((fread(&data,sizeof(data),1,fp))==1)
{
if(strcmp(sn,data.xuehao)==0)
{flag=1;
}
}
if(!
flag)
{printf("\nthisnumberisnotexist\n");
continue;
}
else
{flag=0;
strcpy(course_data.xuehao,sn);
}
printf("\nPleaseinputcourseNo:
");
gets(course_data.course_No);
printf("\nPleaseinputcoursename:
");
gets(course_data.course_name);
printf("\nPleaseinputcoursexuefeng:
");
gets(temp);
course_data.xuefen=atof(temp);
printf("\nPleaseinputpingshichengji:
");
gets(temp);
course_data.p_chengji=atof(temp);
printf("\nPleaseinputshiyanchengji:
");
gets(temp);
course_data.s_chengji=atof(temp);
printf("\nPleaseinputjuanmianchengji:
");
gets(temp);
course_data.j_chengji=atof(temp);
//以下是综合成绩计算
if(course_data.s_chengji==-1)//如果有实验
{
course_data.z_chengji=(course_data.p_chengji)*0.3+(course_data.j_chengji)*0.7;
}
else//如果无实验
{
course_data.z_chengji=(course_data.p_chengji)*0.15+(course_data.s_chengji)*0.15+(course_data.j_chengji)*0.7;
}
//以下是实际学分计算
if((course_data.z_chengji)<60)
{course_data.s_xuefen=0;}
elseif((course_data.z_chengji)<70)
{course_data.s_xuefen=course_data.xuefen*0.6;}
elseif((course_data.z_chengji)<80)
{course_data.s_xuefen=course_data.xuefen*0.75;}
elseif((course_data.z_chengji)<90)
{course_data.s_xuefen=course_data.xuefen*0.8;}
else
{course_data.s_xuefen=course_data.xuefen;
}
fwrite(&course_data,sizeof(course_data),1,fp1);//写入数据
fclose(fp1);
fclose(fp);
}//elseif
else
{break;
}
printf("another?
y/n");
ch=getch();
if(ch=='n'||ch=='N')
break;
}
}//input
⑵查询功能模块。
[需求分析]
该模块的功能分为学生基本情况查询和成绩查询两种。
学生基本情况查询是根据输入的学号或姓名查出此学生的基本信息并显示输出;或者根据输入的宿舍号码,查出本室所有学生的基本信息并显示输出。
成绩查询的功能是根据输入的学号,查出此学生的所有课程情况。
[流程图]
[程序]
voidsearch()
{
printf("\nselectform:
a(studentinformation)b(socreinformation)");
ch=getch();
if(ch=='a'||ch=='A')
{
if((fp=fopen("s_info.txt","rt"))==NULL)
{
printf("\nCannotopenthisfile.\n");
exit(0);
}
printf("\nselectway:
a(studentNumber)b(studentname)c(dormitoryNO):
\n");
ch1=getch();
//按照学号查找
if(ch1=='a'||ch1=='A')
{
printf("\npleaseinputthestudentnumber:
");
gets(temp_NO);
printf("xuehaonamesexsushehaotelephone");
printf("\n------------------------------------------------------------------------------\n");
while((fread(&data,sizeof(data),1,fp))==1)
{
if(strcmp(temp_NO,data.xuehao)==0)
{flag=1;
printf("\n%8s%10s%12s%14s%20s\n",data.xuehao,data.name,data.sex,data.d_num,data.tel_num);
}
}
if(!
flag)
{printf("\nthisnumberisnotexist,pressanykeytocontinue\n");
getch();
}
else
{flag=0;
}
}
//按照名字查找elseif(ch1=='b'||ch1=='B')
{
printf("\npleaseinputthename:
");
gets(temp_name);
printf("xuehaonamesexsushehaotelephone");
printf("\n------------------------------------------------------------------------------\n");
while((fread(&data,sizeof(data),1,fp))==1)
{
if(strcmp(temp_name,data.name)==0)
{flag=1;
printf("\n%8s%10s%12s%14s%20s\n",data.xuehao,data.name,data.sex,data.d_num,data.tel_num);
}
}
if(!
flag)
{printf("\nthisnameisnotexist,pressanykeytocontinue:
\n");
getch();
}
else
{flag=0;
}
}
//按照宿舍号码查找
elseif(ch1=='c'||ch1=='C')
{
printf("\npleaseinputthedormitorynumber:
");
gets(temp_dnum);
printf("xuehaonamesexsushehaotelephone");
printf("\n------------------------------------------------------------------------------\n");
while((fread(&data,sizeof(data),1,fp))==1)
{
if(strcmp(temp_dnum,data.d_num)==0)
{flag=1;
printf("\n%8s%10s%12s%14s%20s\n",data.xuehao,data.name,data.sex,data.d_num,data.tel_num);
}
if(!
flag)
{printf("thisdormitoryisnotexist,pressanykeycontinue:
");
getch();
}
else
{
flag=0;
}
}
}
else
{printf("\nselecterror\n");
}
fclose(fp);
}//chif
//学生成绩查找
elseif(ch=='b'||ch=='B')
{
j=0;
z_fen=0;
z_xuefen=0;
if((fp1=fopen("s_score.txt","rt"))==NULL)
{
printf("\nCannotopenthisfile.\n");
exit(0);
}
printf("\npleaseinputstudentnumber:
");
gets(temp_NO);
printf("xuehaocourse_Nocourse_namexuefenchengji");
printf("\n------------------------------------------------------------------------------\n");
while((fread(&course_data,sizeof(course_data),1,fp1))==1)
{
if(strcmp(temp_NO,course_data.xuehao)==0)
{flag=1;
j++;
z_fen=z_fen+course_data.z_chengji;
z_xuefen=z_xuefen+course_data.s_xuefen
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 学籍 信息管理 系统