版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课程设计报告物流0803班杜景刘俊C语言课程设计报告——课程成绩管理系统作者:杜景、刘俊指导老师:周纯杰、彭刚、周凯波、何顶新专业班级:物流0803班完成日期:2009/11/1系统说明1.1系统名称课程成绩管理系统1.2系统开发背景(1)开发人员:组长杜景组员刘俊(2)开发时间:第三周至第八周(3)开发环境:BorlandC++V3.1(4)总代码量:约2100行1.3系统开发进程(1)第三周至第四周:进行初步系统分析,讨论分析开发所需的C语言知识,并开始自学高级编程技术的相关知识(2)第五周:详细分析系统,划分系统模块,分配开发任务,规划工程文件建立工程。(3)第六周:开始进行函数编写,初步完成界面及菜单的函数编写,并实现创建用户登陆成功。(4)第七周:初步完成管理员功能模块及普通用户功能模块,并进一步调试界面及菜单函数。(5)第八周:基本完成系统所有函数的编写,代码的最后整合和测试修改。(6)第九周:实现汉化功能,测试修改代码,并开始撰写设计报告。1.4C课程设计体会心得杜景(组长):跟大部分人一样,在做课程设计之前,我是感到有点害怕的,担心以自己上学期学习的那一点C语言知识,来完成这次的课程设计几乎是不可能。那天晚上分组选题时,我找了同寝室的一个哥们,为了便于以后变成是好交流。其实我们当时对那些选题都不大了解,其他人都选得差不多了,我看到课程成绩管理系统还空着,于是就选了它。选完题后,我们还是心里没底。于是我们找来了一个大二的学长,咨询了相关C语言编程的相关事项,他鼓励我们自学一些高级编程知识,然后试着编写、调试,开始感觉到困难是正常的,不过随着知识的增长,不断的学习调试技巧,会越来越觉得简单的。学长的一席话让我们茅塞顿开,带着那一份自信,我和刘俊开始了我们“编程之旅”。起初我们在网上找了一些资料,下载了一本《C语言高级编程》,就开始恶补编程知识。信息的存储,图形方式下输入、输出,弹出式菜单制作,文件的相关知识……,我们分配了一下任务,“枯燥”的自学就开始了。在编写程序过程中,我们遇到了许许多多的问题。令我记忆最为深刻的是编写login()函数时,单独调试可以运行,但是一放到整个程序里,问题就出现了。我已经初始化了一个账号和密码,但用这个账号和密码登陆却怎么也进不去。起初我们想到可能是login()函数的问题,找了很久发现没有问题。有联系整个程序还是没有查出问题。因为我们是把用户信息保存在一个文件里面,登陆时显示可以打开文件,但是显示账号或密码错误,这就让我们百思不得其解了,整整一天都没有看出问题。第二天我们去了南一楼问助教,助教调试了程序,刚开始也没找出原因,后来在看代码的时候突然发现存放用户信息的结构体里参数的位置好像颠倒了,改过来后,程序终于能运行了。通过那次的调试,我发现编程时可能发生很多的小错误不易察觉,这就需要我们有良好的编程习惯以及程序的整体观。随着验收的日子一天一天临近,我们的程序也越来越完整。后面的汉化模块实现以及界面的优化问题不是很大,我们很好的实现了。到现在,我们的程序已经实现了基本的功能,运行过程基本上不存在Bug了。看着自己花了时间和精力编写的程序能完整的运行时,一种成就感油然而生,且不说程序做得如何,至少我们尽了自己的努力,克服了许多困难,才有现在的结果。在这期间,我的C语言编程能力得到了很大的提高,也是我对C由敬畏转变为兴趣,我相信这段经历将对我日后的学习和工作是非常有价值的。刘俊:通过这次课设,我的感想很多,不仅仅是C语言方面的…… 先就本次课设谈谈自己对于这次课设的想法,必须承认的是,我们这次选的课题相比于其他组来说是由些简单的,尤其是在算法方面,而我恰好负责的是算法部分。但从整个过程来看,我仍然遇到了很多的问题,也因此浪费了很多的时间和心血。在开始动手编写程序之前,我参考了很多书籍,但发现他们的算法很多都是用比C语言更高级的语言编写的,如C#,C++等等,尤其是其中用到了大量的指针。仅仅在大一学习了一年的C语言,对于较高级的语言并没有太多的了解,对于指针的使用也是相当谨慎小心的。所以思考再三,还是决定用最基本的算法,主要利用结构体和文件操作来实现用户和学生信息的创建,添加,删除,修改,查询,浏览等要求。文件操作,起初对于我来说还是比较陌生的,但随着程序编写的进一步深入,对于几个常见的文件操作函数,也越来越熟悉了。虽然算法简单,但同样遇到了很多的问题,就拿管理用户和管理学生两个比较大的.cpp文件来说,其实,这两个模块是很相似的,它们有基本相同的功能要求,比如创建,添加,删除,修改,查询,浏览等,比较明显的区别是定义的用户和学生两个结构体中成员项的数目,structuser中只有四个成员项,而structstudent中却总共有十二个成员项,从理论上来讲,只要把管理用户的函数写好了,管理学生的函数很大程度上可以仿照管理用户的函数,但实际操作起来却并没有这样简单。比如说,在创建用户时,我一次性可以创建五六个用户,但是在管理学生函数里面,如果一次性输入五六个学生信息后,就会发生“死机”,起初我很不解,搞了很长时间,但都没有什么用,后来在一本资料上看文件操作的有关内容时,才突然间发现,原来是和文件缓冲区的大小有关,在对文件进行写入时,如果文件缓冲区中的内容超过了512k时,还没有写入文件并关闭文件的话,就会发生死机的现象。也正是这个原因,造成了我们这个程序的一个小小的缺陷,也就是说,每次向文件中写入信息时,必须要保证在缓冲区满之前将信息写入指定的文件中。后来在数据结构课上,学习了线性表,才发现如果采用链表进行算法设计的话,可以节省很多代码,只是当时我们的程序已经写了多半,还有对链表的用法也不是很熟,所以就放弃了改用链表的想法,继续坚持我们自己的算法设计。总之,在整个程序设计中,我们遇到的问题还有很多,比如登陆不进系统的问题就困扰了我们两天。限于篇幅,仅仅举这几个例子说明一下。 这次课设是以两人为一组的,目的也很清楚,培养大家的协作能力。我和我的同伴杜景的分工从一开始就很明确,我算法,他界面,六个字,很简洁很明确,我们也一直是按照这样的分工进行课程设计的。期间我们也从曾就某些问题有过不同的意见,但后来经过协商之后,都统一了所有的观点。整个课设作完之后,从工作量上来看,他的工作量其实比我的还要大一些,因为他不仅要做界面的美化工作,还要把我的算法部分的实现各个功能的小函数通过一系列的连接函数,将它们连接起来,使得整个工程能够成功运行下去,另外,后期的设计报告的绝大部分也主要是由他来完成的,所以我觉得这次课设的大部分功劳都应该属于他。 总而言之,这次课设不仅让我对C语言有了更深入的了解,同时对于一个软件系统的开发有了更真切的体会。1.5参考资料(1)王士元.C高级实用程序设计.北京:清华大学出版社.1996(2)周纯杰,刘正林等.标准C语言程序及应用.武汉:华中科技大学出版社.2005(3)潭浩强.C语言程序设计.北京:清华大学出版社,2000(4)姚远.高级C语言程序设计技巧与实例.北京:机械工业出版社,1995(5)陈清华,朱红.C语言课程设计.南京:东南大学出版社,20032.总体设计及说明2.1系统需求分析随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。立足于本校,基于对学校HUB成绩信息管理系统的分析,我们组创建了一个行之有效的计算机管理学生课程成绩的方案——课程成绩管理系统来帮助老师和学生更好地掌握相关信息。本系统要实现的功能有:管理员模块:能对系统用户信息(用户编号,用户密码,用户名,用户权限)进行录入、添加、删除、修改、查询、浏览。能对学生的基本信息(姓名、编号、年级、院系、专业、成绩)进行日常维护(录入、添加、删除、修改、查询、浏览等功能)。学生模块:能对学生的基本信息(姓名、编号、年级、院系、专业、成绩)进行查询、浏览。2.2系统分析及说明本系统为用户提供了简单的图形菜单和键盘操作,用户输入账号及密码进行登陆,系统自动判断用户的使用权限,并提供其使用权限范围内的系统功能。用户的权限有管理员和普通用户两类。管理员拥有管理用户信息及管理学生信息的权利,普通用户拥有查找和浏览学生信息的权利。进入系统后首先看到是欢迎界面,继而是程序的一些简单介绍。接着是登陆界面,选择登陆后,输入账号及密码进行登陆,登陆成功后即进入到相应权限内的菜单界面,进而进行相关操作。2.3结构设计及说明本系统用了两个结构体来分别存放用户及学生信息。(1).存放用户信息的结构体,包括编号、账号、密码、权限structuser{longnum;charname[10];charpassword[10];intpower;};(2).存放学生信息的结构体,包括编号、姓名、院系、专业、年级、语文成绩、英语成绩、数学成绩、物理成绩、C语言成绩、各科总分、平均分structstudent{charnum[11];charname[10];chardepartment[40];charmajor[40];chargrade[20];charchinese[10];charenglish[10];charmath[10];charphysics[10];charc_language[10];charsum[10];charaverage[10];};2.4模块设计及说明(1)总体模块=1\*GB3①管理员模块=2\*GB3②普通用户模块(2)管理员模块=1\*GB3①管理用户信息模块=2\*GB3②管理学生信息模块(3)管理用户信息模块=1\*GB3①创建用户信息=2\*GB3②添加用户信息=3\*GB3③删除用户信息=4\*GB3④修改用户信息=5\*GB3⑤查找用户信息=6\*GB3⑥浏览用户信息(4)管理学生信息模块=1\*GB3①创建学生信息=2\*GB3②添加学生信息=3\*GB3③删除学生信息=4\*GB3④修改学生信息=5\*GB3⑤查找学生信息=6\*GB3⑥浏览学生信息(5)普通用户模块模块=1\*GB3①查找学生信息=2\*GB3②浏览学生信息3.详细设计及说明3.1模块流程图总体模块(1)模块图总体模块学生模块管理员模块学生模块管理员模块浏览查询管理学生管理用户浏览查询管理学生管理用户创建学生创建学生创建学生创建学生创建学生创建学生浏览用户查询用户修改用户创建学生创建学生创建学生创建学生创建学生创建学生浏览用户查询用户修改用户删除用户添加用户创建用户(1)流程图Ⅰ系统主流程图开始开始退出登陆是退出登陆是否重新登陆判断用户权限是否重新登陆判断用户权限否是判断是管理员还是普通用户判断是管理员还是普通用户管理员普通用户普通用户功能模块普通用户功能模块管理员功能模块结束否结束Ⅱ管理员流程图开始开始选择功能选择功能管理用户管理用户管理用户管理用户退出创建用户创建用户创建用户创建用户创建用户创建用户创退出创建用户创建用户创建用户创建用户创建用户创建用户创建用户创建用户创建用户创建用户创建用户创建用户退出回到主菜回到主菜单是否结束结束Ⅲ学生流程图开始开始功能选择功能选择退出浏览退出浏览查询回回到菜单结束否结束3.2函数设计及说明(1)界面及菜单设计voidhuanying();/*欢迎界面*/voidjianjie();/*软件说明*/voidInterface();/*进入界面*/voidjieshao();/*程序名称*/voidend();/*结束界面*/voidEntering_Menu()/*登陆菜单*/voidAdmin_Menu();/*管理员功能菜单*/voidStudent_Menu();/*学生功能菜单*/voidAdminuser_Menu();/*管理用户功能菜单*/voidAdminstu_Menu();/*管理学生功能菜单*/(2)选择菜单设计intChoose_Entering_Menu();/*选择登陆菜单*/intChoose_Admin_Menu();/*选择管理员功能*/intChoose_Student_Menu();/*选择学生功能*/intChoose_Adminuser_Menu();/*选择管理用户功能*/intChoose_Adminstu_Menu();/*选择管理学生功能*/(3)管理用户函数设计voidcreateuser();/*创建用户信息*/voidadduser();/*添加用户信息*/voiddeluser();/*删除用户信息*/voidmodifyuser();/*修改用户信息*/voidscanuser();/*浏览用户信息*/voidsearchuser();/*查找用户信息*/voiddisplay1();/*显示用户信息*/(4)管理用户函数设计voidcreatestudent();/*创建学生信息*/voiddelete_name();/*删除学生信息*/voidaddstudent();/*添加学生信息*/voidsearch_name();/*查找学生信息*/voidmodify_name();/*修改学生信息*/voidscan_sum();/*修改学生信息*/voiddisplay2();/*显示学生信息*/(5)各主要函数设计voidmain();/*主函数*/voidadmin();/*管理员函数*/voidstudent1();/*学生函数*/voidadminuser();/*管理用户函数*/voidadminstu();/*管理学生函数*/voidChoice(intc_x,intc_y,intcolor);/*选择光标函数*/intlogin();/*登陆函数*/floatsub(floatx1,floatx2,floatx3,floatx4,floatx5);/*求和函数*/voidhanzi16(intx,inty,intcolor,intLINE,intROW,char*hz);/*汉字显示函数*/附:工作量说明组长:杜景主要负责系统分析和系统设计,界面及菜单设计,选择菜单设计和各主要函数设计。编写的源程序文件是Head.h,main.cpp,huangying.cpp,hanzi.cpp,input.cpp,choice.cpp,login1.cpp,menu.cpp,jiemian.cpp,end.cpp,student.cpp,admin.cpp共约1000行。组员:刘俊主要负责管理用户及管理学生具体功能的实现,编写的源程序文件是adminuser.cpp,adminstudent.cpp共约900行。C程序源代码/************头文件“head.h”************/#include"stdio.h"#include"stdlib.h"#include"string.h"#include"conio.h"#include"graphics.h"#include"bios.h"#include"dos.h"#defineSIZE10;#defineEsc27;#defineEnter13;#defineBackspace8;#defineUpKey72#defineDownKey80#defineMX250#defineMY100#defineMW150#defineMH25#defineCXMX+20#defineCYMY+5#defineCW110#defineCH15#defineLUJING"D:\\borlandc\\bgi"#defineuserdatafile"F:\\user.dat"#definestudentfile"F:\\student.dat"structstudent{charnum[11];charname[10];chardepartment[40];charmajor[40];chargrade[20];charchinese[10];charenglish[10];charmath[10];charphysics[10];charc_language[10];charsum[10];charaverage[10];};structuser{longnum;charname[10];charpassword[10];intpower;};voidhuanying();voidjianjie();voidInterface();voidjieshao();voidend();voidEntering_Menu();voidadmin();voidstudent1();voidadminuser();voidadminstu();voidAdmin_Menu();voidStudent_Menu();voidAdminuser_Menu();voidAdminstu_Menu();voidChoice(intc_x,intc_y,intcolor);intChoose_Entering_Menu();intChoose_Admin_Menu();intChoose_Student_Menu();intChoose_Adminuser_Menu();intChoose_Adminstu_Menu();intlogin();voidcreatestudent();voiddelete_name();voidaddstudent();voidsearch_name();voidmodify_name();voidscan_sum();voidinput(intx,inty,char*str);floatsub(floatx1,floatx2,floatx3,floatx4,floatx5);voidhanzi16(intx,inty,intcolor,intLINE,intROW,char*hz);voidcreateuser();voidadduser();voiddeluser();voidmodifyuser();voidscanuser();voidsearchuser();voiddisplay1();voiddisplay2();/*********************************************************//*******************主函数main**********************/#include"Head.h"voidmain(){intgd=DETECT,gm;intc_x,c_y,result;intpowerflag;initgraph(&gd,&gm,"d:\\borlandc\\bgi");c_x=CX;c_y=CY;cleardevice();huanying();jianjie();cleardevice();setbkcolor(LIGHTCYAN);jieshao();Interface();Choice(c_x,c_y,RED);Entering_Menu();result=Choose_Entering_Menu();switch(result){ case27: exit(0); break; caseCY: powerflag=login(); if(powerflag) { admin(); } else { student1(); } break; caseCY+MH: end();exit(0); default:break; }closegraph();}/**********************************************************//*************欢迎函数huanying****************************/voidhuanying(){inti;intsx[62];intsnownum=0;/*雪的个数*/intsize;/*保存区域的大小*/intchange=10;/*变颜色有关*/void*get1,*get2;/*保存空间*/structSnow/*雪的一些参数*/{intx;inty;intspeed;}snow[100];setcolor(0);setfillstyle(SOLID_FILL,15);fillellipse(200,200,4,4);size=imagesize(196,196,204,204);get1=malloc(size);get2=malloc(size);getimage(196,196,204,204,get1);getimage(96,96,104,104,get2);randomize();for(i=0;i<62;i++)sx[i]=(i+2)*10;cleardevice();while(!kbhit()){hanzi16(278,160,change/10,1,2,"欢迎进入");hanzi16(246,230,change/10,1,2,"课程成绩管理系统");hanzi16(360,300,change/10,1,2,"——");hanzi16(400,300,change/10,1,2,"杜景");hanzi16(443,300,change/10,1,2,"刘俊");if(snownum!=100){snow[snownum].speed=2+random(5);i=random(62);snow[snownum].x=sx[i];snow[snownum].y=10-random(100);}for(i=0;i<snownum;i++)/*去雪*/putimage(snow[i].x,snow[i].y,get2,COPY_PUT);if(snownum!=100)snownum++;setfillstyle(SOLID_FILL,15);/*画雪*/for(i=0;i<snownum;i++){snow[i].y+=snow[i].speed;putimage(snow[i].x,snow[i].y,get1,COPY_PUT);if(snow[i].y>500)snow[i].y=10-random(200);}change++;if(change==140)/*和颜色的变化有关*/change=10;}getch();}/*******************************************************//****************界面函数jiemian************************/#include"Head.h"voidInterface(){inti,j;setcolor(GREEN);for(i=0;i<25;i++){ line(i,0,i,500); line((getmaxx()-i),0,(getmaxx()-i),500);}setcolor(YELLOW);for(i=25,j=0;i<47;i++,j++){ line(i,j,i,(getmaxy()-j)); line((getmaxx()-i),j,(getmaxx()-i),(getmaxy()-j));}}voidjianjie(){cleardevice();setbkcolor(LIGHTCYAN);setcolor(BROWN);while(!kbhit()){hanzi16(280,70,RED,1,2,"软件简介");delay(200);hanzi16(32,120,BLUE,1,1,"管理员模块:");hanzi16(145,120,GREEN,1,1,"管理用户");hanzi16(145,145,BROWN,1,1,"选择管理用户权限后,键入");outtextxy(338,149,"[ENTER]");hanzi16(400,145,BROWN,1,1,"进入权限菜单,键入");outtextxy(145,174,"[UP]/[DOWN]");hanzi16(240,170,BROWN,1,1,"实现功能的转换,键入");outtextxy(400,174,"[ENTER]");hanzi16(460,170,BROWN,1,1,"对用户信息");hanzi16(145,195,BROWN,1,1,"进行创建、添加,删除、修改、浏览、查询等操作");hanzi16(145,220,GREEN,1,1,"管理学生");hanzi16(145,245,BROWN,1,1,"选择管理学生权限后,键入");outtextxy(338,249,"[ENTER]");hanzi16(400,245,BROWN,1,1,"进入权限菜单,键入");outtextxy(145,274,"[UP]/[DOWN]");hanzi16(240,270,BROWN,1,1,"实现功能的转换,键入");outtextxy(400,274,"[ENTER]");hanzi16(460,270,BROWN,1,1,"对学生信息");hanzi16(145,295,BROWN,1,1,"进行创建、添加、删除、修改、浏览、查询等操作");hanzi16(32,335,BLUE,1,1,"学生模块:");hanzi16(145,335,BROWN,1,1,"以学生身份登陆进入系统后,键入");outtextxy(384,339,"[ENTER]");hanzi16(440,335,BROWN,1,1,"对学生信息进行");hanzi16(145,360,BROWN,1,1,"浏览、查询等操作");hanzi16(450,400,RED,1,1,"按任意键进入");}getch();}voidjieshao(){bar3d(70,100,90,340,10,1);floodfill(80,200,WHITE);hanzi16(72,120,RED,1,1,"课");hanzi16(72,120+MH,RED,1,1,"程");hanzi16(72,120+2*MH,RED,1,1,"成");hanzi16(72,120+3*MH,RED,1,1,"绩");hanzi16(72,120+4*MH,RED,1,1,"管");hanzi16(72,120+5*MH,RED,1,1,"理");hanzi16(72,120+6*MH,RED,1,1,"系");hanzi16(72,120+7*MH,RED,1,1,"统");}/******************************************************//******************输入函数input**********************/#include"Head.h"voidinput(intx,inty,char*string){ inti=0; charc; do { kbhit(); c=getch(); if(c==8) //若键入退格键"Backspace" { if(i!=0) { i--; setcolor(11); settextstyle(0,0,1); outtextxy(x,y,string); string[i]='\0'; setcolor(BLUE); outtextxy(x,y,string); } } elseif(c==13) { break; } else //正常标准键入 { string[i]=c; string[i+1]='\0'; setcolor(BLUE); settextstyle(0,0,1); outtextxy(x,y,string); i++; } }while(c!=13);}/*****************************************************//******************汉字函数hanzi********************/#include"Head.h"voidhanzi16(intx,inty,intcolor,intLINE,intROW,char*hz){unsignedlongoffset;charbuffer[32];intm,n,i,j,k;unsignedcharqh,wh;FILE*fp;if((fp=fopen("hzk16","rb"))==NULL){printf("Can'topenhanzi,Pleaseaddit");exit(1);}while(*hz){qh=*(hz)-0xa0;/*得到区号*/wh=*(hz+1)-0xa0;/*得到位号*/offset=(94*(qh-1)+(wh-1))*32L;/*得到偏移位置*/fseek(fp,offset,SEEK_SET);/*移文件指针到要读取的汉字字模处*/fread(buffer,32,1,fp);/*读取32个汉字的汉字字模*/for(i=0;i<16;i++)/*16点阵有16行*/{for(n=0;n<ROW;n++)/*行放大系数*/{for(j=0;j<2;j++)/*每行有2个字节*/{for(k=0;k<8;k++)/*测试字节的位*/{for(m=0;m<LINE;m++)/*列放大系数*/{if(((buffer[i*2+j]>>(7-k))&0x1)!=NULL){ putpixel(x+8*j*LINE+k*LINE+m,y+i*ROW+n,color);}}}}}}hz+=2;x+=16*LINE;}fclose(fp);}/*********************************************************//********************菜单函数menu**********************/#include"Head.h"voidEntering_Menu(){char*str1="登陆";char*str2="退出";setcolor(WHITE);rectangle(MX,MY,MX+MW,MY+2*MH);line(MX,MY+MH,MX+MW,MY+MH);hanzi16(MX+50,MY+7,WHITE,1,1,str1);hanzi16(MX+50,MY+MH+7,WHITE,1,1,str2);}voidAdmin_Menu(){char*str1="管理用户",*str2="管理学生";char*str3="退出";setbkcolor(LIGHTCYAN);setcolor(WHITE);rectangle(MX,MY,MX+MW,MY+3*MH);line(MX,MY+MH,MX+MW,MY+MH);line(MX,MY+2*MH,MX+MW,MY+2*MH);hanzi16(MX+40,MY+7,WHITE,1,1,str1);hanzi16(MX+40,MY+MH+7,WHITE,1,1,str2);hanzi16(MX+52,MY+2*MH+7,WHITE,1,1,str3);}voidStudent_Menu(){setbkcolor(LIGHTCYAN);setcolor(WHITE);rectangle(MX,MY,MX+MW,MY+3*MH);line(MX,MY+MH,MX+MW,MY+MH);line(MX,MY+2*MH,MX+MW,MY+2*MH);hanzi16(MX+52,MY+7,WHITE,1,1,"查找");hanzi16(MX+52,MY+MH+7,WHITE,1,1,"浏览");hanzi16(MX+52,MY+2*MH+7,WHITE,1,1,"退出");}voidAdminuser_Menu(){char*str1="创建用户",*str2="添加用户",*str3="删除用户";char*str4="修改用户",*str5="查找用户",*str6="浏览用户";char*str7="退出";setbkcolor(LIGHTCYAN);setcolor(WHITE);rectangle(MX,MY,MX+MW,MY+7*MH);line(MX,MY+MH,MX+MW,MY+MH);line(MX,MY+2*MH,MX+MW,MY+2*MH);line(MX,MY+3*MH,MX+MW,MY+3*MH);line(MX,MY+4*MH,MX+MW,MY+4*MH);line(MX,MY+5*MH,MX+MW,MY+5*MH);line(MX,MY+6*MH,MX+MW,MY+6*MH);line(MX,MY+7*MH,MX+MW,MY+7*MH);hanzi16(MX+40,MY+7,BLUE,1,1,str1);hanzi16(MX+40,MY+MH+7,BLUE,1,1,str2);hanzi16(MX+40,MY+2*MH+7,BLUE,1,1,str3);hanzi16(MX+40,MY+3*MH+7,BLUE,1,1,str4);hanzi16(MX+40,MY+4*MH+7,BLUE,1,1,str5);hanzi16(MX+40,MY+5*MH+7,BLUE,1,1,str6);hanzi16(MX+52,MY+6*MH+7,BLUE,1,1,str7);}voidAdminstu_Menu(){char*str1="创建学生",*str2="添加学生",*str3="删除学生";char*str4="查找";char*str5="修改";char*str6="浏览";char*str7="退出";setbkcolor(LIGHTCYAN);setcolor(WHITE);rectangle(MX,MY,MX+MW,MY+7*MH);line(MX,MY+MH,MX+MW,MY+MH);line(MX,MY+2*MH,MX+MW,MY+2*MH);line(MX,MY+3*MH,MX+MW,MY+3*MH);line(MX,MY+4*MH,MX+MW,MY+4*MH);line(MX,MY+5*MH,MX+MW,MY+5*MH);line(MX,MY+6*MH,MX+MW,MY+6*MH);line(MX,MY+7*MH,MX+MW,MY+7*MH);hanzi16(MX+40,MY+7,BLUE,1,1,str1);hanzi16(MX+40,MY+MH+7,BLUE,1,1,str2);hanzi16(MX+40,MY+2*MH+7,BLUE,1,1,str3);hanzi16(MX+52,MY+3*MH+7,BLUE,1,1,str4);hanzi16(MX+52,MY+4*MH+7,BLUE,1,1,str5);hanzi16(MX+52,MY+5*MH+7,BLUE,1,1,str6);hanzi16(MX+52,MY+6*MH+7,BLUE,1,1,str7);}/**********************************************************//******************选择光标函数choice*********************/#include"Head.h"voidChoice(intc_x,intc_y,intcolor){setfillstyle(1,color);bar(c_x,c_y,c_x+CW,c_y+CH);}/*选择登陆菜单*/intChoose_Entering_Menu(){intx,y;intC_Key;x=CX;y=CY;do{ kbhit(); C_Key=getch(); if(C_Key==27) { returnEsc; } else if(C_Key==13) { returny; } else { switch(C_Key) { caseUpKey: if(y==CY) { break; } else { Choice(x,y,11); y-=MH; Choice(x,y,RED); Entering_Menu(); } break; caseDownKey: if(y==(CY+MH)) { break; } else { Choice(x,y,11); y+=MH; Choice(x,y,RED); Entering_Menu(); } break; default: break; } }}while(C_Key!=27);return(0);}/*选择管理菜单*/intChoose_Admin_Menu(){intx,y;intC_Key;x=CX;y=CY;do{ kbhit(); C_Key=getch(); if(C_Key==27) { returnEsc; } else if(C_Key==13) { returny; } else { switch(C_Key) { caseUpKey: if(y==CY) { break; } else { Choice(x,y,11); y-=MH; Choice(x,y,RED); Admin_Menu(); } break; caseDownKey: if(y==(CY+2*MH)) { break; } else { Choice(x,y,11); y+=MH; Choice(x,y,RED); Admin_Menu(); } break; default: break; } }}while(C_Key!=27);return(0);}/*选择学生模块菜单*/intChoose_Student_Menu(){intx,y;intC_Key;x=CX;y=CY;do{ kbhit(); C_Key=getch(); if(C_Key==27) { returnEsc; } else if(C_Key==13) { returny; } else { switch(C_Key) { caseUpKey: if(y==CY) { break; } else { Choice(x,y,11); y-=MH; Choice(x,y,RED); Student_Menu(); } break; caseDownKey: if(y==(CY+2*MH)) { break; } else { Choice(x,y,11); y+=MH; Choice(x,y,RED); Student_Menu(); } break; default: break; } }}while(C_Key!=27);return(0);}/*选择管理用户菜单*/intChoose_Adminuser_Menu(){intx,y;intC_Key;x=CX;y=CY;do{ kbhit(); C_Key=getch(); if(C_Key==27) { returnEsc; } else if(C_Key==13) { returny; } else { switch(C_Key) { caseUpKey: if(y==CY) { break; } else { Choice(x,y,11); y-=MH; Choice(x,y,RED); Adminuser_Menu(); } break; caseDownKey: if(y==(CY+6*MH)) { break; } else { Choice(x,y,11); y+=MH; Choice(x,y,RED); Adminuser_Menu(); } break; default: break; } }}while(C_Key!=27);return(0);}/*选择管理学生菜单*/intChoose_Adminstu_Menu(){intx,y;intC_Key;x=CX;y=CY;do{ kbhit(); C_Key=getch(); if(C_Key==27) { returnEsc; } else if(C_Key==13) { returny; } else { switch(C_Key) { caseUpKey: if(y==CY) { break; } else { Choice(x,y,11); y-=MH; Choice(x,y,RED); Adminstu_Menu(); } break; caseDownKey: if(y==(CY+6*MH)) { break; } else { Choice(x,y,11); y+=MH; Choice(x,y,RED); Adminstu_Menu(); } break; default: break; } }}while(C_Key!=27);return(0);}/**********************************************************//********************登陆函数login*************************/#include"Head.h"intlogin(){relogin:char*str;intpower1;FILE*fp;users[10];char*username,*password;inti=0,j;intflag=0;charnext;cleardevice();setbkcolor(11);if((fp=fopen(userdatafile,"rb"))==NULL){outtextxy(50,20,"openfilefail!pressanykey!"); getch(); exit(1);}while(fread(&s[i],sizeof(user),1,fp)!=(int)NULL){i++;}hanzi16(180,50,YELLOW,2,2,"课程成绩管理系统");hanzi16(250,110,GREEN,1,1,"请输入账号和密码");hanzi16(250,160,BLUE,1,1,"账号");hanzi16(400,160,RED,1,1,"按");setcolor(RED);outtextxy(419,164,"ENTER");hanzi16(460,160,RED,1,1,"继续");input(320,163,username);hanzi16(250,210,BLUE,1,1,"密码");input(320,213,password);for(j=0;j<i;j++){if((strcmp(s[j].name,username)==0)&&(strcmp(s[j].password,password)==0)) { flag=1; power1=s[j].power; break; }}if(flag){ hanzi16(280,300,RED,1,1,"登陆成功!"); getch(); returnpower1;}else{outtextxy(200,300,"Loginfail!Yournameorpasswordiswrong!");outtextxy(200,330,"Doyouwanttotryagain?(y/n)");next=getch(); if(next=='y'||next=='Y') { gotorelogin; } else {end(); exit(0);}return(0);}}/**********************************************************//*********************结束函数end*************************/#include"Head.h"voidend(){inti;setbkcolor(LIGHTCYAN);for(i=0;i<11;i++){cleardevice();hanzi16(i*20,200,i+2,2,2,"谢谢使用!");delay(250);}}/**********************************************************//*****************管理员函数admin***********************/#include"Head.h"voidadmin(){again0:intc_x,c_y,result;charch;c_x=CX; c_y=CY; cleardevice();Interface(); Choice(c_x,c_y,4); Admin_Menu(); result=Choose_Admin_Menu(); switch(result) { case27: exit(0); break; caseCY: caseCY+MH: if(result==CY) { adminuser(); } else { adminstu(); }cleardevice;setbkcolor(LIGHTCYAN);hanzi16(200,200,BLUE,1,1,"返回菜单");setcolor(4); settextstyle(0,0,1);outtextxy(300,205,"(y/n)");ch=getch(); if(ch=='y'||ch=='Y') { gotoagain0;} elseif(ch=='n'||ch=='N') break;caseCY+2*MH:{end();exit(0);} default:break; }}voidadminuser(){again1:intc_x,c_y,result=0; charch; c_x=CX; c_y=CY; cleardevice(); Interface(); Choice(c_x,c_y,4); Adminuser_Menu(); result=Choose_Adminuser_Menu();switch(result) {case27: exit(0); break; caseCY: caseCY+MH: caseCY+2*MH: caseCY+3*MH: caseCY+4*MH: caseCY+5*MH: if(result==CY) { createuser(); } elseif(result==CY+MH) { adduser(); } elseif(result==CY+2*MH) { deluser(); } elseif(result==CY+3*MH) { modifyuser(); } elseif(result==CY+4*MH) { searchuser();}else { scanuser(); } cleardevice(); setbkcolor(LIGHTCYAN);hanzi16(200,200,BLUE,1,1,"返回菜单");setcolor(4); settextstyle(0,0,1);outtextxy(300,205,"(y/n)"); ch=getch(); if(ch=='y'||ch=='Y') {gotoagain1; } elseif(ch=='n'||ch=='N') {break;} caseCY+6*MH: {cleardevice();setbkcolor(LIGHTCYAN);hanzi16(200,200,BLUE,1,1,"返回主菜单");setcolor(4); settextstyle(0,0,1);outtextxy(300,205,"(y/n)");ch=getch();if(ch=='y'||ch=='Y') {admin(); } elseif(ch=='n'||ch=='N') { end();exit(0);}} default:break; }}voidadminstu(){again2: intc_x,c_y,result; charch; c_x=CX; c_y=CY; cleardevice(); Interface(); Choice(c_x,c_y,4); Adminstu_Menu(); result=Choose_Adminstu_Menu(); switch(result) { case27: exit(0); break; caseCY: caseCY+MH: caseCY+2*MH: caseCY+3*MH: caseCY+4*MH: caseCY+5*MH: if(result==CY) { createstudent(); } elseif(result==CY+MH) { addstudent(); } elseif(result==CY+2*MH) { delete_name(); } elseif(result==CY+3*MH) { search_name(); } elseif(result==CY+4*MH) { modify_name(); } else { scan_sum(); }cleardevice(); setbkcolor(11);hanzi16(200,200,BLUE,1,1,"返回菜单");setcolor(4); settextstyle(0,0,1);outtextxy(300,205,"(y/n)"); ch=getch(); if(ch=='y'||ch=='Y') { gotoagain2;} elseif(ch=='n'||ch=='N') break; caseCY+6*MH: {cleardevice(); setbkcolor(11);hanzi16(200,200,BLUE,1,1,"返回主菜单");setcolor(4); settextstyle(0,0,1);outtextxy(300,205,"(y/n)");ch=getch();if(ch=='y'||ch=='Y') {admin(); } elseif(ch=='n'||ch=='N') {end();exit(0);}} default:break; }}/**********************************************************//********************学生函数student*********************/#include"Head.h"voidstudent1(){again3: intc_x,c_y,result; charch; c_x=CX; c_y=CY; cleardevice(); Interface(); Choice(c_x,c_y,4); Student_Menu(); result=Choose_Student_Menu(); switch(result) { case27: exit(0); break; caseCY: caseCY+MH:if(result==CY) { search_name(); } else { scan_sum(); } cleardevice(); setbkcolor(LIGHTCYAN);hanzi16(200,200,BLUE,1,1,"返回菜单");setcolor(4); settextstyle(0,0,1);outtextxy(300,205,"(y/n)"); ch=getch(); if(ch=='y'||ch=='Y') { gotoagain3;} elseif(ch=='n'||ch=='N') break; caseCY+2*MH:{
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 风景名胜区自行车租借协议
- 建筑安装工程承包合作协议
- 广告委托制作协议书
- 民间借款协议书的格式要求
- 私车出租给机构协议
- 2024年加盟经销合同范本
- 建筑工程劳务扩大分包合同完整2024年
- 2024正规版私人借款合同样本
- 吉林省农业产品订购协议
- 房产物业抵押借款协议
- 牛津深圳版(广州沈阳通用)九年级英语上册 期中复习 Unit1-Unit4 词汇练习(无答案)
- 礼仪与教化下外国篇
- 景物描写作用及练习
- PPT模板:热烈欢迎兄弟单位领导莅临指导工作汇报课件
- 西游记詹纳尔英译本鉴赏
- 保险基础知识在线练习题库-1讲解
- 幼儿园小班绘本:《一步一步_走啊走》 PPT课件
- 高海拔地区电气设备选型
- 九田回米-练字格(excel版本)
- 售后服务控制程序文件
- 管道压力和壁厚对照表
评论
0/150
提交评论