C语言课程设计报告-学生选课系统_第1页
C语言课程设计报告-学生选课系统_第2页
C语言课程设计报告-学生选课系统_第3页
C语言课程设计报告-学生选课系统_第4页
C语言课程设计报告-学生选课系统_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-. z.理工大学华夏学院课程设计报告书课程名称: C课程设计题目:学生选课系统程序设计系名:信息工程系专业班级:*:*:指导教师:成绩:2016年3 月4日课程设计任务书学生:专业班级:指导教师:工作单位:设计题目:学生选课系统程序设计初始条件:学生选课系统能提供学生选课,以及学生和课程信息管理等一系列功能。要求完成的主要任务:包括课程设计工作量及其技术要求,以及说明书撰写等具体要求1、任务描述假定有n门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求如总学分不得少于15自由选课。试设计一个选修课程系统,使之能提供以下功能:1系

2、统以菜单方式工作2课程信息和学生选课信息录入功能课程信息用文件保存3课程信息浏览功能4查询功能5按学分查询6*门课程学生选修情况可选项2、本课程涉及的知识点变量的定义、输入和输出函数、构造体类型的定义、构造体数组、循环语句、选择语句,文件的操作等。设计报告撰写格式要求:一、课程设计说明书或报告书正文容【设计题目】例如:学生选课系统【开发环境】硬件环境:微机系列,存在1G以上,软件环境:Microsoft Windows *P【开发工具】 Microsoft Visual C+ 6.0【完成时间】【需求分析】分析阐述用户的需要以及要实现的程序应具有什么样的功能。【系统总体设计】在明确了所要解决的

3、问题后,很自然地就要提出自己解决问题的思路和方案。让读者了解方案的总体设计和关键技术。要阐述自己的设计方案,说明为什么要选择或设计这样的方案。具体包括:系统总的设计思路,功能模块图;使用的设计软硬件环境和开发技术和平台等。【系统详细设计】在这局部中,应该具有相关关键实现技术如使用什么库函数,使用什么循环构造等。【系统调试和测试】调试:介绍设计过程中遇到的问题和解决方法。测试:介绍如何测试系统,测试中发现的问题和解决方案。【完毕语】这局部篇幅不大,对整个设计中做的工作、获得的成果、心得体会等做一个简单小结。【参考文献】罗列在设计过程中查阅的文献名称注意:参考文献罗列的格式为资料编号作者文献或期刊

4、名称名称,文献的出版时间或期刊的期号例如:文献 1 谭浩强.,C程序设计第二版M,:清华大学,2001年期刊 2 于振海.office *P网上数据存取.计算机应用文摘J,2003,24;69页二、课程设计说明书或报告书正文的书写格式简介正文标题层次正文题序层次是文章构造的框架,一般采用社会通用的论文书写形式。即章条序码统一用阿拉伯数字表示,题序层次可以分为假设干级,各级之间加小圆点,末尾一级的后面不加小圆点,层次分级一般不超过四级为宜,例如如下:第一级章 1 2 3 第二级条1.1 1.22.12.2 3.1 3.2 第三级条1.1.2 1.2.22.1.2 2.2.23.1.2 3.2.2

5、 二、表格每个表格应有自己的表序与表题,表序与表题间空一格。例如:表1.1 * ,且表题与表序应写在表格的上方正中处。三、插图插图图面要整齐、美观,插图应与正文照应,不能脱节。每幅插图应有图序与图题,图序编号要连续,图序与图题间空一格且要放在插图下方居中处。四、公式公式应另起一行写在稿纸的中央时间安排:周次星期一星期二星期三星期四星期五第2周第1-4节第3-4节第1-4节第1-2节第1-4节地点现教221现教221现教221现教221现教221课程设计考核及评分标准1. 系统完成任务:50分2. 各种技术的综合应用:10分3、答复提问情况:20分4. 设计报告:20分目录 TOC o 1-3

6、h z u HYPERLINK l _Toc4447623471设计题目 PAGEREF _Toc444762347 h 3HYPERLINK l _Toc4447623482开发环境 PAGEREF _Toc444762348 h 3HYPERLINK l _Toc4447623492.1硬件环境 PAGEREF _Toc444762349 h 3HYPERLINK l _Toc4447623502.2软件环境 PAGEREF _Toc444762350 h 3HYPERLINK l _Toc4447623513 开发工具 PAGEREF _Toc444762351 h 3HYPERLINK

