c语言课程设计报告—学籍管理系统.doc

上传人:laozhun 文档编号:2385007 上传时间:2023-02-17 格式:DOC 页数:41 大小:467KB
返回 下载 相关 举报
c语言课程设计报告—学籍管理系统.doc_第1页
第1页 / 共41页
c语言课程设计报告—学籍管理系统.doc_第2页
第2页 / 共41页
c语言课程设计报告—学籍管理系统.doc_第3页
第3页 / 共41页
c语言课程设计报告—学籍管理系统.doc_第4页
第4页 / 共41页
c语言课程设计报告—学籍管理系统.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《c语言课程设计报告—学籍管理系统.doc》由会员分享,可在线阅读,更多相关《c语言课程设计报告—学籍管理系统.doc(41页珍藏版)》请在三一办公上搜索。

1、C语言程序设计课程报告所在学院地学院所在班级012101班级学号20101000689_03姓 名周 豪指导老师宋 军中国地质大学(武汉)2012年1月1日目 录(一)题目要求1(二)需求分析1(三)详细说明1 1、总体设计2、主程序23、主要功能模块说明4(四)上机操作14(五)源代码19(六)附题外作业源代码编写三人选举投票系统34(七)编程小结调试中出现的问题、解决方法及本次编程的感受37(一)题目要求用下面的数据设计一个简单的学籍管理系统。学生基本信息文件(A.TXT)及其内容:学号 姓名 性别 宿舍号码 电话号码01 张成成 男 501 8773211102 李成华 女 101 87

2、72311203 王成凤 女 101 8772311204 张明明 男 502 8773433305 陈东 男 501 8773211106 李果 男 502 8773433307 张园园 女 102 87756112学生成绩基本信息文件(B.TXT)及其内容:.学号 课程编号 课程名称 学分平时成绩 实验成绩 卷面成绩 综合成绩 实得学分01 A01 大学物理 3 66 78 8202 B03 高等数学 4 78 -1 9001 B03 高等数学 4 45 -1 8802 C01 VF 3 65 76 66.功能要求极其说明:(1)数据录入功能:录入每个学生的学号、课程编号、课程名称、学分、

3、平时成绩、实验成绩、卷面成绩共7个数据。实得成绩、实得学分根据条件自动运算。综合成绩的计算:a.如果本课程的实验成绩为-1,则表无实验成绩,综合成绩=平时成绩*30%+卷面成绩*70%b.如果实验成绩不为-1,表示本课程有实验成绩,综合成绩=平时成绩*15%+实验成绩*15%+卷面成绩*70%实得学分的计算:采用等级学分制。综合成绩在90100之间,应得学分=学分*100%综合成绩在8090之间,应得学分=学分*80%综合成绩在7080之间,应得学分=学分*75%综合成绩在6070之间,应得学分=学分*60%综合成绩在60分以下,应得学分=学分*0%(2)查询功能:分为学生基本情况查询和成绩查

4、询两种学生基本情况查询:输入一个学号或姓名(可实现选择)查出此学生的基本信息并显示输出。输入一个宿舍号码,可查出本室所有学生的基本信息并显示输出。称号查询:输入一个学号时,查出此学生所有课程情况,格式如下:学号:XX 课程名称:XXXX综合成绩:XX实得学分:XXX.共修:X科,实得总分为:XXX(3)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此学生所有信息。(4)排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。(二)需求分析 学生基本信息和学生成绩基本信息用文件存储,提供文件的输入输出操作;要能够完成信息的录入和修改,需要提供学生基本信息及学生成绩基

5、本信息查询删除;实现对学生成绩分类排序操作;实现对学生信息的分类查询;实现对学生信息的分类删除;另外还要提供键盘式选择菜单以实现功能选择。(三)详细设计1、总体设计根据上面的需求分析,可以将这个系统的设计分为以下模块退出系统保存函数学生信息管理系统主程序欢迎界面 主菜单输入函数删除函数增加函数查询函数排序函数修改函数显示函数按学分排序按成绩排序基本信息查询成绩查询2、主函数 流程图程序(预处理命令)#include /*I/o函数*/#include /*其他说明*/#include /*字符串函数*/#define LEN 30 /*学号和姓名最大学生人数*/#define N 100 /*

6、最大学生人数*/struct record /*声明函数体*/ char code20; /*学号*/ char name10; /*姓名*/ int domitory; /*宿舍号*/ char sex5; /*性别*/ char tel20; /*电话*/ int kcbh; /*课程编号*/ char kc_name15; /*课程名称*/ int cridit; /*学分*/ int ps_grade; /*平时成绩*/ int sy_grade; /*实验成绩*/ int jm_grade; /*卷面成绩*/ float sum; /*综合成绩*/ float c_cridit; /

