学号1608220203《高级语言程序设计》课程设计报告题目:学生选课系统专业:网络工程(对口)班级:16(3)班姓名:代应豪指导教师:代美丽成绩:计算机学院2017年4月25日2016-2017学年第二学期计算机学院《高级语言程序设计》课程设计报告目录一需求分析...........................................................................................1三详细设计...........................................................................................21.数据定义........................................................................................22.算法流程图....................................................................................2四函数...................................................................................................5五测试...................................................................................................6六设计总结...........................................................................................9七参考文献.........................................................................................10八源程序.............................................................................................10计算机学院《高级语言程序设计》课程设计报告1一需求分析数据结构可用结构体,包括课程和选修两个结构体,其中课程结构体成员结构体成员包括课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期。选修结构体成员包括学号,课程编号,该结构体的建立主要是为了查询某门课程学生选修情况。二总体设计系统由哪几个功能模块构成,给出功能模块图。C中模块化的工具是函数根据上面的需求分析,可以将这个系统的设计分为如下七大模块:选课模块、按学分查找模块、按编号查找模块、查看课程模块、查看选课情况模块、课程输入模块、完成选择模块。菜单选择模块录入课程信息课程管理录入学生信息学生信息管理学生选课系统信息查看存储退出系统完成选择模块计算机学院《高级语言程序设计》课程设计报告2三详细设计1.数据定义2.算法流程图(1)录入课程信息表显示一系列功能选项输入n,判断是否是1-7根据n的值调用各功能模块函数录入课程信息从文件输入输入课程编号保存信息到student.txt显示录入成功,转入完成选择菜单计算机学院《高级语言程序设计》课程设计报告3(2)课程管理Y(3)录入课程信息(4)学生信息管理新增课程输入课程信息保存显示失败录入课程信息输入数据保存新增学生信息或删除学生信息输入姓名,考号。保存计算机学院《高级语言程序设计》课程设计报告4(5)学生选课(6)系统信息及查看系统(7)退出系统、完成选择菜单模块退出系统学生选课查询可选课程查询已选课程返回主菜单输入学号输入学号主菜单系统信息及查看系统查看课程信息查看学生信息存储信息返回主菜单存储课程信息存储学生信息返回主菜单输入路径,保存。计算机学院《高级语言程序设计》课程设计报告5四函数1.structcouse*head1;结构2.voidkeyboardc()//录入课程子函数(从键盘录入)3.voidfilec()//录入键盘子函数(从文件录入)4.voidinputc()//录入课程主函数5.voidinsertc(structcouse*incouse)//课程管理子函数(增加课程)6.voiddelc(intnum1)//课程管理子函数(删除课程)7.voidelect(structstudent*s)//选课8.voidcheak()//学生选课子函数(查询可选课程)9.voidback(structstudent*p)//退课10.voidhcheak()//学生选课子函数(查询已选课程)11.voidelective()//学生选课主函数12.voidlistc()//输出课程信息13.voidlists()//输出学生信息14.voidintoc()//存储课程信息15.voidintos()//存储学生信息16.voidinto()//存储信息17.voidstore()//信息主函数18.intmain()//主函数计算机学院《高级语言程序设计》课程设计报告6五测试1.主菜单2.录入课程信息计算机学院《高级语言程序设计》课程设计报告73.从键盘输入4.从文件输入计算机学院《高级语言程序设计》课程设计报告85.学生选课菜单6.学生信息管理计算机学院《高级语言程序设计》课程设计报告97.管理员输入课程信息界面六设计总结问题一:无法读取文txt文件。困难就是txt无法读取,输入路径后没有文件显示。解决办法是,向老师求助。最后,在老师细心的指导下,才知道是自己的计算机操作水平缘故,没有很好的了解计算机路径结构,最后做出了一定的修改,才得以实现。问题二:程序错误。这是一个比较典型的错误,通过查阅书本相关资料。才发觉是函数相关问题,没有能够很好的理解函数思想,导致程序运行错误。计算机学院《高级语言程序设计》课程设计报告10七参考文献1.姜灵芝,余健.C语言课程设计案例精编.北京:清华大学出版社,20082.王新,孙雷.C语言课程设计.北京:清华大学出版社,20093.游洪跃、彭骏、谭斌.C语言程序设计实验与课程设计教程.北京:清华大学出版社,20114.王连相.C/C++程序设计上机指导与测试.北京:中国铁道出版社,20065.C语言函数手册,机械工业出版社,1999八源程序#includestdio.h#includestdlib.hintN1,N2,kk1,kk2,kk3;structcouse*head1;structstudent*head2;structcouse{intnum1;//课程编号charname1[20];//课程名称charxinzhi[30];//课程性质iintztime;//课程总学时intstime;//授课学时intshiyan;//实验学时intscore;//学分longintdate;//开学学期intnelepeo;//课程已选人数计算机学院《高级语言程序设计》课程设计报告11intMelepeo;//课程人数上限structcouse*next;};structstudent//学生信息结构体{intnum2;charname2[20];intnelenum[50];//已选课程编号intnelen;//已选课程数量structstudent*next;};voidMs(){for(kk1=0;kk11100;kk1++)for(kk2=0;kk21200;kk2++)for(kk3=0;kk31200;kk3++);}voidkeyboardc()//录入课程子函数(从键盘录入){structcouse*p1,*p2;N1=0;p1=p2=(structcouse*)malloc(sizeof(structcouse));printf(课程编号课程名称课程性质总学时授课学时实验学时学分开课学期人数上限\n);scanf(%d%s%s%d%d%d%d%d,&p1-num1,p1-name1,&p1-xinzhi,&p1-ztime,&p1-stime,&p1-shiyan,&p1-score,&p1-date,&p1-Melepeo);计算机学院《高级语言程序设计》课程设计报告12p1-nelepeo=0;head1=NULL;while(p1-num1!=0){N1=N1+1;if(N1==1)head1=p1;elsep2-next=p1;p2=p1;p1=(structcouse*)malloc(sizeof(structcouse));scanf(%d%s%s%d%d%d%d%d,&p1-num1,p1-name1,&p1-xinzhi,&p1-ztime,&p1-stime,&p1-shiyan,&p1-score,&p1-date,&p1-Melepeo);p1-nelepeo=0;}p2-next=NULL;}voidfilec()//录入键盘子函数(从文件录入){FILE*fp;charfilepath[20];structcouse*p1,*p2;N1=0;printf(输入要读入的文件路径:);getchar();gets(filepath);计算机学院《高级语言程序设计》课程设计报告13if((fp=fopen(filepath,r))==NULL){printf(找不到%s文件!\n,filepath);exit(0);}p1=p2=(structcouse*)malloc(sizeof(structcouse));fscanf(fp,%d%s%s%d%d%d%d%d,&p1-num1,&p1-name1,&p1-xinzhi,&p1-ztime,&p1-stime,&p1-shiyan,&p1-score,&p1-date,&p1-Melepeo);printf(课程编号课程名称课程性质总学时授课学时实验学时学分开课学期人数上限\n);fprintf(stdout,%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n,p1-num1,p1-name1,p1-xinzhi,p1-ztime,p1-stime,p1-shiyan,p1-score,p1-date,p1-Melepeo);head1=NULL;while(!feof(fp)){N1=N1+1;if(N1==1)head1=p1;elsep2-next=p1;p2=p1;p1=(structcouse*)malloc(sizeof(structcouse));fscanf(fp,%d%s%s%d%d%d%d%d,&p1-num1,p1-name1,&p1-xinzhi,&p1-ztime,&p1-stime,&p1-shiyan,&p1-score,&p1-date,&p1-Melepeo);fprintf(stdout,%d%s%s%d%d%d%d%d%d\n,p1-num1,p1-name1,p1-xinzhi,p1-ztime,p1-stime,p1-shiyan,p1-score,p1-date,p1-Melepeo);}计算机学院《高级语言程序设计》课程设计报告14p2-next=NULL;}voidinputc()//录入课程主函数{inti;printf(\t\t\t录入课程信息\n);printf(\n1.从键盘录入\n);printf(2.从文件录入\n);printf(3.返回主菜单\n);printf(请选择(1~3):\n);scanf(%d,&i);switch(i){case(1):k