《《c语言程序设计》课程设计.docx》由会员分享,可在线阅读,更多相关《《c语言程序设计》课程设计.docx(32页珍藏版)》请在第一文库网上搜索。
1、1需求分析11问题描述首先理解几个定义。结构体:C语言允许用户自己建立由不同类型数据组成的组合型的数据结构。structstudent/结构体(intnum;charame20;f1oatscore1;f1oatscore2;f1oatscore3;f1oataverage;f1oatsum;studentNUM;用函数实现模块化程序设计:在C语言中,为了简化主函数,使阅读和维护程序变得简单,可以事先编好一批主函数中需要用到的函数,然后再直接调用到主函数中就能得到预期的结果。对文件的输入输出:将输入的数据保存到磁盘中的指定文件夹,在需要时再利用指针将其调出使用。循环结构:(1)用do.whi1
2、e语句实现循环(2)用for语句实现循环do语句;Jwhi1e(表达式);for(循环变量赋初值;循环条件;循环变量增值)语句;1.2 基本要求和目的1 整个系统均用C语言室顼.2、利用寤庙体数组来实现孽生成绩的数据结构设计;3、系统具有输入、显示、查询、删除、排序、插入、保存、读取等基本功能;4、系统J各个功能模块都用函数的形式来实现;5、要求能将学生成绩信息保存在文件中;6、要求能从文件中读取学生信息并进行相关处理。2总体设计2.1 学生成绩管理系统的设计用C语言设计出一个具有能够在进入程序后进行多条记录的输入并保存(输入);完成全部学生或满足指定条件记录的显示(显示);完成按姓名查找学生
3、记录并显示(查找);按学生平均成绩排名(排序);任意插入和修改学生记录(插入);将学生记录保存在自定义的文件中(保存);将保存在文件中的学生记录读取出来(读取)的,并能够用一个文本菜单来调用各个功能的程序。intmain()/主函数(inta;do(printf(,tt*欢迎使用学生管理系统Printf(”nn*输入相应的数字选择需要的功能*nr);Printf(NWt1.输入学生信息n”);PrintfCNtt2.显示已输入学生信息n);PrintfettW3.查询学生信息n“);PrintfCtttt4.按总成绩排名n”);Printfetttt5删除学生信息n“);PrintfettW6
4、.插入学生信息向;Printf(“ttN7.修改信息n);PrintfcttW8.退出nn);printf(M*k*)scanf(%d,Sa);switch(a)(case1:SyStemeC1s);shuru();break;case2:system(c1sM);xianshi()jbreak;case3:system(nc1s);chaxun();break;case4:system(c1sM);paixu();break;case5:SyStemeC1s);ShanChU();break;case6:system(c1sn);charu();break;case7:SyStem(“cis
5、);xiugai();break;case8:system(exitM);exit(0);)whi1e(1);)2.2结构框架图下图是算法结构框架图。7(结束程序图2.1系统结构框架图3.详细设计3.1 结构体的定义利用结构体将不同数据类型的学生信息囊括到一个结构体数组中,以便于对学生不同信息输入与查询。structstudent(intnum;charname20;f1oatscore1;f1oatscore2;f1oatscore3;f1oataverage;f1oatsum;studentNUM;结构体学号姓名语文成绩数学成绩英语成绩平均成绩总成绩3.2 不同功能函数的定义单独编码不同功
6、能的函数,在主函数需要的时候调用,不仅能简化主函数,还能方便后面对主函数的修改和维护。voidshuru();输入函数voidxianshi();显示函数voidchaxun();查询函数voidpaixu();排序函数voidshanchu();删除函数voidbaocun();保存函数voidcharu();插入函数voidxiugai();修改函数voidaverage();求平均值函数3.3 主菜单的设计设计一个可以选着执行主函数的选着菜单,是操作者能够方便快捷的选择执行需要的操作。intmain()主函数(inta;do/do.whi1e循环结构Printf(tt*欢迎使用学生管理系
7、统*r);Printfdnn*输入相应的数字选择需要的J力育旨*Printf(“tttt1.输入学生信息r);PrintfeWN2.显示已输入学生信息n“);Printf(“ttN3.查询学生信息r);Printfctttt4.按总成绩排名俏;Printf(“ttN5.删除学生信息r);PrimfcttN6.插入学生信息俏;Printf(Nttt7.修改信息n);PrintfcNtt8.退出nn);Printf(11*)scanf(%d,&a);选择菜单switch(a)(case1:system(c1s);shuru();break;case2:SyStem(“cis);xianshi();
8、break;case3:SySterr(c1s);ChaXUn();break;case4:system(c1sM);paixu();break;case5:system(nc1s);shanchu();break;case6:SyStem(cis);ChanJ();break;case 7 :system(c1sH);xiugai();break;case 8 :system(exit);exit(O);whi1e(1);/表示一个无限循环图3.1主菜单流程图3.4 保存功能的实现在C语言中程序中,对文件读写之前应该利用指针“打开”指定的文件夹,然后再在打开的文件夹中进行读写,已达到对文件的
9、保存和调用功能,在使用结束后应该利用指针“关闭”该文件夹。保存voidbaocun()F1E*fp定义一个指向文件的指针变量intj;if(fp=fopen(tu.dat-7W)=NU11)打开输出文件夹并使fp指向此文件(P而tf(打开数据出错!向;return;)for(j=0;jNUM;j+)if(fwrite(&studentj,sizeof(structstudent),1,fp)!=1)存入数据printf(,fi1ewriteerror!n);fc1ose(fp);关闭文件夹)图3.2保存数据流程图3.5 对输入数据进行排序定义一个空的结构体数组来存放数据,实现两两之间的比较,再
10、结合循环结构实现多个数据的比较并按照规定法则对数据进行排序。voidpaixu()排序structstudenttemp;intj,k,;for(j=0Jnumber-1;j+)(1=j;for(k=j+1;kstudent1.average)=k;)temp=student1;student1=studentj;studentj=temp;)for(j=0;jnumber;j+)Printf(学号:d姓名:st语文:3.1ft数学:3.1ft英语:3.1ft平均z%3.1n,studentO.num,studentj.name,studentO.score1,StudentO1.SCore2
11、,studentj.score3jstudentj.average);printf(,n,);)Start图3.3排序流程图4.试验结果4.1 进入学生成绩管理系统建立学生数据TrUsesAdministrorDesictop,Debugtdent.exe”.K冲使用好手苒理奉法M输入相应史数字法择需要的功能一*生喑1=菲信牛量绩叁息学星感拿信A丁部策入杳12345678图4.1主菜单界面选择1输入并保存读入的学生成绩信息(a)J1魏人第学生的学号、姓名、语文成绩、数学成绩、英语IWF786899理并成功.真否组绩输入Q汰迎使用学生管理系统辅人相应的数字选择需要的功能息信生港IH1匕名演信人并
12、侵占差息2澹人示沟口廉人金12345678(b)图4.2输入信息界面aXrUseAdnintr4torPesirtcpDebug5tden!.exe学三:1性名:张三话文:716学学:btJ去语”y.Bzp1:1.?*HH1欢I卬仲用堂主管系三万WHHHHHHHHMHtN入主7I辛s1I12345673名.信1信牛息si8息r注图4.3显示界面选择3查询想要了解的学生的信息iX:UsesAinistritorDesktopDebugstuden:.exew法卷人需要询的学生的姓,髀这拄名:张三语文数学“8.0英语”9.0平均分21*欢迎使用学生管理系:充*hhmhmhwh生8s信人,加信信i4hHS生生息学一住成乎学信-p1潢1234-5678(b)图4.4