1、 学生选课管理系统范文 27 2020年4月19日 文档仅供参考,不当之处,请联系改正。 ~ 年度第 二 学期 赣南师范学院数学与计算机科学学院 课程设计报告册 课程设计名称:学生选课管理系统 专 业:计算机科学与技术 班 级: 学 号: 姓 名: 指 导 老 师: 课程设计任务一览表 序号 课程设计任务名称 设计专题任务描述(可附页) 1 学生选课信息管理系统 为选课信息管理人员和学生编写一个学生
2、选课信息管理系统,实现选课信息的查询、修改、删除、添加以及学生课程成绩的查询等功能。 2 3 4 5 指导用书:___算法与数据结构课程设计______ 课程设计报告 设计项目 编 号 1 名 称 学生选课信息管理系统 主要 仪器 设备 一台PC机 附属 设备 主要 使用 软件 Visual C++ 6.0 编程软件 起止时间 3月 9 日 — 5 月 30日 同组人 课程设计任务书 1. 系统的功能描述(1
3、0分) 2. 系统的主要功能模块算法设计(30分) 3. 系统的各函数设计(20分) 4. 系统的编码(20分) 5. 系统的运行(10分) 6. 系统的主要功能模块算法性能分析(10分) 课 程 设 计 报 告 一、系统的功能描述 经过此选课系统能够实现如下功能: ① 输入数据:能够由用户输入学生信息、课程信息、选课信息建立各信息表; ② 查询各信息表:能够查询学生信息表内的学生的个人信息,课程表里的课程信息和选课表里的选课信息; ③ 查询学生个人信息、学生单科目成绩、个人总成绩; ④ 删除、修改、添加选课信息;
4、 ⑤ 查询学生个人平均成绩、系内所有学生成绩、某课程平均成绩; 二、系统的主要功能模块算法设计 根据实际情况,对上述要求做以下简化:1,首先需要客户为系统输入各表信息。2,查询或删除时只能查询或删除表内存在的信息,若表中不存在则报错。3,各表信息由线性表实现,各表内信息按用户输入时的顺序存放。 程序中包含4 个模块 (1)主程序模块; (2)学生个人信息结构单元模块----定义各学生个人信息的结构体类型; (3)课程信息结构单元模块----定义各课程信息的结构体类型; (4)选课信息结构单元模块----定义各选课信息的结构体类型; (5)功能模块--------
5、实现查询、修改、删除、添加信息,查询学生各个课程成绩等功能. 主要功能模块算法详细如下: 1、定义学生对象结构体类型 typedef struct node { char Sno[10]; char Sname[10]; char Ssex[3]; char Sage[3]; char Sdept[4]; struct node *next; }Student; 2、定义课程对象结构体类型 typedef struct node2 { char Cno[10]; char Cname[10]; char Cpno[5]; char
6、Ccredit[3]; struct node2 *next; }Course; 3、定义选课对象结构体类型 typedef struct node3 { char Sno[10];char Cno[10];int Grade; struct node3 *next; }SC; 4、初始化学生信息表、课程信息表、选课信息表 void InitlistA(Student *stu) { stu->next=NULL; } void InitlistB(Course *C) { C->next=NULL; } void InitlistC(SC *S)
7、{ S->next=NULL;
}
5、求选课表长度
int Getlength(SC *S)
{ int i=0;SC *p;p=S->next;
while(p!=NULL)
{p=p->next;i++;
}return(i);
}
6、用户输入数据建立学生信息表(尾插法)
void CreatelistA(Student *stu)
{ Student *s,*r;int m,i;r=stu;
cout<<"现在输入学生信息"<
8、别 | 年龄 | 所在系 |"< 9、ndl;cout<<"请输入课程数量:";cin>>m;
cout<<"| 课程号 | 课程名 | 先行课 | 学分 |"< 10、r;r=S;int m,i;
cout<<"现在输入选课信息"< 11、)
{ Student *p=stu->next;
cout<<"学生信息表"< 12、0、输出选课信息表
void DisplistC(SC *S)
{ if(Getlength(S)==0)
{cout<<"对不起!选课信息表已为空!"< 13、
{ printf("|%13s|%17s|%13d|\n",p->Sno,p->Cno,p->Grade);
p=p->next;}}
}
11、查询学生个人基本信息,以姓名或学号为参数
void QueryStudent(Student *stu)
{ int i=0;char sn[20];Student *p;
p=stu->next;
cout<<"请输入所要查询的学生的学号或姓名"< 14、sn)==0)
{
cout<<"| 学号 | 姓名 | 性别 | 年龄 | 所在系 |"< 15、)cout<<"对不起!无此学生的信息!"< 16、>Sno,sn)==0)
{strcpy(sn,p->Sno);break;}
p=p->next;
}while(p!=NULL);
if(p==NULL)
{cout<<"对不起!无该名学生的信息!"< 17、le(q!=NULL);
if(q==NULL)
{cout<<"对不起!您输入的课程信息有误!"< 18、3s|%17s|%13d|\n",r->Sno,r->Cno,r->Grade);break;}
r=r->next;
}while(r!=NULL);
if(r==NULL)
{cout<<"对不起!该学生没有参加这门课程的考试!"< 19、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<<"对不起!无该名学生的信息!"< 20、q!=NULL);
if(n==0)cout<<"该名学生没有参加考试!"< 21、tu->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<<"对不起!无该名学生的信息!"< 22、ame,cn)==0 || strcmp(q->Cno,cn)==0)
{strcpy(cn,q->Cno);break;}
q=q->next;
}while(q!=NULL);
if(p==NULL)
{cout<<"对不起!您输入的课程信息有误!"< 23、"< 24、>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<<"对不起!无该名学生的信息!"< 25、{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<<"对不起!您输入的课程信息有误!"< 26、ut<<"| 学号 | 课程号 | 成绩 |"< 27、out<<"请您重置该名学生的选课信息!"< 28、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<<"对不起!您输入的课程信息有误!"< 29、>Grade; cout<<"修改成功!"< 30、ame,sn)==0)
{strcpy(sn,p->Sno); break;}
p=p->next;
}while(p!=NULL);
if(p==NULL)
{ cout<<"对不起!不存在该名学生,您不能添加其选课信息!"< 31、LL);
if(q==NULL)
{ cout<<"对不起!您输入的课程信息有误!"< 32、Ava(Student *stu,SC *S)
{float m=0;Student *p;SC *q;char sn[20];float n=0; int i=0;
cout<<"请输入要查询的学生的信息!"< 33、t<<"对不起!无该名学生的信息!"< 34、C *S)
{ char Sdept[4];Student *p;SC *q;int i=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<<"| 姓名 | 学号 | 课程号 | 成绩 |"< 35、 Sno | Cno | Grade |"< 36、 37、t;
}while(q!=NULL);
if(q==NULL)
{ cout<<"对不起!您输入的课程信息有误!"< 38、6、 由系统对学生信息表赋值
void GivevalueA(Student *stu)
{ Student *p,*q;p=stu;q=(Student *)malloc(sizeof(Student));
strcpy(q->Sno,"95001");strcpy(q->Sname,"李勇");strcpy(q->Ssex,"男");strcpy(q->Sage,"20");
strcpy(q->Sdept,"CS");
q->next=p->next;p->next=q;p=p->next;
}
17、 由系统对课程信息表赋初值
void GivevalueB( 39、Course *C)
{ Course *p,*q;p=C;q=(Course *)malloc(sizeof(Course));
strcpy(q->Cno,"1");strcpy(q->Cname,"数据库");strcpy(q->Cpno,"5");strcpy(q->Ccredit,"4");
q->next=p->next;p->next=q;p=p->next;
}
18、 由系统对选课信息表赋初值
void GivevalueC(SC *S)
{ SC *p,*q;p=S;q=(SC *)malloc(sizeof(SC));
strcpy(q->S 40、no,"95001");strcpy(q->Cno,"1");q->Grade=92;
q->next=p->next;p->next=q;p=p->next;
}
19、 选择函数
int GETchooce(char n[])
{ int m;
if(strcmp(n,"0")==0)m=0;
else if(strcmp(n,"1")==0)m=1;
else if(strcmp(n,"2")==0)m=2;
else if(strcmp(n,"3")==0)m=3;
else if(strcmp(n,"4")==0)m=4;
41、else if(strcmp(n,"5")==0)m=5;
else if(strcmp(n,"6")==0)m=6;
else if(strcmp(n,"7")==0)m=7;
else if(strcmp(n,"8")==0)m=8;
else if(strcmp(n,"9")==0)m=9;
else if(strcmp(n,"10")==0)m=10;
else if(strcmp(n,"11")==0)m=11;
else if(strcmp(n,"12")==0)m=12;
else m=-1;
return(m);
42、}
三、 系统的各函数设计
1、初始化学生信息表
void InitlistA()
2、初始化课程信息表
void InitlistB()
3、初始化选课信息表
void InitlistC()
4、求选课表的深度
int Getlength()
5、用户输入数据建立学生信息表
void CreatelistA()
6、由用户输入数据建立课程信息列表
void CreatelistB()
7、由用户输入数据建立选课信息列表
void CreatelistC()
8、输出学生信息表
void DisplistA()
9、输出课程信息表
void Displi 43、stB()
10、 输出选课信息表
void DisplistC()
11、 查询学生个人基本信息
void QueryStudent()
12、 查询学生单科目的成绩
void QuerySC()
13、 查询学生个人总成绩
void QuerySUM()
14、 删除选课信息
void DeleteSC()
15、 修改选课信息
void Revalue()
16、 添加选课信息
void AddSC()
17、 查询个人平均成绩
void QueryAva()
18、 查询某个系所有学生的成绩
void QueryDepart()
19、 查询某课程 44、的平均成绩
void QuerySCL()
四. 系统的编码
源程序:
#include 45、struct node *next;
}Student;
//定义课程对象类型
typedef struct node2
{ char Cno[10]; //课程号
char Cname[10]; //课程名
char Cpno[5]; //先行课
char Ccredit[3]; //学分
struct node2 *next;
}Course;
//定义选课对象类型
typedef struct node3
{ char Sno[10];
char Cno[10];
int Grade;
struct node3 *next 46、
}SC;
//初始化学生信息表
void InitlistA(Student *stu)
{stu->next=NULL;
}
//初始化课程信息表
void InitlistB(Course *C)
{C->next=NULL;
}
//初始化选课信息表
void InitlistC(SC *S)
{S->next=NULL;
}
//求选课表的深度
int Getlength(SC *S)
{ int i=0;SC *p;p=S->next;
while(p!=NULL)
{ p=p->next; i++;}
return(i);
}
/ 47、/用户输入数据建立学生信息表(尾插法)
void CreatelistA(Student *stu)
{ Student *s,*r; int m,i;r=stu;
cout<<"现在输入学生信息"< 48、>>s->Sage;cin>>s->Sdept;
r->next=s;r=s;
}r->next=NULL;
}
//由用户输入数据建立课程信息列表
void CreatelistB(Course *C)
{ Course *s,*r;r=C;int m,i;
cout<<"现在输入课程信息"< 49、);
cin>>s->Cno; cin>>s->Cname; cin>>s->Cpno; cin>>s->Ccredit;
r->next=s; r=s;
}r->next=NULL;
}
//由用户输入数据建立选课信息列表
void CreatelistC(SC *S)
{ SC *q,*r; r=S; int m,i;
cout<<"现在输入选课信息"< 50、






