学生成绩管理系统设计及使用说明文档格式.docx
- 文档编号:20189078
- 上传时间:2023-01-17
- 格式:DOCX
- 页数:48
- 大小:661.40KB
学生成绩管理系统设计及使用说明文档格式.docx
《学生成绩管理系统设计及使用说明文档格式.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统设计及使用说明文档格式.docx(48页珍藏版)》请在冰豆网上搜索。
按学生姓名查找:
按学生学号查找:
修改学生成绩:
删除学生成绩:
然后对管理员、教师、学生共有功能(排序学生成绩、查看各科以及总分平均成进行调试:
查看平均成绩:
最后对扩展功能(管理员安排必修课程、学生选择选修课程)进行调试:
在没有任何必修课程安排情况下管理员显示:
学生显示:
在没有安排必修课程的情况下,学生无法选择选修课程(因为选修要选在必修课的空白处):
管理员可对周一至周五的课程进行安排:
课程安排成功之后自动保存在本地磁盘,学生、教师、管理员均可,即使关闭程序,再次打开也可以查看
必修课程安排好之后,学生可以根据空白课程处选择自己的选修课程,发生时间冲突会自动提醒重新选择时间
五、反思总结
1.程序仍然不是十分简洁,虽然采用了函数调用、类定义等方法,但是由于运用不是很熟练,一些地方还是出现了重复,如输出安排课表的函数;
2.对链表的运用不是非常熟悉,虽然在保存学生成绩以及排序成绩的函数中采用了链表的形式,但是对于选课保存函数,由于难以单独调用链表中某一数据,采用了数组的形式;
3.一些细节没有完善。
考虑到程序的简洁性,一些地方没有设计输入错误的提示。
不过必要的地方还是有的,比如说选课函数,如果选择的课程不存在会提示重新选择。
六、程序附录
#include<
iostream>
fstream>
string.h>
#include<
conio.h>
//用getch();
usingnamespacestd;
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
classStudent{
public:
charname[20];
charId[20];
intCnum;
//C课程得分
intMnum;
//数学课程得分
intEnum;
//英语课程得分
intsum;
//总分
Student*Next;
voidInput(){
cout<
<
"
\t\t请输入学生的姓名:
;
cin>
>
name;
\t\t请输入学生的学号:
Id;
\t\t请输入C课程的成绩:
Cnum;
\t\t请输入数学课程的成绩:
Mnum;
\t\t请输入英语课程的成绩:
Enum;
sum=Cnum+Mnum+Enum;
}
voidReadFile(istream&
in){
in>
name>
Id>
Cnum>
Mnum>
Enum>
sum;
voidShow1(){
姓名:
name<
endl<
学号:
Id<
C++:
Cnum<
数学:
Mnum<
英语"
Enum<
总成绩:
sum<
endl;
voidShow2(){
}
voidShow3(){
voidShow4(){
voidShow5(){
英语:
};
//﹌﹌﹌﹌﹌﹌﹌﹌﹌Studentmassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
classStudentmassage:
publicStudent{
Studentmassage();
~Studentmassage();
voidShowMenu1();
voidShowMenu2();
voidShowMenu3();
voidFind();
voidSave();
voidModifyItem();
voidRemoveItem();
voidSwap(Student*,Student*);
voidSort();
voidUnpass();
intListCount();
voidAverage();
voidGuanlikecheng1();
voidGuanlikecheng2();
voidxianshikecheng();
voidxuanzekecheng();
voidDisplay(){
for(Student*p=Head->
Next;
p!
=End;
p=p->
Next)
p->
Show1();
cout<
输入任意字符!
继续……"
getch();
voidAddItem(){
End->
Input();
Next=newStudent;
End=End->
添加成功!
getch();
private:
Student*Head,*End;
ifstreamin;
ofstreamout;
Student*FindItem(char*name){
for(Student*p=Head;
p->
Next!
Next)//匹配成功则返回上一个指针,不成功就返回空
if(!
strcmp(p->
Next->
name,name))
returnp;
returnNULL;
Student*FindID(char*Id){
for(Student*p=Head;
if(!
Id,Id))returnp;
returnNULL;
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Studentmassage:
:
Studentmassage(){
Head=newStudent;
Head->
End=Head->
in.open("
chengji.txt"
);
if(!
in)
这是一个新系统,您是首次登陆,无任何学生信息。
else
{
while(!
in.eof())
End->
ReadFile(in);
if(End->
name[0]=='
\0'
)break;
End=End->
in.close();
cout<
\t\t已经从chengji.txt中读取到学生信息!
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
~Studentmassage(){
Save();
for(Student*temp;
Head->
){
temp=Head->
Head->
Next=Head->
deletetemp;
deleteHead,End;
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌学生菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
voidStudentmassage:
ShowMenu1(){
〓〓〓〓〓〓〓〓〓〓☆学生成绩管理系统(学生用)☆〓〓〓〓〓〓〓〓〓〓"
〓〓〓〓〓〓〓★★★★★★★★★★★★★★★★★〓〓〓〓〓〓〓"
〓〓〓〓〓〓〓〓〓★☆1.显示学生成绩☆★〓〓〓〓〓〓〓〓〓"
〓〓〓〓〓〓〓〓〓★☆2.排序学生成绩☆★〓〓〓〓〓〓〓〓〓"
〓〓〓〓〓〓〓〓〓★☆3.查找学生成绩☆★〓〓〓〓〓〓〓〓〓"
〓〓〓〓〓〓〓〓〓★☆4.查看平均成绩☆★〓〓〓〓〓〓〓〓〓"
〓〓〓〓〓〓〓〓〓★☆5.查看学期课程☆★〓〓〓〓〓〓〓〓〓"
〓〓〓〓〓〓〓〓〓★☆6.选择选修课程☆★〓〓〓〓〓〓〓〓〓"
〓〓〓〓〓〓〓〓〓★☆0.安全退出系统☆★〓〓〓〓〓〓〓〓〓"
\n\t\t\n\t\t请选择:
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌教师菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
ShowMenu2(){
〓〓〓〓〓〓〓〓〓〓☆学生成绩管理系统(教师用)☆〓〓〓〓〓〓〓〓〓〓"
〓〓〓〓〓〓〓〓〓★☆1.增加学生成绩☆★〓〓〓〓〓〓〓〓〓"
〓〓〓〓〓〓〓〓〓★☆2.显示学生成绩☆★〓〓〓〓〓〓〓〓〓"
〓〓〓〓〓〓〓〓〓★☆3.排序学生成绩☆★〓〓〓〓〓〓〓〓〓"
〓〓〓〓〓〓〓〓〓★☆4.查找学生成绩☆★〓〓〓〓〓〓〓〓〓"
〓〓〓〓〓〓〓〓〓★☆5.删除学生成绩☆★〓〓〓〓〓〓〓〓〓"
〓〓〓〓〓〓〓〓〓★☆6.修改学生信息☆★〓〓〓〓〓〓〓〓〓"
〓〓〓〓〓〓〓〓〓★☆7.查看平均成绩☆★〓〓〓〓〓〓〓〓〓"
〓〓〓〓〓〓〓〓〓★☆8.显示课程安排☆★〓〓〓〓〓〓〓〓〓"
注意:
务必通过菜单选择“0”关闭系统,否则不能保存学生成绩到chengji.txt"
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌管理员菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
ShowMenu3(){
〓〓〓〓〓〓〓〓〓〓☆学生成绩管理系统(管理员用)☆〓〓〓〓〓〓〓〓〓〓"
〓〓〓〓〓〓〓〓〓★☆8.管理课程安排☆★〓〓〓〓〓〓〓〓〓"
〓〓〓〓〓〓〓〓〓★☆9.显示课程安排☆★〓〓〓〓〓〓〓〓〓"
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Find(){
charname[20],Id[10];
intx;
Student*p=NULL;
\n\t\t*********************************\n"
\t\t※1.按学生的姓名查找\n\t\t※2.按学生学号查找"
\n\t\t*********************************\n请选择:
cin>
x;
switch(x){
case1:
{
\t\t请输入要查找的学生的姓名:
if(p=FindItem(name)){
}
else{
\t\t没有找到该姓名的学生!
'
\n'
break;
case2:
\t\t请输入要查找的学生的学号:
if(p=FindID(Id)){
\t\t没有找到该学号的学生!
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查看平均成绩﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Average()
intA;
请选择需要查看的平均成绩"
1.C++平均成绩\n2.数学平均成绩\n3.英语平均成绩\n4.总分平均成绩"
A;
switch(A){
Student*p=NULL;
intn=Studentmassage:
ListCount();
doubleS=0;
for(p=Head->
Next){
S=S+p->
;
C++全班平均成绩是:
"
S/n<
break;
Student*p=NULL;
数学全班平均成绩是:
case3:
英语全班平均成绩是:
break;
case4:
总分全班平均成绩是:
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
intStudentmassage:
ListCount()//统计当前链表的记录总数,返回一个整数
Head)
return0;
intn=0;
for(Student*p=Head->
Next){n++;
returnn;
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Swap(Student*p1,Student*p2)//交换两个combox变量的数据域
Student*temp=newStudent;
strcpy(temp->
name,p1->
name);
Id,p1->
Id);
temp->
Cnum=p1->
Mnum=p1->
Enum=p1->
sum=p1->
strcpy(p1->
name,p2->
Id,p2->
p1->
Cnum=p2->
Mnum=p2->
Enum=p2->
sum=p2->
strcpy(p2->
name,temp->
Id,temp->
p2->
Cnum=temp->
Mnum=temp->
Enum=temp->
sum=temp->
Sort()//对当前链表进行成绩排序
请选择需要排序的成绩\n1.C++成绩\n2.数学成绩\n3.英语成绩\n4.总成绩"
Student*p=NULL,*p1=NULL,*k=NULL;
if(n<
2)
return;
for(p=Head->
for(k=p->
k!
k=k->
Next){
if(p->
sum>
k->
sum){
Studentmassage:
Swap(p,k);
cout<
按总成绩排序完成!
for(p=Head->
Show2();
=End
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 设计 使用说明