程序设计学生选修课程系统设计与实现

程序设计学生选修课程系统设计与实现
程序设计学生选修课程系统设计与实现

通达学院

程序设计

(2017/2018学年第1学期)

题目:学生选修课程系统设计与实现

专业计算机科学于技术(嵌入式)

学生姓名

班级学号

指导教师徐小龙

指导单位计算机学院·计算机科学与技术系日期 2017年10月27日

南京邮电大学通达学院

程序设计

指导教师成绩评定表

一、课题内容和要求

学生选修课程系统设计与实现

假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供以下功能:(1)系统以菜单方式工作

(2)课程信息录入功能(课程信息用文件保存)--输入

(3)课程信息浏览功能--输出

(4)查询功能:按学分查询、按课程性质查询

(5)学生可以选修课程

二、需求分析

本系统的功能模块如图所示

1.使系统以菜单方式工作:输出个菜单,用于显示以从文件中加载的

课程信息和若干个可选的功能选项。根据客户输入的选项来运行不同的功能,运行不同的函数。

2.录入课程信息:使用户可以将课程信息输入文件

3.浏览课程信息:使用户可以按照学分或者课程性质浏览文件中的课程信

4.进入选课操作:输入学号,姓名进行选课

5.统计选课情况:从选课文件中统计信息

三、概要设计

(1)主函数的设计

在主函数中按照提示输入相对应数字进入相应的操作,同时,在输入序号数字错误时,会自动提示“输入错误,请重新输入”,然后,重新输入一个数字,继续进行相应的操作。

(注:输入的数字要在0~5之内)

算法设计如下:

S1: 从键盘上输入一个0~5的数字,进入相应的操作

S2: 如果选择序号1,则进入课程信息录入操作

S3: 如果选择序号2,则进入浏览课程信息操作

S4: 如果选择序号3,则进入查询课程信息操作

S5: 如果选择序号4,则进入学生选择课程操作

S6: 如果选择序号5,则进入统计选课情况操作

S7: 如果选择序号0,则退出学生选课管理系统

S8: 如果选择除0~5的其他操作,则提示“输入错误,请重新输入”

然后返回S1

具体流程图如下:

(2)录入函数的设计

对于录入函数,就是在D盘建立一个“”文件,然后通过scanf从键盘上输入课程信息,再通过fprintf将输入的信息保存在文件中,关闭文件。

算法设计如下:

S1: 在D盘建立“”文件

S2: 提示让学生输入选课门数

S3: 从键盘上输入课程信息并保存

S4: 当指针指向文件尾部,返回S3 具体流程图如下:

(3) 浏览函数的设计

对于浏览函数,通过fscanf

读取文件中的课程信息,然后再通过

printf将信息输出

算法设计如下:

S1: 打开“”文件

S2: 读取文件中的信息

S3: 输出信息

S4: 当指针未指向文件尾部,返回S2具体流程图如下:

(4)查询函数的设计

对于查询函数,输入1或2选择查询方式,如果不是,则重新输入。

对于不同方式的查询,如果输入的方式与文件中有相符的,则输出查询结果

算法设计如下:

S1: 选择查询方式

S2: 如果方式是学分查询,输入想查询的学分,打开文件,未指向文件尾部,如果文件中存在,则输出查询结果

S3: 如果方式是课程性质查询,输入想查询的课程性质,打开文件,未指向文件尾部,读取文件信息,如果文件中存在,则输出查询结果S4: 如果方式数字不存在,则退出查询

具体流程图如下:

(5) 选课函数的设计

对于选课函数,先从键盘上输入学号,姓名,课程编号,课程名称,打开“”文件,如果,课程存在,则进入下一步,建立“”文件,将选课信息保存在文件中,退出。 算法设计如下:

S1: 输入选课信息,包括学号,姓名,课程编号,课程名称 S2: 打开文件“”

S3: 如果课程存在,则进行下一步 S4: 建立“”文件 S5: 保存选课信息

具体流程图如下:

