C语言课程设计论文.doc

上传人:精*** 文档编号:865421 上传时间:2023-10-05 格式:DOC 页数:14 大小:373.38KB
下载 相关 举报
C语言课程设计论文.doc_第1页
第1页 / 共14页
C语言课程设计论文.doc_第2页
第2页 / 共14页
C语言课程设计论文.doc_第3页
第3页 / 共14页
C语言课程设计论文.doc_第4页
第4页 / 共14页
C语言课程设计论文.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、 教务信息管理系统1.问题描述1.1 设计一个教务信息管理系统,该程序具有以下功能: (1)录入如下信息: 学生基本信息:如学号、姓名、性别、年龄、宿舍号 码、电话号码 等。 课程基本信息:课程编号、课程名称、考试成绩、平时成绩、综合成 绩、学分、重修否等。如果重修,需要考虑重修学期、重修成绩,并 且要考虑多次重修的情况。 (2)录入选课信息 (3)录入学生成绩 (4)按班统计学生选课情况及考试成绩。 (5)按课程统计学生名单及考试成绩。 (6)统计并输出每个同学已修学分及不及级课程。1.2 这个程序有以下几种功能(包括自己新添加的功能):(1) 用户进入界面前需先输入登陆密码,输入错误后重新

2、输入,直到四次 后结束输入,退出系统;(2) 用户可以根据菜单提示输入字符,选择所需要的功能;(3) 用户可以录入所有必需的信息,输出所有信息,输出课程排名信息 输出各班成绩信息,按学号删除学生信息,查看删除后剩余的学生信 息,列出不及格学生,统计学分和统计选课信息,查找学生信息; (4)设置了背景和字体颜色,美化了界面;1.3开发平台及工具介绍:Microsoft Visual C+软件 使用语言:C语言2.系统分析2.1总体结构设计: 登录密码输入 主菜单统计学生学分统计课程信息按学号查找信息列出不及格学生按学号删除学生信息输出各班成绩信息输出学生排名信息输出学生全部信息输入学生基本信息退

3、出2.2 数据结构设计:2.2.1主要数据的结构: 用户信息:struct student/学生信息 int Class;/班级 char num13;/学号 char name20;/姓名 char sex5;/性别 int age;/年龄 char room50;/宿舍号码 char phone15;/电话号码 int subject;/课程门数 struct course cou10;/课程及成绩 struct student *next;/下一个学生; 课程信息: struct course/课程char num10;/课程编号 char name20;/课程名称 float kaos

4、hi;/考试成绩 float pingshi;/平时成绩 float zonghe;/综合成绩 int xuefen;/学分 char re5;/是否重修pass或fail struct chongxiu ag5;/重修情况 int times;/重修次数; 课程成绩信息: struct score/课程成绩 char name20;/课程名float kaoshi; /考试成绩float pingshi;/平时成绩float zonghe;/综合成绩 ; 2.2.2数据的持久存储设计:将所有信息写入“教务处系统学生信息库.txt”中,然后读出并 输出内容;各个功能函数分别存放在后缀为“.cp

5、p”文件中, 如“1.cpp”表示第一个功能的文件2.3系统各个函数及函数之间关系设计: 主函数main() Creat() shuchu(head)putout()xieru(head)insert()fenlei(heads)paixu(heads)shengyu1(head)classxinxi(head)shengyu2(head)head=del(head)guake(head)xuefen(head) chazhao(head)2.4界面设计2.4.1密码界面2.4.2系统功能界面3.系统实现(主要功能)3.1 录入学生信息流程图输入姓名,学号输入班级0班级60? 是 否 输入K个

