用c语言编写计算器程序一个学生成绩管理系统的程序。要求用到结构、链表、文件。题目如图。

文档分类:
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,
下载前请先预览,预览内容跟原文是一样的,在线预览图片经过高度压缩,下载原文更清晰。
您的浏览器不支持进度条
下载文档到电脑,查找使用更方便
还剩?页未读,继续阅读
播放器加载中,请稍候...
该用户其他文档
下载所得到的文件列表C语言程序设计-学生成绩管理系统资料.doc
文档介绍:
题目学生成绩管理系统一、功能 1. 每一条记录包括一个学生的学号、姓名、语数外 3 门成绩、平均成绩 2. 输入功能:可以一次完成有限(不大于 2000 )条记录的输入 3. 显示功能:完成全部学生记录的显示 4. 查找功能:完成按学号或姓名查找学生记录,并显示 5. 排序功能:按学生学号或平均成绩进行排序 6. 保存功能:将学生记录保存在 Information.txt 文件中 7. 读取功能:将保存在文件中的学生记录读取出来 8. 有一个清晰美观界面来调用各个功能二、要求 1. 整个系统均用 C 语言实现 2. 利用指针、结构体数组或链表来实现学生成绩的数据结构设计 3. 系统具有输入、显示、查询、修改、删除、排序、保存、读取等基本功能 4. 系统的各个功能模块都用函数的形式来实现 5. 可以将学生成绩信息保存在文件中 6. 可以将学生信息从文件中读取出来三、设计内容整个学生成绩管理系统由主函数及 12 个子函数构成, 实现学生成绩录入、显示、查询、排序、修改、保存、读取和删除共 8 项功能,各函数功能相信说明如下: 1. 主函数 int main() 利用无限次循环 while 和 switch 实现对各个函数的调用, 使用时根据输入的数字来调用相应的函数 2. 显示主菜单函数 void DispMainMenu() 这是一个无参函数, 用来显示程序主菜单, 用户通过输入对应功能前的数字来实现相应的功能 3. 学生成绩录入函数 int InformationInput(STUDENT stu[],) 这是一个有返回值的有参函数,形参 STUDENT stu[] 为结构体数组指针,表示存有学生信息的结构体数组的头指针, 形参 为当前学生人数, 返回值为当前学生人数。其作用是输入有限个学生的成绩信息。算法: 定义 3 个变量, num 用来存放本次录入学生人数,i 、j 为循环变量。由键盘输入学生人数赋值给 num ,判断 num 是否大于 MAX_NUM ( 2000 ),若大于,则提示输入人数太多,函数返回值 0 ;若不大于,则依次输入 num 个学生信息。 4. 显示所有学生信息函数 void DispInformation(STUDENT stu[],int MAX) 这是一个无返回值的有参函数,形参 STUDENT stu[] 为结构体数组指针,表示存有学生信息的结构体数组的头指针, 形参 int MAX 为为当前学生人数。其作用是现实当前所有学生成绩信息。 5. 查找指定学号的学生的信息函数 int FindStudentnumber(STUDENT stu[],int findnumber,int MAX) 这是一个有返回值的有参函数,形参 STUDENT stu[] 为结构体数组指针,表示存有学生信息的结构体数组的头指针, 形参 int MAX 为当前学生人数。其作用是根据指定学号查询学生成绩信息,若查找到指定学号学生信息,则返回该学生学号,否则返回-1 。算法: 6. 查找指定姓名的学生的信息函数 int FindStudentname(STUDENT stu[],char findname[],int MAX) 这是一个有返回值的有参函数,形参 STUDENT stu[] 为结构体数组指针,表示存有学生信息的结构体数组的头指针, 形参 int MAX 为当前学生人数。其作用是根据指定姓名查询学生成绩信息,若查找到指定姓名学生信息,则返回该学生学号,否则返回-1 。算法: 7. 学生信息查询函数 void QueryInformation(STUDENT stu[],int MAX) 这是一个无返回值的有参函数,形参 STUDENT stu[] 为结构体数组指针,表示存有学生信息的结构体数组的头指针, 形参 int MAX 为当前学生人数。其作用是可以根据学号或姓名查找到指定学生的成绩信息。算法: 定义查询方式字符变量 select , 指定学号整型变量 findnumber , 指定姓名字符串数组 findname[10] , 整型变量 i, 循环变量 j。调用函数时, 屏幕提示选择查询方式, 若选择按学号查询,则输入学号后调用查找指定学号的学生的信息函数 int FindStudentnumber(STUDENT stu[],int findnumber,int MAX) 将返回值赋给变量 i, 若变量 i 不为-1 , 则查找成功, 输出学生信息, 否则在屏幕显示“输入学号不存在”; 若选择按姓名查询则输入姓名后调用查找指定姓名的学生的信息函数 int FindStudentname(STUDENT stu[],char findname[],int MAX) 将返回值赋给 i ,若变量 i 不为-1 ,则查找成功,输出学生信息,否则在屏幕显示“输入学号不存在”。若在选择查询方式时输入除“1”、“2”外的其他字符,则提示“选择错误”。 N-S 图 8. 修改学生信息函数 void EditInformation(STUDENT stu[],int MAX) 这是一个无返回值的有参函数,形参 STUDENT stu[] 为结构体数组指针,表示存有学生信息的结构体数组的头指针, 形参 int MAX 为当前学生人数。其作用是修改或删除指定学生的成绩信息。算法:定义整型变量 i、j,j 为循环变量;浮点型变量 sum ,用来寻访总成绩;整形变量 findnum 用来存放需要修改信息的学生学号;字符变量 select 用来存放修改方式代号。输入学号后调用查找指定学号的学生的信息函数 int FindStudentnumber(STUDENT stu[],int findnumber,int MAX) 将返回值赋给变量 i , 若变量 i 不为-1 , 则存在该学号学生。在屏幕提示选择修改方式, 若选择修改信息, 则先在屏幕输出原信息, 后按提示依次修改信息; 若选择删除信息,则调用删除信息函数 void Delete(STUDENT stu[],int n,int MAX) 删除该学号学生信息。若未查找到指定学号,则在屏幕输出“您输入的学号不存在”。 N-S 图 9. 按学号排序函数 void SortNum(STUDENT stu[],int MAX) 这是一个无返回值的有参函数,形参 STUDENT stu[] 为结构体数组指针,表示存有学生信息的结构体数组的头指针, 形参 int MAX 为当前学生人数。其作用是用冒泡法将学生成绩信息按学号由小到大排列。算法:定义循环变量 i、 j, 结构体变量 p 作为中间变量。冒泡法完成排序后,调用显示所有学生信息函数 void DispInformation(STUDENT stu[],int MAX) 在屏幕打印出排序后的学生成绩信息。 N-S 图 10. 按平均成绩排序函数 void SortScore(STUDENT stu[],int MAX) 这是一个无返回值的有参函数,形参 STU1
内容来自淘豆网转载请标明出处.
文件大小:0 KB
下载次数:学生信息管理系统c语言程序设计报告(完美)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
学生信息管理系统c语言程序设计报告(完美)
&&学生信息管理系统c语言程序设计报告(完美)
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩20页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢相关文章推荐
/*要求:设立程序管理学生如下信息:学生学号、姓名、班级,语文、数学、英语成绩。
至少要有10名以上学生。
能够实现根据以下关键字查询:学生姓名 、学号、班级、课程名称。
第二次实训——用c语言编写学生成绩管理系统代码留念
(1)给出所选课程设计题目以及本题目具体所要完成的功能要求说明。
1.课程设计题目:学生成绩管理系统
2.完成的功能要求:
(1).主要实现的功能:...
char buf[255];
char c=14;
char path[]="D:\\dat...
此学生成绩管理系统完成15项功能,是我经过很多次的修改得到的。花费时间不短,功能齐全,主要完成了:输入,输出,插入,修改,删除,查询,读取文件,写入文件,复制文件,建立索引,显示各种情况下的信息,追加...
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 学...
他的最新文章
讲师:董晓杰
讲师:姚远
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)&&&&&&&&&&
copyright& 六维论文网 严禁转载 如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。参加一个c语言比赛,写个项目,学生成绩管理系统,用单项链表写的,有什么功能,很出彩_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
参加一个c语言比赛,写个项目,学生成绩管理系统,用单项链表写的,有什么功能,很出彩
我有更好的答案
=&0;//当前节点个数初始化为0(头结点不计算在内) return&DONE;2: read_from_file();//当前节点指针指向第一个节点
printf(&\t====当前已存入&=&head-&*curr&=&6;#define&_COURSES&3//定义科目数#define&//查找指定信息节点int&modify_stu();//修改指定信息节点int&remove_stu();=&1, //不存在 OPENFAIL&//当前节点指针指向第一个结点 total&=&NULL;*&nbsp:&*temp);void&main()&{ int&&//从文件中读取信息void&//姓名 float&cls&);
printf(&choice);请选择#include&&//显示所有学生信息int&find_stu();{
system(&sort_list();&//清空缓冲区
switch&(choice)&{
case&1: add_stu();
case&7: save_to_file();&
case&(student&#include&pause&); }}int&init()&{ head&=&sizeof(student)//定义结构体大小//枚举返回值情况enum&status&{ OVERFLOW&=&3
//返回};typedef&
system(&choice&*)malloc(_LEN); curr&%d&start();
fflush(stdin);=&NULL.h&#include&&stdio.h&//声明链表头结点student&(student&
case&nbsp:&
case&4:&modify_stu(); } head-&//关于int&quit();StudentInfo&*//存放下一节点的地址}//endstudent&*head&about();(;-1, //内存(溢出)问题 DONE&=&//学号 char&name[11];//删除指定信息节点int&sort_list();//对链表排序int&save_to_file();//将所有信息保存至文件int&read_from_file();=&0;//声明当前节点个数int&&nbsp!head)&{//如果申请空间失败,返回
return&OVERFLOW,total); printf(&请输入第&%d&个学生的信息\n&,total&+&1); if&(BACK&==&entering(add))&{
free(add);
return&BACK; }
head-&next&=&//头结点指针域指向新建的节点 add-&next&=&//新建节点指针域指向第一个节点 curr&=&
&//当前节点指向新建的节点 total&+=&1;
&//更新学生总人数 return&DONE;}int&show_all()&{ if(0&==&total)&{
printf(&\t====没有可供显示的学生信息!\n&);
return&NOFOUND; } curr&=&head-&//当前节点指针指向第一个节点 printf(&\t%4s%12s%12s&,&序号&,&学号&,&姓名&); for(int&m&=&0;&m&&_COURSES;&m++)&{
printf(&%7s&,&科目&); } printf(&\n&); printf(&\t-------------------------------------------------------------\n&); for(int&i&=&1;&i&=&i++)&{
show_stu(curr,i);
curr&=&curr-&//当前节点指针后移 } printf(&\t-------------------------------------------------------------\n&); return&DONE;}int&find_stu()&{ char&stu_name[11]; int&flag=1; printf(&请输入要查找的学生姓名:&); scanf(&%s&,stu_name); curr&=&head-&//指向第一个节点 while&(curr&!=&NULL)&{
if&(strcmp(stu_name,curr-&name)&==&0)&{
printf(&\t%4s%12s%12s&,&序号&,&学号&,&姓名&);
for&(int&m=0;&m&&_COURSES;&m++)&{
printf(&%7s&,&科目&);
printf(&\n&);
printf(&\t-------------------------------------------------------------\n&);
show_stu(curr,flag);
return&DONE;
curr&=&curr-&
++ } printf(&\t====没有找到&%s&!请仔细核对姓名再查找\n&,stu_name); return&NOFOUND;}int&modify_stu()&{ char&stu_name[11]; int&flag&=&1; curr&=&head-&//指向第一个节点 printf(&请输入要修改的学生的姓名:&); scanf(&%s&,stu_name); while(curr&!=&NULL)&{
if(strcmp(stu_name,curr-&name)&==&0)&{
printf(&\t%4s%12s%12s&,&序号&,&学号&,&姓名&);
for(int&m&=&0;&m&&&_COURSES;&m++)&{
printf(&%7s&,&科目&);
printf(&\n&);
printf(&\t-------------------------------------------------------------\n&);
show_stu(curr,flag);
entering(curr);
printf(&\t====成功修改了&%s&的所有信息!\n&,stu_name);
return&DONE;
curr&=&curr-&
++ } printf(&\t====没有找到&%s&!请仔细核对姓名\n&,stu_name); return&NOFOUND;}int&remove_stu()&{ student&*pre= char&stu_name[11]; curr&=&head-&//指向第一个节点 printf(&请输入要删除的学生的姓名:&); scanf(&%s&,stu_name);
while&(curr&!=&NULL)&{
if&(strcmp(stu_name,curr-&name)&==&0)&{
pre-&next&=&curr-& //
free(curr);
printf(&\t====已成功删除\&%s\&\n&,stu_name);
return&DONE;
pre&=&pre-&
curr&=&curr-& } printf(&\t====没有找到&%s&!请仔细核对姓名\n&,stu_name); return&NOFOUND;}int&sort_list()&{ student&*temp&=&(student&*)malloc(_LEN); student&*curr_i&=&head-& student&*curr_j&=&NULL; char&choice='0';
printf(&\t&\t1----按学号排序&.\t2----按姓名排序&.&&&&&&&&&&&\n&); printf(&\t&\t3----按科目排序&.\t0----退&出&排&序.&&&&&&&&&&&\n&);& printf(&请选择:&); scanf(&%c&,&choice); fflush(stdin); switch&(choice)&{
case&'1':&{
while(curr_i-&next&!=&NULL) {
curr_j&=&curr_i-&
while&(curr_j&!=&NULL)&{
if&(curr_i-&num&&&curr_j-&num)&{
change(curr_i,curr_j,temp);
curr_j&=&curr_j-&
curr_i&=&curr_i-&
printf(&\t====排序成功!\n&);
case&'2':&{
while(curr_i-&next&!=&NULL) {
curr_j&=&curr_i-&
while&(curr_j&!=&NULL)&{
if&(strcmp(curr_i-&name&,&curr_j-&name)&&&0)&{
change(curr_i,curr_j,temp);
curr_j&=&curr_j-&
curr_i&=&curr_i-&
printf(&\t====排序成功!\n&);
case&'3':&{
while(curr_i-&next&!=&NULL) {
curr_j&=&curr_i-&
while&(curr_j&!=&NULL)&{
if&(curr_i-&scores[0]&&&curr_j-&scores[0])&{
change(curr_i,curr_j,temp);
curr_j&=&curr_j-&
curr_i&=&curr_i-&
printf(&\t====排序成功!\n&);
case&'0':&{
free(temp);
return&BACK;
default:&{
printf(&\t====输入有误!\n&);
} } free(temp); return&DONE;}int&save_to_file()&{ curr&=&head-& if&(total&==&0)&{
printf(&\t====目前还没有任何信息,不用保存!\n&);
return&BACK; } FILE&* if((fp=fopen(&record.dat&,&wb&))==NULL)&{
printf(&\t====文件打开失败!\n&);
return&OPENFAIL; } while&(curr&!=&NULL)&{
//将数据成块写入文件
fwrite((char&*)curr,&_LEN,&1,&fp);
curr&=&curr-& } fclose(fp); printf(&\t====信息已成功保存至文件\&record.dat\&文件中\n&); return&DONE;}int&read_from_file()&{ char&judge='y'; FILE&* if((fp&=&fopen(&record.dat&,&r&))&==&NULL)&{
printf(&文件不存在或者打开失败!\n&);
return&OPENFAIL; } printf(&\t====读取文件会覆盖当前信息!是否确定载入文件?(y/n):&); scanf(&%c&,&judge); if&(judge=='n'&||&judge=='N')&{
return&BACK; } quit();//释放以前所有信息的空间 init();//重新初始化链表 curr&=&//当前节点指针指向头结点
student&*add=(student&*)malloc(_LEN);//申请空间存放读取的信息
while&(fread((char&*)add,&_LEN,&1,&fp))&{&//由于存储的信息是最新的信息在前,所以读取的时候将其添加在链表尾
add-&next=curr-&
curr-&next=
add=(student&*)malloc(_LEN);
++ } fclose(fp); printf(&\t====文件载入成功!当前已有%d个学生。\n&,total); return&DONE;}void&about()&{ printf(&\t#############################################################\n&); printf(&\n\t&\t欢迎各位用户反馈、提出宝贵的意见和建议&&\n&);&&&&&&&&&&&&&&&&&&&&&&&&& printf(&\t&\t联系方式&&\n&);&&&&&&&&&&&& printf(&\t&\t手&&机:&&\n&); printf(&\t&\tE-mail:&&\n&); printf(&\n\t&\t\tC语言学生成绩管理系统1.0版\n\n&); printf(&\t#############################################################\n&);}int&quit()&{ curr&=head-& student&*temp= while(curr&!=&NULL)&{
temp=curr-&
free(curr);
curr= } curr=NULL; temp=NULL; free(head);//释放头节点 return&DONE;}int&entering(student&*input)&{ printf(&\n请输入学生的学号(输入0退出添加):&); scanf(&%d&,&input-&num); if&(0&==&input-&num)&{
return&BACK; } printf(&请输入学生的姓名(五个汉字以内):&); scanf(&%s&,input-&name); printf(&请输入%d门科目的成绩(用空格隔开):&,&_COURSES); for&(int&i=0;&i&_COURSES;&i++)&{
scanf(&%f&,&input-&scores[i]); } return&DONE;}void&show_stu(student&*show,&int&serial)&{ printf(&\t%4d%12d%12s&,serial,show-&num,show-&name); for&(int&i&=&0;&i&&&_COURSES;&i++)&{
printf(&%7.1f&,show-&scores[i]); } printf(&\n&);}void&start()&{ printf(&\n&); printf(&\t\t\t欢迎使用学生成绩管理系统\n&); printf(&\t*************************************************************\n&); printf(&\t|\t1----添&加&学&生.\t2----显&示&信&息.&&&&&&&&&&|\n&);&&&&&&&&&&&&&&&&&&&&&&&&& printf(&\t|\t3----查&找&学&生.\t4----修&改&信&息.&&&&&&&&&&|\n&);&&&&&&&&&&&& printf(&\t|\t5----删&除&学&生.\t6----学&生&排&序.&&&&&&&&&&|\n&); printf(&\t|\t7----信&息&存&档.\t8----读&取&存&档.&&&&&&&&&&|\n&); printf(&\t|\t9----关&&&&&&&于.\t0----退&&&&&&&出.&&&&&&&&&&|\n&);&&&&printf(&\t*************************************************************\n&);}void&change(student&*former,&student&*latter,student&*temp)&{
*temp&=&* strcpy(former-&name&,&latter-&name); strcpy(latter-&name&,&temp-&name); former-&num&=&latter-& latter-&num&=&temp-& for&(int&i=0;&i&_COURSES;&i++)&{
former-&scores[i]&=&latter-&scores[i];
latter-&scores[i]&=&temp-&scores[i]; }
};next&scores[_COURSES];//各科成绩 //指针域 struct&//显示指定学生信息void&nbsp,
//成功 NOFOUND&,&amp:&stdlib.h&student&*latter,&student&%d&&);
case&0: quit();&exit(0);&
struct&change(student&个同学\n&;init();//初始化链表int&add_stu();//添加新节点int&show_all();=&head-&break: find_stu();//程序开始界面void&3;//释放所有节点空间int&entering(student&*input);//录入学生信息void&show_stu(student&*show,&int&StudentInfo&{ //数据域 unsigned&int& }int&add_stu()&*)malloc(_LEN);//为头结点申请空间 if&_LEN&8;=&2, //打开(文件)失败 BACK&=&
case&5: remove_stu();&
case&&nbsp,&0;//指向下一节点(空) curr&serial);
case&9: about();show_all();&
case&=&0; init(); while(1)&
scanf(&quot:&{ student&*add&=&NULL;//声明指向当前节点的指针int&total&nbsp
采纳率:67%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包

我要回帖

更多关于 c语言成绩管理系统6.0 的文章

 

随机推荐