文档库 最新最全的文档下载
当前位置:文档库 › 选课系统-课设报告

选课系统-课设报告

选课系统-课设报告
选课系统-课设报告

*******************

实践教学

*******************

兰州理工大学

计算机与通信学院

2011年春季学期

C程序设计课程设计

题目:学生选课系统

专业班级:软件一班

姓名:黄锋

学号:10240506

指导教师:王连相

成绩:

摘要

学生选课系统是C语言应运的一个简单实例,它能实现选课信息的输入、删除、查找、保存等功能。该系统由七个模块组成,各模块的完成分别由指针、数组、链表等实现,最后通过主函数将各个模块加以联结组成此简单的学生选课管理系统。该系统有查找方便、可靠性高、存储量大、保密性好等优点,是一个教育单位不可缺少的部分。

关键词:C语言;学生;信息;选课

目录

一、需求分析 (1)

二、总体设计 (2)

三、详细设计 (3)

1、数据定义 (3)

2、算法流程图 (4)

四、编码 (7)

五、测试 (9)

六、设计总结 (9)

致谢 (14)

参考文献 (15)

一、需求分析

经过简单的调研分析,可以基本确定学生选课系统主要用来实现对选课信息的输入、删除、保存、查找等功能。

1·录入课程信息

教务系统对课程进行安排。

2·课程管理

用户可以查看新增课程和已删除课程。

3·录入学生信息

学生可以输入自己的基本信息。

4·学生信息管理

系统可以对学生输入的信息进行管理,同时用户也可以进行自我信息更改。5·学生选课

学生可以查询已选课程和可选课程,然后进行选课。

6·系统信息查看及及存储

用户可以查看课程信息和学生信息以及及存储自己信息。

7·退出系统

用户完成在学生成绩管理系统的一系列操作后要离开,则就需退出系统。

二、总体设计

课程管理学生选课系统

录入课程信息录

退

三、详细设计

1、数据定义

struct couse * head1;

struct student * head2;

struct couse//课程信息结构体

{

int num1;

char name1[20];

int score;

int nelepeo;//课程已选人数

int Melepeo;//课程人数上限

struct couse * next;

};

struct student//学生信息结构体

{

int num2;

char name2[20];

int nelenum[50];//已选课程编号

int nelen;//已选课程数量

struct student * next;

}; FILE *fp; //文件指针变量

int i,j // 定义变量i,j

char name[4],code[7];//定义数组变量

2、算法流程图

1)保存函数Save()的算法流程图

FILE *fp;

