c语言课设报告.docx

上传人:b****1 文档编号:14289184 上传时间:2023-06-22 格式:DOCX 页数:25 大小:259.31KB
下载 相关 举报
c语言课设报告.docx_第1页
第1页 / 共25页
c语言课设报告.docx_第2页
第2页 / 共25页
c语言课设报告.docx_第3页
第3页 / 共25页
c语言课设报告.docx_第4页
第4页 / 共25页
c语言课设报告.docx_第5页
第5页 / 共25页
c语言课设报告.docx_第6页
第6页 / 共25页
c语言课设报告.docx_第7页
第7页 / 共25页
c语言课设报告.docx_第8页
第8页 / 共25页
c语言课设报告.docx_第9页
第9页 / 共25页
c语言课设报告.docx_第10页
第10页 / 共25页
c语言课设报告.docx_第11页
第11页 / 共25页
c语言课设报告.docx_第12页
第12页 / 共25页
c语言课设报告.docx_第13页
第13页 / 共25页
c语言课设报告.docx_第14页
第14页 / 共25页
c语言课设报告.docx_第15页
第15页 / 共25页
c语言课设报告.docx_第16页
第16页 / 共25页
c语言课设报告.docx_第17页
第17页 / 共25页
c语言课设报告.docx_第18页
第18页 / 共25页
c语言课设报告.docx_第19页
第19页 / 共25页
c语言课设报告.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c语言课设报告.docx

《c语言课设报告.docx》由会员分享,可在线阅读,更多相关《c语言课设报告.docx(25页珍藏版)》请在冰点文库上搜索。

c语言课设报告.docx

c语言课设报告

内蒙古科技大学

本科生课程设计说明书

题目:

学生选修课程管理系统

学生姓名:

***

学号:

**********

专业:

软件工程

班级:

2013-1

指导教师:

***

 

内蒙古科技大学课程设计说明书

课程名称

C语言课程设计

设计题目

学生选修课程管理系统

指导教师

赵艳峰

时间

2016.1.05--2016.1.09

一、教学要求

1.巩固和加深学生对C语言课程的基本知识的理解和掌握

2.掌握C语言编程和程序调试的基本技能

3.利用C语言进行基本的软件设计

4.掌握书写程序设计说明文档的能力

5.提高运用C语言解决实际问题的能力

二、设计资料及参数

每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。

学生选修课程管理系统设计

假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。

试设计一选修课程系统,使之能提供以下功能:

v课程信息录入功能(课程信息用文件保存)--输入;课程信息浏览功能--输出

v查询功能:

(至少一种查询方式)--算法

●按学分查询●按课程名称查询

v学生选修课程(可选项)

三、设计要求及成果

1.分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)

2.写出详细设计说明(至少包括功能实现分析和模块流程图)

3.编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少3个函数,每人至少200行代码,不包括注释和花括号)

4.设计完成的软件要便于操作和使用

5.设计完成后提交课程设计报告(请严格按照模板进行排版)

四、进度安排

第一天 选择课程设计题目,分析课题的要求

第二天 编程

第三天 编程及调试

第四天 写课程设计报告

第五天 提交课程设计报告(打印稿及电子稿)

五、评分标准

1.根据平时上机考勤、表现和进度,教师将每天点名和检查

2.根据课程设计完成情况,必须有可运行的软件。

3.根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。

六、建议参考资料

1.《C语言程序设计》,谭浩强,清华大学出版社

2.《C语言程序设计课程设计》,刘振安,机械工业出版社

 

第1章需求分析

1.1引言

大学期间总会有很多公共选修课,以往的选课方法是随堂报名。

这种方法虽然直接,但是造成选课的盲目性,有些课堂选课时人满为患,有些课堂无人选课。

原因是传统的选课方法没有预见性,大家没有事先协调好。

使用了网上选课系统以后,可以在开课前就在网上选课,每个学生的课程在开课前就确定好,不用浪费体力去选课,还可以使教学资源合理平均地分配。

全校性选修课的目的在于扩大学生的知识面,加强学生素质教育,培养复合型高级人才,具有不可替代的重要性!

随着教育改革的不断深入和素质教育的加强完全学分制的实施,选修课在一个学生的培养计划中站的比重越来越大!

1.2任务概述

本课程设计假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。

系统以菜单方式工作。

1.3数据描述

数据结构可用结构体,课程结构体成员包括课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期。

1.4功能需求

