C语言课程设计学生选修课程系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生选修课系统设计
一、设计目的
当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息系统的环境。计算机的最到好处的于利用它能够进行信息管理,使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好学生选课信息而设计的。
数据处理手工操作,工作量大,出错率高,出错后不易更改,造成了时间上的浪费。
基于这个问题,我认为有必要建立一个学生选课系统,使学生选课信息管理工作规范化、系统化、程序化,避免学生选课管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改选课情况。
二、题目说明
假定有n门课程,每门课程都有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供一下功能:
(1)系统以菜单方式工作;
(2)课程信息和学生信息的录入功能(课程信息有文件保
存)----输入;
(3)课程信息浏览功能----输出;
(4)查询功能(至少一种查询方式)---算法;
(5)按学分查询;
(6)某门课程学生选修情况(可选项)。
[提示]
数据结构可用结构体,包括课程和选秀两个结构体,其中课程结构体包括课程编号、课程名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期。选修结构体成员包括学号,课程编号,该结构体的建立主要是为了查询某门课程学生选修情况.。
三、数据结构设计
本系统的实现,全部采用链表这种数据结构,用链表实现课程的查找、添加、删除、课程的选修、追加选修的课程,课程信息采用结构体这种数据结构。
typedef struct subjects
{
int num;
管理员身份登录\n");
puts("\t\t\t\t2.以学生身份登录\n");
puts("\t\t\t\t3.退出");
puts("\n\n\t\t*******************************************\n");
printf("Chiose your number(1-3):[ ]\b\b");
scanf("%d",&n);
switch(n)
{
case 1:Mangers() ;break;
case 2:Students();break;
case 3:w=0;break;
default:;
}
}
while(w==1);
return 0;
}
(二) 管理员功能模块
管理员的功能一共有四个功能:浏览,查询,添加,删除课程,运用字符串处理函数处理密码的问题,用一个switch语句实现函数的调用:
[程序]
void Mangers()
{
int n,w=1,flag=0,i=3;
char s[8];
char password[7]="1";
do
{
printf("\n\nEnter password:");
scanf("%s",s);
deldeldel
n");
choose();
}
printf("课程编号课程名称课程性质总学时授课学时实践或上机学时学分开课学期\n");
while(!feof(fp))
{
ptr=(SUB*)malloc(sizeof(SUB));
fscanf(fp,"%d%s%s%d%d%d%d%d\n",&ptr->num,ptr->name,ptr->kind,&ptr->stime,&p tr->ttime,&ptr->etime,&ptr->score,&ptr->term);
printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->st ime,ptr->ttime,ptr->etime,ptr->score,ptr->term);
}
system("pause");
}
(六) 查询模块
查询模块主要用于管理员功能中的“查询课程”和学生功能模块中的“查询所有课程”,查询模块共分为三个查询方法:按课程名称查找,按课程性质查找和按学分查找
switch语句中,每一个case语句就是一中查询方法:
[程序]
void search()
读取文件
printf("请输入课程信息所在的文件名称:");
!feof(fp)
c=fgetc(fp))=='\n' !feof(f newSub=(SUB*)malloc(sizeof(SUB)); fscanf(fp,&newSub->num,newSub->name,newSub->k ind,&newSub->stime,&newSub->ttime,&newSub->et ime,&newSub->score,&newSub->term);
myInsert(newSub); fclose(fp);
选新课程 printf("输入要选修的课程的编号\n"); printf("如果确认输入完要选修的
课程的编号,请输入0"); 程序对输入的信息进行查找判断
printf(“选修成功! \n")
printf("\n 以上信息全部保存在''中\n")
p2->next==NULL
p2->next=subj; subj->next=NULL; break;
eturn head;
删除选修课程
SUB *p1,*p2; char ch,ch1;
int num
printf(输入想要删除的课程编号);
scanf("%d",&num);
进行编号查找并删除 printf("\n 继续删除请按回车\n");
printf("\n 结束删除课程按 0: "); 保存文件 系统进行检测所要保存的文件
fprintf(fp,"课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学
时 学分 开课学期\n"); p=head;p;p=p->next fprintf(fp,"%5d%12s%9s%9d%9d %11d%11d%7d\n",p->num,p->nam e,p->kind,p->stime,p->ttime,p->etime,p->score,p->term); fclose(fp);
printf("创建后的信息已
放入''文件中\n");
system("pause");
插入课程信息
SUB *ptr,*subj; int size=sizeof(SUB); char ch,ch1; ch!='
输入(课程信息、课程编号、课程名
称、课程性质、总学分、授课学分、
实践或上机学时)
ch1=getchar(); ch=getchar();
Return head; myInsert(subj);
printf("\n\n 继续插入请按回车\ C
语言课程设计报告 是 否