C语言课程设计报告学生选修课程管理系统.docx

上传人:b****8 文档编号:30037351 上传时间:2023-08-04 格式:DOCX 页数:21 大小:105.89KB
下载 相关 举报
C语言课程设计报告学生选修课程管理系统.docx_第1页
第1页 / 共21页
C语言课程设计报告学生选修课程管理系统.docx_第2页
第2页 / 共21页
C语言课程设计报告学生选修课程管理系统.docx_第3页
第3页 / 共21页
C语言课程设计报告学生选修课程管理系统.docx_第4页
第4页 / 共21页
C语言课程设计报告学生选修课程管理系统.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

C语言课程设计报告学生选修课程管理系统.docx

《C语言课程设计报告学生选修课程管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告学生选修课程管理系统.docx(21页珍藏版)》请在冰豆网上搜索。

C语言课程设计报告学生选修课程管理系统.docx

C语言课程设计报告学生选修课程管理系统

C语言课程设计报告--学生选修课程管理系统

1程序目标及功能---------------------------------------------------------------1

1.1课题背景-----------------------------------------------------------------2

1.2系统功能---------------------------------------------------------------2

1.3设计要求---------------------------------------------------------------3

2程序功能模块组成及流程图-----------------------------------------------3

2.1系统功能模块-----------------------------------------------------------5

2.2各模块流程图-----------------------------------------------------------6

3程序主要数据结构及函数列表---------------------------------------------8

3.1程序中使用的数据结构----------------------------------------------8

3.2函数列表--------------------------------------------------------------10

4程序代码及运行结果-------------------------------------------------------12

5总结与体会------------------------------------------------------------------15

 

1、程序目标及功能

1.1、课题背景

当今社会是一个信息时代,计算机技术发展迅速,同时信息的自动处理以及网络式的信息交互方式越来越被人们认可和运用,让计算机来管理学生的信息是现在各个高校都在积极进行的工作之一,也是高校教学管理工作的重要内容之一。

网上选课与传统的选课方式相比更节约资源,同时,随着学生选课自主权的增加,网上选课有效的避免了许多不良现象,使教学更加透明。

1.2、系统功能

课程信息录入。

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

课程信息输出。

输出所有课程信息。

查询课程。

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

学生选修课程。

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

查询学生选修的课程。

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

保存课程信息到磁盘文件。

建立一个磁盘文件,把所建立的课程表写入文件。

从磁盘文件中读出课程信息。

1.3、设计要求

假定有n门课程,每门课程有课程编号、课程名称、课程性质(专业选修课、公选课)、总学时、总学分、理论学时、实验学时、开课学期、已选修本课程的学生人数等信息;每门课最多允许60个学生选修。

②选修信息文件,用来保存每个学生选修课程的信息,每条记录包括:

学生的学号、所选修的课程编号和课程名称。

③系统以菜单方式工作(程序主界面包括程序名称及编程者学号、姓名、班级;同时要求输入功能号码,选择进入功能模块程序)。

用函数分别实现动态链表的建立、动态链表输出等功能。

界面友好,程序中加入必要的注释。

函数功能要划分好(结构化程序设计);函数要求使用指针作形参。

学生选修一门课后,要同时更新课程信息和选修信息文件。

2、程序功能模块组成及流程图

2.1系统功能模块

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

1:

创建课程信息:

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

2:

课程信息输出:

输入所有课程信息。

3:

查询课程信息:

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

4:

学生选修课程:

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

5:

查询学生选修课程:

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

6:

保存课程信息到磁盘:

建立磁盘文件,把所建立的课程表写入文件。

7:

从磁盘文件中读出课程信息:

从磁盘文件中读出课程信息并输出,显示主界面。

8:

退出:

结束程序,退出系统。

2.2各模块流程图

 

 

选择模块

创建课程信息

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;

学生选课

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);

3、程序主要数据结构及函数列表

3.1程序中使用的数据结构

链表的使用

structstu//声明结构体类型structstudent

{

intnum;//课程编号

charname[20];//课程名称

charquale[10];//课程性质

inttime;//总学时

intcredit;//总学分

intthtime;//理论学时

intextime;//实验学时

intterm;//开课学期

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

structstu*next;

};

3.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、程序代码及运行结果

程序代码:

#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("*\t\t※1:

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

printf("*\t\t※2:

课程信息输出*\n");

printf("*\t\t※3:

查询课程信息*\n");

printf("*\t\t※4:

学生选修课程*\n");

printf("*\t\t※5:

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

printf("*\t\t※6:

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

printf("*\t\t※7:

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

printf("*\t\t※8:

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

printf("******************************************************\n");

printf("\n\n\t\t请输入功能号[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("已保存至“课程信息.txt”\n");

}

voidread_inf(structstu*p)//定义读出课程信息的函数

{

inti;

structstu*p1,*head;

p1=p;

FILE*fp;

if((fp=fopen("课程信息.txt","r"))==NULL)

{

printf("无法打开文件\n");

printf("请先建立文件\n");

}

for(i=1;p1!

=NULL;i++)

{

fread(&p,sizeof(head),1,fp);

printf("%d%s%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);

}

voidreset()//定义清楚界面函数

{

printf("按任意键继续");

getch();

system("CLS");

}

各阶段运行结果:

主界面的输出:

数据的输入:

数据的输出:

错误提示:

 

5、总结与体会

这次的课程设计实验是对我们进入大学以来学习C语言结果的一次大考验。

自己动手,发现问题和解决问题。

并发现了许多自己的不足,平时没掌握的知识在实践中暴漏,经过不断的思考,查阅书籍和上网查资料及上机运行,解决了大部分问题,还稍微有些小问题。

但是,我相信经过深入的的学习,一定能把它解决好。

当今计算机应用在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。

 

我不仅巩固《C语言程序设计》课程学习的内容,掌握设计的基本方法,强化上机动手能力,还进一步掌握以下了知识:

数据类型、循环控制、函数的定义及调用、结构体及指针、文件操作、编译预处理等

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1