1、课程信息录入功能(课程信息用文件保存)--输入

2、课程信息浏览功能--输出

3、查询功能:

(至少一种查询方式)--算法

按学分查询、按课程性质查询

4、学生选修课程(可选项)。

1.5任务计划

第一天选择课程设计题目,分析课题的要求

第二天编程

第三天编程及调试

第四天写课程设计报告

第五天提交课程设计报告(打印稿及电子稿)

第2章概要设计

2.1系统功能

课程信息录入。

建立课程信息链表,由键盘输入课程信息。

课程信息输出。

输出所有课程信息。

查询课程。

按课程编号、课程名称、学分、按课程性质、开课学期等查询(至少实现1种)。

学生选修课程。

输入学生学号和课程编号,形成一条选课信息,保存在“选修信息文件”里。

查询学生选修的课程。

输入学生学号,输出该生已选修的课程编号和课程名称。

2.2设计要求

假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。

试设计一选修课程系统,使之能提供以下功能:

v课程信息录入功能(课程信息用文件保存)--输入;课程信息浏览功能--输出

v查询功能:

(至少一种查询方式)--算法

●按学分查询●按课程名称查询

v学生选修课程(可选项)

2.2.1系统功能模块

根据设计要求分为8个模块,分别是:

1:

创建课程信息:

课程信息的录入,建立课程信息链表,有键盘输入课程信息。

2:

课程信息输出:

输入所有课程信息。

3:

查询课程信息:

按课程编号、课程名称、课程性质、学分、开课学期等查询(此程序按课程编号实现)。

4:

学生选修课程:

输入学生学号和课程编号,形成一条选课信息,保存在“选修信息文件”里。

5:

查询学生选修课程:

输入学生学号,输入该省已选修的课程编号和课程名称。

6:

退出:

结束程序,退出系统。

2.3各模块流程图

 

图2.1

选择模块

图2.2

创建课程信息

图2.3

do

{

cp1=(structstu*)malloc(sizeof(structstu));

if(i==1)chead=cp2=cp1;

elsecp2->next=cp1;

scanf("%d%s",&cp1->num,&cp1->name);

scanf("%s%d%d%d",&cp1->quale,&cp1->time,&cp1->credit,&cp1->thtime);

scanf("%d%d%d",&cp1->extime,&cp1->term,&cp1->alnum);

cp2=cp1;

fflush(stdin);//刷新scanf()函数缓冲,防止自动循环

i++;

}while(am>=i);

cp2->next=NULL;

学生选课

图2.4

intsnum;

structstu*head,*p1;

p1=p;

