C语言课程设计学生选修课程系统设计

C语言课程设计学生选修课程系统设计
C语言课程设计学生选修课程系统设计

C语言课程设计学生选修

课程系统设计

The latest revision on November 22, 2020

学生选修课系统设计

一、设计目的

当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息系统的环境。计算机的最到好处的于利用它能够进行信息管理,使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。

尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好学生选课信息而设计的。

数据处理手工操作,工作量大,出错率高,出错后不易更改,造成了时间上的浪费。

基于这个问题,我认为有必要建立一个学生选课系统,使学生选课信息管理工作规范化、系统化、程序化,避免学生选课管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改选课情况。

二、题目说明

假定有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,&ptr->ttime,&ptr->etime,&ptr->score,&ptr->term);

printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr-

>name,ptr->kind,ptr->stime,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->kind,&newSub->stime,&newSub->ttime,&newSub->etime,&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

删除选修课程

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->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);

printf("创建后的信息已

放入''文件中\n");

system("pause");

插入课程信

息 SUB *ptr,*subj; int size=sizeof(SUB); char ch,ch1; ch!='

输入(课程信息、课程编号、

课程名称、课程性质、总学

分、授课学分、实践或上机学

ch1=getchar(); ch=getchar(); Return

myInsert(subj);

printf("\n\n 继续插入请按回车\ 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-

>name,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;

}

相关主题
相关文档
最新文档