1、 1 本科生课程论文封面本科生课程论文封面 课 程 名 称 C 语言课程设计 教 师 姓 名 本科生姓名 本科生学号 本科生专业 所 在 院 系 类别: C.本科生 日期: 2012 年 09 月 05 日 2 课程设计评语课程设计评语 对课程论文的评语: 平时成绩: 课程论文成绩: 总 成 绩: 评阅人签名: 注:1、无评阅人签名成绩无效; 2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效; 3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。 3 目目 录录 课程设计评语2 目 录 3 1课程论文题目 4 2程序设计思路 5 3功能模块图 5 4数据结构设计 6 5算法设计 .6 6程序代
2、码 . 12 7程序运行结果 22 8编程中遇到的困难及解决方法 23 9总结心得及良好建议 24 10致谢. 24 4 1课程论文题目课程论文题目 名称:学生选修课系统设计 【要求】 假定有 n门课程,每门课程有课程编号,课程名称,课程性质, 总学时,授课时间,实验或上级时间,学分,开课学期等信息,学生 可按要求 (如总学分不超过 60)自由选课。 是设计一选修课课程系统, 使只能提供以下功能: (1) 系统一菜单方式工作 (2) 课程信息和学生选课信息录入功能(课程信息用文件保存 输入 (3) 课程信息浏览功能输出 (4) 查询功能(至少一种查询方式)算法 (5) 按学分查询 (6) 某门
3、课程学生选修情况(可选项) 【提示】 数据结构可用结构体,包括授课和选课两个结构体,其中课程 结构体成员包括编号,课程名称,课程性质,总学时,授课学时,实 验或上机时间,学分,开课学期。学秀结构体成员包括学号,课程编 号,该结构体的建立主要是为了查询某门课程学生选修情况。 5 2程序设计思路程序设计思路 由于题目要求将学生的选课信息用结构体形式输入,并写入 文件中,所以应提供文件的输入输出等操作:在过程中需有 浏览、插入、修改、查找、删除学生选课信息等操作,顾应 分别建立个功能模块;另外还应提供键盘式选择菜单实现程 序运行。 根据题目要求,可以将系统分为六个模块: 1) 系统以菜单方式工作模块
4、; 2) 课程信息与学生选课信息录入功能模块; 3) 课程信息浏览功能模块; 4) 查询模块; 5) 按学分查询模块; 6)某些课程学生选修情况模块 3功能模块图功能模块图 6 4数据结构设计数据结构设计 该程序采用多个 main()函数模块分别来实现程序的运行,通过使用 数组功能来实现数据的录入,使用 strcpy()函数来实现录入信息的 复制,整个结构从整体来看使用了选择结构,break case 的合理 利用 5算法设计算法设计 1.1.课程信息录入功能课程信息录入功能 void savefile(SUB *head) SUB *p; FILE *fp; fp=fopen(“subjec
5、ts.txt“,“w “); 系统 以菜 单方 式工 作模 块 课 程 信 息 与 学 生 选 课 信 息 录 入 功 能 模 块 课程 信息 浏览 功能 模块 查 询 模 块 按 学 分 查 询 模 块 某 些 课 程 学 生 选 修 情 况 模块 学生选修课程学生选修课程系统系统 开始 输出 7 fprintf(fp,“课 程 编 号 课 程名 称 课 程 性 质 总 学 时 授课 学 时 实 验 或上 机学时 学分 开课学期n“); for(p=head;p;p=p-next) fprintf(fp,“%5d%12s%9s%9d%9d%11d%11d%7dn“,p-num,p-name,
6、p-kind,p- stime,p-ttime,p-etime,p-score,p-term); fclose(fp); void savefileadd(SUB *head) SUB *p; FILE *fp; fp=fopen(“subjectsadd.txt“,“w “); fprintf(fp,“课 程 编 号 课 程 名 称 课 程 性 质 总 学 时 授 课 学 时 实 验 或 上机学时 学分 开课学期n“); for(p=head;p;p=p-next) fprintf(fp,“%5d%12s%9s%9d%9d%11d%11d%7dn“,p-num,p-name,p-kind,p- stime,p-ttime,p-etime,p-score,p-term); fclose(fp); 结束 输入 写入文件并储存 8 2.查询功能查询功能 void sea