7、*应得学分*/stuN;int k=1,m,n;void enter();void search();void modify();void add();void del();void display();void save();void menu();void sort();void tuichuxitong(); void welcome_page(); /.主函数./int main() while(k) welcome_page(); system(pause); /*暂停*/ system(cls); /*清屏*/ printf(请按任意键进入主菜单!n); system(cls);

8、menu(); system(pause); return 0; 3、主要功能模块设计【菜单功能模块】void menu()int num;system(COLOR 1f);printf(nn 学生信息管理系统nn);printf(= n);printf( =制作人:周豪=n);printf(n);printf( =系统功能菜单=n);printf( =友情提醒:查询前请刷新系统!=n);printf( =n);printf( |=|n);printf( | 0.系统帮助说明 1.输入学生信息 |n);printf( |-|n);printf( | 2.查询学生信息 3.修改学生信息 |n);

9、printf( |-|n);printf( | 4.增加学生信息 5.按学号删信息 |n);printf( |-|n);printf( | 6.显示当前信息 7.保存当前信息 |n);printf( |-|n);printf( | 8.排序 9.退出系统 |n);printf( |=|n);printf( =n);printf(请选择菜单编号: );scanf(%d,&num);switch(num)case 0:system(cls);help();break;case 1:system(cls);enter();break;case 2:system(cls);search();break

10、;case 3:system(cls);modify();break;case 4:system(cls);add();break;case 5:system(cls);del();break;case 6:system(cls);display();break;case 7:system(cls);save();break;case 8:system(cls);sort();break;case 9:system(cls);k=0;tuichuxitong();break;default:printf(请在0-9之间选择n);【数据录入模块】【流程图】程序void enter() /* 实现

11、录入学生基本信息功能 */ /输入功能模块 int i,flag=1; while(flag) flag=0; printf(请输入需要创建信息的学生人数(1-100):n); scanf(%d,&n); if(n100) flag=1; printf(输入数值超过范围,检查后请重新输入!n); for(i=0;i=90&stui.sum=80&stui.sum=70&stui.sum=60&stui.sum70) stui.c_cridit=(float)stui.cridit*0.6; else stui.c_cridit=(float)stui.cridit*0; printf(录入信息

12、完毕!,按任意键继续。n); save();【查询模块】 流程图程序/*查询模块*/ voidsearch() int h,i,t,flag,ts1; float s=0; char s130; system(COLOR 5f); printf(n =n); printf( | 1.按学号查询 |n); printf( | 2.按姓名查询 |n); printf( | 3.按寝室查询 |n); printf( | 4.成绩查询 |n); printf( | 5.退出本菜单 |n); printf( =n);while(1) flag=0; printf( 请输入子菜单编号: ); scanf(

13、%d,&t); switch(t) case 1: printf( 请输入要查询的学生的学号:); scanf(%s,s1); for(i=0;in;i+) if(strcmp(stui.code,s1)=0) flag=1; printf(学生学号 姓名 性别 电话 宿舍号n); printf(=n); printf(%12s %7s %6s %15s %5d n, stui.code,stui.name,stui.sex,stui.tel,stui.domitory); if(flag=0) printf(该学号不存在! n);break;case 2: printf( 请输入要查询的学生

14、的姓名: ); scanf(%s,s1); for(i=0;in;i+) if(strcmp(stui.name,s1)=0) flag=1; printf(学生学号 姓名 性别 电话 宿舍号n); printf(=n); printf(%6s %7s %6s %15s %5d n, stui.code,stui.name,stui.sex,stui.tel,stui.domitory); if(flag=0) printf(该姓名不存在!n);break; case 3: printf( 请输入要查询的学生的寝室: n); scanf(%d,&ts1); for(i=0;in;i+) if(

15、stui.domitory=ts1) flag=1; printf(学生学号 姓名 性别 电话 宿舍号n); printf(=n); printf(%6s %7s %6s %15s %5d n, stui.code,stui.name,stui.sex,stui.tel,stui.domitory); i+; break; for(;in;i+) if(stui.domitory=ts1) printf(%6s %7s %6s %15s %5d n, stui.code,stui.name,stui.sex,stui.tel,stui.domitory); if(flag=0) printf(

16、该寝室不存在!n);break;case 4: printf( 请输入要查询学生的学号:); scanf(%s,s1); for(i=0;in;i+) if(strcmp(stui.code,s1)=0) flag=1; if(i=0) printf( 学号 %s 姓名 %s,stui.code,stui.name); printf(n课程编号 %s 课程名称 %s 综合成绩 %.2f 实得学分 %.2f n,&stui.kcbh,stui.kc_name,stui.sum,stui.c_cridit); s+=stui.c_cridit; printf(n共修%d科,实得学分为%.2fn,i

17、+1,s);break; if(flag=0) printf(该学号不存在!n);break;case 5: return; default: printf(请在1-5之间选择n); 【删除模块】流程图删除方式选择选择方式按姓名按学号程序void del() /删除功能模块 int i,j,flag=0; char s115; printf(请输入将要删除的学生的学号:n); scanf(%s,s1); for(i=1;in;i+) if(strcmp(stui.code,s1)=0) flag=1; for(j=i;jn-1;j+) stuj=stuj+1; if(flag=0)printf