7、 l _Toc4447623524完成时间 PAGEREF _Toc444762352 h 3HYPERLINK l _Toc4447623535需求分析 PAGEREF _Toc444762353 h 3HYPERLINK l _Toc4447623546系统总体设计 PAGEREF _Toc444762354 h 3HYPERLINK l _Toc4447623557系统详细设计 PAGEREF _Toc444762355 h 3HYPERLINK l _Toc4447623567.1系统主菜单 PAGEREF _Toc444762356 h 3HYPERLINK l _Toc444762

8、357系统主菜单界面 PAGEREF _Toc444762357 h 错误!未定义书签。HYPERLINK l _Toc444762358系统功能模块图 PAGEREF _Toc444762358 h 错误!未定义书签。HYPERLINK l _Toc444762359系统主菜单流程图 PAGEREF _Toc444762359 h 错误!未定义书签。HYPERLINK l _Toc444762360系统主菜单代码 PAGEREF _Toc444762360 h 错误!未定义书签。HYPERLINK l _Toc4447623617.2录入课程信息 PAGEREF _Toc444762361

9、h 3HYPERLINK l _Toc444762362录入课程信息界面 PAGEREF _Toc444762362 h 错误!未定义书签。HYPERLINK l _Toc444762363录入课程信息模块图 PAGEREF _Toc444762363 h 错误!未定义书签。HYPERLINK l _Toc444762364录入课程信息流程图 PAGEREF _Toc444762364 h 错误!未定义书签。HYPERLINK l _Toc444762365录入课程信息代码 PAGEREF _Toc444762365 h 错误!未定义书签。HYPERLINK l _Toc4447623667.

10、3课程管理 PAGEREF _Toc444762366 h 3HYPERLINK l _Toc444762367课程管理界面 PAGEREF _Toc444762367 h 错误!未定义书签。HYPERLINK l _Toc444762368课程管理模块图 PAGEREF _Toc444762368 h 错误!未定义书签。HYPERLINK l _Toc444762369课程管理流程图 PAGEREF _Toc444762369 h 错误!未定义书签。HYPERLINK l _Toc444762370课程管理代码 PAGEREF _Toc444762370 h 错误!未定义书签。HYPERLI

11、NK l _Toc4447623717.4学生信息管理 PAGEREF _Toc444762371 h 3HYPERLINK l _Toc444762372学生信息管理界面 PAGEREF _Toc444762372 h 错误!未定义书签。HYPERLINK l _Toc444762373学生信息管理界面模块图 PAGEREF _Toc444762373 h 错误!未定义书签。HYPERLINK l _Toc444762374学生信息管理流程图 PAGEREF _Toc444762374 h 错误!未定义书签。HYPERLINK l _Toc444762375学生信息管理代码 PAGEREF

12、_Toc444762375 h 错误!未定义书签。HYPERLINK l _Toc4447623767.5学生选课 PAGEREF _Toc444762376 h 3HYPERLINK l _Toc444762377学生选课界面 PAGEREF _Toc444762377 h 错误!未定义书签。HYPERLINK l _Toc444762378学生选课模块图PAGEREF _Toc444762378 h 错误!未定义书签。HYPERLINK l _Toc444762379学生选课流程图 PAGEREF _Toc444762379 h 错误!未定义书签。HYPERLINK l _Toc44476

13、2380学生选课代码 PAGEREF _Toc444762380 h 错误!未定义书签。HYPERLINK l _Toc4447623818系统调试和测试 PAGEREF _Toc444762381 h 3HYPERLINK l _Toc4447623828.1调试 PAGEREF _Toc444762382 h 3HYPERLINK l _Toc4447623838.2测试 PAGEREF _Toc444762383 h 3HYPERLINK l _Toc4447623849完毕语 PAGEREF _Toc444762384 h 3HYPERLINK l _Toc44476238510参考文

14、献 PAGEREF _Toc444762385 h 3-. z.1设计题目学生选课系统2开发环境2.1硬件环境微机系列,存在1G以上2.2软件环境Win7系统3 开发工具Microsoft Visual C+ 6.04完成时间2016年2月29日2016年3月4日5需求分析用户需求如下:假定有n门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求如总学分不得少于15自由选课。试设计一个选修课程系统。故此,经过分析后我觉得程序应该具有以下功能:1系统以菜单方式工作2课程信息和学生选课信息录入功能3课程信息浏览功能4查询功能5按学分查询

