logo资料库

学生选修课程C语言系统设计课程设计报告.doc

第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
资料共25页,剩余部分请下载后查看
C 语言课程设计报告 课题:学生选修课程系统设计 **** ********** ******班 2008-9-1
一:题目 [要求] 假定有 n 门课程,,每门课程都有课程编号,课程名称,课程 性质,总学时,授课学时,实验或上机学时,学分,开课学期等信 息,学生可按要求(如总学分不得少于 60)自由选课.试设计一 选修课程系统,使之能提供一下功能: (1) 系统以菜单方式工作; (2) 课程信息和学生信息的录入功能(课程信息有文件保 存)----输入; (3) 课程信息浏览功能----输出; (4) 查询功能(至少一种查询方式)---算法; (5) 按学分查询; (6) 某门课程学生选修情况(可选项). [提示] 数据结构可用结构体,包括课程和选秀两个结构体,其中课 程结构体包括课程编号, 课程名称,课程性质,总学时,授课学 时,实验或上机学时,学分,开课学期.选修结构体成员包括学 号,课程编号,该结构体的建立主要是为了查询某门课程学生 选修情况. 二:数据结构设计 本系统的实现,全部采用链表这种数据结构,用链表实现课程的 查找,添加,删除,课程的选修,追加选修的课程.课程信息采用结构体这
种数据结构. 三:系统大纲 管理员菜单 主 菜 单 浏览课程 查询课程 添加课程 删除课程 浏览所有课程 查询课程信息 学生菜单 选择选修课程 浏览我选修的课程 删除错选的课程
四:模块设计 (一) 主函数,头文件及结构体声明 主函数设计地比较简洁,只是提供一个主菜单,switch 语句将整个 程序分为两个大的功能模块 [程序] #include "stdio.h" #include "string.h" #include "stdlib.h" #include"malloc.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; 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; } (二) 管理员功能模块 管理员的功能一共有四个功能:浏览,查询,添加,删除课程.运用 字符串处理函数处理密码的问题,用一个 switch 语句实现函数的调用. [程序] //管理员登录菜单 void Mangers() { int n,w=1,flag=0,i=3; char s[8]; char password[7]="123456"; do { printf("\n\nEnter password:"); scanf("%s",s); if(!strcmp(s,password)) { flag=1; break; } else { } } while(i>0); if(!flag) { //进行密码匹配验证 printf("\n\nError! You only have %d times! Enter again:\n",i-1); i--;
printf("you have Enter 3 times!"); exit(0); //输入密码超过了 3 次!! //自动退出 } 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); } (三) 学生功能菜单 学生功能菜单包括六个功能:浏览课程,查询课程,选修课程,浏览 我所选修的课程,添加选修课程,删除错选的课程,也是用到 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:prin();break; case 5:del();savefile1();break; case 6:return; default:;
} } while(w==1); } (四) 创建链表模块 [程序] SUB *create_form() { SUB *head,*tail,*p; int num,stime,ttime; int etime,score,term; char name[20],kind[10]; int size=sizeof(SUB); 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(size); p->num=num; strcpy(p->name,name);
分享到:
收藏