(fp=fopen(

outfile,"w

printf("can not open

printf("\nSaving

p!=NULL

fwrite(p,sizeof(SALAR

fclose(fp);

保存函数Save()的算法流程图如图2所示

注:out 为输出函数。

图2 查找的算法流程图

2)载入函数load 流程图

find 函数

out 函数

输入i 的值

sep 函数

J=-1

输出date is not

find

输出姓名,学号,成

图3 load 函数的流程图

load 函数

用“rb”方式打开“stu_list”文件

fread(&stu[i],sizeof(struct student_type))

out 函数

关闭文件

i

四、编码

第一步:分析问题

根据课题,调研分析此程序要实现那些功能。并确定程序的总体设计方案。第二步:画出程序的基本轮廓

根据程序的总体设计方案画出程序的流程图,把一个较为复杂的问题拆分,也使程序的功能较为直观的呈现出来。

第二步:实现该程序

把整个问题拆分为若干个子模块,然后确定每个模块一个子功能。

五、测试

程序的主界面

·录入课程界面

课程管理界面

录入学生信息界面

学生信息管理界面

学生选课界面

系统信息查看及存储界面

六、设计总结

本期课设终于完成了,也许是第一次做课设,经验不足的缘故吧,总的感觉就是难。课设前期无从下手,经过知道老师的讲解才对这次课设有了初步的了解。课设虽然完成,但其中还有许多缺陷,比如源代码编写较短,因而系统功能简单;还有就是虽然有查找功能,但其中有漏洞,不能确定的查找出某个学生的信息,查找只是一个大体的范围。这些都是本次课设的不足之处。当然通过这次课设,我收获还是很大的,虽然这次的课设,程序不是完全由我们自己编写的,只是通过把一个相似的例子加以修改得到的。这些程序看起来比较容易,但要程序实现要求的几个功能却不容易。而且要看懂每一个函数也不是十分容易的。当然在修改程序的过程中也收获了许多以前忽略的东西。在修改的过程中巩固了基础,认识了自己以前常犯的错误,也发现了自己的不足之处。当然通过这次课程设计,也增加了我学习软件技术的兴趣,虽然还不明确软件技术包含的具体内容,但从C语言这门课程开始,已发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用基础知识。在具体操作中对这学期所学的C语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。发现上机实训的重要作用,特别是对数组和循环有了深刻的理解。通过实际操作,学会C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。

致谢

紧张又忙碌的课设学习终于结束了,在本次课设中我们也取得了很大的成就。在此衷心感谢学院安排这次课设,让我们又多了一次交流学习的机会,更好的巩固了所学知识,拓展了知识面。本次课设能取得成功,要感谢学院老师的帮助以及张墨逸老师的热心指导。在课设期间,指导老师帮助我们分析思路,查找错误,修正不足,才使得我们的系统做得更加完善。其次是要感谢和我同组的同学,感谢他们对我学习的帮助,对我在期间工作的指导与支持。

参考文献

1.姜灵芝,余健. C语言课程设计案例精编.北京:清华大学出版社,2008 2.王新,孙雷. C语言课程设计.北京:清华大学出版社,2009

3.游洪跃、彭骏、谭斌.C语言程序设计实验与课程设计教程.北京:清华大学出版社,2011

4.王连相.C/C++程序设计上机指导与测试. 北京:中国铁道出版社,2006 5.C语言函数手册,机械工业出版社,1999

附录:

#include

#include

int N1,N2,kk1,kk2,kk3;

struct couse * head1;

struct student * head2;

struct couse//课程信息结构体

{

int num1;

char name1[20];

int score;

int nelepeo;//课程已选人数

int Melepeo;//课程人数上限

struct couse * next;

};

struct student//学生信息结构体

{

int num2;

char name2[20];

int nelenum[50];//已选课程编号

int nelen;//已选课程数量

struct student * next;

};

void Ms()

{

for(kk1=0;kk1<1100;kk1++)

for(kk2=0;kk2<1200;kk2++)

for(kk3=0;kk3<1200;kk3++);

}

void keyboardc()//录入课程子函数(从键盘录入)

{

struct couse *p1,*p2;

N1=0;

p1=p2=(struct couse*)malloc(sizeof(struct couse));

printf("课程编号\t课程名称\t学分\t课程人数上限\n");

scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo); p1->nelepeo=0;

head1=NULL;

while(p1->num1!=0)

{

N1=N1+1;

else p2->next=p1;

p2=p1;

p1=(struct couse * )malloc(sizeof(struct couse));

scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo);

p1->nelepeo=0;

}

p2->next=NULL;

}

void filec()//录入键盘子函数(从文件录入)

{

FILE * fp;

char filepath[20];

struct couse *p1,*p2;

N1=0;

printf("输入要读入的文件路径:");

getchar();

gets(filepath);

if((fp=fopen(filepath,"r"))==NULL)

{

printf("找不到%s文件!\n",filepath);

exit(0);

}

p1=p2=(struct couse*)malloc(sizeof(struct couse));

fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo); head1=NULL;

while(!feof(fp))

{

N1=N1+1;

if(N1==1)head1=p1;

else p2->next=p1;

p2=p1;

p1=(struct couse * )malloc(sizeof(struct couse));

fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo); }

p2->next=NULL;

}

void inputc()//录入课程主函数

{

int i;

printf("\t\t\t录入课程信息\n");

printf("\n1.从键盘录入\n");

printf("2.从文件录入\n");

相关文档