《任选课系统-程序设计》由会员分享,可在线阅读,更多相关《任选课系统-程序设计(18页珍藏版)》请在金锄头文库上搜索。
1、.程序设计报告( 20011 / 20012 学年 第 一 学期)题 目:教务处任选课管理系统 专 业 学 生 姓 名 班 级 学 号 指 导 教 师 指 导 单 位 计算机软件教学中心 日 期 2011年9月13日 评 分 细 则评分项优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简 短 评 语教师签名: 年 月 日评分等级备注评分等级有五种:优秀、良好、中等、及格、不及格教务处任选课管理系统一、 课题内容和要求教务处任选课管理系统主要用于对教务处中的任
2、选课进行添加、修改、查询、冲突提示等操作,能对全校任选课的情况进行记录和管理。本课题以南京邮电大学任选课管理系统原型参照,要求基于结构体数组对任选课数据进行排序、查找、计算、显示等造作。通过此可以,熟练掌握单链表结构、文件读写、函数调用等知识,以及查找、排序典型算法的设计与应用。二、 需求分析。 功能框架图:(见图2-1)教务处任选课管理系统系统查询录入保存修改删除排序 图2-1功能框架图1) 主菜单:输出个菜单,用于显示若干个可选的功能选项。根据用户输入的选项来运行不同的功能,运行不同的函数。2) 进行文本信息的载入:从指定的文件中以数组形式加载所需的课程信息。这里的文件是在编译时就已经指定
3、好的、存在的文本,需设计者预先自己建立好。3) 查找功能:以用户输入的课程名称或学院名称进行查找对应的课程信息并将它们输出。可通过所建立的数组进行对应的查找。若课程不存在,输出提醒信息。4) 添加功能:将用户希望添加的课程信息添加到数组内。应提示用户按照正确的格式输入。当课程已存在时,提醒用户。5) 删除功能:将用户希望删除的某个课程信息删除。若课程不存在,输出出错提醒。6) 修改功能:修改用户希望修改的课程信息,兼有判错功能。7) 保存功能:保存内存中的最新的记录输出到磁盘文件中。这里默认的是保存到原读取文件中并覆盖原来的信息。8) 排序功能:根据课程名称对课程进行排列。可以用快速排序法实现
4、。三、概要设计 1)主要结构体:struct courses char course100,teacher100,college100;/课程名称,教师,开课院系 char time100, intro100,mail100;/上课时间,课程简介,电子邮箱 f200000;/全局变量2)主要函数流程图: (1)主函数:用于从文本中载入信息,此处用数组方式读入。输出主菜单,显示若干个可选的功能选项,供用户选择并运行不同的函数。 (2)查找函数:利用用户输入的课程名称或学院进行顺序查找并将找到的课程信息输出。(3)录入函数:录入用户希望加入的课程及其信息。(4)删除函数:将指定的课程从数组中删除。
5、(5)修改函数:修改指定课程的信息。(6)保存文件函数:将最新的内容通过文件读写,从内存中保存到原文本文件中。 (7)排序函数:将客户的顺序按照客户编号用冒泡法进行升序排列。四、源程序代码 #include#includestruct courses char course100,teacher100,college100; char time100, intro100,mail100; f200000;int N=0; void menu();void sort(int l,int r);void menu_find();int find1(struct courses temp);void
6、 find2();void find();void menu_add();void add();void menu_dele();void dele();void menu_revise();void revise();void keep();int main() int x;int i;FILE *fp; printf(*欢迎使用任选课管理系统*n);fp=fopen(D:5.txt,r+);if (!fp)printf(无法打开5.txtn);exit(1);fscanf(fp,%d ,&N);for (i=1; i5)|(x0) printf(输入错误,请重新输入n); else swi
7、tch (x) case 1:find(); break; case 2:add();break; case 3:dele(); break; case 4:revise(); break; case 5:keep(); break; menu(); scanf(%d,&x); printf(*再见*n); scanf(%c,&c); return 0;void menu() printf(# 1:查看数据 #n); printf(# 2:添加数据 #n); printf(# 3:删除数据 #n); printf(# 4:修改数据 #n); printf(# 5:保存数据 #n); print
8、f(# 0:退出 #n); printf(* 请输入选项 *n);void sort(int l,int r) struct courses temp,x; int i,j,k; i=l; j=r; k=(i+j)/2; temp=fk; while (i=j) while (strcmp(temp.course,fi.course)=1) i+; while (strcmp(fj.course,temp.course)=1) j-; if (i=j) x=fi; fi=fj; fj=x; i+; j-; if (il) sort(l,j); void menu_find()printf(#
9、1:按课程查询 #n); printf(# 2:按学院查询 #n); printf(# 0:返回上一级 #n); printf(* 请输入选项 *n);int find1(struct courses temp)int i; for (i=1; i=N; i+) if (strcmp(temp.course,fi.course)=0) return i; return -1;void find2() struct courses temp; int i,tot=0; printf(请输入欲查找的学院名n); scanf(%s,temp.college); for (i=1; i2)|(x0) printf(输入错误,请重新输入n); else