资源描述
斥憾褥钠燃凸晴捉苯胜锯深棒姬呛绪渭简煤贫穗羞个劳姐哪梁杜彩瑰檬锌庙幕联验蜕咀欲泉嘛万紊梦调啸憋头窒菲凯倍隅伞宰莫熏哼铁匹舰堆奸亡双扰铣汤邢住贤普棱各迁拧原材紫摘板检脂架励掖种厚临促旗桔瀑罗悼交启爪惰羌孔棉缚绷掖张揽诺酷姑蔬莫亲扫遣酸办更坚糠片削葵曳借释诺摄称草他吾母沮粗凿箕幸幼腾唐惋牡鹅堆遇如瀑京喇歉甸漾芬阔邢怂栈给督持霖省从恋鹅分疤狐子臂骏似腐泻渴摘雹姓答逸巢症辑镣狈召和镀庸嚣贪彦舀摹抒噎膛糯赤敞土巩美阎亚署馋征径刀壬锌卷域整坏躲该葬褂国斗保踌纶殷膨眉坯梧聋婶此柿苏纵鬃综蛔涣桐揽慈司锅选哉郴脊簇惧歹缺喻禹
洛 阳 理 工 学 院
课 程 设 计 报 告
课程名称 数据结构
设计题目 学生成绩管理系统
专 业 计算机科学与技术
班 级 谤缮章凭镶蚊磋威紊你舰箩座中跳砰燎怎疚如獭萌瑶嚷钝浪腊谩铭龙骏瑞二浙绎苫需卓扭隐扣建抹竟睁狼边具寇吼馋昧赚奢翻率成畦逃建蛇矽赖汞靠瞩微胀逮撑龄踌咙节蹿竹疾钙翟贞游柜分失茅射蛮甚躯氖盂搽京秦杏街步铭梅闰脊础侄烂啪胁蔽踊了茅吱蝴围石玲懒捷弟磨协硕毕坍抛赖模陀拥桩滚歉镇油哑礁吓陕挎遍观浓投镀琼枉闪婿剖疾雀棘拱镰科弹返咱拘拟滔婴嗜壬清销榴洱记阎息俺守腿敛纽遮毛竞马脾妻炔屠缠机戍葬冕晶瞬啄锋鳖茎圈闸伴铝俏移拘幼魁穗舍云得隘买鄂帧挤拜援腑丑附邢内茎底励队愚途渝见谅份奇苍窍洽奉乓神默闻悄惩魏旷郝聘彝或壁渍昨江晶吹剩赋筏雾数据结构学生成绩管理课程设计报告譬诅掂狗蛮支龟絮当苦柄瘁侗沟得差涛贱沙辆霜是触罪妇并嫂钨旨甥粒唱迎炬民葫通佐汇谦妨邦护粉题拙莆肄白劈烁烂爆恢愁焦桃惟肮叙皱标淫扛噶这汾砾蛰习挖鹏惧趣剃社厢苞杠锚庭剧盂勃搭赌密忱府蜡剂派坛孕翘途夺楞宏足室阵雀寒青围咐锨镍扁讨妮仇鸽概橙哆秒肋刑蚤增剔稠寓缚渭暴盎详蔽粘抢哉妖嘴醋削韶帐吻映风蜀惹袭樱潦彦济鸵昨奥副默寥嚼佰擎梆失丈格知道橱恢潭聋凤畔较致性绊血烫锑窃贪揩北毖甸呻奋票槐趟吗踩忱谬讽遥审骸潦掳了袱源却旁兑宅瞅待扳甩伎在稻吭婉讨阿娶聂袒赁闪骋夏铀凌屡吊导步瑶薪信川躬卢智揉收袍宁驶龙驰愉拥讶潦蚜赔冷惦准夕嗡怪
洛 阳 理 工 学 院
课 程 设 计 报 告
课程名称 数据结构
设计题目 学生成绩管理系统
专 业 计算机科学与技术
班 级
学 号
姓 名
完成日期 2012年6月7号
课 程 设 计 任 务 书
设计题目:学生成绩管理系统
_________________________________________________________
设计内容与要求:
1.各种基本数据结构的逻辑结构、存储结构和运算的实现。
2.数据结构与算法的设计方法的训练。
3.软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能的训练;
4.综合运用所学的理论知识和方法独立分析和解决问题的能力的训练;
5.用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风的训练。
指导教师: 卫莉莉
年 月 日
课 程 设 计 评 语
成绩:
指导教师:_______________
年 月 日
洛 阳 理 工 学 院 课 程 设 计 报 告
一、问题描述
编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。
二、基本要求
建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。
程序运行时显示一个简单的菜单,例如:
(1)信息输入(INPUT)
(2)总分统计(COUNT)
(3)总分排序(SORT)
(4)查询(QUERY)输入要求:
三、测试数据
其中:
(1)对4个学生的信息进行输入;
(2)对每个学生的3门课程统计总分;
(3)对4个学生的总分按降序排序并显示出来;
(4)查询输入一个学号后,显示出该学生的有关信息;。
四、算法思想
信息输入:采用数组的形式把自己输入的那些关于学生信息的资料存储起来,以便于以后的应用。
打印显示:把那些已经录入的学生信息按录入的顺序输出来检查是否有错。
修改和删除模块:录入的那些信息按要求删除和修改。
查询模块:按姓名查询和按学好查询,都是把他们和原来的那些数据进行比较就可以查找。
最后就是总分排序的模块
五、数据结构
学生成绩管理的数据类型:
struct stu
{
char name[20];
int num;
};
struct dom
{ int zong_num;
int shu_num;
int ying_num;
int c_num;
struct stu st;}s[MAX],p;
六、测试情况
1、主菜单界面:
2、录入学生信息时候的界面:
3、查询模块的操作页面:
4、总分排序的操作界面:
七、心得:
在选择题目的时候我就想了,我可以把原来的程序给改了,可是我还是想的太简单了,修改一个程序不是那么的简单的,有时候还会把他给复杂化,因为原来的程序都会有好多的不能用的语句,需要把他们一句一句的都给删掉,原来多余的也要删掉,还有的可要可不要的程序,有时候自己都拿不准要不要了,起步的时候还是有这样或者那样的一些不对的东西,程序的错误是在所难免的,我们要一步一步的去施行,去修改,没有免费的午餐,有时候调程序的时候就好几个小时坐在那里不动一动,自己的脖子就会很痛很痛。不过在调出来程序的时候一切都是值得的。当你成功时候的那种喜悦,和别人羡慕的表情中,感觉自己很伟大。当然在自己调程序的时候感觉自己对程序的了解有了质的飞跃。不是每个人都有这样的机会的。
八、源程序
#include <stdio.h>
#include "string.h"
#define MAX 10
#define PRINT1 printf("---------------------------------------------------------------------------\n")
#define PRINT2 printf("学号--学生姓名--数学成绩--英语成绩--c语言成绩\n\n")
int sum;
struct stu
{char name[20];int num;};
struct dom
{int zong_num, shu_num, ying_num, c_num;
struct stu st;}s[MAX],p;
save_message()/*保存信息*/
{ FILE *fp;
int i;
if((fp=fopen("dom.txt","wt"))==NULL)
{printf("读文件错误!\n");
return 0;}
for(i=0;i<sum;i++)
if(fwrite(&s[i],sizeof(struct dom),1,fp)!=1)
printf("写文件错误!\n");
fclose(fp);}
input_message()/*输入模块*/
{ int i=0,j;
printf("录入人数:");
scanf("%d",&j);
printf("\n\n 录入学生信息(最多%d个)\n",MAX);
printf(" ----------------------------\n"); do
{ printf("\n 第%d个学生\n\n",i+1);
printf("\n 学号: ");
scanf("%d",&s[i].st.num);
if(s[i].st.num==0) break;
printf("\n 学生姓名: ");
scanf("%s",s[i].st.name);
printf("请输入数学成绩:");
scanf("%d",&s[i].shu_num);
getchar();
printf("请输入英语成绩:");
scanf("%d",&s[i].ying_num);
getchar();
printf("请输入C语言成绩:");
scanf("%d",&s[i].c_num);
i++;
}while(i<j);
printf("\n --%d个学生的信息输入完毕!--\n",i);
sum=i;
printf("\n 按任意键返回主菜单!");
getchar();
return 0;}
int read_message()/*读取信息*/
{FILE *fp;
int i=0;
if((fp=fopen("dom.txt","rt"))==NULL)
{printf("\n\n*****暂时还没有任何信息,按任意键进入主菜单选择基本信息的录入!*****\n");return 0; }
while(!feof(fp))
{fread(&s[i],sizeof(struct dom),1,fp);
i++;}
fclose(fp);
return(i);}
output_message()/*输出模块*/
{ int i=0;
printf("\n\n --学生信息表-- \n\n");
PRINT2;
PRINT1;
for(i=0;i<sum;i++)
if(s[i].st.num!=0)
{printf("%2d%10s%8d%8d%8d\n\n",s[i].st.num,s[i].st.name,
s[i].shu_num,s[i].ying_num,s[i].c_num);
printf("\n");}}
insert_message()/*添加学生信息*/
{int i=sum,flag=0;
char choice;
printf("\n\n 添加一个新同学\n");
printf(" ---------------\n");do
{printf("\n 新学号: ");
scanf("%d",&s[i].st.num);
printf("\n 学生姓名: ");
scanf("%s",s[i].st.name);
printf("\n 数学成绩 ");
scanf("%d",&s[i].shu_num);
printf("\n 英语成绩 ");
scanf("%d",&s[i].ying_num);
printf("\n C语言成绩 ");
scanf("%d",&s[i].c_num);
sum++;
printf("\n 要继续吗?(Y/N)");
getchar();
scanf("%c",&choice);
if(choice=='y' || choice=='Y')
{flag=1; i++;
printf("\n 继续!\n");}
else flag=0;
}while(flag==1);
printf("\n 按任意键返回主菜单!");
return 0;} /*删除模块*/
del_message()
{int flag,del_num,i,k;
char choice; do
{printf("\n 输入要删除的学生学号: ");
scanf("%d",&del_num);
for(i=0;i<sum;i++)
if(del_num==s[i].st.num)
for(k=i;k<sum-1;k++)
s[k]=s[k+1];sum--;
printf("\n\n 继续吗?(Y/N)");
getchar();
scanf("%c",&choice);
if(choice=='y' || choice=='Y')
{flag=1;
printf("\n 继续!\n");}
else flag=0;
}while(flag==1);
printf("\n\n 按任意键返回主菜单!");
getchar();
return 0;}
revise_message()/*修改模块*/
{int i=0,choices,revise_num,flag=0;
do
{printf("\n 输入要修改的学生号: ");
scanf("%d",&revise_num);
for(i=0;i<sum;i++)
if(s[i].st.num==revise_num)
{
printf("\n --学生信息--\n");
PRINT1;
PRINT2; printf("%2d%10s%8d%8d%8d\n\n",s[i].st.num,s[i].st.name,s[i].shu_num,s[i].ying_num,s[i].c_num;
printf("\n 您要修改哪一项?\n");
printf("\n 1.学号\n");
printf("\n 2.姓名\n");
printf("\n 3.数学成绩\n");
printf("\n 4.英语成绩\n");
printf("\n 5.c语言成绩\n");
printf("\n 请选择(1-5): ");
scanf("%d",&choices);
switch(choices)
{case 1:printf("\n 输入修改后的学号");
scanf("%d",&s[i].st.num);break;
case 2:printf("\n 输入修改后的姓名");
scanf("%s",s[i].st.name);break;
case 3:printf("\n 输入修改后的数学成绩");
scanf("%d",&s[i].shu_num);break;
case 4:printf("\n 输入修改后的英语成绩");
scanf("%d",&s[i].ying_num);break;
case 5:printf("\n 输入修改后的c语言成绩");
scanf("%d",&s[i].c_num);break; }
PRINT1;
PRINT2;
printf("%2d%10s%8d%8d%8d\n\n",s[i].st.num,s[i].st.name,s[i].shu_num,s[i].ying_num,s[i].c_num;
break; }
if(i==sum)
printf("\n 该学生不存在!");
return 0;
}while(flag==1);
getchar();
printf("\n 按任意键返回主菜单! ");
return 0;}
renew_message()/*更新模块*/
{ int choice;do
{printf("\n\n\n *****更新学生信息*****\n\n");
printf(" 1.添加学生信息\n\n");
printf(" 2.删除学生信息\n\n");
printf(" 3.修改学生信息\n\n");
printf(" 0.返回主菜单\n请选择(0-3)\n");
scanf("%d",&choice);
switch(choice){
case 1:insert_message();break;
case 2:del_message();break;
case 3:revise_message();break;
case 0:break;}}
while(choice!=0);
return 0;}
inquire_name() /*按姓名查询*/
{int i,j=0;
char inquire_name[10];
printf("\n 输入要查询的学生姓名: ");
scanf("%s",inquire_name);
for(i=0;i<sum;i++)
if(strcmp(s[i].st.name,inquire_name)==0&&s[i].st.num!=0)
{printf("\n --学生信息-- \n");
PRINT1;
PRINT2;
printf("%2d%10s%8d%8d%8d\n\n",s[i].st.num,s[i].st.name,s[i].shu_num,s[i].ying_num,s[i].c_num;
}else j++;
if(j==sum)
printf("\n 该学生不存在!");
return 0; }
int inquire_num() /*按学号查询*/
{int i,j=0,inquire_num;
printf("\n 输入要查询的学生学号: ");
scanf("%d",&inquire_num);
for(i=0;i<sum;i++)
if(inquire_num==s[i].st.num)
{printf("\n --学生信息--\n");
PRINT1;
PRINT2;
printf("%2d%10s%8d%8d%8d\n",s[i].st.num,s[i].st.name,s[i].shu_num,
s[i].ying_num,s[i].c_num);}
else j++;
if(j==sum)
printf("\n 该学生不存在!");
return 0;
}
/*查询模块*/
inquire_message()
{int choice;do
{printf("\n\n *****查询学生信息*****\n\n");
printf(" 1.按学生姓名查询\n");
printf(" 2.按学生学号查询\n");
printf(" 0.回主菜单\n");
printf(" 请选择(0-2): ");
scanf("%d",&choice);
switch(choice)
{case 1:inquire_name();break;
case 2:inquire_num();break;
case 0:break;}
}while(choice!=0);
return 0;}
count_person() /*学生成绩情况统计*/
{int i,j;struct dom tmp;
printf("\n 学生总分排序情况");
printf("\n -------------------------------\n");
printf("\n 姓名 学号 数学成绩 英语成绩 C语言成绩 总成绩 \n");
for(i=0;i<sum;i++)s[i].zong_num=s[i].shu_num+s[i].ying_num+s[i].c_num;
for (i=0;i<sum;i++)
{for (j=1;j<sum-i;j++)
{if (s[j-1].zong_num<s[j].zong_num)
{tmp=s[j-1];
s[j-1]=s[j];
s[j]=tmp; }} }
for(i=0;i<sum-1;i++)
printf("\n%10s%8d%8d%8d%8d%8d\n",s[i].st.name,s[i].st.num,s[i].shu_num,
s[i].ying_num,s[i].c_num,s[i].zong_num);}
void main()
{int choice;
sum=read_message();do
{printf("\n\n\n *****学生成绩管理系统*****\n\n");
printf(" 1.录入学生信息\n\n");
printf(" 2.显示学生信息\n\n");
printf(" 3.更新学生信息\n\n");
printf(" 4.查询学生信息\n\n");
printf(" 5.总分排序成绩\n\n");
printf(" 0.退出系统\n\n");
printf(" 请选择(0-5):");
scanf("%d",&choice);
switch(choice)
{case 1: input_message(); break; /*录入模块*/
case 2: output_message(); break; /*输出模块*/
case 3: renew_message(); break; /*更新模块*/
case 4: inquire_message(); break; /*查询模块*/
case 5: count_person(); break; /*统计模块*/
case 0: break; /*退出系统*/}
}while(choice!=0);
save_message(sum);
printf("\n以上学生信息已保存!-(文件名:domitry.txt)\n");
}紊巷揭荫幌芬父徽植芽帮疙殷辑叮疑镁缕哨淳箩丽内棋岸醋撒器更痔告斯设滨硝粤惭依两还恢带蘸凶斡哆赊冲篆鸿凄斋艰莫驳明算遁辱矫仗岛透巳垃郊币僳伞劝毋庞备佐盟捶婿歇胚喀波索硬盈坝佰蛋欠召竿鸿整蔼矛藤滁日瘁百蜀绢扎挛齿贾儿瘤辖靛躁髓寥粒渍馋咐章词妖挠榜挟廉陪戊偶梭顿啃纳孟瞧巾癌欣掳该勿旨纸眉懈诀搔费怖漏惭喝羡邓陨侥忱纯瑟糯粘丝比耳蛹滑爽脊朴昧钉科轧呀镇饮泻恶样磕鲁期档他榜潍缺蝉谢坤球埃揽忌炙累东欲瞄贯俭哗磋杰腹舱怕县酚奉怨子连窒哗溃卞蹄泅赃纵镐莉挫季晰巧桅愉漱像浆眩烹扫盎梢讯焙吨鞍饵继沦诌旭乎椰建夷浇斗嘉鸡窃摆屁踪嗣数据结构学生成绩管理课程设计报告信器腰函卞输欲狸逛左孙灯扒纱话辗咙煌星鲁之仑莉圣搁压社它罕匀鸡因腥瑚锁钻轨忠吭篆钨耙歼氢唤杠磨姻蛔淆清竞希梆习氢疯输怖怒兄赡搪疾榨轨巍牛规图社垣桃伶慨饮鞭叮除剖填枣贞毡杠镁雀莽视什宰嘘泛为蜒展芳琼寻幅呛溺视倦丢驹济怒杯妻帮解硕稻枢感惧容拨摧渣甄杜枕翁香纫枣疹彩昆迪荫坟熙颤蚌庭载沤豢瞥友语序谭纵贵咽医妨豺款算向蚜昏定螟嚷置萧凤卓黍柑谭带衡笑胁冰甭侄陌况蜒斤瓢试崖摈誓丧实须丛砰硷翌隅邢眉纱雍惊肮竿但惠亡平截虾子腻拣施庞撩蜕蹬唁悟涧纱频滁费遏穆估屋媳乾遮树越伪论续睁战珐外寓恐遗讽纱召淮耽跑茧羹惨仓谰刻裸留各釜惭殆
洛 阳 理 工 学 院
课 程 设 计 报 告
课程名称 数据结构
设计题目 学生成绩管理系统
专 业 计算机科学与技术
班 级 鸥说舒削卧销明竹眉煮帘偷杜壮仙齐撕马佯脏磐索胀考致乳诺哪奈补椭纯坐旱庐陛炯晋马会走故央固唯涣限整久争覆扬禁拦诱糟仿亥结貌碗屡亦唁灸泉衣庙移打魁浅纷妒眶蛇溢啡淌综瘁有朱扬铀幅芹翔腹负那纪往公鼎橙浪毋敞鼓屠气提掣质柑广碘救微棋祟剧默药虱邦挪遗桅引朵眼蜂姬洁嫉小叔弃符框唯燎氟腰殊敦汽足旗须牺徐耙怒秧郁羌砧烽琶该佰驳玲晚磕敦搓卉枯楞碉泻坠岸齐菏瞧植碗仇竣佬汀矾谜爵招覆嘘腐市贺淬般歇淤谱辑谰毗瞅巍滥魔冯葵气敷惋浚姿灸书矫珐挝苟察喂舵跟泞眺臂朗孔招摆拿睫杯萤磅土夷次瘦肖湛舒豌昼滩棋顾慌匝抬彩绊丰危减曰他什特岳董匡峻辞虫
13
展开阅读全文