18、(该学号不存在!n);if(flag=1) printf(删除成功!显示结果请按6!n); n-;void display() /显示功能模块 int i; FILE *fp; if(fp=fopen(student.txt,rb)=NULL) printf(打开文件时错误!请按任意键退出!); system(pause); exit(0); printf( *所有学生的信息为*n); printf(=n); for(i=0;in;i+) fread(&stui,sizeof(struct record),1,fp); printf(学生学号: %s 姓名: %s 性别: %s 电话: %s

19、宿舍: %dn,stui.code,stui.name,stui.sex,stui.tel,stui.domitory);printf(n课程编号: %d 课程名称: %s 学分: %d 平时成绩: %d 实验成绩: %d 卷面成绩: %dn,stui.kcbh,stui.kc_name,stui.cridit,stui.ps_grade,stui.sy_grade,stui.jm_grade,stui.c_cridit,stui.sum); printf(n应得学分: %.2f 综合成绩: %.2fn,stui.c_cridit,stui.sum); printf(*n); 【排序模块】流程

20、图排序方式选择方式按学分按综合成绩程序/*排序模块*/void sort() /排序功能模块 int i,j,flag=0,tempcn; int ch,ch1; struct record temp; FILE *fp; while(1) printf(n*请输入课程编号:*n); printf(*退出请输入-1*n); scanf(%d, &tempcn); if(tempcn=-1) return; /scanf(%c,&ch); if(fp=fopen(student.txt,rb)=NULL) printf(不能打开此文件.n); exit(0); i=0;while(fread(&

21、stui,sizeof(struct record),1,fp) if(tempcn=stui.kcbh) i+; flag=1; fclose(fp); if(!flag)printf(n没有这种课程n);continue;elseflag=0; printf(n+请选择排序对象+n);printf(*| 1.按学分排序 |*n);printf(*| 2.按综合成绩排序 |*n);printf(*| 3.退出子菜单 |*n)printf(+n); scanf(%d,&ch); if(ch3)printf(没有这个选项n); continue; if(ch=3)return; printf(n

22、*请选择排序方式*n);printf(|+| 1.按升序排列 |+|n);printf(|+| 2.按降序排列 |+|n);printf(|+| 3.退出子菜单 |+|n); printf(*n); scanf(%d,&ch1); if(ch1=3)return; if(ch=1) if(ch1=1) /升序排列 for(j=0;ji-1;j+) for(k=j;kstuk.c_cridit) temp=stuj; stuj=stuk; stuk=temp; printf(n 学生学号 学生姓名 课程编号 课程名称 应得学分 综合成绩n); /printf(nnxuehao course_nu

23、mber course_name xuefen chengjin); printf(=n); for(j=0;ji;j+) printf(n%10s %10s %10d %8s %6.2f %7.4fn,stuj.code,stuj.name,stuj.kcbh,stuj.kc_name,stuj.c_cridit,stuj.sum); elseif(ch1=2) /降序排 for(j=0;ji-1;j+) for(k=j;ki;k+) if(stuj.c_criditstuk.c_cridit) temp=stuj; stuj=stuk;stuk=temp; printf(n 学生学号 学生姓名 课程编号 课程名称 学分 综合成绩n) printf(=n); for(j=0;ji;j+) printf(n%10s %10s %10d %8s %6.2f %7.4fn,stuj.code,stuj.name,stuj.kcbh,stuj.kc_name,stuj.c_cridit,stuj.sum); /ch if else if(ch=2) /升序排列 if(ch1=1)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号