(此文档为word格式,下载后您可任意编辑修改!)课程设计说明书课程名称:计算机科学与技术程序设计语言-课程设计题目: 学生选修课程系统设计年级/专业/班:学生姓名:学号:开始时间:2010 年 06 月18日完成时间:2010 年 07月 02 日课程设计成绩:指导教师签名:年月日目录1 引言 (1)1.1设计背景 (1)1.2任务与分析 (1)2 程序的主要功能 (2)2.1管理员功能 (2)2.2学生功能 (2)2.3浏览功能 (2)2.4查询功能 (2)2.5添加功能 (2)2.6删除功能 (2)3 程序运行平台 (3)4 总体设计 (4)4.1系统功能结构图 (4)4.2数据结构 (5)5 模块分析 (5)5.1结构体声明,创建链表及主函数模块 (5)5.2管理员模块 (7)5.3学生模块 (9)5.4浏览模块 (10)5.5查询模块 (11)5.6插入链表模块 (11)5.7添加模块 (11)5.8 删除模块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115.9 选修课程模块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116 系统测试 (16)7 结论 (21)参考文献 (21)s摘要大学期间总会有很多公共选修课,以往的选课方法是随堂报名。
这种方法虽然直接,但是造成选课的盲目性,有些课堂选课时人满为患,有些课堂无人选课。
原因是传统的选课方法没有预见性,大家没有事先协调好。
使用了网上选课系统以后,可以在开课前就在网上选课,每个学生的课程在开课前就确定好,不用浪费体力去选课,还可以使教学资源合理平均地分配。
全校性选修课的目的在于扩大学生的知识面,加强学生素质教育,培养复合型高级人才,具有不可替代的重要性!随着教育改革的不断深入和素质教育的加强完全学分制的实施,选修课在一个学生的培养计划中站的比重越来越大!关键词:选修课;素质教育; 开拓知识面……1 引言1.1 设计背景全校性选修课的目的在于扩大学生的知识面,加强学生素质教育,培养复合型高级人才,具有不可替代的重要性!随着教育改革的不断深入和素质教育的加强完全学分制的实施,选修课在一个学生的培养计划中站的比重越来越大!…1.2任务与分析本课程设计假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。
试设计一选修课程系统,使之能提供以下功能:系统以菜单方式工作1、课程信息录入功能(课程信息用文件保存)--输入2、课程信息浏览功能--输出3、查询功能:(至少一种查询方式)--算法按学分查询、按课程性质查询4、学生选修课程(可选项)。
分析:首先根据要解决的问题进行分析和总体设计,定义的数据结构使用链表结构体定义存储数据)和函数,然后进行详细编码,在主函数中对各功能函数进行测试。
划分为模块形式:管理员和学生模块!分别实现各自功能能!浏览,查找添加,删除,选择等!2 程序的主要功能2.1管理员功能管理员功能一共有四个:浏览课程,查询课程,添加课程,删除课程。
运用字符串处理函数处理密码的问题,用一个switch语句实现函数的调用。
2.2学生功能学生功能菜单包括五个功能:浏览所有课程,查询所有课程,选择选修课程,浏览所选课程,删除错选课程,用switch语句调用函数.2.3浏览功能浏览模块主要应用与管理员模块中的浏览课程,和学生中的浏览所有课程及浏览学生所选课程,即:从文件中读出数据;2.4查询功能查询功能主要用于管理员功能中的“查询课程”和学生功能模块中的”查询所有课程”,查询模块共分为三个查询方法:按课程名称查找,按课程性质查找和按学分查找.switch语句中,每一个case语句就是一中查询方法2.5添加功能通过链表方式,管理员添加新课程信息。
2.6删除功能删除模块主要应用于管理员删除哪门课程的信息,主要应用删除链表中的哪个节点来实现。
3 程序运行平台Microsoft visual c++ 6.0具体操作如下:(1)进入Microsoft visual c++ 6.0集成环境。
(2)输入自己所编好的程序(3)检查已输入程序是否有误,如发现及时改正(4)进行编译和链接。
如在编译和链接过程中发生错误,屏幕上会显示出“报错信息”,根据提示找出错误位置和原因,加以改正。
在进行编译与连接!(5)运行并分析运行结果是否合理和正确4 总体设计4.1 系统功能结构图4.2 数据结构本系统的实现,全部采用链表这种数据结构,用链表实现课程的查找,添加,删除,课程的选修,追加选修的课程.课程信息采用结构体这种数据结构.5 模块分析5.1 结构体声明,创建链表及主函数模块主函数设计比较简单,只是提供一个主菜单,switch语句将整个程序分为两个大的功能模块!#include<stdio.h>#include <string.h>#include <stdlib.h>typedef struct subjects //定义课程信息结构体{int num; //课程编号char name[20]; //课程名称char kind[10]; //课程性质int stime; //总学时int ttime; //授课学时int etime; //实验或上机学时int score; //学分int term; //开课学期struct subjects *next;}SUB;SUB *head=NULL;SUB *create_form() //创建链表{SUB *head,*tail,*p;int num,stime,ttime;int etime,score,term;char name[20],kind[10];head=tail=NULL;printf("输入选修课程信息:\n");scanf("%d%s%s%d%d%d%d%d",&num,name,kind,&stime,&ttime,&etime,&score,&term);while(num!=0){p=(SUB *)malloc(sizeof(SUB));p->num=num;strcpy(p->name,name);strcpy(p->kind,kind);p->stime=stime;p->ttime=ttime;p->etime=etime;p->score=score;p->term=term;if(head==NULL)head=p;elsetail->next=p;tail=p;scanf("%d%s%s%d%d%d%d%d",&num,name,kind,&stime,&ttime,&etime,&score,&term);}tail->next=NULL;return head;}int main(){int n,w=1;do{system("cls");puts("\n\n\t\t*********************MENU***********************\n\n");puts("\t\t\t\t1.以管理员身份登录\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;}5.2 管理员模块管理员功能一共有四个:浏览课程,查询课程,添加课程,删除课程。
运用字符串处理函数处理密码的问题,用一个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);if(!strcmp(s,password)) //进行密码匹配验证{flag=1;break;}else{printf("\n\nError! You only have %d times! Enter again:\n",i-1);i--;}}while(i>0);if(!flag){printf("you have Enter 3 times!"); //输入密码超过了3次!!exit(0); //自动退出}do{system("cls");puts("\n\n\t\t*********************管理员菜单***********************\n\n");puts("\t\t\t\t1---浏览课程\n");puts("\t\t\t\t2---查询课程\n");puts("\t\t\t\t3---添加课程\n");puts("\t\t\t\t4---删除课程\n");puts("\t\t\t\t5---返回主菜单");puts("\n\n\t\t******************************************************\n");printf("Chiose your number(1-5):[ ]\b\b");scanf("%d",&n);switch(n){case 1:prin();break;case 2:search();break;case 3:insert();savefile();break;case 4:del();savefile();break;case 5:return;default:;}}while(w==1);}5.3 学生模块学生功能菜单包括五个功能:浏览所有课程,查询所有课程,选择选修课程,浏览所选课程,删除错选课程,用switch语句调用函数void Students(){int n,w=1;do{system("cls");puts("\n\n\t\t*********************学生菜单***********************\n\n");puts("\t\t\t\t1---浏览所有课程\n");puts("\t\t\t\t2---查询课程信息\n");puts("\t\t\t\t3---选择选修课程\n");puts("\t\t\t\t4---浏览我选修的课程\n");puts("\t\t\t\t5---删除错选课程\n");puts("\t\t\t\t6---返回主菜单");puts("\n\n\t\t****************************************************\n");printf("Chiose your number(1-6):[ ]\b\b");scanf("%d",&n);switch(n){case 1:prin();break;case 2:search();break;case 3:choose();break;case 4:prin1();break;case 5:del();savefile1();break;case 6:return;default:;}}while(w==1);}5.4 浏览模块浏览模块主要应用与管理员模块中的浏览课程,和学生中的浏览所有课程及浏览学生所选课程,即:从文件中读出数据;管理员模块,应用到prin()函数浏览;学生模块通过prin()函数浏览所有课程,prin1()函数浏览全部课程。