课程设计选题管理程序.docx
- 文档编号:20344247
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:16
- 大小:96.60KB
课程设计选题管理程序.docx
《课程设计选题管理程序.docx》由会员分享,可在线阅读,更多相关《课程设计选题管理程序.docx(16页珍藏版)》请在冰豆网上搜索。
课程设计选题管理程序
课程设计选题管理程序
摘要:
该程序主要部分有:
①主界面,用于选择需要进行的工作。
②学生需要的功能:
查看自己信息,选课,查看课程信息③教师需要功能:
查询选课状况,查询课程状况.④添加课程设计题目、添加学生信息。
利用C语言完成了这个程序,初步的实现了课程设计的管理与报名。
关键字:
课程设计信息管理报名
引言:
学校中开展课程设计的科目数不胜数,很多不必要的工作,如简易的通过纸、笔来统计同学所选科目及更改情况,不仅效率底下,而且容易出错,一套课程设计选课管理系统可以方便的解决这一问题。
1.需求分析:
①学生需要经常进行修改自己的选课情况,同时需要查看全部课程情况②教师需要实时的登录系统统计信息,调整学生状态。
③需要添加学生信息,课程设计信息。
2.数据结构设计
//采用链表进行存储
typedefstructstudent
{
charname[10];//姓名
charstuID[10];//学号
chargrade[10];//所在年级班级
intOndesign;//选择课程设计代号
intstatus;//选课状态(0,1,2)
structstudent*next;
}student,*ptrstu;
//同样采用链表进行存储
typedefstructdesign
{
charname[10];//课程设计名称
intdesID;//课程设计代号
charinfo[20];//相关信息
structdesign*next;
}design,*ptrdesign;
3.算法设计
3.1登陆系统
3.1.1主界面
#include"stdio.h"
#include"structFile.h"
#include"function.h"
#include"InitFunction.h"
voidmain()
{
inti;
students;
designd;
s.next=NULL;
d.next=NULL;
Init(&s,&d);
while
(1)
{
i=Welcome();
//程序结束再进行保存
if(i==5)
{
Save(&s,&d);
break;
}
switch(i)
{
case1:
Student(&s,&d);break;
case2:
Teacher(&s,&d);break;
case3:
InitDesign(&d);break;
case4:
InitStudent(&s,&d);break;
default:
printf("请按照提示编号进行输入^\n");
}
}
}
3.1.2操作提示
intWelcome()
{
intinput;
printf("————————————————————\n");
printf("***********欢迎进入选课系统**************\n");
printf("-----------------------------------------\n");
printf("|\t\t1.学生登录\t\t|\n");
printf("|\t\t2.教师登录\t\t|\n");
printf("|\t\t3.录入课程信息\t\t|\n");
printf("|\t\t4.录入学生数据\t\t|\n");
printf("|\t\t5.退出系统\t|\n");
printf("-----------------------------------------\n");
printf("输入所属类别:
");
scanf("%d",&input);
returninput;
}
3.2学生登录、选课、查询
voidStudent(ptrstustu,ptrdesigndes)
{
charid[10];
ptrstus;
printf("进入学生系统...\n");
printf("输入您的学号:
");
scanf("%s",id);
s=SearchStudent(stu,id);
if(s==NULL)
printf("学生你好,你输入的学号并不存在,即将退出...\n");
else
ChooseDesign(s,des);
}
//学生选课
intChooseDesign(ptrstustu,ptrdesigndes)
{
ptrdesignp=des->next;
charc;
printf("进入学生系统成功:
您的信息如下:
\n");
InfoStudent(stu);
printf("\n所有供你选择的科目如下:
\n");
while(p->next!
=NULL)
{
InfoDesign(p);
p=p->next;
printf("\n");
}
printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
if(stu->status==0)
printf("目前尚未进行选课,输入课程编号选择兴趣课程,不进行选择请按0:
\n");
elseif(stu->status==1)
printf("当前选课为:
%d,如需修改请输入新的编号,不进行选择请按0\n",stu->Ondesign);
elseif(stu->status==2){
getchar();
printf("选课已被老师确认^按任意键退出功能");
getchar();
return1;
}
while
(1){
scanf("%d",&c);
//判断选择结果
if(c==0){
printf("退出课程选择...\n");
break;
}
else
{
//未找到课程
if(!
SearchDesign(des,c))
{
printf("并未找到输入编号的课程...请重新确认.\n");
//return1;
}
//更新状态
else
{
printf("选择课程%d\n正在修改您的信息\n退出\n",c);
stu->Ondesign=c;
stu->status=1;
printf("++++++++++++++++++++++++++++++++++++++++++++++\n");
break;
}
}
}
}
3.3教师管理
voidTeacher(ptrstustu,ptrdesigndes)
{
intinput;
charinputc;
ptrdesignp=des->next;
ptrstus;
charin[10];
printf("————————————————————\n");
printf("*************进入教师系统**************\n");
printf("-----------------------------------------\n");
printf("|\t\t1.学生信息查询\t|\n");
printf("|\t\t2.课程信息查询\t|\n");
printf("-----------------------------------------\n");
printf("输入所属类别:
");
scanf("%d",&input);
if(2==input)
{
while(p->next!
=NULL)
{
InfoDesign(p);
p=p->next;
printf("\n");
printf("-----------------------------------------\n");
}
printf("按任意键返回主菜单:
");
getchar();
getchar();
}
if(1==input)
{
while
(1){
/*printf("请输入要查询学生的学号,退出请输入exit,输入ALL进行全体学生搜索:
");
scanf("%s",in);
if(strcmp(in,"exit")==0)
break;
if(strcmp(in,"ALL")==0)
{
s=stu->next;
while(s)
{
InfoStudent(s);
s=s->next;
printf("\n");
printf("-----------------------------------------\n");
*/
printf("请输入要查询学生的学号:
");
scanf("%s",in);
s=SearchStudent(stu,in);
if(s==NULL){
printf("学号输入有误\n");
continue;
}
p=SearchDesign(des,s->Ondesign);
InfoStudent(s);
printf("\n");
InfoDesign(p);
getchar();
printf("\n是否选定该生课程设计状态?
:
Y/N");
scanf("%c",&inputc);
if('Y'==inputc||'y'==inputc)
s->status=2;
}
}
}
3.4导入学生信息
voidInitStudent(ptrstustu,ptrdesigndes)
{
charnum[10];
ptrstus=stu,p=stu;
intchoose;
while
(1)
{
printf("输入学号,如果学号已存在则为修改,输入exit退出:
\n");
scanf("%s",num);
if(strcmp(num,"exit")==0)
break;
//循环结束则证明未找到学生
while(s)
{
if(s->next==NULL)
p=s;
if(strcmp(s->stuID,num)==0)
{
printf("进入修改模式\n即将修改信息:
");
InfoStudent(s);
printf("输入欲修改的项目:
1.姓名\n\t2.学号\nt\t3.年级\n\t4.所选课程\n\\n");
fflush(stdin);
scanf("%d",&choose);
fflush(stdin);
printf("进行修改:
");
scanf("%s",&num);
switch(choose)
{
case1:
strcpy(s->name,num);break;
case2:
strcpy(s->stuID,num);break;
case3:
strcpy(s->grade,num);break;
case4:
ChooseDesign(s,des);break;
default:
printf("输入有误,请验证");
}
printf("修改结果为:
");
InfoStudent(s);
printf("\n");
break;
}//EndIF
s=s->next;
}//EndWhile
//未找到学生信息_添加
if(s==NULL){
static_stunum++;
s=(ptrstu)malloc(sizeof(student));
p->next=s;
strcpy(s->stuID,num);
printf("输入该生姓名:
");
scanf("%s",s->name);
//getchar();
printf("输入该生年级:
");
scanf("%s",s->grade);
//getchar();
s->Ondesign=0;
s->status=0;
s->next=NULL;
}
s=p=stu;
}//EndWhile
}
3.5添加、修改课程设计
voidInitDesign(ptrdesigndes)
{
charname[20];
ptrdesigns=des,p=des;
intchoose,in;
while
(1)
{
fflush(stdin);
printf("输入课程设计名称,如果该课程设计已经存在,则进入修改,输入exit退出:
\n");
//fflush(stdin);
scanf("%s",name);
if(strcmp(name,"exit")==0)
break;
//循环结束则证明未找到课程
while(s)
{
if(s->next==NULL)
p=s;
if(strcmp(s->name,name)==0)
{
printf("\n进入修改模式\n信息如下:
\n");
InfoDesign(s);
printf("\n输入欲修改的项目:
\n\t1.设计名称\n\t2.设计编号\n\t3.课程信息\n\n");
fflush(stdin);
scanf("%d",&choose);
fflush(stdin);
switch(choose)
{
case1:
printf("输入课程设计名称:
");
scanf("%s",&name);
strcpy(s->name,name);
break;
case2:
printf("输入课程编号:
");
scanf("%d",&in);
s->desID=in;
break;
case3:
printf("输入课程信息:
");
scanf("%s",&name);
strcpy(s->info,name);
break;
default:
printf("输入有误,请验证");
}
printf("修改结果为:
\n");
InfoDesign(s);
printf("\n");
break;
}//EndIF
s=s->next;
}//EndWhile
//未找到课程信息_添加
if(s==NULL){
s=(ptrdesign)malloc(sizeof(design));
p->next=s;
strcpy(s->name,name);
printf("输入课程时间编号:
");
//fflush(stdin);
scanf("%d",&(s->desID));
//getchar();
printf("输入课程相关信息:
");
//getchar();
scanf("%s",name);
strcpy(s->info,name);
s->next=NULL;
static_desnum++;
}
s=p=des;
}//EndWhile
}
4.程序实现及测试:
4.1登陆界面:
4.2登陆课程信息:
4.3进入教师系统:
4.4查询当前已经添加课程:
4.5查询学生状态:
5.结束语:
5.1不足之处:
课程设计及人员的添加与保存比较简易,2次添加出现错误,需要提高程序的实用性,对于错误输入考虑不足,健壮性较差。
5.2设计体会:
经历了这次设计,明白了虽然想着很简单的代码,实践起来由于不了解或者遗忘掉会面临许多困难,让我开始反思自己学的知识的透彻度很低,关于指针的问题再次深刻了自己的理解,对于程序=数据结构+算法的理解开始有了改变,了解到算法与代码之间的差距。
通过实验,亲自体验了在线性表与链表之间的选择,对于这两者的选择有了自己的认识。
完成这个系统面临着许多问题,虽然很艰难,但在使它成功运行的过程所学会的,让我更加深刻的理解了数据结构的意义,我加深了对数据结构的理解
参考文献:
1.谭浩强《C语言程序设计》清华大学出版社2005年7月
2.严蔚敏吴伟民《数据结构》清华大学出版社2001年1月
3.刘光然《数据结构实践训练教程》南开大学出版社2009年4月
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 选题 管理程序