printf("请输入学生学号:

");

scanf("%d",&snum);

printf("输入课程编号:

");

scanf("%d",&num);

do

{

if(p1->num=num)

{

FILE*fp;

fp=fopen("选修信息文件.txt","w");

fprintf(fp,"学生学号课程编号名称性质总学时总学分理论学时实验学时开课学期已修本课的人数\n");

fprintf(fp,"%d\t%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d",snum,p1->num,p1->name,p1->quale,p1->time,p1->credit,p1->thtime,p1->extime,p1->term,p1->alnum);

fclose(fp);

printf("已保存至“选修信息文件.txt”\n");

}

else

p1=p1->next;

}while(p1=NULL);

第4章详细设计

4.1程序中使用的数据结构

链表的使用

structstu//声明结构体类型structstudent

{

intnum;//课程编号

charname[20];//课程名称

charquale[10];//课程性质

inttime;//总学时

intcredit;//总学分

intthtime;//理论学时

intextime;//实验学时

intterm;//开课学期

intalnum;//已选本课程的学生人数

structstu*next;

};

4.2函数列表

structstu*creat(intam);//创建链表,录入课程信息

voidoutput(structstu*p);//声明输入课程信息的函数,按课程编号查询

voidinquire(structstu*p,intn);//声明查询课程的函数

voidstu_classes(structstu*p,intnum);//声明保存文件的的函数

voidinquire_stu(structstu*p,intnumb);//查询学生选课信息

voidsave_inf(structstu*p);//声明保存课程信息函数

voidread_inf(structstu*p);//声明读出课程信息的函数

voidreset();//声明清除界面函数

4.3各阶段运行结果:

主界面的输出:

图3.1

数据的输入:

图3.2

数据的输出:

删除信息:

图3.4

选课并保存:

图3.5

查询选课信息:

图3.6

保存课程信息:

图3.7

存的文件:

读取以保存的文件:

图3.8

5.4出现的问题和解决的方法

出现问题:

无法从主函数中调用其他函数,有时无法返回一个正常的值,在删除模块式,展示的不是自己要查询的数据,单删除后删除的却是改组数据。

解决方法:

请教他人。

出现问题:

从文件读入函数读入时总会读入乱码

解决方法:

专门写了一个想文件中输入数据的函数,用此函数来向文件里输入数据,输入数据后在文件中就不在是乱码了。

读取也方便了。

第5章心得体会

一周的课程设计很快结束了,因为大一时没有好好准备课设所以课设没有过需要重修,经过这次的重做才明白许多以前不明白的道理。

经过这次次的课程设计,它使我更加深刻地体会到c语言程序编写过程的严谨与细致,还有就是无论做任何事都要有耐心。

当然团队合作也是非常重要的一个环节,这会使你在学习过程中倍感轻松,所以在此次课程设计过程中,通过虚心请教同学们,共同努力,终于完成了这个设计。

一个程序的过程就是解决一个实际问题的过程,从解决实际问题的角度,我们可以这样来看:

首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出完成从输入到输出的要求是什么;在次我们必须捋清思路,逐一的解决问题的各个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数,然后确定处理过成一步一步的完成。

参考文献

《C语言程序设计》,谭浩强,清华大学出版社

《C语言程序设计课程设计》,刘振安,机械工业出版社

 

源代码:

#include

#include

#include

#defineNULL0

#defineN2//定义共5门课程

structstu//声明结构体类型structstudent

{

intnum;//课程编号

charname[20];//课程名称

charquale[10];//课程性质

inttime;//总学时

intcredit;//总学分

intthtime;//理论学时

intextime;//实验学时

intterm;//开课学期

intalnum;//已选本课程的学生人数

structstu*next;

};

intmain(void)

{

structstu*creat(intam);//创建链表,录入课程信息

voidoutput(structstu*p);//声明输入课程信息的函数,按课程编号查询

voidinquire(structstu*p,intn);//声明查询课程的函数

voidstu_classes(structstu*p,intnum);//声明保存文件的的函数

voidinquire_stu(structstu*p,intnumb);//查询学生选课信息

voidsave_inf(structstu*p);//声明保存课程信息函数

voidread_inf(structstu*p);//声明读出课程信息的函数

voidreset();//声明清除界面函数

structstu*head;

intM,n,num,numb,fail;

loop:

printf("\n");

printf("学生选修课程系统\n");

printf("学号:

姓名:

班级:

\n");

printf("\n");

printf("\n");

printf("1:

创建课程信息表\n");

printf("2:

课程信息输出\n");

printf("3:

查询课程信息\n");

printf("4:

学生选修课程\n");

printf("5:

查询学生选修课程\n");

printf("6:

保存课程信息到磁盘\n");

printf("7:

从磁盘文件中读出课程信息\n");

printf("8:

退出\n");//菜单形式的主界面

printf("\n");

printf("请输入功能号1-8:

");//提示输入功能号

scanf("%d",&M);

if(M==1)

{

if(fail==1)//判断是否创建列表

{printf("已经创建列表,请选择其他功能!

\n");

gotoloop;//返回初始界面

}

else

head=creat(N);//使用列表,录入信息

fail=1;

//reset();//清除界面

}

else

if(M==2)

{

if(fail==1)//判断是否创建列表

{output(head);reset();}//输入信息,清除界面

else

printf("没有数据,请先录入信息!

\n");

gotoloop;//返回初始界面

}

else

if(M==3)

{

if(fail==1)//判断是否创建列表

{inquire(head,n);reset();}//查询信息函数,清除界面

else

printf("没有数据,请先录入信息!

\n");

gotoloop;//返回初始界面

}

else

if(M==4)

{

if(fail==1)

{stu_classes(head,num);reset();}//形成信息并保存,清除界面

else

printf("没有数据,请先录入信息!

\n");

gotoloop;//返回初始界面

}

else

if(M==5)

{

if(fail==1)

{

inquire_stu(head,numb);//查询信息

fail=2;

reset();//清除界面

}

else

printf("没有数据,请先录入信息!

\n");

gotoloop;//返回初始界面

}

else

if(M==6)

{

if(fail==2)

{

save_inf(head);//保存文件

fail=3;

reset();//清除界面

}

else

printf("没有选课,请先选课!

\n");

gotoloop;//返回初始界面

}

else

if(M==7)

{

if(fail==1||fail==2||fail==3)

{read_inf(head);reset();}

else

printf("没有数据,请先录入信息!

\n");

gotoloop;//返回初始界面

}

else

if(M==8)

exit(0);//退出程序

else

printf("输入错误\n");//错误提示

gotoloop;//转至功能号的输入

return0;

}

structstu*creat(intam)//创建链表

{

inti=1;am=N;

structstu*cp1,*cp2,*chead;

printf("\t请输入以下信息:

(名称和性质请输入小写字母,其余均为数字)\n");

printf("课程的编号名称性质总学时总学分理论学时实验学时开课学期已修本课的人数:

");

printf("\n");

do

{

cp1=(structstu*)malloc(sizeof(structstu));

if(i==1)chead=cp2=cp1;

elsecp2->next=cp1;

scanf("%d%s",&cp1->num,&cp1->name);

scanf("%s%d%d%d",&cp1->quale,&cp1->time,&cp1->credit,&cp1->thtime);

scanf("%d%d%d",&cp1->extime,&cp1->term,&cp1->alnum);

cp2=cp1;

fflush(stdin);//刷新scanf()函数缓冲,防止自动循环

i++;

}while(am>=i);

cp2->next=NULL;

return(chead);

}

voidoutput(structstu*p)//定义输出信息函数

{

inti;

structstu*p1;

p1=p;

printf("编号名称性质总学时总学分理论学时实验学时开课学期已修本课的人数\n");

for(i=1;p1!

=NULL;i++)

{

printf("%d%s%s\t%d\t%d\t%d\t%d\t%d\t%d",p1->num,p1->name,p1->quale,p1->time,p1->credit,p1->thtime,p1->extime,p1->term,p1->alnum);

printf("\n");

p1=p1->next;

}

}

voidinquire(structstu*p,intn)//定义查询信息函数

{

printf("输入要查询的编号:

");

scanf("%d",&n);

structstu*p1;

p1=p;

printf("您所查询的信息是:

\n");

do

{

if(p1->num==n)

{

printf("编号名称性质总学时总学分理论学时实验学时开课学期已修本课的人数\n");

printf("%d%s%s\t%d\t%d\t%d\t%d\t%d\t%d",p1->num,p1->name,p1->quale,p1->time,p1->credit,p1->thtime,p1->extime,p1->term,p1->alnum);

printf("\n");

p1=p1->next;

}

else

p1=p1->next;

}while(p1!

=NULL);

}

voidstu_classes(structstu*p,intnum)//定义学生选课信息的函数,并保存至"选修信息文件.txt"

{

intsnum;

structstu*head,*p1;

p1=p;

printf("请输入学生学号:

");

scanf("%d",&snum);

printf("输入课程编号:

");

scanf("%d",&num);

do

{

if(p1->num=num)

{

FILE*fp;

fp=fopen("选修信息文件.txt","w");

fprintf(fp,"学生学号课程编号名称性质总学时总学分理论学时实验学时开课学期已修本课的人数\n");

fprintf(fp,"%d\t%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d",snum,p1->num,p1->name,p1->quale,p1->time,p1->credit,p1->thtime,p1->extime,p1->term,p1->alnum);

fclose(fp);

printf("已保存至“选修信息文件.txt”\n");

}

else

p1=p1->next;

}while(p1=NULL);

}

voidinquire_stu(structstu*p,intnumb)//定义查询学生信息的函数

{

intsnum;

printf("请输入学号:

");

scanf("%d",&snum);

structstu*head,*p1;

p1=p;

printf("学号课程编号课程名称\n");

printf("%d\t%d\t%s",snum,p1->num,p1->name);

printf("\n");

}

voidsave_inf(structstu*p)//定义保存课程信息的文件

{

inti;

structstu*p1,*head;

p1=p;

FILE*fp;

fp=fopen("课程信息.txt","w");

for(i=0;p1!

=NULL;i++)

{

fprintf(fp,"课程编号名称性质总学时总学分理论学时实验学时开课学期已修本课的人数\n");

fprintf(fp,"%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",p1->num,p1->name,p1->quale,p1->time,p1->credit,p1->thtime,p1->extime,p1->term,p1->alnum);

p1=p1->next;

}

fclose(fp);

printf("已保

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2