学生的选课管理系统的.docx

上传人:b****6 文档编号:8472834 上传时间:2023-01-31 格式:DOCX 页数:40 大小:118.44KB
下载 相关 举报
学生的选课管理系统的.docx_第1页
第1页 / 共40页
学生的选课管理系统的.docx_第2页
第2页 / 共40页
学生的选课管理系统的.docx_第3页
第3页 / 共40页
学生的选课管理系统的.docx_第4页
第4页 / 共40页
学生的选课管理系统的.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

学生的选课管理系统的.docx

《学生的选课管理系统的.docx》由会员分享,可在线阅读,更多相关《学生的选课管理系统的.docx(40页珍藏版)》请在冰豆网上搜索。

学生的选课管理系统的.docx

学生的选课管理系统的

2009~2010学年度第二学期

赣南师范学院数学与计算机科学学院

课程设计报告册

 

课程设计名称:

学生选课管理系统

专业:

计算机科学与技术

班级:

学号:

姓名:

指导老师:

 

课程设计任务一览表

序号

课程设计任务名称

设计专题任务描述(可附页)

1

学生选课信息管理系统

 

为选课信息管理人员和学生编写一个学生选课信息管理系统,实现选课信息的查询、修改、删除、添加以及学生课程成绩的查询等功能。

2

 

3

 

4

 

5

 

指导用书:

___算法与数据结构课程设计______

课程设计报告

设计项目

编号

1

名称

学生选课信息管理系统

主要

仪器

设备

一台PC机

附属

设备

主要

使用

软件

 

VisualC++6.0编程软件

 

起止时间

10年3月9日

—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

{charSno[10];charCno[10];intGrade;

structnode3*next;

}SC;

4、初始化学生信息表、课程信息表、选课信息表

voidInitlistA(Student*stu)

{stu->next=NULL;

}

voidInitlistB(Course*C)

{C->next=NULL;

}

voidInitlistC(SC*S)

{S->next=NULL;

}

5、求选课表长度

intGetlength(SC*S)

{inti=0;SC*p;p=S->next;

while(p!

=NULL)

{p=p->next;i++;

}return(i);

}

6、用户输入数据建立学生信息表(尾插法)

voidCreatelistA(Student*stu)

