学生学籍信息管理系统.docx
- 文档编号:28922789
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:32
- 大小:155.62KB
学生学籍信息管理系统.docx
《学生学籍信息管理系统.docx》由会员分享,可在线阅读,更多相关《学生学籍信息管理系统.docx(32页珍藏版)》请在冰豆网上搜索。
学生学籍信息管理系统
题目:
姓名:
学号:
院(系):
指导教师:
目录
一.题目要求3
1.题目:
3
2.要求:
3
二.需求分析4
三.程序总体设计5
1.流程图:
5
2.详细设计6
(2).数据输入模块:
7
(3).查询功能模块。
9
(4).删除功能模块。
14
(5).排序功能模块。
16
四.上机操作20
五.总结23
一.题目要求
1.题目:
学生学籍信息管理系统设计
2.要求:
使用下面的数据设计一个简单的学籍管理系统。
学生基本信息文件(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)排序功能:
能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
三.程序总体设计
1.流程图:
学生学籍信息管理系统
MENU(菜单)
退出
排序功能模块
删除功能模块
查询功能模块
数据录入功能模块
按学分降序排列
按综合成绩降序排列
按综合成绩升序排列
按学分升序排列
查询功能模块
查询功能模块
退出
2.详细设计
(1).主函数:
intmain()
{
stu_basicstu[MAXSIZE],basic;
stu_gradestud[MAXSIZE],grade;
menu();
basic.basic_file(stu);
grade.filedata_to_array(stud);
while
(1)
{
cout<<"请选择(0-5):
";
intchoose;
cin>>choose;
if(choose==0){getchar();system("pause");return0;}
switch(choose)
{
case1:
grade.Bfile(stud);break;
case2:
{
cout<<"1.基本信息查询2.成绩查询"< intchoose1; cout<<"请选择: "; cin>>choose1; switch(choose1) { case1: basic.basic_search(stu);break; case2: grade.score_search(stud);break; default: cout<<"请选择1-2: ! "< } break; } case3: { cout<<"请输入你要删除的学号: "; charnum[MAX]; cin>>num; if(basic.basic_delete(stu,num)&&grade.score_delete(stud,num)) cout<<"删除成功! "< break; } case4: grade.paixu(stud);break; case5: menu();break; default: cout<<"请选择0-5! "< } } return0; } (2).数据输入模块: voidstu_grade: : Bfile(stu_grade*stud) { intk; ofstreamoutfile("B.txt",ios: : out); if(! outfile) { cerr<<"openB.txterror! "< getchar(); system("pause"); exit (1); } cout<<"请输入你要录入学生的人数: "; cin>>k; inti; cout<<"注意: "< cout<<""<<"实验成绩,卷面成绩,相邻之间用空格隔开"< for(i=0;i { cout<<"请输入第"< "< cin>>stud[i].num; outfile< outfile<<''; cin>>stud[i].course_NO; outfile< outfile<<''; cin>>stud[i].course_name; outfile< outfile<<''; cin>>stud[i].credit; outfile< outfile<<''; cin>>stud[i].p_score; outfile< outfile<<''; cin>>stud[i].s_score; outfile< outfile<<''; cin>>stud[i].j_score; outfile< outfile<<''; //计算综合成绩 if(stud[i].s_score==-1)stud[i].z_score=stud[i].p_score*0.3+stud[i].j_score*0.7; elsestud[i].z_score=stud[i].p_score*0.15+stud[i].s_score*0.15+stud[i].j_score*0.7; outfile< outfile<<''; //计算实得学分 if(stud[i].z_score<60.0)stud[i].s_credit=0.0; if(stud[i].z_score<70.0&&stud[i].z_score>=60.0)stud[i].s_credit=stud[i].credit*0.6; if(stud[i].z_score<80.0&&stud[i].z_score>=70.0)stud[i].s_credit=stud[i].credit*0.75; if(stud[i].z_score<90.0&&stud[i].z_score>=80.0)stud[i].s_credit=stud[i].credit*0.8; if(stud[i].z_score<=100.0&&stud[i].z_score>=90.0)stud[i].s_credit=stud[i].credit; outfile< outfile<<'\n'; } outfile.close();} (3).查询功能模块。 [需求分析] 该模块的功能分为学生基本情况查询和成绩查询两种。 学生基本情况查询是根据输入的学号或姓名查出此学生的基本信息并显示输出;或者根据输入的宿舍号码,查出本室所有学生的基本信息并显示输出。 成绩查询的功能是根据输入的学号,查出此学生的所有课程情况。 [流程图] 选择基本信息查询还是成绩查询 2 1 学生成绩查询 学生基本情况查询 输入学号 选择根据学号,姓名,宿舍号码查找 根据选择,输入学号/姓名/宿舍号码 提示没找到,重输 显示找到的信息 提示没找到,重输! 显示找到的信息 [程序] voidstu_basic: : basic_search(stu_basic*stu) { intn=get_n();//获取总生数 //输出菜单 cout<<"1.学号查询2.姓名查询3.宿舍号查询0.退出查询"< while (1) { cout<<"请选择(0-3): "; intchoose; cin>>choose; //当不小心选错时的处理 if(choose! =1&&choose! =2&&choose! =3&&choose! =0)cout<<'\t'<<"请选择0-3! "< if(choose==0)break;//退出查询 //学号查询 stu_basicb[MAXSIZE]; intk=0; if(choose==1) { while (1) { charnum[MAX]; cout<<"请输入学号: "; cin>>num; for(inti=0;i { if(strcmp(num,stu[i].num)==0) b[k++]=stu[i]; } //当查找不到时候的处理 if(k==0)cout<<"你输入的学号不存在! 请重新输入! "< //查找到了的处理 else { cout<<"学号姓名性别宿舍号电话号码"< for(i=0;i { cout< b[i].d_num<<'\t'< } cout< break; } } } //姓名查询 if(choose==2) { while (1) { charname[MAX]; cout<<"请输入姓名: "; cin>>name; k=0; for(inti=0;i { if(strcmp(name,stu[i].name)==0) b[k++]=stu[i]; } //查找不到时候的处理 if(k==0)cout<<"你输入的姓名不存在! 请重新输入! "< //查找到的处理 else { cout<<"学号姓名性别宿舍号电话号码"< for(inti=0;i { cout< b[i].d_num<<'\t'< } cout< break; } } } //宿舍号查找 if(choose==3) { while (1) { chard_num[MAX]; cout<<"请输入宿舍号: "; cin>>d_num; k=0; for(inti=0;i { if(strcmp(d_num,stu[i].d_num)==0) b[k++]=stu[i]; } //查找不到的处理 if(k==0)cout<<"你输入的宿舍号不存在! 请重新输入! "< //查找到的处理 else { cout<<"学号姓名性别宿舍号电话号码"< for(inti=0;i { cout< b[i].d_num<<'\t'< } cout< break; } } } } } //成绩查询 voidstu_grade: : score_search(stu_grade*stud) { while (1) { ifstreaminfile("A.txt",ios: : in); if(! infile) { cerr<<"openA.txterror! "< getchar(); system("pause"); exit (1); } cout<<"请输入你要查询的学号: "; charnum[MAX]={''}; cin>>num; intflag=0;//用来判断输入的学号有没有 charnewnum[MAX]; while(! infile.eof()) { infile>>newnum; if(strcmp(num,newnum)==0) { infile>>newnum; flag=1; break; } } intk=get_k(); stu_grades[MAXSIZE]; for(inti=0;i { if(strcmp(num,stud[i].num)==0)break; } infile.close(); if(flag==0||i==k)cout<<"学号不存在! 请重输! "< else { intn=0; for(inti=0;i { if(strcmp(num,stud[i].num)==0) s[n++]=stud[i]; } cout<<"学号: "< "< for(i=0;i { cout<<"课程编号: "< '\t'<<"课程名称: "< "综合成绩: "< "< } cout< break; } } } (4).删除功能模块。 [需求分析] 该模块的功能是当在学生基本信息文件中删除一个学生时,自动在成绩信息文件中删除此人的所有信息。 [程序] intstu_basic: : basic_delete(stu_basic*stu,char*num) { intn=get_n(); ofstreamoutfile("A.txt",ios: : out); if(! outfile) { cerr<<"openA.txterror! "< getchar(); system("pause"); exit (1); } stu_basicb[MAXSIZE]; intk=0; for(inti=0;i { if(strcmp(num,stu[i].num)! =0) b[k++]=stu[i]; } for(i=0;i { outfile< ''< } outfile.close(); return1; } //成绩信息删除 intstu_grade: : score_delete(stu_grade*stud,char*num) { intk=get_k(); ofstreamoutfile("B.txt",ios: : out); if(! outfile) { cerr<<"openB.txterror! "< exit (1); } stu_grades[MAXSIZE]; intn=0; for(inti=0;i { if(strcmp(num,stud[i].num)! =0) s[n++]=stud[i]; } for(i=0;i { outfile< ''< <<''< } outfile.close(); return1; } (5).排序功能模块。 [需求分析] 该模块的功能是能实现选择根据综合成绩或实得学分升序或降序排序显示数据。 [流程图] 输入要排序的课程名称 Y N 选择排序根据: 根据学分还是综合成绩 提示没找到 重输! 选择排序方法: 升序还是降序 根据选择对数据进行排序显示 [程序] voidstu_grade: : paixu(stu_grade*stud) { intk=get_k(); while (1) { cout<<"请输入要排序的课程编号: "; charnumber[MAX]; cin>>number; stu_grades[MAXSIZE]; //用来判断你输入的课程是否存在 intk1=0; for(inti=0;i if(strcmp(number,stud[i].course_NO)==0) s[k1++]=stud[i]; //存在时候的处理 if(k1! =0) { cout<<"1.学分2.综合成绩"< while (1) { cout<<"请选择: "; intchoose; cin>>choose; //选择学分的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 学籍 信息管理 系统