15、6系统总体设计系统由哪几个功能模块构成,给出功能模块图。C中模块化的工具是函数根据上面的需求分析,可以将这个系统的设计分为如下六大模块。选课模块、按学分查找模块、按编号查找模块、查看课程模块、查看选课情况模块、课程输入模块、完成选择模块。模块图如下列图1所示。菜单项选择择模块课程信息管理管理录入课程信息退出系统学生选课学生信息管 理录入学生信息完成选择模块图1 系统功能模块图另外,程序用了两个构造体和五个全局变量N1,N2,kk1,kk2,kk3。五个全局变量是用来控制输入数据的循环的。两个构造体分别是课程信息构造体:struct couse/课程信息构造体int num1;/课程编号char

16、 name120;/课程名称char *inzhi30;/课程性质int ztime;/课程总学时int stime;/授课学时int shiyan;/实验学时int score;/学分long int date;/开学学期int nelepeo;/课程已选人数int Melepeo;/课程人数上限struct couse * ne*t;和存储学生信息的构造体:struct student/学生信息构造体 int num2; char name220; int nelenum50;/已选课程编号 int nelen;/已选课程数量 struct student * ne*t;void Ms()

17、 for(kk1=0;kk11100;kk1+) for(kk2=0;kk21200;kk2+) for(kk3=0;kk31200;kk3+);7系统详细设计7.1系统主菜单系统界面设计图包括六个选项,用户可根据自己的需求选择不同的选项。系统界面设计图如图2所示。图2 系统界面设计图系统模块图分为六大模块。分别是录入课程信息模块,课程信息管理模块,录入学生信息模块,学生信息管理模块,学生选课模块和退出系统模块。系统功能模块图如下列图3所示。录入课程信息课程信息管理录入学生信息学生信息管理学生选课退出系统主菜单图3系统功能模块图图3 主菜单设计模块图当用户进入主菜单后,会显示有六个选项的界面,

18、需要用户从1-6个选项中选择一个选项来进展操作,假设所选数非1-6,则会退出系统。系统主菜单流程图如图4所示。开场根据n的值调用各功能模块函数输入n,判断n是否是1-6定义nNYY调用完成完毕图4 系统总流程图该程序实现代码如下。int main()/主函数 int i; start: printf(nttt欢送使用学生选课系统!n); printf(n); printf(t主菜单:n);printf(t*n);printf(t* *n); printf(t* 1.录入课程信息 *n); printf(t* 2.课程信息管理 *n); printf(t* 3.录入学生信息 *n); print

19、f(t* 4.学生信息管理 *n); printf(t* 5.学生选课 *n); printf(t* 6.退出系统 *n);printf(t* *n);printf(t*n); printf(n请输入菜单项选择项(16):); scanf(%d,&i); if(i6) printf(输入错误,请重输:n); goto start; switch(i) case 1: system(cls); inputc(); goto start; break; case 2: system(cls); managementc(); goto start; break; case 3: system(cls

20、); inputs(); goto start; break; case 4: system(cls); managements(); goto start; break; case 5: system(cls); elective(); goto start; break; case 6: system(cls); printf(感使用本系统!nn再见!n); return 0;7.2录入课程信息录入课程信息有两个选项,录入课程和返回主菜单。录入课程信息界面设计如图5所示。图5录入课程信息界当用户进入录入课程后,会有两个选项,录入课程和返回主菜单。录入课程信息流程图如图6所示。开场YNN定义

