版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、20092010学年度第二学期赣南师范学院数学与计算机科学学院课程设计报告册课程设计名称:学生选课管理系统专业:计算机科学与技术班级:学号:姓名:指导老师:课程设计任务一览表序号课程设计任务名称设计专题任务描述(可附页)1学生选课信息管理系统为选课信息管理人员和学生编写一个学生选课信息管理系统,实现 选课信息的查询、修改、删除、添加以及学生课程成绩的查询等功 能。2345指导用书:算法与数据结构课程设计_课程设计报告设计项目 编 号1名称学生选课信息管理系统主要 仪器 设备一台PC机附属 设备主要 使用 软件Visual C+ 6.(编程软件起止时间10年3月9日5月30日同组人课程设计任务书
2、1. 系统的功能描述(10分)2. 系统的主要功能模块算法设计(30分)3. 系统的各函数设计(20分)4. 系统的编码(20分)5. 系统的运行(10分)6. 系统的主要功能模块算法性能分析(10分)课程设计报告一、系统的功能描述通过此选课系统可以实现如下功能:错误!未找到引用源。输入数据:可以由用户输入学生信息、课程信息、选课信息建立各信息表;错误!未找到引用源。查询各信息表:可以查询学生信息表内的学生的个人信息,课程表里的课程信息和选课表里的选课信息;错误!未找到引用源。查询学生个人信息、学生单科目成绩、个人总成绩;错误!未找到引用源。删除、修改、添加选课信息;错误!未找到引用源。查询学
3、生个人平均成绩、系内所有学生成绩、某课程平均成绩;二、系统的主要功能模块算法设计根据实际情况,对上述要求做以下简化:1,首先需要客户为系统输入各表信息。2,查询或删除时只能查询或删除表内存在的信息,若表中不存在则报错。3,各表信息由线性表实现,各表内信息按用户输入时的顺序存放。程序中包含4个模块(1)主程序模块;(2)学生个人信息结构单元模块-定义各学生个人信息的结构体类型;(3)课程信息结构单元模块-定义各课程信息的结构体类型;(4)选课信息结构单元模块-定义各选课信息的结构体类型;(5) 功能模块 实现查询、修改、删除、添加信息,查询学生各个课程 成绩等功能主要功能模块算法详细如下:1、定
4、义学生对象结构体类型typedef struct node char Sno10; char Sname10; char Ssex3; char Sage3; char Sdept4; struct node*n ext;Stude nt;2、定义课程对象结构体类型typedef struct no de2 char Cn o10; char Cn ame10; char Cpno5;char Ccredit3;struct no de2 *n ext;Course;3、定义选课对象结构体类型typedef struct no de3 char Sno10;char Cno10;int Gra
5、de;struct no de3 *n ext;SC;4、初始化学生信息表、课程信息表、选课信息表void In itlistA(Stude nt *stu) stu- next=NULL;void In itlistB(Course *C) C- next=NULL;void In itlistC(SC *S) S- next=NULL;5、求选课表长度int Getle ngth(SC *S) int i=0;SC *p;p=S- next;while(p!=NULL)p=p-n ext;i+;return(i);6、 用户输入数据建立学生信息表(尾插法)void CreatelistA(
6、Stude nt *stu) Student *s,*r;int m,i;r=stu;cout现在输入学生信息 endl;coutm;cout| 学号| 姓名| 性别| 年龄| 所在系 e ndl; for(i=0;i s-S no;cin s-S name;ci n s-Ssex;ci n s-Sage;c in s-Sdept; r-n ext=s;r=s;r-n ext=NULL;7、由用户输入数据建立课程信息列表void CreatelistB(Course *C) Course *s,*r;r=C;i nt m,i;cout现在输入课程信息endl;coutm;cout|课程号| 课
7、程名 | 先行课| 学分|endl; for(i=0;i s-C no;cin s-C name;ci n s-Cp no;cin s-Ccredit;r-n ext=s;r=s;r-n ext=NULL;8由用户输入数据建立选课信息列表void CreatelistC(SC *S) SC *q,*r;r=S;int m,i;cout现在输入选课信息endl;coutm;cout| 学号 |课程号 |成绩endl;for(i=0;i q_S no;cin q_C no;cin q_Grade;r-n ext=q;r=q;r-n ext=NULL;9、输出学生信息表void DisplistA(
8、Stude nt *stu) Stude nt *p=stu-n ext;cout学生信息表endl;cout| 学号| 姓名| 性别| 年龄| 所在系|e ndl;cout| Sno | Sn ame | Ssex | Sage | Sdept |S no,p-S name,p-Ssex,p-Sage,p-Sdept);p=p-n ext;10、输出选课信息表void DisplistC(SC *S) if(Getle ngth(S)=0)cout对不起!选课信息表已为空! next;cout选课信息表endl;cout| 学号 |课程号 |成绩 |e ndl;cout| Sno | Cno
9、 | Grade |S no,p-C no,p-Grade);p=p-n ext;11、查询学生个人基本信息,以姓名或学号为参数void QueryStude nt(Stude nt *stu) int i=0;char sn 20;Stude nt *p;p=stu-n ext;cout请输入所要查询的学生的学号或姓名endl;coutsn;do if(strcmp(p-S names n)=0|strcmp(p_S no,sn)=0)cout| 学号| 姓名| 性别| 年龄| 所在系 e ndl; cout| Sno | Sn ame | Ssex | Sage | Sdept |S no
10、,p-S name,p-Ssex,p-Sage,p-Sdept); break;p=p- next;/注意指针要往后走while(p!=NULL);if(p=NULL)cout 对不起!无此学生的信息!n ext;cout请输入所要查询的学生的学号和课程号endl;coutsn;p=stu- next;/将姓名计算转化成为学号do if(strcmp(p-S names n)=O|strcmp(p_S no,sn)=0)strcpy(s n, p-S no );break;p=p-n ext;while(p!=NULL);if(p=NULL)cout对不起!无该名学生的信息!endl;retu
11、rn ;coutcn;q=C- next;/将课程名计算转化成为课程号do if(strcmp(q-C no,cn)=0 | strcmp(q-C name,c n)=0)strcpy(c n,q _C no );break;q=q_n ext;while(q!=NULL);if(q=NULL)cout对不起!您输入的课程信息有误!n ext;do if(strcmp(r-S no,sn)=0 & strcmp(r-C no,cn)=0) cout|学号 |课程号 |成绩|e ndl;cout| Sno | Cno | Grade S no,r-C no,r-Grade);break;r=r-
12、n ext;while(r!=NULL);if(r=NULL)cout对不起!该学生没有参加这门课程的考试!endl;13、查询学生个人总成绩void QuerySUM(Stude nt *stu,SC *S) Student *p;SC *q;char sn20;float n=0;int i=0;cout请输入要查询的学生的信息!endl;coutsn;p=stu-n ext;do if(strcmp(p-S no,sn)=0 | strcmp(p-S names n)=0)strcpy(s n, p-S no );break;p=p-n ext;while(p!=NULL);if(p=N
13、ULL)cout对不起!无该名学生的信息!n ext;do if(strcmp(q-S no,sn)=0)n=n+q_Grade;i+;q=q_n ext;while(q!=NULL);if(n=0)cout该名学生没有参加考试!e ndl;elsecout该名学生的总成绩为:nendl;14、删除选课信息void DeleteSC(Stude nt *stu,Course *C,SC *S) char sn 20;char cn 20;Stude nt *p;Course *q;SC *r;SC *t;endl;cout 学号或姓cout next;/检查是否存在这名学生doif(strcm
14、p(p-S no,sn)=0 | strcmp(p-S names n)=0)strcpy(s n, p-S no );break;p=p- next;/注意指针要往后走while(p!=NULL);if(p=NULL)cout对不起!无该名学生的信息! endl;return ; coutc n;q=C- next;/检查课程号是否合法do if(strcmp(q-C name,c n)=0 | strcmp(q-C no,cn)=0)strcpy(cn,q_Cno); break;q=q_n ext;while(q!=NULL);if(p=NULL)cout对不起!您输入的课程信息有误!n
15、 ext;doif(strcmp(r-S no,sn)=0 & strcmp(r-C no,cn)=0) t-n ext=r- n ext;free(r);cout删除成功! n ext; r=r-n ext;while(r!=NULL);if(r=NULL)cout对不起!原表中没有您要删除的选课信息!endl;15、修改选课信息void Revalue(Stude nt *stu,Course *C,SC *S)char sn20,cn20;Student *p;Course *q;SC *r;cout请输入您所要修改的学生或姓名和课程号或课程名!endl;cout next;/检查是否存
16、在这名学生,若存在则将姓名转换为对应的学号doif(strcmp(p-S no,sn)=0 | strcmp(p-S names n)=0)strcpy(s n, p-S no );break;p=p-n ext;while(p!=NULL);if(p=NULL)cout对不起!无该名学生的信息!endl;return ;coutc n;q=C-n ext;/检查是否存在这门课程,若存在则将课程名转换为对应的课程号doif(strcmp(q-C name,c n)=0 | strcmp(q-C no,cn)=0)strcpy(c n,q _C no );break;q=q_n ext;whil
17、e(q!=NULL);if(q=NULL)cout对不起!您输入的课程信息有误!n ext;do if(strcmp(r-S no,sn)=0 & strcmp(r-C no,cn)=0)cout该名学生的当前选课信息为:endl;cout| 学号 |课程号 |成绩 |e ndl;cout| Sno | Cno | Grade S no,r-C no,r-Grade);break; r=r-n ext;while(r!=NULL);if(r=NULL)cout对不起!没有您要修改的选课信息!endl;return ;cout请您重置该名学生的选课信息!endl; coutsn;p=stu- n
18、ext;/检查学生信息表中是否存在这名学生do if(strcmp(p-S no,sn)=0 | strcmp(p-S names n)=0)strcpy(s n, p-S no); break;p=p-n ext;while(p!=NULL);if(p=NULL)cout对不起!您的输入有误!endl;return ;coutc n;q=C-n ext;/检查是否存在这门课程,若存在则将课程名转换为对应的课程号doif(strcmp(q-C name,c n)=0 | strcmp(q-C no,cn)=0)strcpy(c n,q _C no); break;q=q_n ext;while
19、(q!=NULL);if(q=NULL) cout对不起!您输入的课程信息有误!S no,sn );strcpy(r-C no,cn);coutGrade; cout修改成功!endl;16、添加选课信息void AddSC(Stude nt *stu,Course *C,SC *S)char sn 20,c n 20;Stude nt *p;Course *q;SC *r,*s;i nt Grade;r=S;cout请输入信息:endl;coutsn;p=stu- next;/检查是否存在这名学生,若存在则将姓名转换为对应的学号do if(strcmp(p-S no,sn)=0 | strc
20、mp(p-S names n)=0)strcpy(s n, p-S no); break;p=p-n ext;while(p!=NULL);if(p=NULL) cout对不起!不存在该名学生,您不能添加其选课信息!endl;return ;coutnext;doif(strcmp(c n,q _C name)=0 | strcmp(c n,q _C no)=0)strcpy(c n,q _C no); break;q=q_n ext;while(q!=NULL);if(q=NULL) cout对不起!您输入的课程信息有误!e ndl;return ;s=(SC *)malloc(sizeof
21、(SC);coutGrade;strcpy(s-S no,sn );strcpy(s-C no,cn );s-Grade=Grade;while(r- next!=NULL)r=r- n ext;s-n ext=r- n ext;r-n ext=s;cout添加成功!endl;17、查询个人平均成绩void QueryAva(Stude nt *stu,SC *S)float m=0; Student *p;SC *q;char sn20;float n=0; int i=0;名:”;cinsn;cout请输入要查询的学生的信息!endl;coutn ext;doif(strcmp(p-S n
22、o,sn)=O|strcmp(p_S names n)=0)strcpy(s n, p-S no); break; p=p-n ext;while(p!=NULL); if(p=NULL)cout对不起!无该名学生的信息!n ext;doif(strcmp(q-S no,sn)=0) n=n+q-Grade; i+; q=q_n ext;while(q!=NULL);if(n=0)cout该名学生没有参加考试!e ndl;elsen/ie ndl;cout该名学生的平均成绩为:18、查询某个系所有学生的成绩void QueryDepart(Stude nt *stu,SC *S) char S
23、dept4;Stude nt *p;SC *q;i nt i=0; coutSdept; p=stu-n ext;doif(strcmp(p-Sdept,Sdept)=O) q=S-n ext;doif(strcmp(q-S no ,p_S no)=0) coutI姓名学号课程号成绩|e ndl;cout|Sn ameSnoCnoGradeIe ndl;coutIS name IS no IC no II.coutGradeIn ext;while(q!=NULL);p=p-n ext;while(p!=NULL);if(i=O)cout对不起!没有您需要的信息!endl;19、查询某课程的平
24、均成绩void QuerySCL(Course *C,SC *S) char cn20,cn120;float m=0;float i=0;Course *q;SC *r;cout请输入您所要查询的课程号或课程名!cn;q=C-n ext;doif(strcmp(q-C no,cn)=O|strcmp(q_C name,c n)=0)strcpy(c n,q _C no );strcpy(c n1,q_C name);break;q=q_n ext;while(q!=NULL);if(q=NULL) cout对不起!您输入的课程信息有误!n ext;doif(strcmp(r-C no,cn)
25、=0) m=m+(float)r-Grade;i+;r=r-n ext;while(r!=NULL);if(i=0) cout对不起!没有该课程的信息!endl;return ;m=m/i;cout课程cn1 的平均成绩是:mS no,95001);strcpy(q-S name,);strcpy(q-Sage,20);strcpy(q-Sdept,CS);q_n ext=p-n ext;p-n ext=q;p=p-n ext;21、由系统对课程信息表赋初值void GivevalueB(Course *C) Course *p,*q;p=C;q=(Course *)malloc(sizeof
26、(Course);strcpy(q-C no,1);strcpy(q-C name,李勇);strcpy(q-Ssex,男数据库);strcpy(q-Cp no,5);strcpy(q-Ccredit,4); q_n ext=p-n ext;p-n ext=q;p=p-n ext;22、由系统对选课信息表赋初值void GivevalueC(SC *S) SC *p,*q;p=S;q=(SC *)malloc(sizeof(SC); strcpy(q-S no,95001);strcpy(q-C no,1);q-Grade=92; q_n ext=p-n ext;p-n ext=q;p=p-n
27、 ext;23、选择函数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
28、( 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 In itlistA()2、初始化课程信息表void In itlistB()3、初始化选课信息表void Ini tlistC()4、求选课表的深度int Getle ngth()5、用户输入数据建立学生信息表void CreatelistA()6、由用户输入数据建立课程信息列表void Createli
29、stB()7、由用户输入数据建立选课信息列表void CreatelistC()&输出学生信息表void DisplistA()9、输出课程信息表void DisplistB()10、输出选课信息表void DisplistCO11、查询学生个人基本信息 void QueryStude nt()12、查询学生单科目的成绩 void QuerySC()13、查询学生个人总成绩void QuerySUM()14、删除选课信息void DeleteSC()15、修改选课信息 void Revalue。16、添加选课信息void AddSC()17、查询个人平均成绩void QueryAva()18、
30、查询某个系所有学生的成绩void QueryDepart()19、查询某课程的平均成绩 void QuerySCL()四. 系统的编码源程序:#in clude#in clude#in clude#in clude #in clude/定义学生对象类型 typedef struct node char Sn o10;/ 学号char Sn ame10;姓名char Ssex3;/ 性别char Sage3;/ 年龄char Sdept4;/ 所在系struct node *n ext;Stude nt;/定义课程对象类型typedef struct no de2char Cn o10;课程号c
31、har Cn ame10;课程名char Cp no5;/ 先行课char Ccredit3; / 学分 struct no de2 *n ext;Course;/定义选课对象类型typedef struct no de3 char Sn o10;char Cn o10;int Grade;struct no de3 *n ext;SC;/初始化学生信息表void In itlistA(Stude nt *stu)stu- next=NULL;/初始化课程信息表void In itlistB(Course *C)C- next=NULL;/初始化选课信息表void In itlistC(SC
32、*S)S- next=NULL;求选课表的深度int Getlength(SC *S) int i=0;SC *p;p=S- next;while(p!=NULL)p=p-n ext;i+;return(i);/用户输入数据建立学生信息表(尾插法)void CreatelistA(Stude nt *stu)Student *s,*r; int m,i;r=stu;cout现在输入学生信息 endl;coutm; cout|学号|姓名|性别|年龄|所在系|endl; for(i=0;i s-S no;cin s-S name;ci n s-Ssex;ci n s-Sage;c in s-Sde
33、pt; r-n ext=s;r=s;r-n ext=NULL;/由用户输入数据建立课程信息列表void CreatelistB(Course *C) Course *s,*r;r=C;i nt m,i;cout现在输入课程信息endl;coutm; cout|课程号| 课程名 |先行课 | 学分 |endl; for(i=0;is-Cno; cins-Cname;cins-Cpno;cins-Ccredit; r-n ext=s; r=s;r-n ext=NULL;/由用户输入数据建立选课信息列表void CreatelistC(SC *S) SC *q,*r; r=S; int m,i;co
34、ut现在输入选课信息endl;coutm;cout| 学号 | 课程号 | 成绩 endl;for(i=0;iq_Sno; cinq_Cno; cinq_Grade;r-n ext=q;r=q;r-n ext=NULL;/输出学生信息表void DisplistA(Stude nt *stu)Stude nt *p=stu-n ext;cout学生信息表endl;coute ndl;cout| 学号 | 姓名|性别|年龄|所在系 e ndl;cout| Sno | Sn ame | Ssex | Sage | Sdept|e ndl;coutS no,p-S name,p-Ssex,p-Sag
35、e,p-Sdept);coutn ext;/输出课程信息表void DisplistB(Course *C) Course *p=C- next;cout课程信息表endl;coute ndl;cout|课程号| 课程名 |先行课 | 学分|endl;cout| Cno | Cn ame | Cpno | Ccredit |e ndl; coutC no,p-C name,p-Cp no,p-Ccredit);coutn ext;/输出选课信息表void DisplistC(SC *S)if(Getle ngth(S)=O)cout对不起!选课信息表已为空! next;cout选课信息表end
36、l;coute ndl;cout| 学号 | 课程号 | 成绩 |e ndl;cout| Sno |Cno| Grade|e ndl;coutS no,p-C no,p-Grade);coutn ext;/查询学生个人基本信息,以姓名或学号为参数void QueryStude nt(Stude nt *stu) int i=0;char sn 20;Stude nt *p;p=stu-n ext;cout请输入所要查询的学生的学号或姓名e ndl;couts n;doif(strcmp(p-S names n)=0|strcmp(p_S no,sn)=0)coute ndl;cout|学号|
37、姓名|性别|年龄|所在系|e ndl;cout|Sno| Sn ame| Ssex| Sage |Sdept|e ndl;coutS no,p-S name,p-Ssex,p-Sage,p-Sdept)coutnext;/注意指针要往后走while(p!=NULL);if(p=NULL) cout对不起!无此学生的信息!n ext;cout请输入所要查询的学生的学号和课程号endl; coutsn;p=stu- next;/将姓名计算转化成为学号doif(strcmp(p-S names n)=0|strcmp(p_S no,sn)=0)strcpy(sn,p_Sno); break; p=p
38、-n ext;while(p!=NULL);if(p=NULL)cout对不起!无该名学生的信息!endl; return ;coutnext;/将课程名计算转化成为课程号do if(strcmp(q-C no,cn)=0 | strcmp(q-C name,c n)=0)strcpy(c n,q _C no); break;q=q_n ext;while(q!=NULL);if(q=NULL)cout对不起!您输入的课程信息有误!n ext;do if(strcmp(r-S no,sn)=0 & strcmp(r-C no,cn)=0) coute ndl;cout| 学号 | 课程号 |
39、成绩 |e ndl; cout| Sno |Cno | Grade e ndl;coutS no,r-C no,r-Grade);coutn ext;while(r!=NULL);if(r=NULL)cout对不起!该学生没有参加这门课程的考试!endl;/查询学生个人总成绩void QuerySUM(Stude nt *stu,SC *S)Student *p; SC *q;char sn20; float n=0; int i=0;cout请输入要查询的学生的信息!endl;coutsn;p=stu-n ext;doif(strcmp(p-S no,sn)=0 | strcmp(p-S n
40、ames n)=0)strcpy(sn,p_Sno); break;p=p-n ext;while(p!=NULL);if(p=NULL)cout对不起!无该名学生的信息!n ext;do if(strcmp(q-S no,sn)=0)n=n+q-Grade;i+;q=qn ext;while(q!=NULL);if(n=0) cout该名学生没有参加考试!endl;else cout该名学生的总成绩为: n e ndl;删除选课信息void DeleteSC(Stude nt *stu,Course *C,SC *S)char sn 20;char cn 20;Stude nt *p;Cou
41、rse *q; SC *r; SC *t;cout请输入要删除的信息中学生学号或姓名和课程号或课程名!e ndl;coutsn;p=stu- next;/检查是否存在这名学生doif(strcmp(p-S no,sn)=0 | strcmp(p-S names n)=0)strcpy(sn,p_Sno); break;p=p-next;/注意指针要往后走while(p!=NULL);if(p=NULL) cout对不起!无该名学生的信息!endl; return ;coutc n;q=C-next;/检查课程号是否合法doif(strcmp(q-C name,c n)=0 | strcmp(q-C no,cn)=0)strcpy(c n,q _C no); break;q=q_n ext;while(q!=NULL);if(p=NULL) cout对不起!您输入的课程信息有误!n ext;doif(strcmp(r-S no,sn)=0 & strcmp(r-C no,cn)=0)t-next=r-next;free(r); cout删除成功! n ext;r=r-n ext;while(r!=NULL);if(r=NULL)cout对不起!原表中没有您要删除的选课信息!endl;/修改选课信息void Revalue(Stude nt *st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自主学习心得体会演讲稿(3篇)
- 现代分子生物学研究内容
- 电工(初级)考试题库及答案
- 法医学-机械性损伤1
- 公司项目部安全培训试题1套
- 公司级员工安全培训试题附参考答案【完整版】
- 新版车间安全培训试题【培优】
- 岗位安全培训试题打印
- 安全标准化安全培训试题答案标准卷
- 10KV变电所电气调试方案
- 新目标艺术培训中心商业策划书(3篇)
- 中国精对苯二甲酸(PTA)行业市场动态分析及前景战略研判报告
- 辽宁省沈阳市2024-2025学年七年级上学期期中模拟英语试题
- 2023年中国铁路国际有限公司招聘考试试题及答案
- 24年注安-法规-考前
- 天津市历年中考语文现代文之说明文阅读8篇(含答案)(2003-2023)
- 陪诊免责协议书范本电子版
- 超星尔雅学习通《形势与政策2024年秋》章节测试答案
- 国资国企企业学习二十届三中全会精神专题培训
- 履职工作计划
- 火星营地登陆计划-趣味地产周年庆典市集活动策划方案
评论
0/150
提交评论