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

上传人:枫** 文档编号:490139756 上传时间:2023-11-18 格式:DOCX 页数:7 大小:22.23KB
返回 下载 相关 举报
C语言程序设计报告学生选修课系统_第1页
第1页 / 共7页
C语言程序设计报告学生选修课系统_第2页
第2页 / 共7页
C语言程序设计报告学生选修课系统_第3页
第3页 / 共7页
C语言程序设计报告学生选修课系统_第4页
第4页 / 共7页
C语言程序设计报告学生选修课系统_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《C语言程序设计报告学生选修课系统》由会员分享,可在线阅读,更多相关《C语言程序设计报告学生选修课系统(7页珍藏版)》请在金锄头文库上搜索。

1、4言程序设计学校:学院:班级序号::姓名学号:指导老师:C语言程序设计报告一、C语言课程设计的目的:高级语言课程设计是学习完高级语言程序设计课程后进行的一次全面的综合性上机实验。其目的在于为同学提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼同学的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。二、题目学生选修课程系统设计假定有n门课程,每门课程有课程编号、课程名称、课程性质、总学时、授课学时、实验或商机学时、血粉、开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。1、要求:试设计一个选修课程系统,使之能提供以下功能:(1)系统以菜单方

2、式工作。(2)课程信息和学生选课信息输入功能(课程信息用文件保存)一一输入。(3)课程信息浏览功能输岀。(4)查询功能(至少一种查询方式)一一算法。(5)按学分查询。(6)某门课程学生选修情况(可选项)。2、分析:由于题目要求将学生的选课信息用结构体形式输入,并写入文件中,所以应提供文件的输入输出等操作:在过程中需有浏览、插入、修改、查找、删除学生选课信息等操作,顾应分别建立个功能模块;另外还应提供键盘式选择菜单实现程序运行。3、总体设计:根据题目要求,可以将系统分为六个模块:1)系统以菜单方式工作模块;2)课程信息与学生选课信息录入功能模块;3)课程信息浏览功能模块;4)查询模块;5)按学分

3、查询模块;6)某些课程学生选修情况模块。设计:细4详#include:程主流图#include#inelude开始typedefstructsubjectsintnum;显示一系列功能选择charname20;charkind10;intstime;N判断intttime;intetime;intscore;intterm;结束structsubjects*next;SUB;SUB*create_form()SUB*head,*tail,*p;intnum,stime,ttime;intetime,score,term;charname20,kind10;intsize=sizeof(SUB)

4、;head=tai匸NULL;抽湩晴尨输入选修课程信息: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);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

5、;seanf(%d%s%s%d%d%d%d%d,&num,&name,&kind,&stime,&ttime,&etime,&score,&term);tail-next=NULL;returnhead;voidsavefile(SUB*head)开始SUB*p;FILE*fp;fp=fopen(subjects.txt,w);输出写入文件并储存输入结束灦楲瑮?灦尬课程编号课程名称课程性质总学时授课学时实验或上机学时学分课学期n);for(p=head;p;p=p_next)fprintf(fp,_x0012_s%9s?ddn,p-num,p-name,p-kind,p-stime,p-tti

6、me,p-etime,p-score,p-term);fclose(fp);voidsavefileadd(SUB*head)SUB*p;FILE*fp;fp=fopen(subjectsadd.txt,w);灦楲瑮?灦尬课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期n);for(p=head;p;p=p-next)fprintf(fp,_x0012_s%9s?ddn,p-num,p-name,p-kind,p-stime,p-ttime,p-etime,p-score,p-term);fclose(fp);voidsavefiledel(SUB*head)SUB*p;FIL

7、E*fp;fp=fopen(subjectsdel.txt,w);灦楲瑮?灦尬课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期n);for(p=head;p;p=p-next)fprintf(fp,_x0012_s%9s?ddn,p-num,p-name,p-kind,p-stime,p-ttime,p-etime,p-score,p-term);fclose(fp);voidprin(SUB*head)SUB*ptr;if(head=NULL)牰湩晴尨没有此门课程记录!n);return;抽湩晴尨课程编号课程名称课程性质总学时授课学时实践或上机学时学分开课学期n);for(p

8、tr=head;ptr;ptr=ptr-next)printf(_x0012_s%9s?ddn,ptr-num,ptr-name,ptr-kind,ptr-stime,ptr-ttime,ptr-etime,ptr-score,ptr-term);voidsearch(SUB*head)开始inta,num;打开文件查看学生选课信息intt=1;chartype1O;charch=a,ch1;21SUB*ptr;判断查询方法查分学按质性按课程输入结束while(ch匸)2:n);输入分查找请1程要按课性质查找请输入,若要按学若抽湩晴尨scanf(%d,&a);switch(a):n);的性质入

