学生管理系统范本模板文档格式.docx
- 文档编号:20970599
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:36
- 大小:762.52KB
学生管理系统范本模板文档格式.docx
《学生管理系统范本模板文档格式.docx》由会员分享,可在线阅读,更多相关《学生管理系统范本模板文档格式.docx(36页珍藏版)》请在冰豆网上搜索。
采用等级学分制.
综合成绩在90-100之间,应得学分=学分*100%综合成绩在80—90之间,应得学分=学分*80%
综合成绩在70—80之间,应得学分=学分*75%综合成绩在60—70之间,应得学分=学分*60%
综合成绩在60以下,应得学分=学分*0%
(2)查询功能:
分为学生基本情况查询和成绩查询两种
A:
学生基本情况查询:
A1-———输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。
A2-——输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。
B:
成绩查询:
B1:
输入一个学号时,查询出此生的所有课程情况,格式如下:
学号:
xx姓名:
xxxxx
课程编号:
xxx课程名称:
xxxxx综合成绩:
xxxx实得学分:
xx
xxx课程名称:
xxxx实得学分:
xxxxx综合成绩:
………………………
共修:
xx科,实得总学分为:
xxx
(3)删除功能:
当在A。
TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息.
(4)排序功能:
能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
(二)其它要求:
(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读
(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)
(3)学生可自动增加新功能模块(视情况可另外加分)
(4)写出课程设计报告,具体要求见相关说明文档
2概要设计
2.1存储结构
首先,为了能使自己得到锻炼,存储结构我使用了顺序存储与链式存储,学生基本信息用的数组来存储,对学生成绩基本信息使用链表进行存储。
结构体定义如下:
//学生基本信息的结构体定义
typedefstructstudent
{stringxuehao;
//学号
stringname;
//姓名
stringgender;
//性别
stringsushe;
//宿舍号
stringtel;
//电话
}student;
//学生成绩信息的结构体定义
typedefstructgrade
//学号
stringcourseno;
//课程号
stringcoursename;
//课程名称
intxuefen;
//学分
intpingshi;
//平时成绩
intshiyan;
//实验成绩
intjuanmian;
//卷面成绩
floatzonghe;
//综合成绩
floatshide;
//实得学分
grade*next;
}grade;
2.2基本操作
(1)数据录入功能
(2)查询功能
(3)删除功能
(4)排序功能
(5)显示所有学生信息
(6)保存
(7)退出
3详细设计
3.1流程图
各个算法的设计如下:
1.主函数:
intmain();
从A.txt中读取存储的学生基本信息到内存,以便进行处理,过程如图1
图1
2.菜单函数:
voidmenu(student*stu,grade*head,grade*gra);
stu是指向学生基本信息数组的指针,head是指向学生成绩信息链表头结点的指针,gra是指向学生成绩信息链表最后一个结点的指针。
用于进行指示进行各种操作,是与每个函数都相联系的一个函数,功能操作见图2
图2
3.数据录入函数:
voidluru(grade*gra);
其中gra是指向单链表最后一个结点的指针,用于后插法中进行插入.
将学生成绩信息依次输入单链表中,其中单链表边输入边创建,综合成绩和实得学分可由计算机自己计算。
流程图见图3
YN
90-10080-9070—8060-7060以下
图3
4。
查询功能:
voidlookfor(student*p,grade*head);
P为指向学生基本信息数组的指针,head为指向学生成绩链表的头结点的指针。
有学生基本情况查询和成绩查询两种大功能,基本情况查询又分为按学号或姓名查找单个学生基本信息,也可输入宿舍号查询整个宿舍学生的基本信息。
成绩查询只要输入学号便可查询相应学生的成绩信息。
见图4
图4
5.删除功能:
voiddel(student*stu,grade*head);
stu为指向学生基本信息数组的指针,head为指向学生成绩链表的头结点的指针。
执行删除功能时在存储学生基本信息的数组中与存储学生成绩信息的链表中同时删除该学生信息,以便进行下面操作与向文件中存储信息。
功能见图5
图5
6.排序功能:
voidsort(grade*head);
head为指向学生成绩链表的头结点的指针。
下面流程图实现的是按综合成绩升序排序,使用的选择排序法,虽说使用的存储结构为链式存储结构,但排序时并非改变的指针指向,而是只修改存储的信息,指针指向不用改变。
如图6
N
Y
Y
图6
7.显示所有学生信息:
voidshow(student*stud);
stud为指向学生基本信息数组的指针
用于显示内存中学生基本情况信息,以便更好了解学生的一些情况。
图7
8.保存功能:
voidsave1(student*stud);
voidsave2(grade*head);
stud为指向学生基本信息数组的指针,head为指向学生成绩链表的头结点的指针.函数用于将内存中数据存储到文件中以便更好保存信息。
图8
3。
2源程序
#definenum10
#include<
iostream>
string〉
#include〈fstream>
//定义文件输入输出流
usingnamespacestd;
{stringxuehao;
stringgender;
stringtel;
}student;
stringcourseno;
stringcoursename;
intshiyan;
floatzonghe;
grade*next;
}grade;
voidluru(grade*gra);
voidmenu(student*stu,grade*head,grade*gra);
voidlookfor(student*p,grade*head);
voidsort(grade*head);
voidout(grade*head);
voidsort1(grade*head);
voiddel(student*stu,grade*head);
voidshow(student*stu);
voidsave1(student*stud);
voidsave2(grade*head);
voidleave();
//数据录入
voidluru(grade*gra)
{stringstr;
cout〈〈”请输入学生的学号,”<
<
endl;
cin>
>
str;
gra—>
xuehao=str;
cout〈<
"
请录入该生课程编号”〈<
〉gra—〉courseno;
cout〈〈”请录入该生课程名称”<
〉gra—>
coursename;
”请录入该生学分"
〈endl;
cin〉〉gra—>
xuefen;
cout<
〈"
请录入该生平时成绩”<
pingshi;
请录入该生实验成绩"
〈〈endl;
cin〉〉gra->
shiyan;
请录入该生卷面成绩”〈<
juanmian;
//综合成绩计算
if(gra—>
shiyan==—1)
gra—>
zonghe=gra->
pingshi*0。
3+gra—>
juanmian*0.7;
else
zonghe=gra—〉pingshi*0.15+gra-〉juanmian*0。
7+gra-〉shiyan*0。
15;
//实得学分的计算
zonghe>
=90&&
gra—〉zonghe<
=100)
gra-〉shide=gra—〉xuefen;
elseif(gra—〉zonghe〉=80)
shide=gra-〉xuefen*0。
8;
elseif(gra-〉zonghe〉=70)
gra->
shide=gra—〉xuefen*0.75;
elseif(gra-〉zonghe〉=60)
shide=gra—>
xuefen*0.60;
elseif(gra—〉zonghe<
60)
shide=0;
else
cout〈<
”您输入有误,请按提示操作!
endl;
}
//查询功能
voidlookfor(student*p,grade*head)
{chari,k;
stringstr;
intj,x=0;
floatsum=0;
cout〈〈"
--————-——--————---———-—-———-——--—-———-——-——-—--—-"
--A:
学生基本情况查询B:
成绩查询—-”<
———-———--—-—-—-——-—-——-———-—-—-----—-——-————-—-——"
cin〉>
i;
switch(i)
{//学生基本情况查询
case’A'
:
cout〈<
”—--—-—-----——-—--—-—-—-—---——---—--——-—-—-——-————”〈<
cout<
”-—1。
输入一个学号或姓名2.输入一个宿舍号码-—”〈〈endl;
cout<
〈”————--———-—-———---—-————-----—-—-——-———-—-—-—-———”<
〉j;
//A1——-—输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。
if(j==1)
{cout<
*****************************************************”〈〈endl;
”************a按学号查找b按姓名查找************"
〈<
〈”*****************************************************"
cin〉〉k;
if(k=='
a’)
{cout<
〈”请输入学号:
”<
cin〉>
str;
for(j=1;
j<
8;
j++)
{if(p[j]。
xuehao==str)
〈p[j]。
xuehao〈〈”"
〈p[j]。
name<
”〈〈p[j].gender〈<
"
p[j].sushe〈<
p[j]。
tel;
}
}
elseif(k=='
b'
)
{cout〈〈"
请输入姓名:
cin〉〉str;
j〈8;
{if(p[j].name==str)
p[j].xuehao<
〈””〈〈p[j].name<
”"
p[j]。
gender<
”〈〈p[j]。
sushe<
p[j].tel;
cout〈〈endl;
}
//A2———输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。
elseif(j==2)
{cout〈<
”请输入宿舍号:
cin>
for(j=1;
j〈8;
sushe==str)
〈p[j].xuehao〈〈””<
p[j]。
p[j]。
gender〈<
p[j].sushe〈<
”〈<
tel;
else
cout〈〈"
您输入有误,请按提示操作!
〈endl;
break;
//成绩查询
case’B'
请输入要查询学生的学号:
〉str;
for(j=1;
j++)
{if(p[j].xuehao==str)
”学号:
str<
〈”\t”<
姓名:
}
head=head-〉next;
//指向首元结点
while(head!
=NULL)
{
if(head->
{cout<
”课程编号:
〈〈head-〉courseno〈<
”\t”
〈<
课程名称:
〈head-〉coursename<
〈”\t"
〈<
综合成绩:
”〈<
head-〉zonghe〈〈"
\t”
”实得学分:
〈head-〉shide〈<
x++;
sum=sum+head—〉shide;
}
head=head—〉next;
//指针后指
〈x<
科,实得总学分为:
sum〈<
break;
default:
cout<
您输入有误,请按提示操作!
”〈〈endl;
//删除功能
voiddel(student*stu,grade*head)
{stringstr;
grade*p=head—〉next;
grade*q;
请输入要删除学生的学号:
//在学生基本信息中删除
for(inti=1;
stu[i].xuehao!
="
0”;
i++)
{
if(stu[i]。
{for(intj=i;
stu[j].xuehao!
=”0"
;
{stu[j]。
gender=stu[j+1]。
gender;
stu[j]。
name=stu[j+1]。
name;
stu[j].sushe=stu[j+1].sushe;
stu[j]。
tel=stu[j+1].tel;
stu[j]。
xuehao=stu[j+1].xuehao;
}
stu[j]。
gender=”0"
;
stu[j]。
name=”0”;
stu[j].sushe=”0”;
stu[j]。
tel="
0”;
stu[j].xuehao="
0"
//在学生成绩基本信息中删除
while(p)
if(p-〉xuehao==str)
{head-〉next=p—>
next;
q=p;
p=p—〉next;
deleteq;
{p=p->
next;
head=head—〉next;
删除成功!
//排序功能
//按综合成绩升序排序
voidsort(grade*head)
{grade*temp=newgrade;
grade*h=head;
for(head=head—>
head->
head=head—〉next)
{for(grade*p=head->
p;
p=p—〉next)
p-〉zonghe)
{temp-〉xuehao=head—>
xuehao;
head—>
xuehao=p-〉xuehao;
p-〉xuehao=temp—〉xuehao;
temp->
courseno=head—>
courseno;
head-〉courseno=p->
courseno;
p-〉courseno=temp-〉courseno;
temp->
coursename=head—>
coursename;
head->
coursename=p->
p-〉coursename=temp->
temp—〉xuefen=head—>
xuefen=p->
p—>
xuefen=temp-〉xuefen;
temp-〉pingshi=head->
pingshi;
head—〉pingshi=p—〉pingshi;
p->
pingshi=temp-〉pingshi;
temp—>
shiyan=head->
shiyan;
head-〉shiyan=p—>
shiyan=temp—〉shiyan;
temp-〉juanmian=head->
juanmian=p-〉juanmian;
p—〉juanmian=temp—>
juanmian;
temp—〉zonghe=head-〉zonghe;
zonghe=p—>
zonghe;
p-〉zonghe=temp-〉zonghe;
temp—〉shide=head—〉shide;
head—〉shide=p—〉shide;
shide=temp—〉shide;
//数据交换
”按综合成绩升序排序为:
out(h);
//按实得学分降序排序
voidsort1(grade*head)
{grade*temp=newgrade;
grade*h=head;
for(head=head—〉next;
head=head->
next)
p;
if(head-〉shide<
p—>
shide)
{temp-〉xuehao=head-〉xuehao;
head-〉xuehao=p->
xuehao=temp—〉xuehao;
courseno=head—〉courseno;
courseno=p—〉courseno;
p-〉courseno=temp—>
coursename=head->
coursename=temp—〉coursename;
temp—〉xuefen=head->
head—〉xuefen=p—>
xuefen=temp—>
pingshi=head->
head—〉pingshi=p->
pingshi=temp-〉pingshi;
temp—〉shiyan=head—〉shiyan;
shiyan=p-〉shiyan;
juanmian=head—〉juanmian;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 管理 系统 范本 模板