6、重修学期和考试分数是是否退出?否 否返回主菜单代码: struct student *creat() struct student*head=NULL, *stu,*p1;int i=0,j=0,con=1,n=0;system(cls);stu=(struct student*)malloc(sizeof(struct student); while(con=1) system(cls);printf(#n);printf(#现在开始输入学生基本信息#n);printf(#nn);printf( 姓名(Your name):);scanf(%s,&stu-name);printf(n);pr

7、intf( 学号(Your number):);scanf(%s,stu-num);printf(n);printf( 班级(Your class):); scanf(%d,&stu-Class);while(stu-ClassClass500)printf(输入错误,请重新输入:);scanf(%d,&stu-Class);printf(n); printf( 性别(boy or girl):);scanf(%s,stu-sex); while(strcmp(boy,stu-sex)!=0)&(strcmp(girl,stu-sex)!=0)printf(输入错误,请重新输入(ERROR):

8、); scanf(%s,stu-sex); printf(n); printf(n);printf( 你的年龄(Your age):);scanf(%d,&stu-age);printf(n); printf( 你的宿舍号码(Your room number):);scanf(%s,stu-room); printf(n);printf( 你的电话号码(Your telphone number):);scanf(%s,stu-phone);printf(n); printf( 你选修的课程门数(Your course):);scanf(%d,&stu-subject);printf(n); f

9、or(j=0;jsubject;j+) printf(课程编码(Course number):);scanf(%s,stu-couj.num);printf(n); printf(课程名称(Course name):);scanf(%s,stu-couj.name);printf(n); printf(学生的考试成绩:);scanf(%f,&stu-couj.kaoshi);printf(n); printf(学生的平时成绩:);scanf(%f,&stu-couj.pingshi);printf(n); printf(学生的综合成绩:);scanf(%f,&stu-couj.zonghe);

10、printf(n); printf(学生的已修的总学分:);scanf(%d,&stu-couj.xuefen);printf(n); if(stu-couj.kaoshicouj.kaoshi0) strcpy(stu-couj.re,fail); else strcpy(stu-couj.re,pass); if(strcmp(fail,stu-couj.re)=0) printf(你的考试成绩不及格哦,需重修n);printf(请输入重修次数:);scanf(%d,&stu-couj.times);printf(n); for(i=0;icouj.times;i+)printf(输入重修

11、的学期:); scanf(%s,stu-couj.agi.xueqi); printf(n); printf(输入重修后考试分数:); scanf(%f,&stu-couj.agi.rescore); printf(n); n+; if(n=1) head=stu;elsep1-next=stu;p1=stu; stu=(struct student*)malloc(sizeof(struct student);printf(#此学生信息输入完毕。停止输入请按 0 ,录入下一个学生信息按 1 :#);printf(nn); printf( 请输入你的选择:);scanf(%d,&con);pr

12、intf(n); system(cls); p1-next=NULL; stu=NULL;return(head);void xieru(struct student *head)FILE *fp;struct student *stu;stu=head; system(cls);fp=fopen(教务系统学生信息库.txt,a+);if(head=NULL);else while(stu!=NULL) fwrite(stu,sizeof(struct student),1,fp);stu=stu-next; fclose(fp);/关闭文件3.2删除学生信息流程图输入学号主菜单是否确定删除

13、否主菜单学号是否存在 否删除学生信息将剩余学生信息写进文件是否查看剩余学生信息主菜单 否 是输出剩余学生信息代码struct student*del(struct student*head) struct student*p1,*p2; p1=head; char num13,b7; int n=0;if(head=NULL)printf(nnn 你还没有输入一个学生信息或学生信息已被清空nnn);return 0; printf(nnnnn 请输入你要删除的学生的学号:nn);scanf(%s,num);system(cls);printf(nnnnnnnnnn 请慎重考虑!若真要删除请输入

14、Y,否则输入任一字符!); scanf(%s,b); fflush(stdin);system(cls);while(strcmp(Y,b)!=0)printf( nn 输入错误,请重新输入:); scanf(%s,b); system(cls); if(strcmp(Y,b)=0) if(head=NULL) printf(nnnnnnn 还 没 有 学 生 的 信 息); return(head); while(strcmp(num,p1-num)!=0&(p1-next!=NULL) p2=p1; p1=p1-next; if(strcmp(num,p1-num)=0) if(head=

15、p1)head=p1-next; else p2-next=p1-next; shengyu1(head); printf(nn#学号为%s的学生的信息已被删除#nnn,num); printf( 请问是否查看删除后剩余的学生信息,若要请输入 1 ,否则输入任一数字!); scanf(%d,&n); system(cls); if(n=1)shengyu2(head); else printf(nnnnn 对 不 起,这 里 没 有 学 号 为 %s 的 信 息nnnnnnn,num); else printf(nnnnnnnnnnn);return(head);void shengyu1(s

16、truct student *head)FILE *fp;struct student *stu;int n=0; fp=fopen(教务系统学生信息库.txt,w);stu=head; if(head=NULL) printf(文件中还没有学生基本信息n);return;elsewhile(stu!=NULL&stu-ClassClass0) if(stu-ClassClass0) n+;fwrite(stu,sizeof(struct student),1,fp);printf(nn 删除后剩余学生的姓名: %-2d 、 %-12snn,n,stu-name); stu=stu-next;

17、fclose(fp);void shengyu2(struct student *head )struct student*stu;int n=0,i,j,l;system(cls);stu=head;if(head=NULL) printf(nnnnnnnn对不起,还没有学生的信息,请问是否输入新信息,若要请输入1;否则请输入0nn);elseprintf(n 以下是删除后所剩学生的个人基本信息以及具体选课信息nn);while(stu-next!=NULL)if(stu-ClassClass ,stu-num ,stu-room ,stu-sex ,stu-age ,stu-name ,s

18、tu-phone ,stu-subject );for(j=0,l=1;jsubject;j+,l+)printf(选课具体信息:n);printf( #第%d科#nn,l);printf(课程编号:%s 课程名称:%snn,stu-couj.num,stu-couj.name);printf(考试成绩:%0.1f 平时成绩:%0.1fnn,stu-couj.kaoshi,stu-couj.pingshi);printf(综合成绩:%0.1f 学分:%dnn,stu-couj.zonghe,stu-couj.xuefen);printf(考试情况(fail or pass?):%snn,stu

19、-couj.re);if(strcmp(fail,stu-couj.re)=0)printf(重修次数:%-20d,stu-couj.times);for(i=0;icouj.times;i+)printf( 重修学期:%-20s 重修分数:%-20.1fnn,stu-couj.agi.xueqi,stu-couj.agi.rescore);stu=stu-next;printf(-); printf( 删 除 信 息 后 还 剩 %2d 位 学 生 的 信 息n,n);4.系统测试4.1用户登录模块测试设计测试用例:样例一:数据:125; 预期结果:密码输入错误哦!你只有3次机会了哦,请重新

20、输入:; 样例二:设计测试用例:数据:123; 预期结果:进入主菜单;实际运行程序:样例一:密码输入错误哦!你只有3次机会了哦,请重新输入:。 样例二:进入主菜单。测试结论:登录模块可运行4.2删除信息测试设计测试用例:样例一:数据:201231000523 预期结果:学号存在,并成功删除,且可查看剩余学生信息 样例二:数据:201231000588 预期结果:该学号不存在实际运行程序:样例一:学号存在,并成功删除,且可查看剩余学生信息。 样例二:该学号不存在测试结论:删除系统可运行5.系统运行界面5.1录入信息界面5.2输出信息界面 5.3统计学分界面5.4删除学生信息界面 6.总结通过这次课程设计,我发现了自己明显的不足。很多基本功都不扎实。比如说,学生信息的录入和输出,不知道怎么用文件。在删除学生信息时,也不懂怎么用指针。后来,我认真看了上学期学的C语言,学习了文件,链表和指针的使用,也温习了循环结构和条件结构的使用。最终,我做出了老师要求的基本功能,也增添了一些新的东西,比如密码登陆和界面的清屏和颜色调节。虽然完成了课程设计,但这个程序也有一些问题,比如说,文件里的东西用txt保存后打开时乱码,因为我还不懂进制的转换,同时,程序的健壮性也不够,不能承受暴力运行的压力。在这次课程设计里,我和宿舍的同学互相讨论和帮助,帮助了我解决难题,让我受益匪浅。 14

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

当前位置:首页 > 技术资料 > 课程设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922