9、慣敳幺瀺楲瑮?请输要查找的课程scanf(%s,type);或实践学程称名课性质总学时授课时程号程抽湩晴尨课编课n);学分学期开课时机上学for(ptr=head;ptr;ptr=ptr-next)if(strcmp(type,ptr-kind)=0)printf(_x0012_s%9s?ddn,ptr-num,ptr-name,ptr-kind,ptr-stime,ptr-ttime,ptr-etime,ptr-score,ptr-term);t=0;晩琨?牰湩晴尨未找到!n);t=1;break;慣敳瀺楲瑮?输入要查找的课程的学分n);scanf(%d,&num);牰湩晴尨课程编号课程名称

10、课程性质总学时授课学时实践或上机学时学分开课学期n);for(ptr=head;ptr;ptr=ptr-next)if(ptr-score=num)printf(_x0012_s%9s?ddn,ptr-num,ptr-name,ptr-kind,ptr-stime,ptr-ttime,ptr-etime,ptr-score,ptr-term);t=0;晩琨?牰湩晴尨未找到!n);t=1;牰湩晴尨继续查找请按回车键,结束请按空格键:n);ch1=getchar();/将回车键赋给CH1,否则CASE里面最后输入的回车键会赋给CH,因此用CH1填补。ch=getchar();SUB*insert(

11、SUB*head)SUB*ptr,*ptr2,*subj;intsize=sizeof(SUB);charch=a,ch1;while(ch!=)subj=(SUB*)malloc(size);ptr=subj;牰湩晴尨输入要插入的课程信息:n);scanf(%d%s%s%d%d%d%d%d,&subj-num,subj-name,subj-kind,&subj-stime,&subj-ttime,&subj-etime,&subj-score,&subj-term);if(head=NULL)head=ptr;head-next=NULL;elsefor(ptr2=head;ptr2;ptr

12、2=ptr2-next)if(ptr2-next=NULL)ptr2-next=subj;subj-next=NULL;break;牰湩晴尨继续插入请按回车,结束请按空格:n);ch1=getchar();/将回车键赋给CH1,否则subj-term输完后输入的回车键会赋给CH,因此用CH1填补。ch=getchar();returnhead;SUB*del(SUB*head)SUB*p1,*p2;charch=a,ch1;intnum;while(ch!=)牰湩晴尨输入想要删除的课程编号:n);scanf(%d,&num);if(head-num=num)p2=head;head=head-

13、next;free(p2);if(head=NULL)returnNULL;p1=head;p2=head-next;while(p2)if(p2-num=num)p1-next=p2-next;free(p2);elsep1=p2;p2=p1_next;抽湩晴尨继续删除请按回车,结束请按空格:n);ch1=getchar();II将回车键赋给CH1,否则num键会赋给CH,因此用CH1填补。ch=getchar();开始returnhead;输入、选课voidchoose(SUB*head)N判断是否是要选的课程选定、输出SUB*p,*q;结束inta5;intnum,total=O,i=O

14、,j;束结完后以0,号编之间以空格分开输编的入抽湩晴尨输要选修课程的号,scanf(%d,&num);while(num!=0)-next)for(p=head;p;p=pif(p_num=num)total=total+p-score;ai=num;i+;scanf(%d,&num);!n);失选到未学修晩琨瑯污??瀠楲瑮?选总分达60,修败输完后再输入的回车n);else抽湩晴尨选修成功!n);抽湩晴尨您选修的课程为:n);for(j=0;jnext)if(q-num=aj)printf(%s,q-name););printf(*printf(*printf(*printf(*voidmain()SUB*head=create_form();savefile(head);prin(head);search(head);head=insert(head);/注意此处的必要性函数insert的的返回值

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号