收藏 分销(赏)

学生选课管理系统范文.doc

上传人:精*** 文档编号:4617876 上传时间:2024-10-07 格式:DOC 页数:27 大小:201KB 下载积分:10 金币
下载 相关 举报
学生选课管理系统范文.doc_第1页
第1页 / 共27页
学生选课管理系统范文.doc_第2页
第2页 / 共27页


点击查看更多>>
资源描述
学生选课管理系统范文 27 2020年4月19日 文档仅供参考,不当之处,请联系改正。 ~ 年度第 二 学期 赣南师范学院数学与计算机科学学院 课程设计报告册 课程设计名称:学生选课管理系统 专 业:计算机科学与技术 班 级: 学 号: 姓 名: 指 导 老 师: 课程设计任务一览表 序号 课程设计任务名称 设计专题任务描述(可附页) 1 学生选课信息管理系统 为选课信息管理人员和学生编写一个学生选课信息管理系统,实现选课信息的查询、修改、删除、添加以及学生课程成绩的查询等功能。 2 3 4 5 指导用书:___算法与数据结构课程设计______ 课程设计报告 设计项目 编 号 1 名 称 学生选课信息管理系统 主要 仪器 设备 一台PC机 附属 设备 主要 使用 软件 Visual C++ 6.0 编程软件 起止时间 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、定义学生对象结构体类型 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 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) { 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<<"现在输入学生信息"<<endl;cout<<"请输入学生个数:";cin>>m; cout<<"| 学号 | 姓名 | 性别 | 年龄 | 所在系 |"<<endl; for(i=0;i<m;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、 由用户输入数据建立课程信息列表 void CreatelistB(Course *C) { Course *s,*r;r=C;int m,i; cout<<"现在输入课程信息"<<endl;cout<<"请输入课程数量:";cin>>m; cout<<"| 课程号 | 课程名 | 先行课 | 学分 |"<<endl; for(i=0;i<m;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、由用户输入数据建立选课信息列表 void CreatelistC(SC *S) { SC *q,*r;r=S;int m,i; cout<<"现在输入选课信息"<<endl;cout<<"请输入选课信息条数:";cin>>m; cout<<"| 学号 | 课程号 | 成绩 |"<<endl; for(i=0;i<m;i++) { q=(SC *)malloc(sizeof(SC)); cin>>q->Sno;cin>>q->Cno;cin>>q->Grade; r->next=q;r=q;} r->next=NULL; } 9、输出学生信息表 void DisplistA(Student *stu) { Student *p=stu->next; cout<<"学生信息表"<<endl; cout<<"| 学号 | 姓名 | 性别 | 年龄 | 所在系 |"<<endl; cout<<"| Sno | Sname | Ssex | Sage | Sdept |"<<endl; while(p!=NULL) { printf("|%10s|%9s|%8s|%8s|%10s|\n",p->Sno,p->Sname,p->Ssex,p->Sage,p->Sdept); p=p->next;} } 10、输出选课信息表 void DisplistC(SC *S) { if(Getlength(S)==0) {cout<<"对不起!选课信息表已为空!"<<endl; } else { SC *p=S->next; cout<<"选课信息表"<<endl; cout<<"| 学号 | 课程号 | 成绩 |"<<endl; cout<<"| Sno | Cno | Grade |"<<endl; while(p!=NULL) { 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<<"请输入所要查询的学生的学号或姓名"<<endl;cout<<"请输入:";cin>>sn; do { if(strcmp(p->Sname,sn)==0||strcmp(p->Sno,sn)==0) { cout<<"| 学号 | 姓名 | 性别 | 年龄 | 所在系 |"<<endl; cout<<"| Sno | Sname | Ssex | Sage | Sdept |"<<endl; 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<<"对不起!无此学生的信息!"<<endl; } 8、 查询学生单科目的成绩 void QuerySC(Student *stu,Course *C,SC *S) { char sn[20];char cn[20];Student *p;Course *q;SC *r; p=stu->next; cout<<"请输入所要查询的学生的学号和课程号"<<endl;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<<"对不起!无该名学生的信息!"<<endl;return ;} 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<<"对不起!您输入的课程信息有误!"<<endl;return ; }r=S->next; do { if(strcmp(r->Sno,sn)==0 && strcmp(r->Cno,cn)==0) { cout<<"| 学号 | 课程号 | 成绩 |"<<endl; cout<<"| Sno | Cno | Grade "<<endl; printf("|%13s|%17s|%13d|\n",r->Sno,r->Cno,r->Grade);break;} r=r->next; }while(r!=NULL); if(r==NULL) {cout<<"对不起!该学生没有参加这门课程的考试!"<<endl;} } 9、 查询学生个人总成绩 void QuerySUM(Student *stu,SC *S) { Student *p;SC *q;char sn[20];float n=0;int i=0; cout<<"请输入要查询的学生的信息!"<<endl;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<<"对不起!无该名学生的信息!"<<endl; } 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<<"该名学生没有参加考试!"<<endl; else cout<<"该名学生的总成绩为:"<<n<<endl; } } 10、 删除选课信息 void DeleteSC(Student *stu,Course *C,SC *S) { char sn[20];char cn[20];Student *p;Course *q;SC *r;SC *t; cout<<"请输入要删除的信息中学生学号或姓名和课程号或课程名!"<<endl;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<<"对不起!无该名学生的信息!"<<endl;return ;} 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<<"对不起!您输入的课程信息有误!"<<endl;return ; } t=S; r=S->next; do {if(strcmp(r->Sno,sn)==0 && strcmp(r->Cno,cn)==0) { t->next=r->next;free(r); cout<<"删除成功!"<<endl;break; } t=t->next; r=r->next; }while(r!=NULL); if(r==NULL) {cout<<"对不起!原表中没有您要删除的选课信息!"<<endl;} } 11、 修改选课信息 void Revalue(Student *stu,Course *C,SC *S) {char sn[20],cn[20];Student *p;Course *q;SC *r; cout<<"请输入您所要修改的学生或姓名和课程号或课程名!"<<endl;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<<"对不起!无该名学生的信息!"<<endl;return ;} 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<<"对不起!您输入的课程信息有误!"<<endl;return ; } r=S->next; do { if(strcmp(r->Sno,sn)==0 && strcmp(r->Cno,cn)==0) { cout<<"该名学生的当前选课信息为:"<<endl; cout<<"| 学号 | 课程号 | 成绩 |"<<endl; cout<<"| Sno | Cno | Grade "<<endl; printf("|%13s|%17s|%13d|\n",r->Sno,r->Cno,r->Grade); break; } r=r->next; }while(r!=NULL); if(r==NULL) {cout<<"对不起!没有您要修改的选课信息!"<<endl;return ; } cout<<"请您重置该名学生的选课信息!"<<endl; 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<<"对不起!您的输入有误!"<<endl; return ;} 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<<"对不起!您输入的课程信息有误!"<<endl;return ;} strcpy(r->Sno,sn);strcpy(r->Cno,cn); cout<<"成 绩:";cin>>r->Grade; cout<<"修改成功!"<<endl; } 12、 添加选课信息 void AddSC(Student *stu,Course *C,SC *S) {char sn[20],cn[20]; Student *p;Course *q;SC *r,*s;int Grade;r=S; cout<<"请输入信息:"<<endl;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<<"对不起!不存在该名学生,您不能添加其选课信息!"<<endl; return ;} 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<<"对不起!您输入的课程信息有误!"<<endl; return ;} 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<<"添加成功!"<<endl; } 13、 查询个人平均成绩 void QueryAva(Student *stu,SC *S) {float m=0;Student *p;SC *q;char sn[20];float n=0; int i=0; cout<<"请输入要查询的学生的信息!"<<endl;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<<"对不起!无该名学生的信息!"<<endl; } 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<<"该名学生没有参加考试!"<<endl; else cout<<"该名学生的平均成绩为:"<<n/i<<endl; } } 14、 查询某个系所有学生的成绩 void QueryDepart(Student *stu,SC *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<<"| 姓名 | 学号 | 课程号 | 成绩 |"<<endl; cout<<"| Sname | Sno | Cno | Grade |"<<endl; cout<<"| "<<p->Sname<<" | "<<q->Sno<<" | "<<q->Cno<<" | "; cout<<q->Grade<<" |"<<endl;i=1;}q=q->next; }while(q!=NULL); }p=p->next; }while(p!=NULL); if(i==0) {cout<<"对不起!没有您需要的信息!"<<endl; } } 15、 查询某课程的平均成绩 void QuerySCL(Course *C,SC *S) { char cn[20],cn1[20];float m=0;float i=0;Course *q;SC *r; cout<<"请输入您所要查询的课程号或课程名!"<<endl;cin>>cn; q=C->next; do { if(strcmp(q->Cno,cn)==0||strcmp(q->Cname,cn)==0) { strcpy(cn,q->Cno);strcpy(cn1,q->Cname);break;} q=q->next; }while(q!=NULL); if(q==NULL) { cout<<"对不起!您输入的课程信息有误!"<<endl; return ;} r=S->next; do { if(strcmp(r->Cno,cn)==0) { m=m+(float)r->Grade;i++;} r=r->next; }while(r!=NULL); if(i==0) { cout<<"对不起!没有该课程的信息!"<<endl;return ;} m=m/i; cout<<"课程 "<<cn1<<" 的平均成绩是:"<<m<<endl; } 16、 由系统对学生信息表赋值 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(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->Sno,"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; 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); } 三、 系统的各函数设计 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 DisplistB() 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、 查询某课程的平均成绩 void QuerySCL() 四. 系统的编码 源程序: #include<stdio.h> #include<iostream.h> #include<stdlib.h> #include<string.h> #include<malloc.h> //定义学生对象类型 typedef struct node { char Sno[10]; //学号 char Sname[10]; //姓名 char Ssex[3]; //性别 char Sage[3]; //年龄 char Sdept[4]; //所在系 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; }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); } //用户输入数据建立学生信息表(尾插法) void CreatelistA(Student *stu) { Student *s,*r; int m,i;r=stu; cout<<"现在输入学生信息"<<endl;cout<<"请输入学生个数:";cin>>m; cout<<"| 学号 | 姓名 | 性别 | 年龄 | 所在系 |"<<endl; for(i=0;i<m;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; } //由用户输入数据建立课程信息列表 void CreatelistB(Course *C) { Course *s,*r;r=C;int m,i; cout<<"现在输入课程信息"<<endl;cout<<"请输入课程数量:";cin>>m; cout<<"| 课程号 | 课程名 | 先行课 | 学分 |"<<endl; for(i=0;i<m;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; } //由用户输入数据建立选课信息列表 void CreatelistC(SC *S) { SC *q,*r; r=S; int m,i; cout<<"现在输入选课信息"<<endl; cout<<"请输入选课信息条数:";cin>>m; cout<<"| 学号 | 课程号 | 成绩 |"<<endl; for(i=0;i<m;i++) { q=(SC *)malloc(sizeof(SC)); cin>>q->Sno; cin>>q->Cno; cin>>q->Grade; r->next=q; r=q; }r->next=NULL; } //输出学生信息表 void DisplistA(Student *stu) { Student *p=stu->next; cout<<"学生信息表"<<endl; cout<<"___________________________________________________"<<endl; cout<<"| 学号
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服