1、最新C语言课程设计报告学生成绩管理系统1C语言课程设计报告一、组员信息。组长:岳英明(信科092班 学号0909281074)负责构思程序的大体算法,流程图,编写代码,检查错误。成员:孟琼瑶(信科092班 学号0909281075)主要编写代码,查资料,界面设计。二、设计目的进一步加深、巩固学生所学专业课程(C语言)的基本理论知识,理论联系实际,进一步培养学生综合分析问题和解决问题的能力。掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能。三、成绩管理系统主要功能 1. 输入记录 2. 用指定格式显示全部记录 3. 根据姓名查找记录 4. 根据姓名删除记录 5. 保存记录到文件 6
2、. 按序号显示记录7. 按姓名由小到大的顺序排序四、系统流程图五、 界面设计此系统界面采用图形和数字化菜单设计。主界面设计如下: - 欢迎进入 学生成绩管理系统-制作者:武汉纺织大学理学院信科092班岳英明 * *主菜单* *1. 登记学生资料 2. 删除学生资料3. 查找学生资料 4. 修改学生资料5. 保存学生资料 6. 退出系统* 六、程序代码#include stdio.h #include stdlib.h #include string.h int shoudsave=0; /* */ struct student char num10;/* 学号 */ char name20;
3、char sex4; int cgrade; int mgrade; int egrade; int totle; int ave; char neartime10;/* 最近更新时间 */ ; typedef struct node struct student data; struct node *next; Node,*Link; void menu() printf(*主菜单*); printf(t1登记学生资料ttttt2删除学生资料n); printf(t3查询学生资料ttttt4修改学生资料n); printf(t5保存学生资料ttttt0退出系统n); printf(*n);
4、void printstart() printf(-n); void Wrong() printf(n=提示:输入错误!n); void Nofind() printf(n=提示:没有找到该学生!n); void printc() /* 本函数用于输出中文 */ printf( 学号t 姓名 性别 英语成绩 数学成绩 C语言成绩 总分 平均分n); void printe(Node *p)/* 本函数用于输出英文 */ printf(%-12s%st%st%dt%dt%dt %dt %dn,p-data.num,p-data.name,p-data.sex,p-data.egrade,p-da
5、ta.mgrade,p-data.cgrade,p-data.totle,p-data.ave); Node* Locate(Link l,char findmess,char nameornum) /* 该函数用于定位连表中符合要求的接点,并返回该指针 */ Node *r; if(strcmp(nameornum,num)=0) /* 按学号查询 */ r=l-next; while(r!=NULL) if(strcmp(r-data.num,findmess)=0) return r; r=r-next; else if(strcmp(nameornum,name)=0) /* 按姓名查
6、询 */ r=l-next; while(r!=NULL) if(strcmp(r-data.name,findmess)=0) return r; r=r-next; return 0; void Add(Link l) /* 增加学生 */ Node *p,*r,*s; char num10; r=l; s=l-next; while(r-next!=NULL) r=r-next; /* 将指针置于最末尾 */ while(1) printf(请你输入学号(以0返回上一级菜单:); scanf(%s,num); if(strcmp(num,0)=0) break; while(s) if(
7、strcmp(s-data.num,num)=0) printf(=提示:学号为%s的学生已经存在,若要修改请你选择4 修改!n,num); printstart(); printc(); printe(s); printstart(); printf(n); return; s=s-next; p=(Node *)malloc(sizeof(Node); strcpy(p-data.num,num); printf(请你输入姓名:); scanf(%s,p-data.name); getchar(); printf(请你输入性别:); scanf(%s,p-data.sex); getcha
8、r(); printf(请你输入c语言成绩:); scanf(%d,&p-data.cgrade); getchar(); printf(请你输入数学成绩:); scanf(%d,&p-data.mgrade); getchar(); printf(请你输入英语成绩:); scanf(%d,&p-data.egrade); getchar(); p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade; p-data.ave=p-data.totle / 3; /* 信息输入已经完成 */ p-next=NULL; r-next=p; r=p
9、; shoudsave=1; void Qur(Link l) /* 查询学生 */ int sel; char findmess20; Node *p; if(!l-next) printf(n=提示:没有资料可以查询!n); return; printf(n=1按学号查找n=2按姓名查找n); scanf(%d,&sel); if(sel=1)/* 学号 */ printf(请你输入要查找的学号:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) printf(tttt查找结果n); printstart(); printc();
10、printe(p); printstart(); else Nofind(); else if(sel=2) /* 姓名 */ printf(请你输入要查找的姓名:); scanf(%s,findmess); p=Locate(l,findmess,name); if(p) printf(tttt查找结果n); printstart(); printc(); printe(p); printstart(); else Nofind(); else Wrong(); void Del(Link l) /* 删除 */ int sel; Node *p,*r; char findmess20; i
11、f(!l-next) printf(n=提示:没有资料可以删除!n); return; printf(n=1按学号删除n=2按姓名删除n); scanf(%d,&sel); if(sel=1) printf(请你输入要删除的学号:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=提示:该学生已经成功删除!n); shoudsave=1; else Nofind(); else if(sel=2) print
12、f(请你输入要删除的姓名:); scanf(%s,findmess); 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); shoudsave=1; else Nofind(); else Wrong(); void Modify(Link l) Node *p; char findmess20; if(!l-next) printf(n=提示:没有资料可以修改!n); return; printf(请你输入要修改的学
13、生学号:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) printf(请你输入新学号(原来是%s):,p-data.num); scanf(%s,p-data.num); printf(请你输入新姓名(原来是%s):,p-data.name); scanf(%s,p-data.name); getchar(); printf(请你输入新性别(原来是%s):,p-data.sex); scanf(%s,p-data.sex); printf(请你输入新的c语言成绩(原来是%d分):,p-data.cgrade); scanf(%d,&
14、p-data.cgrade); getchar(); printf(请你输入新的数学成绩(原来是%d分):,p-data.mgrade); scanf(%d,&p-data.mgrade); getchar(); printf(请你输入新的英语成绩(原来是%d分):,p-data.egrade); scanf(%d,&p-data.egrade); p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade; p-data.ave=p-data.totle/3; printf(n=提示:资料修改成功!n); shoudsave=1; else
15、Nofind(); void Disp(Link l) int count=0; Node *p; p=l-next; if(!p) printf(n=提示:没有资料可以显示!n); return; printf(tttt显示结果n); printstart(); printc(); printf(n); while(p) printe(p); p=p-next; printstart(); printf(n); void Tongji(Link l) Node *pm,*pe,*pc,*pt,*pa; /* 用于指向分数最高的接点 */ Node *r=l-next; if(!r) prin
16、tf(n=提示:没有资料可以统计!n); return ; pm=pe=pc=pt=pa=r; while(r!=NULL) if(r-data.cgrade=pc-data.cgrade) pc=r; if(r-data.mgrade=pm-data.mgrade) pm=r; if(r-data.egrade=pe-data.egrade) pe=r; if(r-data.totle=pt-data.totle) pt=r; if(r-data.ave=pa-data.ave) pa=r; r=r-next; printf(-统计结果-n); printf(总分最高者:t%s %d分n,p
17、t-data.name,pt-data.totle); printf(平均分最高者:t%s %d分n,pa-data.name,pa-data.ave); printf(英语最高者:t%s %d分n,pe-data.name,pe-data.egrade); printf(数学最高者:t%s %d分n,pm-data.name,pm-data.mgrade); printf(c语言最高者:t%s %d分n,pc-data.name,pc-data.cgrade); printstart(); void Sort(Link l) Link ll; Node *p,*rr,*s; ll=(Link
18、)malloc(sizeof(Node); /* 用于做新的连表 */ ll-next=NULL; if(l-next=NULL) printf(n=提示:没有资料可以排序!n); return ; 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.totle=p-data.totle) rr=rr-next; if(rr-next=NULL) rr-next=s; else
19、 s-next=rr-next; rr-next=s; p=p-next; free(l); l-next=ll-next; printf(n=提示:排序已经完成!n); void Save(Link l) FILE* fp; Node *p; int flag=1,count=0; fp=fopen(c:student,wb); if(fp=NULL) printf(n=提示:重新打开文件时发生错误!n); exit(1); p=l-next; while(p) if(fwrite(p,sizeof(Node),1,fp)=1) p=p-next; count+; else flag=0;
20、break; if(flag) printf(n=提示:文件保存成功.(有%d条记录已经保存.)n,count); shoudsave=0; fclose(fp); void main() Link l;/* 连表 */ FILE *fp; /* 文件指针 */ int sel; char ch; char jian; int count=0; Node *p,*r; printf(nt欢迎进入ntttt学生成绩管理系统nntttt-作者:成都航空职业技术学院60933班n); l=(Node*)malloc(sizeof(Node); l-next=NULL; r=l; fp=fopen(C
21、:student,rb); if(fp=NULL) printf(n=提示:文件还不存在,是否创建?(y/n)n); scanf(%c,&jian); if(jian=y|jian=Y) fp=fopen(C:student,wb); else exit(0); printf(n=提示:文件已经打开,正在导入记录.n); while(!feof(fp) p=(Node*)malloc(sizeof(Node); if(fread(p,sizeof(Node),1,fp) /* 将文件的内容放入接点中 */ p-next=NULL; r-next=p; r=p; /* 将该接点挂入连中 */ c
22、ount+; fclose(fp); /* 关闭文件 */ printf(n=提示:记录导入完毕,共导入%d条记录.n,count); while(1) menu(); printf(请你选择操作:); scanf(%d,&sel); if(sel=0) if(shoudsave=1) (二)DIY手工艺品的“热卖化” getchar(); printf(n=提示:资料已经改动,是否将改动保存到文件中(y/n)?n); scanf(%c,&ch); if(ch=y|ch=Y) 与此同时,上海市工商行政管理局也对大学生创业采取了政策倾斜:凡高校毕业生从事个体经营的,自批准经营日起,年内免交登记注
23、册费、个体户管理费、集贸市场管理费、经济合同鉴证费、经济合同示范文本工本费等,但此项优惠不适用于建筑、娱乐和广告等行业。Save(l); printf(n=提示:你已经退出系统,再见!n); break; switch(sel) case 1:Add(l);break; /* 增加学生 */ 功能性手工艺品。不同的玉石具有不同的功效,比如石榴石可以促进血液循环,改善风湿和关节炎;白水晶则可以增强记忆力;茶晶能够帮助镇定情绪,缓解失眠、头昏等症状。顾客可以根据自己的需要和喜好自行搭配,每一件都独一无二、与众不同。case 2:Del(l);break;/* 删除学生 */ 送人 有实用价值 装饰
24、case 3:Qur(l);break;/* 查询学生 */ case 4:Modify(l);break;/* 修改学生 */ case 5:Save(l);break;/* 保存学生 */ case 9:printf(ttt=帮助信息=n);break; 尽管售价不菲,但仍没挡住喜欢它的人来来往往。这里有营业员们向顾客们示范着制作各种风格迥异的饰品,许多顾客也是学得不亦乐乎。在现场,有上班族在里面精挑细选成品,有细心的小女孩在仔细盘算着用料和价钱,准备自己制作的原料。可以想见,用本来稀奇的原料,加上别具匠心的制作,每一款成品都必是独一无二的。而这也许正是自己制造所能带来最大的快乐吧。def
25、ault: Wrong();getchar();break; 虽然调查显示我们的创意计划有很大的发展空间,但是各种如“漂亮女生”和“碧芝”等连锁饰品店在不久的将来将对我们的创意小屋会产生很大的威胁。 综上所述,DIY手工艺品市场致所以受到认可、欢迎的原因就在于此。我们认为:这一市场的消费需求的容量是极大的,具有很大的发展潜力,我们的这一创业项目具有成功的前提。 大学生个性化消费增多是一种趋势。当前社会、经济飞速发展,各种新的消费品不断增多,流行文化时尚飞速变化,处于校园与社会两者之间的大学生肯定会受影响。目前在大学校园,电脑、手机、CD、MP3、录音笔被称为大学生的“五件武器”。除了实用,这也是一种 表明自己生活优越的炫耀性的东西。现下很大一部分大学生中的“负债消费”表现的典型的超前享乐和及时行乐其消费项目多半是用于奢侈浪费的非必要生活消耗。如举办生日宴会、打网球、保龄球、上舞厅跳舞、进夜总会唱“卡拉”等。“负债消费”使很多学生耽于物欲,发展严重者轻则引起经济纠纷,动武斗殴,影响同窗友谊,重则引发犯罪事件,于社会治安不利。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1