最新C语言课程设计报告学生选修课程管理系统.docx
- 文档编号:11286544
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:21
- 大小:110.73KB
最新C语言课程设计报告学生选修课程管理系统.docx
《最新C语言课程设计报告学生选修课程管理系统.docx》由会员分享,可在线阅读,更多相关《最新C语言课程设计报告学生选修课程管理系统.docx(21页珍藏版)》请在冰豆网上搜索。
最新C语言课程设计报告学生选修课程管理系统
(1)位置的优越性
在现代文化影响下,当今大学生对新鲜事物是最为敏感的群体,他们最渴望为社会主流承认又最喜欢标新立异,他们追随时尚,同时也在制造时尚。
“DIY自制饰品”已成为一种时尚的生活方式和态度。
在“DIY自制饰品”过程中实现自己的个性化追求,这在年轻的学生一代中尤为突出。
“DIY自制饰品”的形式多种多样,对于动手能力强的学生来说更受欢迎。
5、就业机会和问题分析
(二)创业优势分析
1、荣晓华、孙喜林《消费者行为学》东北财经大学出版社2003年2月
(3)年龄优势
(二)创业弱势分析
10、如果学校开设一家DIY手工艺制品店,你希望_____
加拿大beadworks公司就是根据年轻女性要充分展现自己个性的需求,将世界各地的珠类饰品汇集于“碧芝自制饰品店”内,由消费者自选、自组、自制,这样就能在每个消费者亲手制作、充分发挥她们的艺术想像力的基础上,创作出作品,达到展现个性的效果目录
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("CL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 语言 课程设计 报告 学生 选修 课程 管理 系统