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 语句实现函数的调用:
管理员登录
i=3
是否
i>0
输入密
是否
进行码匹对
按随意键进入管理员
[ 程序]
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);
if(!strcmp(s,password))
学生登录deldeldel
按 1-6 数字键进入各
1、阅读所有课程
2、盘问课程信息
进入所选
创建链
输当选修课程信息(num,name,kind,st
是
Num!=0
p=(SUB
*)malloc(size);
p->num=num;
strcpy(p->name,name
);
strcpy(p->kind,kind
);
否是
Head==NUL
Tail->nex
Head=
Scanf(num,name,ki
Tail->next=NU nd,&stime,&ttime,否
创建完
阅读所有
SUB *ptr;
head=NULL;
readfile()
是否
Head==NUL
Printf(NO
输出课程信息
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,&ptr->ttime,&ptr->etime,&ptr->score,&ptr-> term);
printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->nam
e,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr
->term);
}
system("pause");
}
( 六) 盘问模块
盘问模块主要用于管理员功能中的“盘问课程”和学生功能模
块中的“盘问所有课程”,盘问模块共分为三个盘问方法:按课程名称查找,按课程性质查找和按学分查找switch 语句中,每一个case
插入链表
语句就是一中盘问方法:
SUB *p1,*p2;
p1=subj;课程信息查
是否
head==NUL按1-4 数字键进入
head=p1;是否
1、按课程名称查
head->next=NUL
p2=head;p2;找
是否
p2->next==N进入所选
[ 程序]
p2->next=subj;
eturn subj->next=NULL
void search() ;
C语言课程设计学生选修课程系统设计newSub=(SUB*)malloc(sizeof(SUB));
printf( “选修成功!
fscanf(fp,&newSub->num,newSub->na me,newSub->kind,&newSub->stime,&n printf("\n以上信息全
ewSub->ttime,&newSub->etime,&newS 部保存在 '' 中\n")
fclose(fp)
删除选修
保存文
SUB
系统进行检测所要保
fprintf(fp,"*p1,*p2;
插入课程
课程编号课程名称
课程性质SUB *ptr,*subj;实验
总学时讲课学时
printf(输入想要删除的课程编
int
size=sizeof(SUB);
p=head;p;p=p->ne
进行编号查找并
是否
ch!=
printf("\n连续删除请按回车
fprintf(fp,"%5d%12s%9s%9
输入(课程信息、课程编号、
d%9d%11d%11d%7d\n",p-
>nu 课程名称、课程性质、总学
m,p->name,p->kind,p->sti
myInsert(subj);
printf("\n\n连续插入请按回车
printf(" 创立后的信
\ C 语言课程设计报告
息已放入''文件中
ch1=getchar()Return
;
system("pause")
洁了然的程序菜单。
程序主要采纳了六组层次不一样的菜单,互相独立
C语言课程设计学生选修课程系统设计
又互相联系,奇妙相接,吻适用户的使用习惯与思想。
2.人性化的程序提示语言,程序提示语言较人性化,不但大多
为祈使语句、疑问句,并且提示明确,拥有较强的明确的指导作用。
程序提示不但有条不紊,提示方式多样,并且提示信息有条不紊,更
加有益于用户顺利、正确地进行程序的操作。
3.智能化的模块设计。
程序的智能化主要表此刻减少了好多人
工操作。
如功能模块操作结束后,均会返回主菜单进行下一模板的运转,并提示能否再进行近似的操作,这样给用户带来了操作的方便,
大大提升了学生选课的效率。
本程序达到了 C语言课程设计题目的所有要求。
即本程序( 1)系一致菜单方式工作( 2)课程信息和学生选课信息录入功能(课程信息用文件保存输入( 3)课程信息阅读功能——输出( 4)盘问功能(最少一种盘问方式)——算法( 5)按学分盘问( 6)某门课程学生选修状况(可选项)的功能要求。
与此同时,程序各模块开发设计依照了程序的详尽实质的使用
情形,而有所改进,使其更拥有适用性。
【程序的弊端】
主要表此刻以下四点:
1.程序固然经过多次精简,但不过是形式上、小范围的精简,
仍
未获得实质上的精简,即未找到更加简单、更加高效、更加合
理、更小占用的资源的算法。
2.程序依旧存在不合理的地方,比方程序某些部分输入错误解
以致程序中断或转向其余功能模块,即程序建议用户注意提示,进行合理的正确的输入,这样更有益于管理工作。
3.程序功能依旧不够完美。
比方信息表达方式不丰富,比较单一,缺乏图片、音乐等元化表达方式。
附录(源程序代码)
#include ""
#include ""
#include ""
#include""
void prin1();
void choose(); typedef struct subjects {
int num;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,&ptr->ttime,&ptr->etime,&ptr->score,&ptr-> term);
printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->nam e,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr ->term);
}
system("pause");
}
void*myInsert(SUB*subj)管理员身份登录(password 1)\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;
}。