(6)统计函数的设计

对于统计函数,打开“”文件,读取文件中的选课信息,输出文件中的选课信息,计数,关闭文件

算法设计如下:

S1: 打开“”文件

S2: 当未指向文件尾部,读取文件中的选课信息

S3: 输出选课信息同时计数

S4: 输出人数

S5: 结束

具体流程图如下:

四、详细设计

1.主函数:构造void main(),实现调用各个功能模块:

学生选课系统执行主流程如图所示,先执行主函数中显示菜单函数,通过循环和按键操作来执行相应的操作。按键的有效键值为0~5之间的任意数值,其他按

键为无效输入,会提示“输入错误,请重新输入”,同时,再次用scanf创造再

次输入的机会。各个按键的执行功能为:

“1”:录入选修课课程信,调用函数luru();

“2”:浏览录入的课程信息,调用函数liulan();

“3”:查询课程信息,调用函数chaxun();

“4”:进入选课操作,调用函数chaxun();

“5”:统计选课信息,调用函数tongji();

“0”:退出系统;

int main()

{

int n;

int menu();

int f1();

int luru();

int liulan();

int chaxun();

int xuanke();

int tongji();

printf("\n ********************** ***********************");

printf("\n\n ********** 欢迎进入学生选课系统!

**********");

menu();

printf("\n");

printf(" ******************* the end

*********************\n");

printf("\n **********************

***********************");

printf("\n\n 请先选择 1 进行课程信息录入:");

scanf("%d",&n);

for(;n>5||n<0;)

{

printf("\n 输入错误!请重新输入!\n ");

scanf("%d",&n);

}

while(n>0&&n<6)

{

switch(n)

{

case 1:luru();break;

case 2:liulan();break;

case 3:chaxun();break;

case 4:xuanke();break;

case 5:tongji();break;

}

scanf("%d",&n);

for(;n>5||n<0;)

{

printf("\n\n");

printf("\n 输入错误!请重新输入!\n ");

scanf("%d",&n);

}

system("cls");

}

if(n==0)

{

printf(" \n\n\n\n\n\n\n");

printf(" ********** 谢谢使用! **********\n

");

printf("\n\n\n\n\n");

}

exit(0);

return 0;

}

2.定义menu函数,f1函数方便调用函数

函数功能及实现:此函数为输出菜单,进入系统后提示可根据供选择的项目进行后续操作。

int menu()

{

int n;

printf("\n\n\n\n");

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

printf(" 2. 浏览课程信息\n\n");

printf(" 3. 查询课程信息\n\n");

printf(" 4. 进入选课操作\n\n");

printf(" 5. 统计选课情况\n\n");

printf(" 0. 退出选课系统\n\n");

return 0;

}

3.定义课程、选课结构体变量

struct course

{

int num;

char name[20];

char kind[20];

int ttime,mark,term;

}c;

struct student

{

int snum;

int cnum;

char cnam[20];

char snam[20];

}s[500];

4.定义录入函数,课程信息

函数功能及实现:此函数录入课程信息,在查询、浏览、进入选课,查看选课信息等函数之前。定义指向文件的指针变量*fp,课程信息结构体c通过fopen 函数建立文件””,后输入录入课程的门数,打印表头,通过for循环,用scanf 函数从屏幕读取课程信息,并通过fprintf函数将课程信息录入到文件“”中,最后输出主菜单,返回主程序。

int luru()

{

FILE *fp;

struct course c;

int count;

int i;

if((fp=fopen("","w"))==NULL)

{

printf("cannot open file\n");

exit(0);

}

printf("\n 请输入选择的课程门数:");

scanf("%d",&count);

printf("\n\n\n");

f1();

for(i=0;i

{

scanf("%d%s%s%d%d%d",&,,,&,&,&;

fprintf(fp,"%d\t%s\t%s\t%d\t%d\t%d\t",,,,,,;

}

fclose(fp);

printf("\n 录入成功!\n\n");

menu();

return 0;

}

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