21、nn=1n=2返回主菜单录入课程录入完成Y完毕图6 录入课程信息流程图实现该功能代码如下。void keyboardc()/录入课程子函数 struct couse *p1,*p2; N1=0; p1=p2=(struct couse*)malloc(sizeof(struct couse); printf(课程编号课程名称课程性质总学时授课学时实验学时学分开课学期人数上限n); scanf(%d%s%s%d%d%d%d%d,&p1-num1,p1-name1,&p1-*inzhi,&p1-ztime,&p1-stime,&p1-shiyan,&p1-score,&p1-date,&p1-Me

22、lepeo); p1-nelepeo=0; head1=NULL; while(p1-num1!=0) N1=N1+1; if(N1=1)head1=p1; else p2-ne*t=p1; p2=p1; p1=(struct couse * )malloc(sizeof(struct couse); scanf(%d%s%s%d%d%d%d%d,&p1-num1,p1-name1,&p1-*inzhi,&p1-ztime,&p1-stime,&p1-shiyan,&p1-score,&p1-date,&p1-Melepeo); p1-nelepeo=0; p2-ne*t=NULL;void

23、inputc()/录入课程主函数 int i; printf(ttt录入课程信息n); printf(n1.录入课程n); printf(2.返回主菜单n); printf(请选择(12):n); scanf(%d,&i); switch(i) case(1):keyboardc();break; case(2):break; 7.3课程管理课程管理有三个选项,新增课程,删除课程和返回主菜单。课程管理界面设计如图7所示。图7 课程管理界面课程管理可以选择增添或删除课程,假设输入课程格式错误会显示错误,用户需要重新输入程管理流程图如图8所示。输入课程信息新增或删除课程开场N完毕显示失败保 存Y图

24、8 课程管理流程图实现该功能代码如下。void delc(int num1)/课程管理子函数(删除课程) struct couse *p1,*p2; if(head1=NULL) printf(n没有课程,无法删除!n); goto end; p1=head1; while(num1!=p1-num1 & p1-ne*t!=NULL) p2=p1; p1=p1-ne*t; if(num1=p1-num1) if(p1=head1) head1=p1-ne*t; else p2-ne*t=p1-ne*t; printf(已删除该编号课程!n); N1=N1-1; else printf(无该编号

25、的课程!n); end:;void managementc()/课程管理主函数 struct couse * incouse; int i,num1; printf(ttt课程信息管理n); printf(1.新增课程n); printf(2.删除课程n); printf(3.返回主菜单n); printf(请选择(13):n); scanf(%d,&i); switch(i) case(1): incouse=(struct couse *)malloc(sizeof(struct couse); printf(课程编号课程名称课程性质总学时授课学时实验学时学分开课学期人数上限n); sca

26、nf(%dn%sn%sn%dn%dn%dn%dn%dn%dn,&incouse-num1,&incouse-name1,&incouse-*inzhi,&incouse-ztime,&incouse-stime,&incouse-score,&incouse-date,&incouse-Melepeo); incouse-nelepeo=0; insertc(incouse); break; case(2): printf(请输入要删除课程的编号:n); scanf(%d,&num1); delc(num1); break; case(3):break; 7.4学生信息管理学生信息管理可选新增

27、或删除学生信息,假设都不操作则可选返回主菜单。学生信息管理界面设计如图9所示。图9 学生信息管理界面学生信息管理有增加和删除学生信息,假设选择此项,则会提示用户输出入相关信息,假设输入格式错误则会有提示错误信息,当操作完成后会退回主菜单界面。学生信息管理界面流程图如图10所示。开场保存信息输入错误输入*,考号新增学生信息或删除学生信息退出完毕NY图10 学生信息管理界面流程图实现该功能代码如下。void inserts(struct student * incouse)/学生信息管理子函数(填加学生信息) struct student *p0,*p1,*p2; p1=head2; p0=inc

28、ouse; if(head2=NULL) head2=p0; p0-ne*t=NULL; else while(p0-num2 p1-num2) & (p1-ne*t!=NULL) p2=p1; p1=p1-ne*t; if(p0-num2 num2) if(head2=p1) head2=p0; else p2-ne*t=p0; p0-ne*t=p1; else p1-ne*t=p0; p0-ne*t=NULL; N2=N2+1;void dels(int num2)/学生信息管理子函数删除学生信息) struct student *p1,*p2; if(head2=NULL) printf

29、(n没有该学生信息,无法删除!n); goto end; p1=head2; while(num2!=p1-num2 & p1-ne*t!=NULL) p2=p1; p1=p1-ne*t; if(num2=p1-num2) if(p1=head2) head2=p1-ne*t; else p2-ne*t=p1-ne*t; printf(已删除该学生信息!n); N2=N2-1; else printf(无该*的学生!n); end:;void managements()/学生信息管理主函数 struct student * incouse; int i,num2; printf(ttt学生信息

30、管理n); printf(1.新增学生信息n); printf(2.删除学生信息n); printf(3.返回主菜单n); printf(请选择(13):n); scanf(%d,&i); switch(i) case(1): incouse=(struct student *)malloc(sizeof(struct student); incouse-nelen=0; incouse-nelenum0=0; printf(学生*t学生n); scanf(%d%s,&incouse-num2,incouse-name2); inserts(incouse); break; case(2):

31、printf(请输入要删除学生的*:n); scanf(%d,&num2); dels(num2); break; case(3):break; 7.5学生选课学生选课可以查询已选和可选课程,此外还有返回主菜单项选择项学生选课界面设计如图11所示。图11 学生选课界面进入选课选项则会提示用户输入*然后再进展选课。假设不选则可以退回主菜单。学生选课流程图如图12所示。开场学生选课输入nn=1Y查询可选课程输入*Nn=2Y返回主菜单查询完成查询完成n=3N输入*查询已选课程NNY完毕图12 学生选课流程图实现该功能代码如下。选课程序如下。用户要选课时,查询可选课程后会提示输入所要选的课程的编号,然

32、后程序会根据所选的课程编号将所选课程信息储存。void elect(struct student * s)/选课 struct couse * p; int num1,i; printf(请输入要选课的编号:n); scanf(%d,&num1); for(i=0;s-nelenumi!=0;i+); s-nelenumi=num1; (s-nelen)+; p=head1; while(p-num1!=num1) p=p-ne*t; (p-nelepeo)+;void cheak()/学生选课子函数(查询可选课程) char e; struct couse * c; struct stude

33、nt * s; int num2,i,j=0,t=0; printf(请输入你的*:); scanf(%d,&num2); s=head2; while(s-num2!=num2 & s-ne*t!=NULL) s=s-ne*t; if(s-num2!=num2) printf(不存在你的信息,请进入主菜单录入你的信息!n); goto end; c=head1; printf(你的可选课程编号:n); while(c!=NULL) for(t=0,i=0;s-nelenumi!=0;i+) if(c-num1=s-nelenumi) t=1; if(t=0 & (c-nelepeo!=c-M

34、elepeo) printf(%dn,c-num1); j+; c=c-ne*t; if(j=0) printf(你已选完所有课程,无法再多项选择!n); goto end; printf(选课(y/n):n); getchar(); e=getchar(); i=0; while(e=y) elect(s); printf(继续选课(y/n):n); getchar(); e=getchar(); end:;退课程序如下。首先输入要退掉课程的编号,假设该课程存在,则显示退课成功,假设不存在,则失败。void back(struct student * p)/退课 struct couse *

35、 p1; int num1,i,j; printf(请输入你要退掉的课程编号:n); scanf(%d,&num1); p1=head1; while(p1-num1!=num1) p1=p1-ne*t; for(i=0;p-nelenumi!=num1;i+); for(j=i;p-nelenumj!=0;j+) p-nelenumj=p-nelenumj+1; p-nelenum-j=0; (p1-nelepeo)-; printf(退课成功!n);查询已选课程代码如下。首先输入*,假设系统中无记录,则会提示不存在该信息,请用户录入该信息,然后用goto语句跳转到主菜单界面。假设有记录,则

36、继续输入课程编号,假设未选此课,则会提示你还没有选这个课程。void hcheak()/学生选课子函数查询已选课程) char c; struct couse * p0; struct student * p; int num2,i,f=0; printf(请输入*:n); scanf(%d,&num2); p=head2; while(p-num2!=num2 & p!=NULL) p=p-ne*t; if(p=NULL) printf(不存在你的信息,请回主菜单录入信息:n); goto end; printf(已选课程编号:n); if(p-nelenum0=0) printf(你还没选

37、课!n); goto end; for(i=0;p-nelenumi!=0;i+) printf(%dn,p-nelenumi); p0=head1; while(p0-num1!=p-nelenumi) p0=p0-ne*t; f=f+p0-score; printf(总学分:%dn,f); printf(是否进展退课(y/n); getchar(); c=getchar(); while(c=y) back(p); printf(继续退课(y/n); getchar(); c=getchar(); (p-nelen)-; end:;选课主界面程序如下。用printf输出界面,用switch语句选择调用对应的函数以实现选择各种情况。void elective()/学生选课主函数 int i; printf(ttt学生选课n); printf(1.查询可选课程n); printf(2.查询已选课程n); printf(3.返回主菜单n); printf(请输入(13):n); scanf(%d,&i); switch(i) case(1):cheak(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论