下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学习 -好资料信息技术工程学院C 语言课程设计报告题目:学生成绩管理系统(student achievementmanagement system)更多精品文档学习 -好资料目录一 设计目的3二 课程设计的内容3三 课程设计的要求与数据4四 课程设计应完成的工作4五 总体设计(包含几大功能模块)5六 详细设计66.1 各个模块的功能和实现66.2 流程图7(管理员模式流程图)7(来宾模式流程图)88七 调试分析(各模块测试结果)9更多精品文档学习-好资料7.1源代码 .97.2各模块测试结果 .23八 总结.26九 参考资料27一 设计目的通过本课程设计巩固 C 语言程序设计课程的教学成果,深
2、入理解结构体、指针、链表、动态分配内存和文件操作的等 C 程序设计中的中高级技术,通过课程设计的综合训练,培养学生实际分析问题、编程和动手能力、提高学生利用 C 语言进行程序设计的能力,初步培养良好的编程习惯和编程风格,初步学习程序的文档的撰写方法。二 课程设计的内容通过 C 语言程序系统,设计一个可以对学生的成绩信息进行管理的程序,其中学生的信息可以包括:学号、各科目的成绩的平均分排序等, 其功能可以包括学生成绩的输入、 输出、查询、排序、删除、统计、退出等。更多精品文档学习 -好资料三 课程设计的要求与数据1、用 C语言实现系统;2、对学生信息 ( 包括学号、姓名、语文、数学、英语、平均分
3、) 进行管理 , 包括学生成绩的信息输入、 输出、查询、删除、排序、统计、退出、显示,以及整个程序的切换登录模式和修改管理员的信息 .3、学生信息包括:(1) 、每一条记录包括一个学生的学号、姓名、3门课成绩(2) 、成绩信息录入功能: ( 成绩信息用文件保存,可以一次完成若干条记录的输入。 )(3) 、成绩信息显示浏览功能:完成全部学生记录的显示。(4) 、查询功能:完成按姓名查找学生记录,并显示。(5) 、成绩信息的删除 : 按学号进行删除某学生的成绩 .(6) 、排序功能:按学生平均成绩进行排序。(7) 、应提供一个界面来调用各个功能 , 调用界面和各个功能的操作界面应尽可能清晰美观 !
4、四 课程设计应完成的工作(1) 编写算法;(2) 算法测试,并有具体的测试结果和结果分析;(3) 撰写课程设计报告。内容包括:更多精品文档学习 -好资料1) 封面扉页2) 设计任务书3) 目录4) 总体设计方案(包括流程图)5) 使用说明及运行实例(包括界面)6) 成员设计内容简介7) 项目源程序代码(注意注释的使用)8) 指导教师评语五 总体设计(包含几大功能模块)1、成绩录入功能2、成绩输出功能3、成绩查询功能4、删除模块5 、排序功能6 、统计功能7 、退出系统更多精品文档学习 -好资料六 详细设计6.1 各个模块的功能和实现(1)整个成绩管理系统设计分为9 个模块:1.输入学生成绩2.
5、删除学生成绩3.查询学生成绩4.修改学生成绩5.排序学生成绩6.保存记录7.显示所有8.退出系统9.修改管理员信息(2)(主要函数的功能)1.主函数 main() :定义学生结构体数组,调用录入,统计等函数对成绩表进行处理。2.输入数据函数input() :输入学号、成绩。3排序函数sort() :对总成绩或者平均成绩,进行排序,按从高到低或者从低到高。4.显示数据函数display():显示各个学生的总成绩5新增数据函数insert() :增加学生学生记录。更多精品文档学习 -好资料6.删除数据函数del():由于各种原因, 删除某些同学的成绩、学号等。7.平均值函数average():求各
6、个同学总成绩的平均值。8.查询数据函数qur():查询学生的信息。9.保存数据函数save():再一次打开界面是,仍有上次所找的讯息。10.退出系统函数exit() :当要退出整个系统时。6.2流程图(管理员模式流程图)开始输出菜单根据菜单输入n的值选择程序输输排查插统删保退入出序找入计除存出更多精品文档学习 -好资料(来宾模式流程图)开始输出菜单根据菜单,选择程序查询显示排序切 换退 出成绩成绩成绩登录程序结束更多精品文档学习 -好资料七 调试分析(各模块测试结果)7.1 源代码#include#include#include#include#include#define HEADER2 #
7、define FORMAT 学号%s姓名%s数学%d英语%dC 语言%d总分%d平均分 n%.2fn#define DATA p-data.num,,p-data.mgrade,p-data.egrade,p-data.cgrade,p-data.total,p-data .aveint saveflag=0;typedef unsigned short WORD;struct studentchar num10;char name15;int mgrade;int egrade;int cgrade;int total;float ave;typedef struct
8、nodestruct student data;struct node *next;Node,*Link;void menu()time_t now;now=time(NULL);printf(学生成绩管理系统n);printf(n);printf(*n);printf(*n);printf(*1输入成绩2删除成绩*n);printf(*n);printf(*3查询成绩4修改成绩更多精品文档学习 -好资料*n);printf(*n);printf(*5排序成绩6保存记录*n);printf(*n);printf(*7显示所有0退出系统*n);printf(*n);printf(*n);prin
9、tf(*8 切换登录模式9 修改管理员信息*n);printf(*n);printf(n请你选择操作命令前的的数字 (09):);int menu2()/int select;time_t now;now=time(NULL);system(cls);/ 清屏printf(n学生模式nnn);printf(学生成绩管理系统n);printf(n);printf(*n);printf(*n);printf(*1查询成绩2排序成绩*n);printf(*n);printf(*3显示所有0退出系统*n);printf(*n);printf(*n);printf(*4切换登录模式更多精品文档学习 -好
10、资料*n);printf(*n);printf(n请你选择操作命令前的数字(04):);return 0;void printheader()printf(HEADER2);void printdata(Node *pp)Node *p;p=pp;printf(FORMAT,DATA);void Wrong()printf(nnnn*错误:输入不合法!*an);getch();void Nofind()printf(n没有该学生 !n);Node* locate(Link l,char findmess,char nameornum)Node *r;if(strcmp(nameornum,nu
11、m)=0)r=l-next;while(r)if(strcmp(r-data.num,findmess)=0)return r;r=r-next;else if(strcmp(nameornum,name)=0)更多精品文档学习 -好资料r=l-next;while(r)if(strcmp(,findmess)=0)return r;r=r-next;return 0;void stringinput(char*t,int lens,char*notice)char n225;doprintf(notice);scanf(%s,n);if(strlen(n)lens)pr
12、intf(n超出宽度 !n);while(strlen(n)lens);strcpy(t,n);int numberinput(char *notice)int t=0;doprintf(notice);scanf(%d,&t);if(t100|t100|tnext;if(!p)printf(n目前无学生成绩记录!n);getch();return;更多精品文档学习 -好资料printf(nn);printheader();while(p)printdata(p);p=p-next;/ 移至下一个结点void Add(Link l)/printf( 增加学生记录模块n);/system(PAU
13、SE);Node *p,*r,*s;char ch,flag=0,num10;r=l;system(cls);Disp(l);/ 先打印已有的学生信息while(r-next!=NULL)r=r-next;/ 将只指针移至链表末尾,准备添加记录while(1)/ 一次可输入条记录,直至输入的学号我0 的记录节点添加操作s=l-next;while(1)stringinput(num,10, 学号 (按 0 退出 ):);flag=0;if(strcmp(num,0)=0)return;s=l-next;while(s)/ 查询学号是否存在,若存在则要求重新输入if(strcmp(s-data.
14、num,num)=0)flag=1;break;s=s-next;if(flag=1)/ 提示用户是否重新输入getchar();printf(= 学号 %s已存在 ,是否重新输入 ?(y/n)a:,num);scanf(%c,&ch);更多精品文档学习 -好资料if(ch=y|ch=Y)continue;elsereturn ;elsebreak;p=(Node *)malloc(sizeof(Node);strcpy(p-data.num,num);/将字符串mun 拷贝到 p-data.num 中stringinput(,15,name:);p-data.cgrad
15、e=numberinput(c语言 0-100:);p-data.mgrade=numberinput( 数学 0-100:);p-data.egrade=numberinput( 英语 0-100:);p-data.total=p-data.cgrade+p-data.mgrade+p-data.egrade;p-data.ave=(float)(p-data.total/3);p-next=NULL;while(r-next!=NULL)r=r-next;r-next=p;saveflag=1;void Del(Link l)/ printf( 删除学生记录模块 n); /system(P
16、AUSE);int sel; Node *p,*r;char findmess20; if(!l-next)system(cls);printf(n= 暂无学生记录 !n);getch();return;system(cls);Disp(l);printf(n 1 通过学号删除 2 通过姓名删除 n); printf( 请选择 1,2);scanf(%d,&sel);if(sel=1)更多精品文档学习 -好资料stringinput(findmess,10, 请输入学号 :);p=locate(l,findmess,num);if(p)r=l;while(r-next!=p)r=r-next;
17、r-next=p-next;free(p);/ 释放内存空间printf(n删除成功 !n);saveflag=1;elseNofind();else if(sel=2)stringinput(findmess,15, 请输入学生姓名:);p=locate(l,findmess,name);if(p)r=l;while(r-next!=p)r=r-next;r-next=p-next;free(p);printf(n删除成功 !n);saveflag=1;elseNofind();elseWrong();getch();void Qur(Link l)int select;char searc
18、hinput20;Node *p;system(cls);更多精品文档学习 -好资料if(!l-next)printf(n暂无学生记录!n);return;printf(n=1 通过学号查找=2 通过姓名查找 n);printf( 请选择 12:);scanf(%d,&select);if(select=1)stringinput(searchinput,10, 请输入要查找的学号:);p=locate(l,searchinput,num);if(p)printheader();printdata(p);elseNofind();else if(select=2)stringinput(sea
19、rchinput,15, 请输入学生姓名:);p=locate(l,searchinput,name);if(p)printheader();printdata(p);elseNofind();elseWrong();system(PAUSE);void Modify(Link l)Node *p;char findmess20;if(!l-next)system(cls);printf(n没有该学生记录!n);getch();更多精品文档学习 -好资料return;system(cls);printf( 修改学生记录);Disp(l);stringinput(findmess,10, 请输入
20、学号 :);p=locate(l,findmess,num);if(p)printf( 学号 :%s,n,p-data.num);printf( 姓名 :%s,);stringinput(,15, 输入新的姓名:);printf(c 语言 :%d,p-data.cgrade);p-data.cgrade=numberinput(c语言 0100:);printf( 数学 :%d,p-data.mgrade);p-data.mgrade=numberinput( 数学 0100:);printf( 英语 :%d,p-data.egrade); p-da
21、ta.egrade=numberinput( 英语 0100:); p-data.total=p-data.egrade+p-data.cgrade+p-data.mgrade; p-data.ave=(float)(p-data.total)/3;printf(n= 修改成功 !);saveflag=1;elseNofind();getch();void Sort(Link l)Link ll;Node *p,*rr,*s;int i=0;system(cls);if(l-next=NULL)printf(n暂无学生记录!n);return;ll=(Node*)malloc(sizeof(N
22、ode);/用于创建新的节点ll-next=NULL;printf( 当前状态 :n);Disp(l);system(PAUSE);更多精品文档学习 -好资料p=l-next;while(p)s=(Node*)malloc(sizeof(Node);s-data=p-data;s-next=NULL;rr=ll;while(rr-next!=NULL &rr-next-data.total=p-data.total)rr=rr-next;if(rr-next=NULL)rr-next=s;elses-next=rr-next;rr-next=s;p=p-next;l-next=ll-next;
23、p=l-next;while(p!=NULL)i+;p=p-next;printf(n*n);Disp(l);saveflag=1;printf(n*排序完成 *n);system(PAUSE);void Save(Link l)/printf( 保存模块 n);/system(PAUSE);FILE *fp;Node *p;int count=0;更多精品文档学习 -好资料fp=fopen(student.txt,wb);p=l-next;while(p)if(fwrite(p,sizeof(Node),1,fp)=1)p=p-next;count+;elsebreak;if(count0)
24、printf(nnnnn保存完毕,当前共有%d 名学生记录 n,count);saveflag=0;elseprintf( 空文件,保存失败!n);fclose(fp);/ 关闭文件getch();int login()FILE *fp1,*fp2;int state;char str120,str220,str_z20,str_m7;if(fp1=fopen(admin.txt,rb)=NULL)printf( 本系统无管理员,请创建! nn 请输入管理员账号: ); scanf(%s,str_z);printf( 请设置一个六位数密码:);fp2=fopen(admin.txt,wb);f
25、printf(fp2,%s%c,str_z,n);fprintf(fp2,%s%c,str_m, );fclose(fp2);fp1=fopen(admin.txt,rb);fscanf(fp1,%s,str1);fscanf(fp1,%s,str2);fclose(fp1);更多精品文档学习 -好资料while(1)printf( 请选择你的登录方式:nn);printf(1. 管理员模式0.来宾模式 n);printf( 请选择: (01);scanf(%d,&state);if(state=0)return 0;else if(state=1)printf( 请输入账号: );scanf
26、(%s,str_z);if (strcmp(str1,str_z)=0&strcmp(str2,str_m)=0)return 1;elseprintf( 账号或密码错误!an);system(PAUSE);system(cls);elseprintf( 输入不合法 !an);exit(0);void Modify_admin()FILE *fp;char str_z20,str_m7=;fp=fopen(admin.txt,wb);printf( 请输入管理员账号:);scanf(%s,str_z,n);printf( 请输入密码:);fprintf(fp,%s%c,str_z,n);fpr
27、intf(fp,%s%c,str_m, );fclose(fp);printf( 管理员信息更新完毕!an);getch();更多精品文档学习 -好资料int main()Link L;FILE *fp;int select,State=0;char ch,admin20,admin_p20;int count=0;Node *p,*r;system(color 0A);L=(Node*)malloc(sizeof(Node);L-next=NULL;r=L;fp=fopen(student.txt,ab+);Loop:State=login();while(!feof(fp)p=(Node*
28、)malloc(sizeof(Node);if(fread(p,sizeof(Node),1,fp)=1)p-next=NULL;r-next=p;r=p;count+;fclose(fp);if(State=1)while(1)system(cls);printf(n管理员模式 nn);menu();p=r;scanf(%d,&select);if(select=0)if(saveflag=1)getchar();printf(n记录已修改,是否保存当时记录?(y/n):);更多精品文档学习 -好资料scanf(%c,&ch);if(ch=y|ch=Y)Save(L);printf( 谢谢您
29、的使用 !n);break;switch(select)case 1:Add(L);break;/ 增加模块case 2:Del(L);break;/ 删除记录case 3:Qur(L);break;/ 查询模块case 4:Modify(L);break;/ 修改模块case 5:Sort(L);break;/ 排序模块case 6:Save(L);break;/ 保存成绩case 7:Disp(L);system(PAUSE);break;/ 显示成绩case 8:system(cls);goto Loop;case 9:Modify_admin();break;default:Wrong();getch();break;elsewhile(1)system(cls);menu2();scanf(%d,&select);if(select=0)printf( 谢谢您的使用! ! n);exit(1);switch(select)case 1:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 竞聘加油站站长面试秘籍
- 电炉安全知识问答及课件
- 2025年交通运输服务合同协议
- 密闭糊创新创业项目商业计划书
- 康复用水下跑步机创新创业项目商业计划书
- 宣传单页创意设计创新创业项目商业计划书
- 多功能气体检测仪创新创业项目商业计划书
- 坚果醋创新创业项目商业计划书
- 复合材料潜水器外壳创新创业项目商业计划书
- 2025年音乐招聘考试题目及答案
- 林木分子标记辅助育种
- 慢性化脓性中耳炎教学查房课件
- 无能力抚养孩子委托他人抚养委托书
- 脚手架验收表
- 龙虎山正一日诵早晚课
- 新媒体数据分析与应用完整PPT全套教学课件
- 图书馆中级职称专业技术资格考试题库
- 影像记忆之记忆宫殿-抽象词语转换训练
- JGJ142-2004《地面辐射供暖技术规程》条文说明
- 青海省干部履历表实用文档
- 电瓶车维修费用明细
评论
0/150
提交评论