1、C语言课程设计学生成绩管理系统C课程设计报告专业:班级:学号:姓名:指导老师: 日期: 一、 设计任务与要求1.设计内容: 按班级完成对学生成绩的录入,修改,能按班级统计学生的成绩;求学生的总分及平均分;并能根据学生的平均成绩进行排序,能查询学生成绩,不及格科目及学生名单;能按班级输出学生的成绩单。 设置学生的成绩信息:学生学号、姓名、所选课程名称、显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信息。能根据学生的姓名、学号、班级进行相应成绩的查询。2.课程设计的要求:根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序来实现设计课程内容中的全部
2、功能;设计主控模块程序对给出的程序源代码要给出各部分的详细注释自己根据能力及需要添加相应功能模块,增强模拟系统功能。包括系统的功能分析、系统的功能模块设计、程序流程图或结构框图、逻辑结构设计,数据库中的表、课程设计体会。二、 系统分析1.要求分析:1)能对学生各科成绩进行录入2)能对学生的成绩进行增加、删除、修改3)能对学生的姓名、学号、班级进行修改4)能对学生的成绩按总成绩,姓名,学号进行查询 5)能输出学生的姓名、学号、班级、成绩 6)能进行成绩统计、分析、排序7)能进行总分查询排名 4.系统功能模块学生成绩查询系统有:成绩录入、增加、删除、修改,数据查询,排序显示构成。5.模块框架图 三
3、、程序代码#include #include#include#include#include#includeusing namespace std;struct xueshengguanli string name; string banbie; int num; float Clanguage; xueshengguanli *next; typedef xueshengguanli* xueshengGL;xueshengGL Input(xueshengGL head) char SEL=y; int m=0; xueshengGL p1,p2,top; ofstream out_str
4、eam; out_stream.open(student.txt,ios:app); /以追加数据信息打开文件 if(out_stream.fail() coutnext=NULL; coutp1-name; coutp1-num; coutp1-banbie; coutp1-Clanguage; if(m=0) head=p1; p2=head; m=1; else p2-next=p1; p2=p1; coutSEL; top=head; /写入文件 while(head!=NULL) out_streamname numtbanbietClanguage; head=head-next;
5、 out_stream.close(); /关闭文件 if(SEL=n|SEL=N) cout输入完毕.n; return top; /返回链表头结点地址/从文件里读取数据xueshengGL WenJian(xueshengGL top) int n=0; xueshengGL p,h; ifstream in_stream; in_stream.open(student.txt); if(in_stream.fail() coutnext=NULL; in_streamp-namep-nump-banbiep-Clanguage; if(n=0) top=p; h=top; n=1; el
6、se h-next=p; h=p; in_stream.close(); return top;void xuanzhe(xueshengGL top) int h; while(h2) couth; if(h=1) couttop-banbie; break; else if(h=2) couttop-Clanguage; break; else coutn输入错误!请重输!n; /修改xueshengGL Change(xueshengGL top) string NAME; int NUM,l=0; char SEL=y; xueshengGL q,head; coutNAME; cou
7、tNUM; top=WenJian(top); q=top; while(top!=NULL) if(top-name=NAME&top-num=NUM) l=1; while(SEL=y|SEL=Y) coutn 1:班级 2:C语言成绩n; xuanzhe(top); coutn这是修改后的学生信息:n; coutn姓名t学号t班级tC语言成绩n; coutnametnumtbanbietClanguageendl; coutSEL; if(SEL=n|SEL=N) coutnext; /修改后学生信息写入文件 if(l=1) head=q; ofstream out_stream; ou
8、t_stream.open(student.txt,ios:trunc); /以覆盖文件原数据方式打开文件 if(out_stream.fail() cout打开文件失败.n; exit(1); while(head!=NULL) out_streamname numttbanbietClanguage; head=head-next; out_stream.close(); else coutn对不起,没有你要修改的人.nn; return q;/删除xueshengGL Del(xueshengGL top) string NAME; int NUM,l=0,n=0; xueshengGL
9、 p,h,q,back,head; coutNAME; coutNUM; ofstream out_stream; ifstream in_stream; in_stream.open(student.txt); if(in_stream.fail() cout打开文件失败.n; coutnext=NULL; in_streamp-namep-nump-banbiep-Clanguage; if(n=0) top=p; h=top; n=1; else h-next=p; h=p; in_stream.close(); q=top; while(1) if(NAME=top-name&NUM=
10、top-num&top-next=NULL) l=2; top=q-next; out_stream.open(student.txt,ios:trunc);/删除文件 break; if(NAME=top-name&NUM=top-num&top-next!=NULL) l=1; top=q-next; coutnext=NULL) printf(n对不起,没有找到此人!n); break; back=q; q=q-next; if(NAME=q-name&NUM=q-num) l=1; back-next=q-next; coutn删除成功.n; break; /删除学生信息后重新写入文件
11、 if(l=1) head=top; out_stream.open(student.txt,ios:trunc); if(out_stream.fail() cout打开文件失败.n; exit(1); while(head!=NULL) out_streamname numtbanbietClanguage; head=head-next; out_stream.close(); else if(l=2) coutn删除成功.n; else coutn找不到此人信息!n; return top;/查询 xueshengGL LookUp(xueshengGL top) string XM;
12、 int number,l=0; coutXM; coutnumber; top=WenJian(top); while(top!=NULL) if(XM=top-name&number=top-num) l=1; coutendl; coutn这是你要查询人的信息.n; coutn姓名t学号t班级t综合成绩n; coutnametnumt banbietClanguagenext; if(l=1) coutn谢谢你的查询.n; else coutn对不起,没有你要查询人的信息.n; coutendl; return top;xueshengGL sort(xueshengGL top) st
13、ring name1,banbie1; int num1; float Clanguage1; int n=0,l=0; xueshengGL p1,p2,p3,p,h,head; ifstream in_stream; in_stream.open(student.txt); if(in_stream.fail() cout打开文件失败.n; coutnext=NULL; in_streamp-namep-nump-banbiep-Clanguage; l=1; if(n=0) top=p; h=top; n=1; else h-next=p; h=p; in_stream.close();
14、 for(p1=top;p1-next!=NULL;p1=p1-next) l=1; for(p2=p1-next;p2!=NULL;p2=p2-next) if(p1-ClanguageClanguage) name1=p1-name; p1-name=p2-name; p2-name=name1; num1=p1-num; p1-num=p2-num; p2-num=num1; banbie1=p1-banbie; p1-banbie=p2-banbie; p2-banbie=banbie1; Clanguage1=p1-Clanguage; p1-Clanguage=p2-Clangua
15、ge; p2-Clanguage=Clanguage1; p3=top; coutn以下是全部学生的综合成绩由高到低的排序:n; coutn姓名t学号t班别tC语言成绩n; while(p3!=NULL) coutnametnumt banbietClanguagenext; if(l=1) head=top; ofstream out_stream; out_stream.open(student.txt,ios:trunc); /以覆盖文件原数据方式打开文件 if(out_stream.fail() cout打开文件失败.n; exit(1); while(head!=NULL) out_
16、streamname numttbanbietClanguage; head=head-next; out_stream.close(); else coutn谢谢.n; coutendl; return top;void display(xueshengGL top) int l=0,n=0; xueshengGL p,h; ifstream in_stream; in_stream.open(student.txt); if(in_stream.fail() cout打开文件失败.n; coutnext=NULL; in_streamp-namep-nump-banbiep-Clangua
17、ge; l=1; if(n=0) top=p; h=top; n=1; else h-next=p; h=p; in_stream.close(); if(l=1) coutn以下是全部学生信息:n; coutn姓名t学号t班别tC语言成绩n; while(top!=NULL) coutnametnumt banbietClanguagenext; coutendlendl; return; int main() xueshengGL head; int sel; while(1) couttt-n tt 欢迎使用学生信息管理系统n tt 1输入学生信息n tt 2修改学生信息n tt 3删除
18、学生信息n tt 4查找学生信息n tt 5学生综合成绩排序信息n tt 6显示学生信息n tt 0返回n tt-nnn; coutsel; coutn; switch(sel) case 1:head=Input(head); break; case 2:head=Change(head); break; case 3:head=Del(head); break; case 4:head=LookUp(head); break; case 5:head=sort(head); break; case 6:display(head);break; case 0: cout谢谢使用再见nn; exit(0); default : cout输入有错误请重新输入!nn; return 0; 四、 程序相关的截图每一步的过程截图如下,读者可以将程序的代码输入进去进行相关的操作,也可以得到相应的结果!五、心得体会
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2