基础编程能力实训报告-基于C语言的学生选课管理系统.doc
《基础编程能力实训报告-基于C语言的学生选课管理系统.doc》由会员分享,可在线阅读,更多相关《基础编程能力实训报告-基于C语言的学生选课管理系统.doc(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 PINGDINGSHAN UNIVERSITY基础编程能力实训报告 题 目: 学生选课管理系统 专业年级: 物联网工程 2014级 姓 名: DFDSFDFDfdfdfffd 学 号: 14fdfkdkd 2015年07月03日1 功能描述此系统是一个学生选课管理系统。它包含是功能有:学生选课信息的录入,学生选课信息的删除,学生选课信息的查找,学生选课信息的显示等功能。菜单模式:此模块主要实现对本系统所有功能的显示。录入模块:此模块主要实现对学生选课信息的录入,主要包括学生学 号、学生姓名、所选课程、课程学分、授课老师。删除模式:此模块主要实现对学生选课信息的删除。显示模块:此模块主要实现对
2、学生选课信息的显示。查找模块:此模块主要是通过学生学号查找该学生的选课信息。清屏模块:此模块主要是对主界面输入的信息进行清屏。退出程序:此模块主要用于退出系统。 学生选课系统菜单功能清屏功能录入功能删除功能查找功能保存功能退出功能显示功能 2 总体设计2.1 主函数功能开 始调用main函数输入选择的值选择的值=? 1 2 3 6 4 5调用find函数调用display函数调用del函数调用input函数 退出程序 清 屏 结 束主函数的作用主要是调用menu函数显示主界面,由于菜单比较简单所以采用printf函数直接将菜单项打印在屏幕上,实现人机对话的第一步。然后通过读取用户的输入,调用s
3、witch函数对用户的输入进行进一步的处理,并使用for函数实现用户的选择性的重复操作。我们为用户提供了一个正常的出口,我们采用人机对话的形式,用户选择某一菜单以后,程序完成此项功能后,用户可以选择继续输入或退出,选择主菜单5选项即可退出程序。2.2 删除模块开始定义学生指针调用del函数输入要删除的人数和学生学号 显示“ 找不到要删除的节点!”是否已创建该学生信息? 否 是 成功删除 记录总数减一 按任意键返回 结束为了实现用户使用学生选课信息管理系统删除所选课程的功能,删除模块调用del函数以实现这一功能。用户先输入要删除的学生个数,然后用户输入编号,通过fread循环遍历文件中输入的数据
4、,查找与用户输入的学生编号相同的学生选课信息,如果找到该学生,则把m赋为1,然后通过for(j=i; jm; j+);worj = worj+1把要查找的数据后面的前移来删除该学生信息。如果找不到该学生信息,则显示找不到要删除的学生。2.3 查找信息开始定义学生指针输入要查找的学生学号显示“没有找到要查找的结点!是否显示该学生的详细信息?Y(y)(是) 否 是 找到记录 是否显示该学生的详细信息?Y(y)(是) Y(y) 显示学生详细信息 按任意键返回结束为了实现用户使用学生选课信息管理系统查找学生信息的功能,查找模块调用find函数以实现这一功能。 该程序里运用文件和指针,通过fread循环
5、遍历文件中输入的数据,查找与用户输入的学生编号相同的学生选课信息,如果找到该学生,则显示该学生的选课信息。3 数据结构设计存储学生选课信息的结构体typedef struct /定义结构体 int num; /学生的学号 char name20; /学生的姓名 char keming20; /选课的名称 float xuefen; /所选课程的学分 char teacher20; /所选课程的任课老师 WOR;WOR worSIZE,wor1SIZE;结构体用于存储学生选课信息的相关信息,各字段的含义如下: num:学生学号 name20:学生姓名 keming20: 选课课名xuefen:
6、选课学分 teacher : 授课老师4 程序实现4.1 源码分析 主函数显示主菜单模块通过调用menu函数显示主菜单,调用main函数提示使用的用户该执行的操作,实现基本的人机对话;然后通过读取用户的输入,调用switch函数对用户的输入进行进一步的处理,并使用while函数实现用户的选择性的重复输入;显示学生选课管理信息模块通过调用display函数实现显示已创建的所有学生选课管理信息的功能;查找学生选课管理信息模块通过调用find函数实现按学生学号查找学生的选课信息的功能;int main() int i,d; menu(); while(1) printf(n输入选项:); scanf
7、(%d,&d); switch(d) case 1: input();break;/输入信息 case 2: int m; printf(请输入要删除的人数:n); scanf(%d,&m); for(i=0; im; i+) del(); getch(); printf(按任意键继续:); getch(); clear();/清屏 break;/删除信息 case 3: display();break;/显示信息 case 4: int m; printf(请输入要查找的人数:n); scanf(%d,&m); for(i=0; im; i+) find(); getch(); printf
8、(按任意键继续:); getch(); clear();/清屏 break;/查找case 5: exit(0); break;/退出 case 6: clear(); break;/清屏 default: printf(您输入的数据有误,请重新输入:); /clear(); 4.2 输入信息功能函数此函数为输入学生选课情况的基本信息。通过运用文件和指针输入实现所有学生选课信息的存储,从而实现程序的第一步操作。运用 if语句判断文件是否存在;若不存在,则建立一个名为”work”的文件,将所有信息保存文件中。 在文件中fopen()以ab+的方法打开二进制文件,使函数返回指向一个文件指针 wor
9、k;以fread(&worm,LEN,1,fp) 从fp所指向的文件中读取1个字节数为LEN大小的数据块存放到&worm所指定的存储空间;以fwrite(&wori ,LEN,1, fp) 从fp所指向的存储空间中取出1个字节数为LEN大小的数据块写入&worm所指定的存储空间。运用字符串ch2实现判断”是否”的字符Y/N的输入 void input()/输入信息 int i,m=0; char ch2; FILE *fp; if(fp=fopen(work,ab+)=NULL) printf(cant open the file!n); return; while(!feof(fp) if(
10、fread(&worm,LEN,1,fp)=1) m+; fclose(fp); if(m=0) printf(没有找到要读取的节点n); if(fp=fopen(work,wb+)=NULL) printf(cant open the file!n); return; for(i=0; im; i+) fwrite(&wori ,LEN,1,fp);/向指定的磁盘文件写入信息 printf(是否输入?(y/n):); scanf(%s,ch); while(strcmp(ch,Y)=0|strcmp(ch,y)=0)/判断是否要录入新信息 printf(学生学号:); scanf(%d,&w
11、orm.num);/ for(i=0; im; i+) if(wori.num = worm.num) printf(该记录已经存在,按任意键继续!); getch(); fclose(fp); return; printf(学生姓名:); scanf(%s,worm.name); /输入学生名字 printf(已选课程:); scanf(%s,worm.keming); /输入已选课程 printf(学分:); scanf(%f,&worm.xuefen); /输入课程学分 printf(任课老师:); scanf(%s,worm.teacher); if(fwrite(&worm,LEN,
12、1,fp)!=1) /将新录入的学生信息写入指定的磁盘文件 printf(无法保存!); getch(); else printf(%s 已经保存!n,worm.name); m+; clear();/清屏 printf(是否继续?(y/n):); scanf(%s,ch); fclose(fp); if(strcmp(ch,N)=0|strcmp(ch,n)=0) printf(按任意键继续!n); getch(); clear(); 4.3 删除信息功能函数 此函数为学生选课信息的删除过程。删除学生选课管理信息模块通过调用del函数实现通过查找学生学号找到想要删除的课程,从而删除用户想要删
13、除的课程的功能;运用文件的知识实现文件的打开。运用for循环来确定删除的个数,然后通过if语句依次根据学生学号对学生选课信息进行删除。再次运用for循环使删除学生信息后将记录的总个数减1,将后一个记录移到前一个记录的位置。最后使用clear()功能,再次运用fopen()打开文件,用fwrite()将更改后的记录重新写入指定的磁盘文件中,并保存。 void del()/删除信息 FILE *fp; int snum,i,j,m=0; char ch2; if(fp=fopen(work,ab+)=NULL) printf(cant open the file!n); return; while
14、(!feof(fp) if(fread(&worm,LEN,1,fp)=1) m+; fclose(fp); if(m=0) printf(没有记录n); return; printf(请输入学号:); scanf(%d,&snum); for(i=0; im; i+) if(snum=wori.num) break; if(i=m) printf(没有找到要删除的节点n); getch(); return; printf(找到记录,是否删除(y/n); scanf(%s,ch); if(strcmp(ch,Y)=0|strcmp(ch,y)=0)/判断是否要进行删除 for(j=i; jm;
15、 j+) worj = worj+1;/将后一个记录移到前一个记录的位置 m-;/记录的总个数减1 printf(成功删除!n); clear();/清屏 if(fp=fopen(work,wb+)=NULL) printf(不能打开!n); return; for(j=0; jm; j+) /将更改后的记录重新写入指定的磁盘文件中 if(fwrite(&worj ,LEN,1,fp)!=1) printf(不能保存!n); getch(); fclose(fp);4.2 功能模块的调试及测试1. 主界面 该部分只有主菜单。若选择1,则进入学生选课信息输入界面;若选择2,则进入学生选课信息删除
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基础 编程 能力 报告 基于 语言 学生 选课 管理 系统
限制150内