面向对象程序设计学生选课系统课程设计报告

面向对象程序设计学生选课系统课程设计报告本文简介:课程设计(论文)编号:B04931053学号:201240450110课程设计教学院计算机学院课程名称高级语言程序设计Ⅰ题目学生选课系统专业软件工程班级12级软件工程(1)班姓名明平耀同组人员王天灏、徐威鹏、张泽坤、黄文瑞指导教师谢晋2013年12月15日目录一.概述2二.总体方案设计3三.详细设计
面向对象程序设计学生选课系统课程设计报告本文内容:
课程设计(论文)
编
号:
B04931053
学
号:
201240450110
课
程
设
计
教
学
院
计算机学院
课程名称
高级语言程序设计Ⅰ
题
目
学生选课系统
专
业
软件工程
班
级
12级软件工程(1)班
姓
名
明平耀
同组人员
王天灏、徐威鹏、张泽坤、黄文瑞
指导教师
谢晋
2013
年
12
月
15
日
目
录
一.概述2
二.总体方案设计3
三.详细设计4
四.程序的调试与运行结果说明5
五.课程设计总结6
参考文献7
一
概述
1.
课程设计的目的
1.理解和掌握该课程中的有关基本概念,程序设计思想和方法。
2.培养综合运用所学知识独立完成课题的能力。
3.培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。
4.掌握从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
2.
课程设计的要求
需要的基本知识与技能,尚未掌握的知识点,需要查阅相关资料。教师对本题目所提出的要求等。
(1)
需求分析
1.1任务要求
制做学生选课系统,共包括课程信息和学生信息两部分。课程信息包括:课程编码、课程名称、适用专业、课程类型(必修、限选、必选、实践、学习)、学分、学时、主讲教师等。学生信息管理,学生选课管理(学生选课学分总数有一定范围),学生可以对课程进行查询、浏览,选完课后可以退选、重选,并可以按学号、姓名进行查询和统计。
要求:1.源文件采用多文件的工程结构。
2.数据储存采用文件形式。
3.标准的C输入输出。
4.功能完善,适当的注释。
5.关于文件的内容要自学。
1.2系统功能需求分析
1.为存储课程信息,需要定义一个结构体类型,成员包括课程编码、课程名称、适用专业、课程类型、学分、学时、主讲教师,所选人数等等,并建立链表,定义该结构体类型的指针,用于指向各节点;
2.为存储学生信息,需要定义一个结构体类型,成员包括学生编码、学生姓名、所选课程编码、所选课程学分和等等,并建立链表,定义该结构体类型的指针,用于指向各节点;
3.对于课程信息和学生信息,可以选择从键盘输入也可选择从文件中打开原来存盘的信息,并对他们分别建立添加、删除、浏览、查询等功能的子函数,完成相应的功能,对程序实现模块化。这其中要用到对链表的删除、插入、增加等知识。删除包括课程删除和学生信息删除,删除时用一结构体指针指向链表的第一个结点,检查该节点的值是否等于输入的要删除的课程编号或学生学号,若相等就删除,不相等则后移指针,直至表尾。插入时也要先找到相应结点,再添加。查询功能要设置按照学生姓名、学生编号等多种方式。
4.学生选课是要先输入自己的学号,如果在已经输入的学生信息中找不到此学号,则提示需要先输入自己的信息。如找到了自己的学号,则可以进行选课。在选课之前要先对所有的课程信息进行浏览。选课有一定的学分限制,超过相应的学分(这里设置的是10个学分),系统就会显示可以选满的信息。此系统还可以实现删除所选课程的功能,设计思路与选课功能相似。
5.为实现存储功能,需用到文件的相关函数,打开文件,将添加、修改或删除的信息存入磁盘中。
6.实现易于使用者理解和使用的友好界面。
二
总体方案设计
1.具体的设计思路:
程序的要求是设计学生选修课管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。首先,考虑到程序的数据输入,可以设置一个管理员登陆选项,通过该选项进入管理员界面,进行选修课的录入和修改操作,最后将录入的课程保存到相应的文件中。然后定义各种函数的功能包括查看,查询,删除等。另一个为学生登陆界面,该界面学生可以进行课程选择和浏览查询等操作。在进行该操作之前需要对管理员保存的文件进行读取,然后对其中的内容进行查询等,在学生选好课程以后,可以将其选好的课程保存于相应的文件中,以便下次进行修改。通过函数的层层调用来实现程序的逻辑结构。中间通过文件的打开和关闭实现对文件内部所包含的数据的操作。
2
概要设计
2.1系统总体设计框架
对程序进行模块化可以使整个程序清晰明了。对课程信息和学生信息建立从文件中输入、从键盘中输入、添加、删除、查询和浏览的功能,其各个子函数中运用链表储存数据。选课管理建立学生选课、推选、查询、浏览的功能,其各个子函数中运用链表储存数据。从主函数开始执行,依次调用各个子函数,并运用文件的相关知识将信息进行存盘。
2.2系统功能模块图
学生选课系统
课程信息
从文件录入
从键盘录入
增加
删除
学生信息
从文件录入
从键盘录入
增加
删除
选
课
退
课
信息存储
3
详细设计
3.1功能模块设计思路
主要功能模块的算法设计思路如下:
1、
课程信息录入函数(void
load())
①从键盘录入(void
zhang(
))
I
定义指向结构体变量的指针;
II
从头指针指向的结构体开始依次录入结构体中所包含的各个成员;
III直到输入的结构体成员的编号为0,录入结束
②从文件录入(void
zhang1(
))
I
分别定义指向结构体变量的指针和指向文件的指针;
II
输入文件的路径,打开文件,若没有找到则有提示;
III
将文件中的信息依次读出,最后结构体的指针为NULL
2、
课程信息管理(void
managementc())
①增加课程信息(void
insert(struct
courseincourse))
I
定义指向结构体变量的指针;
II
输入要增加的课程编号,从头指针指向的结构体依次向后,直到链表的最后;
III
输入课程结构体各个成员的信息,使最后一个结构体指针值为NULL
②删除课程信息(void
delc(int
num1))
I
定义指向结构体变量的指针;
II
输入要增加的课程编号,从头指针指向的结构体依次向后,直到找到课程编号为输入值的那个结构体;
III
将其删除,其前一个的结构体指针指向其后一个结构体
3、
学生信息录入函数(void
input())
①从键盘录入(void
putin(
))
I
定义指向结构体变量的指针;
II
从头指针指向的结构体开始依次录入结构体中所包含的各个成员;
III
直到输入的结构体成员的编号为0,录入结束
②从文件录入(void
putin2(
))
I
分别定义指向结构体变量的指针和指向文件的指针;
II
输入文件的路径,打开文件,若没有找到则有提示;
III
将文件中的信息依次读出,最后结构体的指针为NULL
4、
学生信息管理(void
managements())
①增加学生信息(void
inserts(struct
student
incouse))
I
定义指向结构体变量的指针;
II
输入要增加的学生编号,从头指针指向的结构体依次向后,直到链表的最后;
III
输入学生结构体各个成员的信息,使最后一个结构体指针值为NULL
②删除学生信息(void
dels(int
num2))
I
定义指向结构体变量的指针;
II
输入要增加的学生编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体;
III
将其删除,其前一个的结构体指针指向其后一个结构体
5、
学生选课管理(void
elective())
①学生选课(void
elect())
I
分别定义指向课程和学生结构体变量的指针;
II
输入要选课的学生的编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体,如不存在则显示要录入学生信息;
III
输入要选课程的编号,从头指针指向的结构体依次向后,直到找到课程编号为输入值的那个结构体;
IV
在学生结构体对应的所选课程编号中更改信息,所选学分中加上相应分值,课程结构体所选人数中相应加一
②学生退课(void
back())
I
分别定义指向课程和学生结构体变量的指针;
II
输入要退课的学生的编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体,如不存在则显示要录入学生信息;
III
输入要退课程的编号,从头指针指向的结构体依次向后,直到找到课程编号为输入值的那个结构体;
IV
在学生结构体对应的所选课程编号中更改信息,所选学分中减去相应分值,课程结构体所选人数中相应减一
6、
信息浏览和保存(void
into())
①课程信息浏览(void
listc())
I
定义指向结构体变量的指针;
II从头指针指向的结构体依次向后,将课程结构体各成员的信息一次输出,直到最后一个结构体指针的值为NULL
②学生信息浏览(void
lists())
I
定义指向结构体变量的指针;
II从头指针指向的结构体依次向后,将学生结构体各成员的信息一次输出,直到最后一个结构体指针的值为NULL
③课程信息保存(void
intoc())
I
定义指向课程结构体变量的指针和指向文件的指针;
II
输入保存路径,如果没有保存则有显示;
III
将课程信息写入文件中;
IV
将课程信息进行保存,关闭文件
④学生信息保存(void
intos())
I
定义指向学生结构体变量的指针和指向文件的指针;
II
输入保存路径,如果没有保存则有显示;
III
将学生信息写入文件中;
IV
将学生信息进行保存,关闭文件
7、
学生信息查询(void
store())
①按学生姓名查询(void
search2())
I定义指向结构体变量的指针;
II
输入要查询的学生的姓名,从头指针指向的结构体依次向后,直到找到学生姓名为输入值的那个结构体;
III
将该学生结构体成员的各信息依次输出
②按学生编号查询(void
search1())
I定义指向结构体变量的指针;
II
输入要查询的学生的编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体;
三
详细设计
【功能模块划分及其流程图】
本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这9个部分来完成。这9个部分依次是:
1.
登录界面函数;void
login()
2.
学生登录界面据函数:void
stu_login()
3.
管理员登录界面函数:void
man_login()
4.
退出界面函数:void
bye_sys()
5.
课程选择函数:void
c_select()
6.
课程浏览函数:void
c_view()
7.
课程查询函数:void
c_search()
8.
课程增加函数:void
c_add()
9.
课程删除函数:void
c_delete()
10.
菜单函数:void
index()
11.
主函数部分;
main()
总体设计:
系统功能模块图
部分函数流程图:
1、
课程选择函数:
2、
课程查询函数
3、
课程增加函数
4、课程删除函数
四
程序的调试与运行结果说明
1、程序开始界面如下:
选择某个选项,如进行管理员登录,进行课程的增加
进入管理员界面:
2、再选择所要进行的操作,如进行课程增加,结果如下:
下面可以进行继续增加课程或者退出:
3、选择课程浏览,可以分页查看相应的课程信息:
第一页:
第二页:
4、课程查询
查找结果:
4、
管理员课程删除操作:
删除后可以进行浏览,观察删除后的结果:
可见删除后只有一条记录。删除操作完成正确。
下面进行学生操作的使用方法:
1、学生登陆界面:
2、选择学生选课选项:
3、学生登陆也可进行课程浏览和查询函数,其结果与管理员登陆相同,不再演示。
五
课程设计总结
选课系统程序比起通讯录程序来讲好写一些,由于本程序用到了数组,对于数组的操作掌握的比较熟练,所以在编写程序的时候困难没有那么多。
本程序在编写的过程中用到了许多通讯录中的模块化设计和函数互相调用的思想,使得编写比较方便和好用。
通过该系统的课程设计分析,我掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法,掌握和提高了运用C语言进行程序设计的能力。
程序设计的过程,实际上是确定解决问题的详细步骤,而这个步骤通常叫做流程,在程序设计过程中理清楚整个问题的流程很重要,然后采取逐步细化的方法实现整个程序。
对于一个较大的应用程序,一般不可能一次就设计出一个很完善的系统。通常要先设计满足基本要求的系统,然后再测试或者在使用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系统。所以在进行调试的时候需要对许多变量理解和掌握其变化规律等,这对于我更好的掌握visual
C中调试的工具有很大的帮助。
总之经过这次课程设计,我对c语言的使用和理解都有了很大的加深,对于编程的思想也有了很多新的理解和感受。
参考文献
1、李丽娟主编
,C语言程序设计教程(第二版),人民邮电出版社
2、严蔚敏主编,数据结构(C语言),清华大学出版社
3、崔单主编,C语言程序设计案例精粹,电子工业出版社
4、谭浩强主编,程序设计(第三版),清华大学出版社
19