{Student*s,*r;intm,i;r=stu;

cout<<"现在输入学生信息"<

";cin>>m;

cout<<"|学号|姓名|性别|年龄|所在系|"<

for(i=0;i

{s=(Student*)malloc(sizeof(Student));

cin>>s->Sno;cin>>s->Sname;cin>>s->Ssex;cin>>s->Sage;cin>>s->Sdept;

r->next=s;r=s;}

r->next=NULL;

}

7、由用户输入数据建立课程信息列表

voidCreatelistB(Course*C)

{Course*s,*r;r=C;intm,i;

cout<<"现在输入课程信息"<

";cin>>m;

cout<<"|课程号|课程名|先行课|学分|"<

for(i=0;i

{s=(Course*)malloc(sizeof(Course));

cin>>s->Cno;cin>>s->Cname;cin>>s->Cpno;cin>>s->Ccredit;

r->next=s;r=s;}

r->next=NULL;

}

8、由用户输入数据建立选课信息列表

voidCreatelistC(SC*S)

{SC*q,*r;r=S;intm,i;

cout<<"现在输入选课信息"<

";cin>>m;

cout<<"|学号|课程号|成绩|"<

for(i=0;i

{q=(SC*)malloc(sizeof(SC));

cin>>q->Sno;cin>>q->Cno;cin>>q->Grade;

r->next=q;r=q;}

r->next=NULL;

}

9、输出学生信息表

voidDisplistA(Student*stu)

{Student*p=stu->next;

cout<<"学生信息表"<

cout<<"|学号|姓名|性别|年龄|所在系|"<

cout<<"|Sno|Sname|Ssex|Sage|Sdept|"<

while(p!

=NULL)

{printf("|%10s|%9s|%8s|%8s|%10s|\n",p->Sno,p->Sname,p->Ssex,p->Sage,p->Sdept);

p=p->next;}

}

10、输出选课信息表

voidDisplistC(SC*S)

{if(Getlength(S)==0)

{cout<<"对不起!

选课信息表已为空!

"<

}

else

{SC*p=S->next;

cout<<"选课信息表"<

cout<<"|学号|课程号|成绩|"<

cout<<"|Sno|Cno|Grade|"<

while(p!

=NULL)

{printf("|%13s|%17s|%13d|\n",p->Sno,p->Cno,p->Grade);

p=p->next;}}

}

11、查询学生个人基本信息,以姓名或学号为参数

voidQueryStudent(Student*stu)

{inti=0;charsn[20];Student*p;

p=stu->next;

cout<<"请输入所要查询的学生的学号或姓名"<

";cin>>sn;

do

{if(strcmp(p->Sname,sn)==0||strcmp(p->Sno,sn)==0)

{

cout<<"|学号|姓名|性别|年龄|所在系|"<

cout<<"|Sno|Sname|Ssex|Sage|Sdept|"<

printf("|%10s|%9s|%8s|%8s|%10s|\n",p->Sno,p->Sname,p->Ssex,p->Sage,p->Sdept);

break;}

p=p->next;//注意指针要往后走

}while(p!

=NULL);

if(p==NULL)cout<<"对不起!

无此学生的信息!

"<

}

12、查询学生单科目的成绩

voidQuerySC(Student*stu,Course*C,SC*S)

{charsn[20];charcn[20];Student*p;Course*q;SC*r;

p=stu->next;

cout<<"请输入所要查询的学生的学号和课程号"<

";cin>>sn;

p=stu->next;//将姓名计算转化成为学号

do

{if(strcmp(p->Sname,sn)==0||strcmp(p->Sno,sn)==0)

{strcpy(sn,p->Sno);break;}

p=p->next;

}while(p!

=NULL);

if(p==NULL)

{cout<<"对不起!

无该名学生的信息!

"<

cout<<"课程号或课程名:

";cin>>cn;

q=C->next;//将课程名计算转化成为课程号

do

{if(strcmp(q->Cno,cn)==0||strcmp(q->Cname,cn)==0)

{strcpy(cn,q->Cno);break;}

q=q->next;

}while(q!

=NULL);

if(q==NULL)

{cout<<"对不起!

您输入的课程信息有误!

"<

}r=S->next;

do

{if(strcmp(r->Sno,sn)==0&&strcmp(r->Cno,cn)==0)

{cout<<"|学号|课程号|成绩|"<

cout<<"|Sno|Cno|Grade"<

printf("|%13s|%17s|%13d|\n",r->Sno,r->Cno,r->Grade);break;}

r=r->next;

}while(r!

=NULL);

if(r==NULL)

{cout<<"对不起!

该学生没有参加这门课程的考试!

"<

}

13、查询学生个人总成绩

voidQuerySUM(Student*stu,SC*S)

{Student*p;SC*q;charsn[20];floatn=0;inti=0;

cout<<"请输入要查询的学生的信息!

"<

";cin>>sn;

p=stu->next;

do

{if(strcmp(p->Sno,sn)==0||strcmp(p->Sname,sn)==0)

{strcpy(sn,p->Sno);break;}

p=p->next;

}while(p!

=NULL);

if(p==NULL)

{cout<<"对不起!

无该名学生的信息!

"<

else

{q=S->next;

do

{if(strcmp(q->Sno,sn)==0)

{n=n+q->Grade;i++;}

q=q->next;

}while(q!

=NULL);

if(n==0)cout<<"该名学生没有参加考试!

"<

else

cout<<"该名学生的总成绩为:

"<

}

14、删除选课信息

voidDeleteSC(Student*stu,Course*C,SC*S)

{charsn[20];charcn[20];Student*p;Course*q;SC*r;SC*t;

cout<<"请输入要删除的信息中学生学号或姓名和课程号或课程名!

"<

";

cin>>sn;

p=stu->next;//检查是否存在这名学生

do

{if(strcmp(p->Sno,sn)==0||strcmp(p->Sname,sn)==0)

{strcpy(sn,p->Sno);break;

}

p=p->next;//注意指针要往后走

}while(p!

=NULL);

if(p==NULL)

{cout<<"对不起!

无该名学生的信息!

"<

cout<<"课程号或课程名:

";cin>>cn;

q=C->next;//检查课程号是否合法

do

{if(strcmp(q->Cname,cn)==0||strcmp(q->Cno,cn)==0)

{strcpy(cn,q->Cno);break;}

q=q->next;

}while(q!

=NULL);

if(p==NULL)

{cout<<"对不起!

您输入的课程信息有误!

"<

}

t=S;r=S->next;

do

{if(strcmp(r->Sno,sn)==0&&strcmp(r->Cno,cn)==0)

{t->next=r->next;free(r);

cout<<"删除成功!

"<

}

t=t->next;r=r->next;

}while(r!

=NULL);

if(r==NULL)

{cout<<"对不起!

原表中没有您要删除的选课信息!

"<

}

15、修改选课信息

voidRevalue(Student*stu,Course*C,SC*S)

{charsn[20],cn[20];Student*p;Course*q;SC*r;

cout<<"请输入您所要修改的学生或姓名和课程号或课程名!

"<

";

cin>>sn;p=stu->next;//检查是否存在这名学生,若存在则将姓名转换为对应的学号

do

{if(strcmp(p->Sno,sn)==0||strcmp(p->Sname,sn)==0)

{strcpy(sn,p->Sno);break;}

p=p->next;

}while(p!

=NULL);

if(p==NULL)

{cout<<"对不起!

无该名学生的信息!

"<

cout<<"课程号或课程名:

";cin>>cn;

q=C->next;//检查是否存在这门课程,若存在则将课程名转换为对应的课程号

do

{if(strcmp(q->Cname,cn)==0||strcmp(q->Cno,cn)==0)

{strcpy(cn,q->Cno);break;

}q=q->next;

}while(q!

=NULL);

if(q==NULL)

{cout<<"对不起!

您输入的课程信息有误!

"<

}r=S->next;

do

{if(strcmp(r->Sno,sn)==0&&strcmp(r->Cno,cn)==0)

{

cout<<"该名学生的当前选课信息为:

"<

cout<<"|学号|课程号|成绩|"<

cout<<"|Sno|Cno|Grade"<

printf("|%13s|%17s|%13d|\n",r->Sno,r->Cno,r->Grade);

break;

}r=r->next;

}while(r!

=NULL);

if(r==NULL)

{cout<<"对不起!

没有您要修改的选课信息!

"<

}

cout<<"请您重置该名学生的选课信息!

"<

";cin>>sn;

p=stu->next;//检查学生信息表中是否存在这名学生

do

{if(strcmp(p->Sno,sn)==0||strcmp(p->Sname,sn)==0)

{strcpy(sn,p->Sno);break;}

p=p->next;

}while(p!

=NULL);

if(p==NULL)

{cout<<"对不起!

您的输入有误!

"<

cout<<"课程号或课程名:

";cin>>cn;

q=C->next;//检查是否存在这门课程,若存在则将课程名转换为对应的课程号

do

{if(strcmp(q->Cname,cn)==0||strcmp(q->Cno,cn)==0)

{strcpy(cn,q->Cno);break;}

q=q->next;

}while(q!

=NULL);

if(q==NULL)

{cout<<"对不起!

您输入的课程信息有误!

"<

strcpy(r->Sno,sn);strcpy(r->Cno,cn);

cout<<"成绩:

";cin>>r->Grade;cout<<"修改成功!

"<

}

16、添加选课信息

voidAddSC(Student*stu,Course*C,SC*S)

{charsn[20],cn[20];Student*p;Course*q;SC*r,*s;intGrade;r=S;

cout<<"请输入信息:

"<

";cin>>sn;

p=stu->next;//检查是否存在这名学生,若存在则将姓名转换为对应的学号

do

{if(strcmp(p->Sno,sn)==0||strcmp(p->Sname,sn)==0)

{strcpy(sn,p->Sno);break;}

p=p->next;

}while(p!

=NULL);

if(p==NULL)

{cout<<"对不起!

不存在该名学生,您不能添加其选课信息!

"<

cout<<"课程号或课程名:

";cin>>cn;q=C->next;

do

{if(strcmp(cn,q->Cname)==0||strcmp(cn,q->Cno)==0)

{strcpy(cn,q->Cno);break;}

q=q->next;

}while(q!

=NULL);

if(q==NULL)

{cout<<"对不起!

您输入的课程信息有误!

"<

s=(SC*)malloc(sizeof(SC));

cout<<"成绩:

";cin>>Grade;

strcpy(s->Sno,sn);strcpy(s->Cno,cn);s->Grade=Grade;

while(r->next!

=NULL)

{r=r->next;}

s->next=r->next;r->next=s;

cout<<"添加成功!

"<

}

17、查询个人平均成绩

voidQueryAva(Student*stu,SC*S)

{floatm=0;Student*p;SC*q;charsn[20];floatn=0;inti=0;

cout<<"请输入要查询的学生的信息!

"<

";cin>>sn;

p=stu->next;

do

{if(strcmp(p->Sno,sn)==0||strcmp(p->Sname,sn)==0)

{strcpy(sn,p->Sno);break;}

p=p->next;

}while(p!

=NULL);

if(p==NULL)

{cout<<"对不起!

无该名学生的信息!

"<

else

{q=S->next;

do

{if(strcmp(q->Sno,sn)==0)

{n=n+q->Grade;i++;}

q=q->next;

}while(q!

=NULL);

if(n==0)cout<<"该名学生没有参加考试!

"<

else

cout<<"该名学生的平均成绩为:

"<

}

}

18、查询某个系所有学生的成绩

voidQueryDepart(Student*stu,SC*S)

{charSdept[4];Student*p;SC*q;inti=0;

cout<<"请输入系名:

";cin>>Sdept;

p=stu->next;

do

{if(strcmp(p->Sdept,Sdept)==0)

{q=S->next;

do

{if(strcmp(q->Sno,p->Sno)==0)

{

cout<<"|姓名|学号|课程号|成绩|"<

cout<<"|Sname|Sno|Cno|Grade|"<

cout<<"|"<Sname<<"|"<Sno<<"|"<Cno<<"|";

cout<Grade<<"|"<next;

}while(q!

=NULL);

}p=p->next;

}while(p!

=NULL);

if(i==0)

{cout<<"对不起!

没有您需要的信息!

"<

}

19、查询某课程的平均成绩

voidQuerySCL(Course*C,SC*S)

{charcn[20],cn1[20];floatm=0;floati=0;Course*q;SC*r;

cout<<"请输入您所要查询的课程号或课程名!

"<>cn;

q=C->next;

do

{if(strcmp(q->Cno,cn)==0||st

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1