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

带雨玫瑰 范文 报告范文
精选回答

面向对象程序设计学生选课系统课程设计报告本文简介:课程设计(论文)编号: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

清风明月 2022-07-19 20:47:43

相关推荐

前途的意思

前途原指前面的路程,比喻将来的光景;将行经的前方路途,引申为目标和价值。出自鲁迅《故事新编-奔月》:“圆的雪白的月亮照着前途,凉风吹脸,真是比大猎回来时还有趣。”出处:晋-左思《吴都赋》:“先驱前涂,俞骑骋路。...
展开详情

丼怎么读

jǐng或dǎn。读作jǐng时,同“井”。读作dǎn时,意为投物井中所发出的声音,也可用作姓。中文丼字来源甲骨文,甲骨文即有丼字,或为今“丹”字,井中的一点,为丹砂的象征符号。又因为从“井”得字,所以也指井,...
展开详情

闭门反思的意思

“闭门反思”的意思是关上门反省自己的过错。形容自身冷静下来好好单独地想想所犯之过错,作出深刻反省。成语出自:《汉书·韩延寿传》:“因入卧传舍,闭阁思过。畅姬扳肯殖厩帮询爆墨。”...
展开详情

芝麻油是上火还是降火

芝麻油有降火功效。一般黑芝麻食用,白芝麻榨油。中医学认为:本品性味甘、凉,具有润肠通便、解毒生肌之功效。据《本草纲目》上记载:有润燥、解毒、止痛、消肿之功。”《别录》说:利大肠,胞衣不落。生者摩疙肿,生秃发。”...
展开详情

进退裕如是什么意思

进退裕如,汉语成语,意思谓前进和后退均从容不费力。出自《耆旧续闻》。成语的出处:宋陈鹄《耆旧续闻》卷三:“如乘骏马,进退裕如,不须鞭勒,无不当人意。”成语的用法作谓语、宾语;指进退自如。示例:清薛福成《庸盦笔记...
展开详情

精选推荐更多>

救人一命胜造七级浮屠中的浮屠是指

“救人一命,胜造七级浮屠”中的“浮屠”是指佛教建筑形式,即所说的塔,又称浮图。读作jiù rén yī mìng,shèng zào qī jí fú tú。这种建筑最初用以供奉佛骨,后来用以供奉佛像,收藏经书。词语指救人一条性命,犹如建筑一座七级宝塔,功德无量。用以劝人行善,或向人恳求救命。
“救人一命,胜造七级浮屠”是一个汉语成语,意思是为死去的人造塔,毕竟不如“救人一命”的功德更大,更有意义。

己亥岁这首诗深刻地揭示了什么

《己亥岁二首》深刻地揭示了战争对人民造成的深重灾难和浩劫。
原文:
其一:
泽国江山入战图,生民何计乐樵苏。
凭君莫话封侯事,一将功成万骨枯。
其二:
传闻一战百神愁,两岸强兵过未休。
谁道沧江总无事,近来长共血争流。
译文:
其一:
富饶的水域江山都已绘入战图,百姓想要打柴割草度日而不得。
请你别再提什么封侯的事情了,一将功成要牺牲多少士卒生命!
其二:
传说一旦开战连众神灵都发愁,两岸军队连年混战一直不停休。
谁还说沧江总是太平没有祸事,近来江水混着鲜血争先向东流。
《己亥岁二首》是唐代诗人曹松的组诗作品。这组诗以干支为题,以示纪实,明确表明了对现实的批判态度。全诗概况地写出了战争对人民造成的深重灾难和浩劫,以冷峻深邃的目光洞穿千百年来封建战争的实质,写得力透纸背,入木三分。

山居秋暝是什么体裁的诗

《山居秋暝》是一首五言律诗,运用了反衬手法和对典故的艺术手法。《山居秋暝》是唐代诗人王维写的初秋时节所见雨后黄昏的景色,为山水名篇。该诗于诗情画意之中寄托着诗人高洁的情怀和对理想境界的追求。
原文:
空山新雨后,天气晚来秋。
明月松间照,清泉石上流。
竹喧归浣女,莲动下渔舟。
随意春芳歇,王孙自可留。
全诗将空山雨后的秋凉,松间明月的光照,石上清泉的声音以及浣女归来竹林中的喧笑声,渔船穿过荷花的动态,和谐完美地融合在一起,给人一种丰富新鲜的感受。它像一幅清新秀丽的山水画,又像一支恬静优美的抒情乐曲,体现了王维诗中有画的创作特点。

个个和各个的区别

个个与各个的区别:指代不同、出处不同、侧重点不同。
一、指代不同:
1、个个:一个一个,每一个。
2、各个:每个;所有的那些个;逐个。
二、出处不同:
1、个个:出自毛泽东《对晋绥日报编辑人员的谈话》:“陕北的部队经过整训诉苦以后,战士们的觉悟提高了……个个磨拳擦掌,士气很高,一出马就打了胜仗。”
2、各个:出自《儿女英雄传》第一回:“家人们听见老爷得了外任,各个喜出望外。”
三、侧重点不同:
1、个个:指团体或整体。
2、各个:指具体的每一个。
“个个”造句:
1、登上山顶时,我们个个累得气喘吁吁的。
2、孩子们个个天真活泼,多么可爱!
“各个”造句:
1、围棋比赛时,小华利用诱敌深入,各个击破的战法,瓦解了对方的攻势。
2、校长负责学校各个方面的工作。
常见热点问答
热点搜索
1-20
21-40
41-60
61-80
81-100
101-120
121-140
141-160
161-180
181-200
作文大全
1-20
21-40
41-60
61-80
81-100
101-120
121-140
141-160
161-180
181-200