1、 5 月 30日 同组人课程设计任务书1 系统的功能描述(10分)2 系统的主要功能模块算法设计(30分)3 系统的各函数设计(20分)4 系统的编码(20分)5 系统的运行(10分)6 系统的主要功能模块算法性能分析(10分)课 程 设 计 报 告一、系统的功能描述通过此选课系统可以实现如下功能:输入数据:可以由用户输入学生信息、课程信息、选课信息建立各信息表;查询各信息表:可以查询学生信息表内的学生的个人信息,课程表里的课程信息和选课表里的选课信息;查询学生个人信息、学生单科目成绩、个人总成绩; 删除、修改、添加选课信息;查询学生个人平均成绩、系内所有学生成绩、某课程平均成绩;二、系统的主
2、要功能模块算法设计根据实际情况,对上述要求做以下简化:1,首先需要客户为系统输入各表信息。2,查询或删除时只能查询或删除表内存在的信息,若表中不存在则报错。3,各表信息由线性表实现,各表内信息按用户输入时的顺序存放。程序中包含4 个模块(1)主程序模块; (2)学生个人信息结构单元模块-定义各学生个人信息的结构体类型;(3)课程信息结构单元模块-定义各课程信息的结构体类型;(4)选课信息结构单元模块-定义各选课信息的结构体类型;(5)功能模块-实现查询、修改、删除、添加信息,查询学生各个课程成绩等功能.主要功能模块算法详细如下:1、定义学生对象结构体类型typedef struct node
3、char Sno10; char Sname10; char Ssex3; char Sage3; char Sdept4; struct node *next;Student;2、定义课程对象结构体类型typedef struct node2 char Cno10; char Cname10; char Cpno5; char Ccredit3; struct node2 *next;Course;3、定义选课对象结构体类型typedef struct node3char Cno10;int Grade; struct node3 *next;SC;4、初始化学生信息表、课程信息表、选课信息
4、表void InitlistA(Student *stu) stu-next=NULL;void InitlistB(Course *C) C-void InitlistC(SC *S) S-5、求选课表长度int Getlength(SC *S) int i=0;SC *p;p=S-next; while(p!=NULL) p=p-i+; return(i);6、用户输入数据建立学生信息表(尾插法)void CreatelistA(Student *stu) Student *s,*r;int m,i;r=stu; cout现在输入学生信息endl;coutm;| 学号 | 姓名 | 性别
5、| 年龄 | 所在系 | for(i=0;is-Sno;Sname;Ssex;Sage;Sdept; r-next=s;r=s; r-7、由用户输入数据建立课程信息列表void CreatelistB(Course *C) Course *s,*r;r=C;现在输入课程信息请输入课程数量:| 课程号 | 课程名 | 先行课 | 学分 | s=(Course *)malloc(sizeof(Course);Cno;Cname;Cpno;Ccredit;8、由用户输入数据建立选课信息列表void CreatelistC(SC *S) SC *q,*r;r=S;现在输入选课信息请输入选课信息条数:|
6、 学号 | 课程号 | 成绩 | q=(SC *)malloc(sizeof(SC);q-Grade;next=q;r=q;9、输出学生信息表void DisplistA(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、输出选课信息表void DisplistC(SC *S) if(Getlength(S)=0) cout coutGrade);
7、p=p-11、查询学生个人基本信息,以姓名或学号为参数void QueryStudent(Student *stu)char sn20;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)coutSno);break; if(p=NULL)无该名学生的信息!return ;课程号或课程名:cn; q=C-/将课程名计算转化成为课程号 if(strcmp(q-Cn
8、o,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) coutSno,r-Cno,r-Grade); r=r- while(r! if(r=NULL)该学生没有参加这门课程的考试!13、查询学生个人总成绩void QuerySUM(Student *stu,SC *S) Student *p;SC *q;float n=0;int i=0;请输入要查询的学生的信息!学 号 或 姓
9、名: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/检查是否存在这名学生 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、修改选课信息void Revalue(Student *stu,Course *C,SC *S)
10、char sn20,cn20;请输入您所要修改的学生或姓名和课程号或课程名!学 生 或 姓 名:p=stu-/检查是否存在这名学生,若存在则将姓名转换为对应的学号/检查是否存在这门课程,若存在则将课程名转换为对应的课程号 if(strcmp(q- q=q- if(q=NULL) r=S-该名学生的当前选课信息为: r=r-没有您要修改的选课信息!请您重置该名学生的选课信息! p=stu-/检查学生信息表中是否存在这名学生 break;您的输入有误! return ; coutSno,sn);strcpy(r-Cno,cn);成 绩:r-修改成功!16、添加选课信息void AddSC(Stud
11、ent *stu,Course *C,SC *S) Student *p;SC *r,*s;请输入信息:不存在该名学生,您不能添加其选课信息!q=C- if(strcmp(cn,q-Cname)=0 | strcmp(cn,q-Cno)=0) coutstrcpy(s-Grade=Grade; while(r-next! r=r- s-next;添加成功!17、查询个人平均成绩void QueryAva(Student *stu,SC *S)float m=0; int i=0;Sno,sn)=0|strcmp(p- n=n+q- i+;该名学生的平均成绩为:n/i do if(strcmp(q-Sno)=0) coutSname | SnoCnoGrade while(q! p=p- if(i=0)没有您需要的信息!19、查询某课程的平均成绩void QuerySCL(Course *C,SC *S) char cn20,cn120;float m=0;float i=0;请输入您所要查询的课程号或课程名!Cno,cn)=0|st
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1