




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编程基础
名称:电子词库软件
C语言编程培训任务书
题目:学生选修课系统
一、设计目的
I.进一步掌握和使用c语言进行编程的能力;
2.进一步理解和应用结构化编程的思想和方法;
3、掌握开发小型实用系统的基本方法;
4、学习调试较长程序的基本方法;
5、学会用流程图或NS图来表示算法;
6.掌握编写培训开发文档的能力(编写培训报告)
二、设计任务及能力
假设有n门课程,每门课程都有课程编号、课程名称、课程性质、总学时、教学时
数、实验或计算机学时、学分、课程学期等信息、,学生可以自由选择课程:必填(例如
总学分不少于60)。尝试设计一个选修课系统,提供以下功能:
1、系统工作在菜单模式。
2.课程信息输入功能一一输入
3.课程信息浏览功能-输出
4.查询功能:-算法(二选一)
1)根据学分查询课程信息。
2)根据课程性质查询课程信息。
5.学生选修课
6.按课程编号顺序插入课程信息。
7.按课程名称删除课程信息。
8.以课程名称的字典顺序输出所有课程信息。
三、设计要求
1、用C语言实现系统;
2、使用结构和数组设计数据结构;
3、系统具有添加、查询、插入、排序等基本功能;
4、要求系统各功能模块以函数的形式实现;
5.资料:每名学员一份培训指导书,并放入统一资料箱;
6.CD-ROM:每个学生的文件和程序资料都建在一个以他/她的学号命名的文件夹中,
每个班级的负责人需要收集每个学生的文件,将它们放在班级命名的文件夹中,刻录成
光盘,放入专用资料袋中。
四。提交结果
1.设计任务书一本(学校统一格式)
2.设计规范,包括:
1)中文摘要为100字,3-5个关键词。
2)培训主题、内容和要求。
3)整体设计(包括几个功能模块)。
4)详细设计(各功能模块的具体实现算法-流程图)
5)数据结构设计说明、各模块(功能)功能介绍、参数说明等。
6)调试分析(包括每个模块的测试用例和测试结果。)
7)总结(培训完成了哪些功能,有哪些需要改进的地方,培训有哪些收获,调试
程序的经验等)
8)参考文献、信件等。
五、主要参考资料
1.王连祥。《C/C++编程》大学.2013.7
2.谭浩强C语言程序设计学习指南(第2版)清华大学。2012年12月
3.李、龚以健《C语言编程实践指导教程》华中科技大学2009年6月出版
4.晓东、洪振,《C语言编程与应用》,人民邮电.2009.4
5.郭翠英《C语言课程设计案例汇编》中国水利水电2004.03.01
6.郭友强,C语言程序设计,清华大学,2009年2月1日
7.程丹,颖,那军,C语言程序设计案例实践,清华大学,2009年2月1日
8.《C语言程序设计教程》,丽娟,人民邮电,2013年1月1日
9.吴亚莉、王永玲、杰亚莉的C语言程序设计,清华大学,2009年2月1日
六、每个阶段的时间表(共1周)
日期允许地点表现老师签名
教师解释设计要求并准备参考资
周一课堂
料。
周二系统分析与方案设计课堂
周三方案设计与编程课堂
周四调试程序并编写训练指令。课堂
星期五完成培训指导并回复。课堂
摘要
20世纪末,随着计算机科学的发展,网络的应用越来越广泛,为用户提供了更加周
到、人性化的服务。本文研究了一种基于文件存储的学生选修课系统。本系统是根据现
代校园发展为学生设计的课程系统。方便老师和家长来校了解学生成绩、近期奖惩情况
等。随着教育改革的深化和素质教育的加强以及完整学分制的实施,选修课发挥在学生
的培训计划中扮演着越来越重要的角色!使用在线选课系统后,您可以在开课前在线选
课。每个学生的课程在开课前就已经确定了,不用浪费体力去选课,还可以合理、均匀
地分配教学资源。
关键词:学生选课;C)语言;文件内存
目录
1mio理论1
1.1基本容量1
1.2发展趋势1
1.3用途和特点1
2问题需求分析3
2.1提出的问题3
2.2问题3
3整体设计4
3.1整体设计思路4
五介绍及框图4
1米奥理论
1.1基本容量
随着教育改革的深入和素质教育的加强以及完整学分制的实施,选修课在学生的培
养计划中发挥着越来越重要的作用!学生在选择课程时,应查看每门课程的详细信息,
并选择一些感兴趣的课程。他们需要生成课程表,发现课程冲突后可以修改之前选择的
信息、。随着高校课程改革的不断深入,学校规模不断扩大,课程项目数量不断增加。为
解决学生选修课管理中繁杂的人工操作,制定选修课系统迫在眉睫。全校选修课的目的
是拓宽学生的知识面,加强学生的素质教育,培养复合型高级人才,具有不可替代的重
要性!
1.2发展趋势
对于复杂的信息管理,计算机可以充分发挥其优势。计算机信息管理与信息管理系
统的发展密切相关,信息管理系统是系统管理的前提。该系统旨在管理学生的选课信息。
当今是一个飞速发展的信息时代,各行各业都离不开信息处理,这是计算机在信息
系统中得到广泛应用的环境。计算机最大的优点是可以管理信息和控制信息,不仅提高
了工作效率,而且大大提高了它的安全性。
基于这个问题,我认为有必要建立一个学生选课系统,使学生选课的信息管理有规
律、系统化、程序化,避免学生选课管理的随意性,提高信息的速度和准确性。处理,
并能够及时、准确、有效地查询和修改选课情况。
1.3用途和特点
现代社会是信息社会,信息无处不在。在生产、流通领域和各个部门,每天都在处
理信息。如何处理如此多的信息已成为一个重要的问题。学生在学期开始选课是教学活
动中的一个重要环节。如果这个环节管理得好,不仅可以加快学生的选课,还可以提高
整个活动的效率。
一般来说,大学有数以万计的学生。每个学期开始时,学生都要选择课程,从而产
生大量的课程信息。考虑到用户的方便和处理的信息量,系统需要完成课程信息的输入、
保存、查询、修改、删除等各个过程,并可以打印出课程信息表。
系统的主要对象是需要选课的学生。根据学生选修课的变化,计算相应的总学分。
全部选中后打印报告。系统还需要管理员查看和修改学生的整体课程选择、课程信息和
学生信息。本系统选课方便快捷。它使用简单的界面来显示学生的选课信息。具有应用
简单明了、存储容量大、可靠性高、性能好、使用寿命长、成本低等优点,可以大大提
高学生信息管理的效率。随着c语言的发展,实现了对学生课程信息的输入、修改、查
询、删除等简单操作,原始数据可以通过文件系统长期保存。
2问题需求分析
2.1提出的问题
随着教育改革、高校规模扩大、专业急剧增加,以教师讲课为主的传统教育模式已不再
适合我国高校的现状。而且,安排上市时间表是一项非常复杂和艰巨的任务。在帕克的
过程中,除了要满足大量的约束之外,还要解决很多的冲突。因此,利用网络选课、教
学生应该是有道理和必要的。那么如何打造在线选修课系统呢?如何实现学生随时随地
按照自己的日程安排在线学习?这已经成为网络选修课研究者的一大难题。
2.2问题分析
大学里总是有很多公共选修课。过去,选修课的方式是在课堂上注册。这种方法虽
然直接,但在选课时会造成盲目性。有些班级人满为患,而另一些则无人看管。原因是
传统的选课方式是不可预测的,大家也没有提前协调好。这种情况在高校中已经产生了
很长时间,短时间内不可能改变。使用在线选课系统后,您可以在开课前在线选课。每
个学生的课程在开课前就己经确定了,不用浪费体力去选课,还可以合理、均匀地分配
教学资源。
本系统开发的目的是利用信息技术和网络技术帮助学生和学校管理选课的教学任务。教
育体制的改革和学生人数的急剧增加,无疑为在线选修课提供了前所未有的机遇。本系
统是专门为方便用户根据自己的时间随时随地学习而开发的。学校将老师讲课视频直接
放到学校官网,学生可以通过官网在学生选课系统中随意学习。这不仅节省了学生的时
间,也为学校节省了大量的教师资源。学校可以将这部分节省下来的教师资源用于学术
研究、教育方法研究等。
目前,大部分学校都没有完善的学生选修课体系,电脑的使用以微软。ffice为主,无法
发挥有效作用。而且,随着中国教育改革,学生可以选择多种科目,这使得学校对学生
选修课的管理变得繁琐、复杂和繁重。这种传统的学校选修课模式已经不能适应当前的
发展。实现学生选课的系统化、标准化、自动化,做到全面、相对集中,为学生提供全
面的选课信息,为选课的有效管控提供有力帮助;为了及时了解选修课的情况,做好选
修课的安排。该系统是高校个人选课和管理的现代化信息平台。学生可以通过浏览器在
线选课,可以查看自己的选课计划和选课进度。同时,管理员可以通过浏览器添加、删
除和修改课程。这为学生和老师节省了大量的工作。充分利用网上选课系统,提高教学
选课管理效率,实现全面联网、规范化、一体化。
3整体设计
3.1整体设计思路
通过课题分析,程序需要设计选修课管理系统,可以输入和修改选修课,需要主界
面和退出功能。首先,考虑到程序的数据输入,可以设置一个管理员登录选项。通过该
界面可以输入和修改选修课。最后,您可以将输入的课程保存到相应的文件中。然后定
义各种功能的功能包括:查看、查询、删除等。另一个是学生登录界面,可以让学生选
择课程、浏览和查询。在此操作之前,您需要先阅读管理员保存的文件,然后查询其中
的内容。学生选课后,可以将选课保存在相应的文件中,以便下次修改。程序的逻辑结
构是通过函数的逐层调用来实现的。通过中间文件的打开和关闭,可以对文件段中包含
的数据进行操作。然后通过对课题的分析,必须实现的功能包括主线程对四大线程的随
机调度和输出结果的显示。为了方便用户控制和管理,我们增加了一些更人性化的功能,
如手动调试、运行配置等。它主要使用序列结构、选择结构和循环结构等多种基本结构。
同时,文件存储信息的方式简化了程序结构,使程序更易于阅读。另外,本系统采用块
实现功能,所要实现的功能,如添加课程信息、修改课程信息、删除课程信息、添加学
生信息和修改学生信息,由不同的子程序完成,不仅方便我们程序调试,也提高了程序
的可移植性。
为了方便用户的控制和管理,本系统增加了手动调试、运行配置等更加人性化的功能。
它主要使用序列结构、选择结构和循环结构等多种基本结构。同时,文件存储信息的方
式简化了程序结构,使程序更易于阅读。另外,本系统采用块实现功能,所要实现的功
能,如添加课程信息、修改课程信息、删除课程信息、添加学生信息和修改学生信息,
由不同的子程序完成,不仅方便我们程序调试,也提高了程序的可移植性。
3.2整体设计模块介绍及框图
该系统由一个主模块和几个子模块组成。主模块有两个模块:管理员和学生。管理
员模块的主要功能是添加和删除课程信息,而学生模块主要管理学生信息和课程选择。
Mainmodule
AdministratorStudentmodu
图3-1整体模块框图
4详细设计
4.1各模块流程图
4.L1主要功能模块
主功能设计简单,只提供一个主菜单和几个函数调用来显示功能。Switch语句将
整个程序分为三个功能模块。具体流程图如下:
图4-1主要功能模块图
4.1.2管理员模块
管理员具有浏览、查询、增删课程、使用字符串处理功能处理密码问题四大功能。
如果密码正确,则可以进入管理员模块。否则,请重新输入名称。如果密码输入错误3
次,则无法进入管理员模块。密码时间由int变量计算。使用switch语句调用函数:
end
图4-2管理员模块流程图
4.1.3学生模块
学生有四个功能:浏览所有课程信息、查询课程信息、选择选修课、浏览选择的课程、
删除错误的课程等。使用switch语句调用该功能:
be
no
be
no
be
no
be
no
be
no
be
no
图4-3学生模块流程图
4.1.4创建链表模块
利用链表的创建、插入、删除和查询功能。体现为菜单选项的形式,可以增加课程信息、
增加学生信息、删除课程信息、修改学生信息等。使用链表实现这些功能可以很好的与
用户交互。
istforeachelem
entofthestruct
*
CreationfSuccessful
Vy
图4-4链表创建流程图
4.1.5浏览模块
浏览模块主要使用管理员中的“浏览课程”和学生功能中的“浏览所有课程”输出
所有课程信息,即输出2.txt文件中的所有内容:
图4-5浏览模块流程图
4.1.6查询模块
查询模块主要用于管理员功能中的“查询课程”和学生功能模块中的“查询所有课
程”。查询模块分为三种查询方式:按课程名称查询、按课程性质查询和按学分查询。
每个case语句都是查询方法之一:
hrpak
图4-6查询模块流程图
4.1.7插入链表模块
插入链表的操作主要用于添加课程,在整个课程信息中添加一些新课程。它在添
加模块中调用:
图4-7插入模块流程图
4.1.8添加模块
添加模块主要用于增加课程信息,使用链表操作:
图4-8添加模块流程图
4.1.9删除模块
删除模块主要用于管理员删除课程信息和学生删除自己的课程,均采用删除链表
节点的操作:
Enddeletion
图4-9删除模块流程图
4.1.10选修课模块
选修课模块采用插入链表的操作:
begin
Enterthenumbero
图470选修课模块流程图
4.1.11读取文件模块
文件读取模块用于读取文件内容并输出到内存中。输入文件名后,即可打开指定
的文件。输入all_sub.txt后,即可打开所有课程信息的文件。输入my_sub.txt,即
可浏览学生选修课信息。
!feof(fp)
no
be
11
newSub=(SUB*)malloc(sizeof(SUB));
fscanf(fp,&newSub->num,newSub->name,newSub
->kind,&newSub->stime,&newSub->ttime,&newSu
closeadocument
Failedtoopen
图4-11读取文件模块流程图
4.1.12保存文件模块
文件保存模块分为两个子程序,将修改后的信息保存到2.txt文件中。
V)
Thesystemdetectsthefi1
图4-12文件保存模块流程图
4.2功能的具体实现和算法
4.2.1每个功能的具体功能
int()程序主函数,程序入口
voidmanagers()管理员主菜单,管理员入口
voidSUB*create_form()创建链表结构
voidsavefile()将新添加的课程信息保存到文件中。
voidsavefilelO将修改后的课程信息文件保存到文件中。
voidreadfile()读取文件
voidprin()浏览所有课程
voidprint()浏览所有选修课
void*myInsert(SUB*subj)链表插入操作
void*insert()插入课程信息
void*del()删除课程
voidchoose()选修新课---学生选课功能
voidsearch。课程信息查询
无效学生()学生登录门户
4.2.1实现各个功能的具体算法。
本系统程序使用的主要算法有:二分法、冒泡排序等算法。其中,二分法用于管理员录
入的多种课程信息操作,如添加课程信息、查找课程信息、修改课程信息、浏览选修课
等。以学生身份登录输入的课程信息的操作主要采用冒泡排序的方式。冒泡排序和二分
法是c语言中最基本的算法,但应用非常广泛。本系统主要使用二分法和冒泡排序的
搜索功能。
5.调试分析过程
5.1各模块运行结果
5.1.1开始跑步。
启动程序进入登录界面,输入1:以管理员身份登录,输入1密码,输入2:以学生身份
登录,输入3:退出登录界面。
"XX-X欢迎进入学生选修课程系统—"XXXX
1.以管理员身份'登录<pass”o»d1>
2.以学生身份登录
3.退出
Chioseyournunber<l-3>:[J
图5-1运行结果
5.1.2管理员菜单
进入管理员菜单。1:输入所有要选择的课程,2:浏览所有输入的课程,3:查询输
入的课程,4:删除输入的课程,5:返回主菜单。
图5-2管理员菜单图
5.1.31按进入课程模块。
进入课程界面,输入课程编号、课程名称、课程性质、总学时、教学时数、实践或计算
机学时、学分、开学学期。添加完成后点击回车继续添加,输入o完成添加。
tJUIUII〜I
Chioseyournunber<l—5>:[10
输入要插入的课程信息:
请输入课程编号:6
请输入课程名称:现代医学
请输入课程性质:人文
请输入总学时:3。
请输入授课学时:15
请输入实践或上机学时:15
请输入学分:25
请输入开课学期:[
添加完毕,新信息存入文件中
继续插入请按回车
加
按
结束
3。:0
程
课程
名
0称
蓄课程性鼠国学时授课学时实验或上机学时学分开课学期
创
已
建2
放
人
意.txt,文件中
请
续
按^
--
图5-3输入课程模块运行结果图
5.1.4输入课程信息后进入管理员浏览模块。
进入课程信息程序后,课程编号会自动排序,并显示输入的课程信息结果。按任意键退
出该界面。
"^<1TJ
”n
总
学
程
质
时
就
号
ch课[2
课
性
seourUn):程
编
i踣
^授课学时实践或上机学时学分开课学期
文
人
德20
,200301
文
人
理825
220251
然
生
自
:30
352010301
嫉
自30
4节2010351
爻
^人25
S糙1510301
文
6人30
是15251
按
意
请15
任-■
半-.
图5-4课程信息输入运行结果
5.1.5按课程性质查询
进入课程查询界面,选择查询方式,选择1按课程性质搜索,找出所有课程性质相同的
课程,选择3退出搜索界面。
图5-5:管理员浏览模块运行结果图。
5.1.6按课程学分查询
进入课程查询界面,选择查询方式,选择2按课程学分搜索,找出所有课程学分相同的
课程,选择3退出搜索界面。
请选择查询方式…
一一按课程性质查找
2-—按学分查找
3--退出查找
Chioseyournunber<l—3>"121
输入聚查找的课程的学分
课程褊号课程名称课程性质总学时授课学时实践或上机学时学分开课学期
20200301
3生物卷鼎自矮
一健康教育人文302010301
请按%意谶覆251510301
图5-6按课程性质查询运行结果。
5.1.7管理员按4删除模块。
在管理员菜单栏中输入4删除课程,输入要删除的课程编号完成删除课程,回车继续删
除课程,按0完成删除课程。
理员菜单
一-录入课程
2-—浏览课程
3--查询课程
4--删除课程
5---返回主菜单
IChioseyournunber<l-5>:[4]
输入想要删除的课程编号:15]
继续删除请按回车
结束删除课程按0:[0]
图5-7管理员删除模块运行结果图
5.1.8学生菜单
进入学生菜单栏,选择1浏览所有选修课,2查询所有课程信息,3选择你需要选修的课
程,4浏览你选修的课程,5删除你选错的课程课程选择,以及6返回主菜单。
一―浏览所有课程
2-—查询课程信息
3—选择选修课程
4--浏览我选修的课程
5--删除错选课程
6--返回主菜单
Chioseyournumbei*<l-6>:C]
图5-8学生菜单操作结果
5.1.91按学生浏览所有课程。
进入学生菜单,选择1进入BrowseAllCourses界面,可以查看选中的课程信息。
1--浏览所有课程
2--查询课程信息
3-—选择选修课程
4--浏览我选修的课程
5-—删除错选课程
6-—返回主菜单
11
be[1质
性
和-6
课
):程
^总学时授课学时实践或上机学时学分开课学期
1人
2罩20200301
人^25205251
生
3自
暨
缺302010301
自
4昔
文302010351
事
6人
患-30151525
图5-9学生浏览所有课程的运行结果。
5.1.10按学分查询课程
进入学生查询界面,选择2SearchbyCredit,开始搜索要学习的课程。
W请选择查询方式**
■一按课程性质查找
2-—按学分查找
3--退出查找
Chioseyournunber<l—3>:[23
输入要查找的课程的学分
课程编号课程刍称课程性质总学时授课学时实践或上机学时学分开课学期
20200301
3生物郛"自然302010301
一3一一健康鬟育人文
251510301
.买
图5T0按积分查询运行结果
5.1.11按3进入选修课程模块。
在学生菜单中选择3进入选修课界面,输入要选修的课程数量,按0确认选修课,选课成
功。将所选课程的信息保存在3.txt文档中。按任意键继续。
学生菜单・
i--浏览所有课程
2—-查询课程信息
3--选择选修课程
4--浏览我选修的课程
5-—删除错选课程
6-----返回主菜单
Chioseyournunbei*<l-6>:[3]
输入要选修的课程的编号.编号之间以空格分开
1346
如果确认输入完要选修的课程的编号.请输入。:「。]
MMMMM选修成功?™
您选修的课程总学分为12。,课程分别为:
质
程性
牌程编号课程名称课忌学时授课学时实践或上机学时学分开课学期
人文
1德语20200301
自然
3生物材料302010301
自铁
4302010351
人爻
6301515251
以上信息全都隹存在D.txt,中
卜青按届意键昆弟•.■
图5T1进入选修课模块操作结果图
5.1.124按Enter浏览选修课程。
在学生菜单中选择4,进入浏览我的选修课界面,将显示所有选修课信息。按任意键继
续。
・―浏览所有课程
2—-查询课程信息
3--选择选修课程
4--浏览我选修的课程
5--删除错选课程
6--返回主菜单
<f1
,m
质
课
课[4
斐
>:程
nu程l
总学时授课学时实践或上机学时学分开课学期
1%人
然20200301
物
生
自
3一
■302010301
自
4昔
笔302010351
医
6人
翟J301515251
书
宴
:r
图5-12;浏览选修课的运行结果。
5.1.13按5进入删除错误课程模块。
在学生菜单中选择5,进入删除错课界面,成功删除错课号。如果继续删除错课,请回
车,按0结束删除错课菜单,将删除错课信息保存在3.txt文档中。按任意键继续。
一―浏览所有课程
2--查询课程信息
3--选择选修课程
4--浏览我选修的课程
5--删除错选课程
6---返回主菜单
Chloseyournunber<l-6>:LbJ
输入想要删除的课程编号:16]
继续删除请按回车
结束删除课程按0:E0J
曙
爰
d般
>,续?
息
建
禹
已
创a
继
按
意
续文件巾
请
图5T2删除错误课程模块运行结果图
5.2调试过程中的问题
5.2.1提出问题
程序写好后,需要进行调试,看是否达到了规定的功能。但主要是纠正大大小小的问题。
这种设计存在的问题是:
1.调试时无法读取txt文件。
2、密码不能由用户自定义。
3.这个变异环境一旦关闭,添加的课程信息和学生信息就无法长期保存。
5.2.2问题分析
l.txt无法读取,输入路径后不显示文件。解决办法是请老师帮忙。最后,在老师的细
心指导下,我意识到这是我自己的电脑操作水平,对电脑路径结构没有很好的理解。最
后,我做了一些修改来实现它。
2.
问题是在编写程序时密码是固定的。用户无法通过系统平台修改密码值。因此,这样的
密码名存实亡,毫无用处。3.这个问题的原因是信息存储设置不是很好。通过文件存
储方便存储信息,但调用信息不方便。
5.2.3问题解决建议
数据库用来存储密码信息,然后用switch语句控制密码输入错误的次数。当密码输入错
误次数达到3次时,使用密码重置应用功能。然后将新密码存入数据库,并覆盖之前
设置的密码。建议使用数据库存储信息,比文件存储更稳定。
6总结
通过本课程的设计,我们回顾了几乎被遗忘的c语言知识,也让我们意识到总结之前所
学知识的重要性。这个看似简单的课程设计,却暴露了我们的诸多不足,也让我们意识
到自己在哪些方面需要努力提高。
这个课程是我们团队开设的,每个人都有明确的分工。当然,在这个过程中,我们遇到
了很多问题。我们没有自己努力,而是请大家帮助我们找到解决问题的方法。当编程结
构中有浮点数据时,系统提示有错误。可以通过将其替换为int或char然后定义它
来解决。调试未完成后自动跳出主界面:可能会遇到系统错误,主要是遇到浮动数据时。
插入链表读取和输出文件不熟悉;我不熟悉如何使表单参与与论点的一一对应。经过查
询资料和老师同学的帮助,基本解决了。通过这样不断的发现、修正、理解和习得,课
程设计最终圆满完成。
通过本周的C语言编程实践,我不仅巩固了之前掌握的C程序设计基础,也弥补了课堂上
没有学到的知识;它也让我们对抽象理论有了具体的理解。我意识到C语言应用广泛,
功能强大,是学习计算机不可缺少的语言。更重要的是,我学到了很多知识,增强了动
手能力,积累了经验。同时我也发现了自己的很多不足,需要在以后的学习中进一步完
善,以便掌握和应用更多的知识。最重要的是,这次实战训练让我认识到了团队合作的
强大力量和自己的严重不足,甚至激发了我对C语言编程的兴趣。C语言蕴含着强大的
秘密,等待我们去探索。
课程设计是在老师的指导下完成的,让我对学生的选课体系有了更深入的了解和一些实
践经验。这门课程让我意识到团队是不可替代的,知识很重要,让我在遇到问题时能主
动动动脑筋,对于自己不懂的问题愿意向别人请教。
7设计的优缺点
7.1不足与改进
经测试,本系统已满足本课题的所有要求。这个程序有很多优点。一是界面简洁的
程序菜单。一是智能模块设计,减少了大量的人工操作。例如,操作一个功能模块后,
会返回主菜单运行下一个模板,并提示是否再次进行类似操作,为用户带来方便,大大
提高了学生选课的效率。还有就是提示语言简洁、清晰、层次分明等。当然也有不足之
处,比如程序中还有不合理的地方,比如程序某些部分的一些输入错误不能立即处理退
回更正;信息表达方式并不丰富,而是简单,缺乏图片、音乐等元表达。
当编程结构中有浮点数据时,系统提示有错误。可以通过将其替换为int或char
然后定义它来解决。调试未完成后自动跳出主界面:可能会遇到系统错误,主要是遇到
浮动数据时。有些字母输入错误可以通过仔细搜索来解决;插入链表读取和输出文件不
熟悉;我不熟悉如何使表单参与与论点的一一对应。经过查询资料和老师同学的帮助,
基本解决了。
通过本周的C语言课程实践,我不仅巩固了之前掌握的C程序的设计基础,还学会了弥补
课堂上没有学到的知识。通过这门课,我充分认识到C语言用途广泛,功能强大,是学
习计算机不可缺少的语言。更重要的是,在这次编程中,我熟悉了编写复杂程序的过程,
具备了发现问题和解决问题的能力,为下一步的计算机语言学习做好了准备。以前觉得
遥不可及的功能现在可以实现了,非常感谢老师和同学们的热心帮助,是我及时完成这
个程序的重要因素。
7.2收获与总结
总之,这个设计方案让我受益匪浅,我会珍惜这样难得的机会。这些天我感受到了老师
对我的教导。虽然在这次试训中遇到了很多困难,但在老师的帮助下,我克服了过去。
也让我真正学到了一些平时在理论课上学不到的实用的东西。我会珍惜这次经历。
再一次,我感受到了你对我的教导!
7.3方案的优缺点
功能优势:
1.简洁明了的节目菜单。程序主要采用六组不同层次的菜单,相互独立,巧妙地相互连
接,符合用户的使用习惯和思维。
2.人性化的程序提示语言。程序提示语言更加人性化,不仅以祈使句和疑问句居多,而
且提示清晰,具有很强的明确引导功能。程序的提示不仅层次分明,提示方式多样,而
且提示信息有序,更有利于用户对程序的流畅、准确操作。
3.智能模块设计。程序的智能化主要体现在减少很多人工操作。功能模块完成后
会返回主菜单运行下一个模板,并提示是否再次进行类似操作,给用户带来方便,大大
提高学生选课的效率。
该方案的缺点:
1.流程虽然经过多次精简,但只是形式和范围上的精简,仍然
本质上并没有精简,也就是没有找到更简单、更高效、更合理、占用资源更少的
算法。
2、程序中还有一些不合理的地方。例如,程序的某些部分输入错误可能会导致程
序停止或转向其他功能模块,即程序建议用户注意提示,进行合理准确的输入,这样更
有利于管理。
3.程序的功能还不完善。比如信息表达不丰富,比较单一,缺乏图片、音乐等元
表达。
参考
1.王连祥。《C/C++编程》大学.2013.7
2.谭浩强C语言程序设计学习指南(第2版)清华大学。2012年12月
3.李、龚以健《C语言编程实践指导教程》华中科技大学2009年6月出版
4.晓东、洪振,《C语言编程与应用》,人民邮电.2009.4
5.郭翠英《C语言课程设计案例汇编》中国水利水电2004.03.01
6.郭友强,C语言程序设计,清华大学,2009年2月1日
7.程丹,颖,那军,C语言程序设计案例实践,清华大学,2009年2月1日
8.《C语言程序设计教程》,丽娟,人民邮电,2013年1月1日
9.吴亚莉、王永玲、杰亚莉的C语言程序设计,清华大学,2009年2月1日
致
在课程实践中,我得到了导师的指导和支持。特别感谢老师的大力帮助。导师在对
整体结构和功能的把握上给了我们很大的帮助,同时也为我们提供了非常优越的设计环
境,在编程和算法设计的细节上给了我耐心的指导,这对我的成功起到了关键的作用。
完成本课程设计。
转眼,一周的课程培训结束了,感觉老师给我们提供了每周几次在教室里调试电脑
的机会,老师为我们解决了各种问题,同学们可以也互相讨论。这使今天的成就成为可
能,尤其是老师的宝贵意见,给了我很大的启发。同时,我也觉得那些给我帮助的同学。
同时,我觉得学校给了我这样一个独立完成一门课程设计的机会,并且在这个过程中,
也给了我们各种便利,所以在这个学期结束的时候,我们可以申请将所学知识付诸实践,
增强了我们的实际操作和实际应用能力,提高了我们的独立思考能力。我觉得这两年所
有的老师和同学都给了我指导和帮助。他们教会了我专业知识和学习方法。多亏了他们,
我才能在各方面都取得了长足的进步,在此向他们表示衷心的祝愿。
附录:
源代码
ttinclude"stdio.h"
#include“字符串.h”
^include"stdlib.h"
^include"malloc.h"
无效prinl();
无效选择();
typedef结构主题
(
整数;
字符名称[20];
字符种类[10];〃课程编号〃课程名称//课程性质
时间;〃总课时
时间;〃教学时间
国际时间;〃在实验或电脑操作期间
积分;〃学分
国际术语;〃课程的期限。
结构主题*下一个;
}子;
SUB*头=辿1±;
SUB*create_form()//创建一个链表
(
SUB*头,*尾,*p;
整数,时间,时间;
intetime,score,term;
字符名称[20],种类[10];
intsize=sizeof(SUB);
头=尾=刖1±;
printf(〃输入选修课信息:\n〃);
scanf(,,%d%s%s%d%d%d%d%dz,,&num,name,kind,
&stime,&ttime,feetime,&score,&term);
而(数!=0)
(
p=(SUB*)malloc(大小);
p->数字=数字;
strcpy(p->名称,名称);
strcpy(p->种类,种类);
p->时间=时间;
p->ttime=ttime;
p->etime=etime;
p->分数=分数;
P-〉术语=术语;
如果(头==NULL)
头=P;
别的
尾->下一个二p;
尾=P;
scanf(/z%d%s%s%d%d%d%d%d",&num,name,
种类,&stime,fettime,&etime,&score,&term);
)
尾->下一个=NULL;
返回头;
)
voidsavefile()//保存文件
(
子*P;
文件*fp;
fp=fopen("2.txt","w");
如果(fp==NULL)退出(0);
printf("课程编号、课程名称、课程性质、总学时
教学小时实验或计算机小时学分开始学期\n");
for(p=head;p;p=p->next)
,,,,
fprintf(fp,%5d%12s%9s%9d%9d%lld%lld%7d\n,
p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);
fclose(fp);
printf("创建的信息已经放入'2.txt)文件\n");
系统(“暂停”);
)
voidsavefilel()//保存文件
(
子*P;
文件*fp;
fp=fopen("3.txt","w");
如果(fp==NULL)退出(0);
for(p=head;p;p=p->next)
//,,
fprintf(fp,%5d%12s%9s%9d%9d%lld%lld%7d\n1
p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);
fclose(fp);
printf("创建的信息已经放入'3.txt'文件\n");
系统(“暂停”);
)
voidreadfile()//读取文件
(
无效*myInsert(SUB*);
子*newSub;〃新课程
整数,时间,时间,时间;
积分,期限;
字符[20],种类[10],fname[20];
文件*fp;
fp=fopen("2.txt","r");
而(!feof(fp))
(
newSub=(SUB*)malloc(sizeof(SUB));
fscanf(fp,,,%d%s%s%d%d%d%d%d\nz/,&newSub->num,newSub->name,newSub->kind,
&newSub->stime,&newSub->ttime,&newSub->etime,&newSub->score,&newSub->term);我的
插入(新子);
)
fclose(fp);
)
voidprinO//浏览所有课程
(
子*ptr;
头=空;
读取文件();
如果(头==NULL)
(
printf("\n\n\t*********没有记录!************\n");
返回;
)
printf(〃课程号、课程名称、课程性质、总课时
或练习计算机时间和学分\n");
for(ptr=head;ptr;ptr=ptr->next)
(
printf("%5d%12s%9s%9d%9d%lld%lld%7d\n”,ptr->num,ptr->name,
ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);}
系统("暂停”);
voidprinl()//浏览所有选修课
子*ptr;
文件*fp;
if((fp=fopen("3.txt","r"))==NULL)
{
printf("无法打开文件。\n");
选择();
)
printf(〃课程号、课程名称、课程性质、总课时
或练习计算机时间和学分\n");
而(!feof(fp))
(
ptr=(SUB*)malloc(sizeof(SUB));
fscanf(fp,//%d%s%s%d%d%d%d%d\n//,&ptr->num,ptr->name,ptr->种类,&ptr->stime,&ptr
&ptr->etime,&ptr->score,&ptr->term);printf(/,%5d%12s%9s%9d%9d%lld%lld%7d\
rT,ptr->num,ptr->name,
ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);}
fclose(fp);
系统(“暂停”);
)
void*mylnsert(SUB*subj)//链表插入操作
(
SUB*ptr,*ptr2;
点=主题;
如果(头==NULL)
(
头=ptr;
头->下一个=NULL;
别的
for(ptr2=head;ptr2;ptr2=ptr2->next)
如果(ptr2->下一个==NULL)
(
ptr2->下一个=主题;
主题->下一个=NULL;
休息;
返回头;
}
void"insert()〃插入课程信息
子*ptr,*subj;
intsize=sizeof(SUB);
字符ch,chi;
而(ch!='O')
subj=(SUB*)malloc(大小);
点=主题;
printf(〃输入要插入的课程信息:\n");
printf("\n\t\t请输入课程号:");scanf&subj->num);
printf("\n\t\t请输入课程名称:”)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 提高CPMM学习效率的试题及答案
- 保护自己防拐防骗课件
- 物流师专业素养试题及答案分析
- 物流行业的挑战与机遇试题与答案
- 2025年大型无菌包装机项目投资风险评估报告
- 强化2024年CPSM考试核心试题及答案
- 2024年CPSM考试概念解析试题及答案
- 2024国际物流师个人经验试题及答案
- 统编版语文五年级下册第15课《自相矛盾》精美课件
- 2024年CPMM考后总结及试题及答案
- 2022年锦泰财产保险股份有限公司校园招聘笔试试题及答案解析
- 妊娠期VTE的防治课件
- DB15T 2335-2021梭梭造林及管护技术规程
- (完整版)钢琴五线谱(A4打印)
- 2023辽宁医药职业学院单招数学模拟试题(附答案解析)
- 48个英语国际音标表
- 前列腺穿刺技术
- 小班语言《我会变》课件
- 毕业论文中期报告模板范文5篇
- 上海市高考语文名著阅读《红楼梦》分章回练习:第八回(无答案)
- Q∕HN-1-0000.08.005-2018 风力发电场金属监督标准
评论
0/150
提交评论