学生的选课管理系统的Word下载.docx
- 文档编号:21609070
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:40
- 大小:118.44KB
学生的选课管理系统的Word下载.docx
《学生的选课管理系统的Word下载.docx》由会员分享,可在线阅读,更多相关《学生的选课管理系统的Word下载.docx(40页珍藏版)》请在冰豆网上搜索。
—5月30日
同组人
课程设计任务书
1.系统的功能描述(10分)
2.系统的主要功能模块算法设计(30分)
3.系统的各函数设计(20分)
4.系统的编码(20分)
5.系统的运行(10分)
6.系统的主要功能模块算法性能分析(10分)
课程设计报告
一、系统的功能描述
通过此选课系统可以实现如下功能:
输入数据:
可以由用户输入学生信息、课程信息、选课信息建立各信息表;
查询各信息表:
可以查询学生信息表内的学生的个人信息,课程表里的课程信息和选课表里的选课信息;
查询学生个人信息、学生单科目成绩、个人总成绩;
删除、修改、添加选课信息;
查询学生个人平均成绩、系内所有学生成绩、某课程平均成绩;
二、系统的主要功能模块算法设计
根据实际情况,对上述要求做以下简化:
1,首先需要客户为系统输入各表信息。
2,查询或删除时只能查询或删除表内存在的信息,若表中不存在则报错。
3,各表信息由线性表实现,各表内信息按用户输入时的顺序存放。
程序中包含4个模块
(1)主程序模块;
(2)学生个人信息结构单元模块----定义各学生个人信息的结构体类型;
(3)课程信息结构单元模块----定义各课程信息的结构体类型;
(4)选课信息结构单元模块----定义各选课信息的结构体类型;
(5)功能模块----------------实现查询、修改、删除、添加信息,查询学生各个课程成绩等功能.
主要功能模块算法详细如下:
1、定义学生对象结构体类型
typedefstructnode
{charSno[10];
charSname[10];
charSsex[3];
charSage[3];
charSdept[4];
structnode*next;
}Student;
2、定义课程对象结构体类型
typedefstructnode2
{charCno[10];
charCname[10];
charCpno[5];
charCcredit[3];
structnode2*next;
}Course;
3、定义选课对象结构体类型
typedefstructnode3
charCno[10];
intGrade;
structnode3*next;
}SC;
4、初始化学生信息表、课程信息表、选课信息表
voidInitlistA(Student*stu)
{stu->
next=NULL;
}
voidInitlistB(Course*C)
{C->
voidInitlistC(SC*S)
{S->
5、求选课表长度
intGetlength(SC*S)
{inti=0;
SC*p;
p=S->
next;
while(p!
=NULL)
{p=p->
i++;
}return(i);
6、用户输入数据建立学生信息表(尾插法)
voidCreatelistA(Student*stu)
{Student*s,*r;
intm,i;
r=stu;
cout<
<
"
现在输入学生信息"
endl;
cout<
请输入学生个数:
;
cin>
>
m;
|学号|姓名|性别|年龄|所在系|"
for(i=0;
i<
i++)
{s=(Student*)malloc(sizeof(Student));
cin>
s->
Sno;
Sname;
Ssex;
Sage;
Sdept;
r->
next=s;
r=s;
r->
7、由用户输入数据建立课程信息列表
voidCreatelistB(Course*C)
{Course*s,*r;
r=C;
现在输入课程信息"
请输入课程数量:
|课程号|课程名|先行课|学分|"
{s=(Course*)malloc(sizeof(Course));
Cno;
Cname;
Cpno;
Ccredit;
8、由用户输入数据建立选课信息列表
voidCreatelistC(SC*S)
{SC*q,*r;
r=S;
现在输入选课信息"
请输入选课信息条数:
|学号|课程号|成绩|"
{q=(SC*)malloc(sizeof(SC));
q->
Grade;
next=q;
r=q;
9、输出学生信息表
voidDisplistA(Student*stu)
{Student*p=stu->
学生信息表"
|Sno|Sname|Ssex|Sage|Sdept|"
{printf("
|%10s|%9s|%8s|%8s|%10s|\n"
p->
Sno,p->
Sname,p->
Ssex,p->
Sage,p->
Sdept);
p=p->
10、输出选课信息表
voidDisplistC(SC*S)
{if(Getlength(S)==0)
{cout<
对不起!
选课信息表已为空!
}
else
{SC*p=S->
cout<
选课信息表"
|Sno|Cno|Grade|"
while(p!
{printf("
|%13s|%17s|%13d|\n"
Cno,p->
Grade);
p=p->
}}
11、查询学生个人基本信息,以姓名或学号为参数
voidQueryStudent(Student*stu)
charsn[20];
Student*p;
p=stu->
请输入所要查询的学生的学号或姓名"
请输入:
sn;
do
{if(strcmp(p->
Sname,sn)==0||strcmp(p->
Sno,sn)==0)
{
cout<
printf("
break;
//注意指针要往后走
}while(p!
=NULL);
if(p==NULL)cout<
无此学生的信息!
12、查询学生单科目的成绩
voidQuerySC(Student*stu,Course*C,SC*S)
{charsn[20];
charcn[20];
Course*q;
SC*r;
请输入所要查询的学生的学号和课程号"
学号或姓名:
//将姓名计算转化成为学号
{strcpy(sn,p->
Sno);
break;
if(p==NULL)
无该名学生的信息!
return;
课程号或课程名:
cn;
q=C->
//将课程名计算转化成为课程号
{if(strcmp(q->
Cno,cn)==0||strcmp(q->
Cname,cn)==0)
{strcpy(cn,q->
Cno);
q=q->
}while(q!
if(q==NULL)
您输入的课程信息有误!
}r=S->
{if(strcmp(r->
Sno,sn)==0&
&
strcmp(r->
Cno,cn)==0)
{cout<
|Sno|Cno|Grade"
r->
Sno,r->
Cno,r->
Grade);
r=r->
}while(r!
if(r==NULL)
该学生没有参加这门课程的考试!
13、查询学生个人总成绩
voidQuerySUM(Student*stu,SC*S)
{Student*p;
SC*q;
floatn=0;
inti=0;
请输入要查询的学生的信息!
学号或姓名:
Sno,sn)==0||strcmp(p->
Sname,sn)==0)
{q=S->
do
{if(strcmp(q->
{n=n+q->
q=q->
}while(q!
if(n==0)cout<
该名学生没有参加考试!
else
该名学生的总成绩为:
n<
}
14、删除选课信息
voidDeleteSC(Student*stu,Course*C,SC*S)
SC*t;
请输入要删除的信息中学生学号或姓名和课程号或课程名!
cin>
//检查是否存在这名学生
{if(strcmp(p->
//检查课程号是否合法
Cname,cn)==0||strcmp(q->
Cno);
t=S;
r=S->
{if(strcmp(r->
{t->
next=r->
free(r);
删除成功!
t=t->
r=r->
原表中没有您要删除的选课信息!
15、修改选课信息
voidRevalue(Student*stu,Course*C,SC*S)
{charsn[20],cn[20];
请输入您所要修改的学生或姓名和课程号或课程名!
学生或姓名:
p=stu->
//检查是否存在这名学生,若存在则将姓名转换为对应的学号
//检查是否存在这门课程,若存在则将课程名转换为对应的课程号
{if(strcmp(q->
}q=q->
if(q==NULL)
}r=S->
该名学生的当前选课信息为:
}r=r->
没有您要修改的选课信息!
请您重置该名学生的选课信息!
p=stu->
//检查学生信息表中是否存在这名学生
break;
您的输入有误!
return;
{cout<
strcpy(r->
Sno,sn);
strcpy(r->
Cno,cn);
成绩:
r->
修改成功!
16、添加选课信息
voidAddSC(Student*stu,Course*C,SC*S)
Student*p;
SC*r,*s;
请输入信息:
不存在该名学生,您不能添加其选课信息!
q=C->
{if(strcmp(cn,q->
Cname)==0||strcmp(cn,q->
Cno)==0)
{cout<
s=(SC*)malloc(sizeof(SC));
strcpy(s->
strcpy(s->
Grade=Grade;
while(r->
next!
{r=r->
s->
next;
添加成功!
17、查询个人平均成绩
voidQueryAva(Student*stu,SC*S)
{floatm=0;
inti=0;
Sno,sn)==0||strcmp(p->
{n=n+q->
i++;
该名学生的平均成绩为:
n/i<
18、查询某个系所有学生的成绩
voidQueryDepart(Student*stu,SC*S)
{charSdept[4];
请输入系名:
Sdept,Sdept)==0)
{q=S->
do
{if(strcmp(q->
Sno)==0)
{
cout<
|姓名|学号|课程号|成绩|"
|Sname|Sno|Cno|Grade|"
|"
p->
Sname<
|"
Sno<
Cno<
Grade<
|"
i=1;
}q=q->
}while(q!
}p=p->
if(i==0)
没有您需要的信息!
19、查询某课程的平均成绩
voidQuerySCL(Course*C,SC*S)
{charcn[20],cn1[20];
floatm=0;
floati=0;
请输入您所要查询的课程号或课程名!
Cno,cn)==0||st
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 选课 管理 系统