C语言课设之学生证管理系统_第1页
C语言课设之学生证管理系统_第2页
C语言课设之学生证管理系统_第3页
C语言课设之学生证管理系统_第4页
C语言课设之学生证管理系统_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学生证的管理程序 C 语言课程设计报告一、题目要求该程序应该具有下列功能:1、录入某位学生的学生证信息。学生证应该包照自含的信息请参己的学生证;2、给定学号,显示某位学生的学生信息;3、给定某个班级的班号,显示该班所有学生的学生证信息4、给定某位学生的学号,修改该学生的学生信息;5、给定某位学生的学号,删除该学生的学生信息;6、提供一些统计各类信息的功能。输入要求 应用程序后,在屏幕上显示一个菜单。用户可以根据要求选定相应的操作项目。 进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。输出要求 1、应用程序运行后,要在屏幕上显示一个菜单;2、要求用户输入数据时, 要给出清晰、 明确

2、的提示信息, 包括输入的数据内容、 格式及结束方式等。提示 设计一个结构体类型和一维数组类型,用来保存学生证内容;二、需求分析根据题目要求, 由于学生信息是一个有不同类型的变量组成, 因此,应提 供结构体操作,在程序中需要浏览学生信息,应提供显示、查找、修改、删除、 统计等操作。另外还应该提供键盘式的选择菜单实现功能选择。三、总体设计 学生证的管理程序主要包含学生信息的录入、修改、删除、查询、统计等模块。 为了各模块的独立性,将显示模块分别镶嵌在录入、修改、删除、查询、统计等 模块中。四、详细分析1、主函数分析主函数的设计简洁,只提供加录入、修改、删除、查询、统计和显示等函数的调 用和加载功能

3、。其中各功能模块用菜单方式选择。 并将main()函数体内的界面选 择部分部分语句单独抽出来做一个独立的函数,目的在于系统执行完每部分功能 模块后能更方便返回到系统界面。men u()函数从主函数中独立出来后,表面的主 函数只是起一个程序开始的作用,其主要功能被独立出来的被调用的men u()函数所取代。menu ()函数主要完成菜单的输出和被选择的项目的输入和相应执 行函数的调用。并将已经拥有的信息从指定文件中读取到结构体st中,以便执行其他的功能性函数。成功后需要关闭文件。流程图程序menumenu()int n,w,i,j;STU *st;FILE *fp;fp=fopen(studen

4、t1.txt,wb+); if(!fp)printf(Document error! ); exit(0);elsefread(&i,2,1,fp);fclose(fp);j=i+1;st=(STU*)malloc(j*sizeof(STU); doprintf(ntt*MENU*nn);printf(ttt1.Input information of studentn);/ 输入学生信息 printf(ttt2.Inquiries information of studentn)/ 显示学生信息 printf(ttt3.Changes information of studentn);/ 修

5、改学生信息printf(ttt4.Delete information of studentn);/ 删除学生信息 printf(ttt5.Statistic information of studentn);/ 统计学生信息 printf(ttt6.Exit);/ 结束printf(nn2tt*n);printf(Choice your number(1-6)bbbbbbb);scanf(%d,&n);if(n6)w=1;getchar();elsew=0;free(st); while(w=1);switch(n)case 1:input(i,st);break; case 2:inqui

6、ries(i,st);break; case 3:change(i,st);break; case 4:delete(i,st);break; case 5:statistic(i,st);break; case 6:exit(0);break;2、各功能模块设计1)输入模块设计分析在向指定文件输出学生信息及录入信息前需要将输入的学生证号进行检测,该检测是在结构体中st元素的学号项值比较而得出。如果已经存在的序号拒绝录入, 如果还没有输入的学生证号就按提示继续输入学生信息信息。输入成功后显示刚 输入的信息并将信息输出到指定文件的末尾。成功后将释放机构体指针;关闭文 件并返回到menu ()函数

7、继续选择并执行其他操作。流程图程序*in put*void input(int k,STU *st)int n,i;FILE *fp;long b;STU stude nt_1;pri ntf(Please in put your numberbbbbbbb); 输入学号scanf(%ld,&b);prin tf(nPlease in put your namebbbbbbbbb); 输入名 sea nf(%s,stude nt_1. name);prin tf(nPleasein put you sex male(1) orfemale(2)bbbbbbb); 输入性别scan f(%d,&

8、stude nt_1.sex);prin tf(nPlease in put you Classbbbbbbb);输入班号scan f(%ld,&stude nt_1.classes);prin tf(nPlease in put you date of birthbbbbbbb);输入出生日期sca nf(%ld,&stude nt_1.birth);fp=fope n(stude nt1.txt,ab);if(!fp)pri ntf(Docume nt error!);exit(O);elsefprin tf(fp,%ld%s%d%ld%ld,b,stude nt_1. name,stud

9、e nt_1.sex,stude nt_1.classes ,stude nt_1.birth);prin tf(%ld%s%d%ld%ld,b,stude nt_1. name,stude nt_1.sex,stude nt_1.classes,stu de nt_1.birth);n=k+1;rewi nd(fp);fprin tf(fp,%d, n);fclose(fp);free(st);menu ();2、查询模块分析查询的主要方式就是通过学号查询,查询时需要通过输入学号并按学生信息储存 逐个核对,如果出现发现相同信息则输出该同学的其他信息,没有发现相同的信 息则提示未找到并返回到

10、menu ()函数继续选择并执行其他操作。该查询也是 通过机构体st的元素项的比较得出。运行结束后需要关闭文件并释放机构体指针的空间。流程图. 一系歹y功能选项.V“N”a输入n,判断n的值是否是1 4,Z1 :查找学号V查找班级Lr查找出生日期J返回至U menu返回至U menu返回至U menu程序/*i nq uiries*/void inquiries(int k,STU *st)int i,j=0, n,p,w;long a;dopri ntf(ntt*INQUIRIE MENU*nn); prin tf(ttt1 .Inq uiries school nu mber n);pri

11、n tf(ttt2.I nquiries classesn);prin tf(ttt3.I nquiries date of birthn);prin tf(ttt4.Back to me nun);printf(nntt*n)prin tf(Choice your number(1-4)bbbbbbb);sca nf(%d,&n);if(n4)w=1;getchar();elsew=0;while(w=1);switch( n)case1:j=0;pri ntf(Pleasein putyourinq uiriesschoolnumberbbbbbbb);sca nf(%ld,&a);for

12、(i=0;ik;i+)if(sti. num=a)j=1;p+;prin tf(%ld%s%d%ld%ld,sti. num,sti. name,sti.sex,sti.classes,sti.birth); if(!j)printf(There is no this school number!);elseprintf(Success.There are %d student.,p);inquiries(k,st);break;case 2:j=0;printf(Please input you class numberbbbbbbb);scanf(%ld,&a);for(i=0;ik;i+

13、)if(sti.classes=a)i=1;p+;printf(%d%s%d%d%ld,sti.num,,sti.sex,sti.classes,sti.birth);if(!j)printf(There is no this Class!);elseprintf(Success.There are %d student.,p);inquiries(k,st);break;case 3:j=0;printf(Please input you date of birth bbbbbbb);scanf(%ld,&a);for(i=0;ik;i+)if(sti.birth=a)i=1

14、;p+;printf(%d%s%d%d%ld,sti.num,,sti.sex,sti.classes,sti.birth);if(!j)printf(There is no this date of birth!);elseprintf(Success.There are %d student.,p);inquiries(k,st);break;case 4:free(st);menu();break;3、修改模块分析 修改一个学生的信息首先要利用学生证号在已经存储的信息中找到该学生的信 息并输出该学生的具体信息, 再在阅读完信息之后选择所需要修改的信息。 修改 成功之后需要

15、将已经更改的信息输出到屏幕和指定文件保存。成功之后返回到menu ()函数继续选择并执行其他操作。其中的信息比较也是通过输入学号和 机构体中的学号项逐个比较。 流程图 程序/*cha nge*/void change(int k,STU *st)int a,i, n, w,j=0,p,q=0;FILE *fp;fp=fope n(stude nt1,wb);if(!fp)pri ntf(Docume nt error!);exit(0);bbbbbbb);prin tf(Plese in put you cha nge nu mbersca nf(%ld,&a);for(i=0;ik;i+)i

16、f(sti. num=a)j=1;p=i;dopri ntf(ntt* * CHANGES MENU *);printf(nttt1.Change Number);/ 修改学号printf(nttt2.Change Name);/修改名字printf(nttt3.Change Sex);/修改性别printf(nttt4.Change classes)修改班号printf(nttt5.Change Date of birth);修改出生日期prin tf(nttt6.Back);printf(ntt*n);bbbbbbb);printf(nChoice your number(1-6) sca

17、nf(%d,&n);if(n6)w=1;getchar();else w=0;while(w=1);switch(n)case 1:printf(nPlease inputnumber bbbbbbb);scanf(%ld,&sti.num);q=1;change(k,st);break;case 2:printf(nPlease input name bbbbbbbbb);scanf(%s,);q=1;change(k,st);break;case 3:printf(nPlease input your right female(f) bbbbbbb);your newyou

18、r newsexmale(M) orscanf(%d,&sti.sex);q=1;change(k,st);break;bbbbbbb);case 4:printf(nPlease input your new classesscanf(%ld,&sti.classes);q=1;change(k,st);break;case 5:printf(nPlease input your right date of birth bbbbbbb);scanf(%ld,sti.birth);q=1;change(k,st);break;case 6:rewind(fp);fprintf(fp,%d,k)

19、; for(i=0;ik;i+)fprintf(fp,%ld%s%d%ld%ld,sti.num,,sti.sex,sti.classes,sti.birth);if(p)printf(The changed information are:%ld%s%d%ld%ld,stq.num,,stq.sex,stq.classes,stq.birth);free(st);fclose(fp);menu();if(!j)printf(There is no this student);free(st);menu();4、删除模块分析 删除一个给定学号的学生的信息时需要在

20、学号输入后在已经有的学生信息中逐 个查找,发现该信息后直接将后一个结构体元素复制个被删除的元素, 依次类推, 直到倒数第二个元素被复制, 这时将结构体的有效元素个数减 1 便完成该学生信 息的删除。 在删除成功后需要将被改变的学生信息输出到指定文件。 成功之后释放结构体空间,关闭文件并返回到 menu ()函数继续选择并执行其他操作流程图程序*deletedelete(int k,STU *st)int i,j,b;long a;FILE *fp;prin tf(Please in put your delete school nu mberbbbbbbb);sea nf(%ld,&a);fo

21、r(i=0;ik;i+)if(sti. num=a)pri ntf(Thedeletedin formatio nare:%ld%s%d%ld%ld,sti. nu m,sti. name,sti.sex,sti.classes,sti.birth);for(;ik-1;i+)sti. num=sti+1. num;strcpy(sti. name,sti+1. name);sti.sex=sti+1.sex;sti.classes=sti+1.classes; sti.birth=sti+1.birth;j=k-1;fp=fope n(stude nt1,wb);if(!fp)pri ntf

22、(Docume nt error!);exit(O);rewi nd(fp);fprin tf(fp,%d,j);for(i=0;ij;i+)fprin tf(fp,%ld%s%d%ld%ld,sti. nu m,sti. name,sti.sex,sti.classes,sti.birth);free(st);fclose(fp);me nu();break;elsepri ntf(There is no this schol nu mber!);free(st);fclose(fp);me nu();5、统计模块分析统计的主要项目有姓名、班级、性别和出生日期,并通过可输入菜单完成统计项 目

23、的选择和相应功能的执行。在统计时是将输入的信息和结构体中的已有信息进 行比较,如果出现同样的信息便输出该同学的信息并进行记数统计。完成后释放结构体指针空间,返回到 menu ()函数继续选择并执行其他操作。流程图程序*statistic*void statistic(int k,STU *st)int n,w,i,b,p=0; long a;int name10; doprintf(ntt*STATISTICMENU*nn);printf(ttt1.Name statisticn); printf(ttt2.classes statisticn); printf(ttt3.Sex statis

24、ticn);printf(ttt4.Date of birth statisticn);printf(ttt5.Back);printf(nntt*n);printf(Choice your number(1-5)bbbbbbb);scanf(%d,&n);if(n5)w=1;getchar();elsew=0;while(w=1);switch(n)statisticcase 1:printf(nPlease input you name bbbbbbbbb);scanf(%s,name);for(i=0;ik;i+)if(!strcmp(,name)p+;printf(%l

25、d%s%d%ld%ld,sti.num,,sti.sex,sti.classes,sti.birth); if(p)printf(There are %d students.,p);statistic(k,st);case 2:printf(nPlease input you classesbbbbbbb);scanf(%ld,&a); for(i=0;ik;i+)if(sti.classes=a)p+;printf(%ld%s%d%ld%ld,sti.num,,sti.sex,sti.classes,sti.birth); if(p)printf(There

26、are %d students.,p);statistic(k,st);orcase 3:printf(nPlease input you statistic sex M F bbbbbbb);scanf(%d,&b); for(i=0;ik;i+)if(sti.sex=b)p+; printf(%ld%s%d%ld%ld,sti.num,,sti.sex,sti.classes,sti.birth);if(p)printf(There are %d students.,p); statistic(k,st);case 4:printf(nPlease input you da

27、te of birth bbbbbbb); scanf(%ld,&a);for(i=0;ik;i+)if(sti.classes=a)p+; printf(%ld%s%d%ld%ld,sti.num,,sti.sex,sti.classes,sti.birth); if(p)printf(There are %d students.,p);statistic(k,st);case 5:free(st);menu();五、上机操作田-刿列疑轉背轉科料筍科料mwxifHIENU料科舞科耳豪図耳棘蒔绻岸耳豪料科w1.Input information of student2 . In

28、qiiiiies inf ormation of studeri t3 .Clianges infOFmat ion of student 4*Delete information of student5 . St;at isb:ic ijnFio in of student;6.ExitChoice your nuRber 2 JBCM XU SMJtWJtJC JtKJH)CJ(I IN QU I Rl E MENU XKHICKKHXJtJCStlOtlC1nquiries school nuvnhei*2【nguiiriE占 classes3.1 nqu3.i*3JB& dat;e o

29、f foil*t;k 4Baclk to menuKW XJf XMTXMTiKXMiKJf KF XXXXXJffXltfiHKMKK KW 菟耳 XXXMTiKiMKMiK03-|i5| x|Choice your nunber 2*INQUIRIE MENU*1.Inquiries school number 2Inquiries classes3. Inquiries date of bii*th4. Back to nentiChoice your nunber 1 JPlease input your inquiries school nunber 15Tliere JLs nu

30、Chis schuul lumber?)SI二创凶Choice your number1 JPlease input your inquiries school number 15There is no this school nunber?xxxxxxxxxxxxmxlNQUIRIE MENU舅*xx襲xxx1.Inquiries school nunber2. lnqiii*ies classes3.Inquiries date of birth 4.Back to menuXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Choice your nun

31、ber 2Please input you class nnmhe*( 72025 1 There is no this Class?xxwxxxxxxxxxxlNQUIRIE MENU1.Inquiries school number 2Inqulr丄cs classes3.Inquiries date of birth4.Bac) to nonuINQUlKlli MENU1. Inquiries school number2. Inquiries classes3. Inquiries date of birth4 . Back to nenuxxxxxxxxxxxxxxxxxxxxxx

32、xxxxxxxxxxxxxxxxxxxx Choice your nunber 3Please input you date of birthl 865】There Is nu this date uf blrthtXXXXXXXXXXXXXXlNQUIRIE MENU XXXXXX.XXXXXX1.Inquiries school number2.Inquiries classes3. Inctuiries date of birth4. Back to nenuho icyour nunbei*O-(9 Xho ice pntiS3rOfchoice your nunber 2INQUIR

33、1E MENU.Inquiries school numbei* Inquiries classes-1 nqui*ie date of b*ii*t h .Back to menuCho ice youi* numbei*l4) 4J1.Input information of student 2.1 nquii*ie? inFoi*inat ion of ctudent 3 .Changes information of student4. Delete information of student 5.Statistic information of student 6 .ExitEho

34、ice youu nuFibenYl.-6 nunhpyl 4) T 31?lease input you date of birth 865 J rhere is no this date of birth?口)(xxxx口xxxmxxxINQUI RI E MENU xxxxwx1.Inquiries school number 2.Inauiries classes3.Inquiries date of birth 4.Back to menuDhoice your nanber 41.Input information of student 2.Inquiries informatio

35、n of student3. Changes information of student4. Delete infornation of student5.Statistic infornatIon of student 6.Exit1234hoice your nunberJMENU丄23456.Input mtornation of student.Inquiries information of student .Changes infornation of student .Delete information of student .Statistic information of

36、 student Exitho ice your nunbcr 31lese input you change number 15 here is no this studentflENU1.Input infornation of student 2.Inquiries information of student3. Changes information of student4. De lete i.nf ovnat ion of ctudent5.Statistic information of student 6.Exit2131312121. Input infoFiiat ion

37、 of sCudent2.Inquiries inFornation of student3. Changes information of student4. Delete inforniiatIon of student5 . Stat ist ic inf omat ion of student fi. ExitCho Iec #口口犷 nuunibier 16 J E 4JPlease input youir delete school nunberC 15 J There is no this: schol numberf屮tXiOtM 屛f4(斗料規耳 itx1. Jfiput i

38、nfornation of student2 . Inquiifies infomat ion of student3 . Changes inf omatiori of student4. De l#t inf oi*miat ion of ctudent5.Statistic inforntion of student 6.Exitice vour numberJhere is noho ice youi*hn ice youi*lease input uou statistic nancIuahqfai 1this schol nuniber?KUKiMKW aCHrXIffMiKXJC

39、iitKiMKItKNIENIJ *EMEEK1. Input InFormait ion of student2.Inquiries information of student3. Changes inf ornaition of student 4*Jelete inFormation of student5 - St: at ist Id inf oilmen tzicin ot student6.Exit屛科强料屛賛豪料 托卿菟算 科算膏屛科裤卿 黑料托X 耳 算 科算 科屛蜀=K科屛撑幢算 芹耳耳黑科耳科科 numberE梵耳耳駕耳X菲X真K耳X If梵耳K 31耳Ht梵K弭Xnu

40、mberll5 5 1六、源程序#include#include#include#include#define STU struct student STUlong num; char name20; int sex;long classes; long birth;input*void input(int k,STU *st)int n,i;FILE *fp; long b;STU student_1;printf(Please input your number bbbbbbb); scanf(%ld,&b);for(i=0;ik;i+)if(sti.num=b)printf(nThe s

41、chool number is repeat!n); free(st);menu();elseprintf(nPlease input your name bbbbbbbbb); scanf(%s,student_1.name);printf(nPlease input you sex male(1) or female(2)bbbbbbb);scanf(%d,&student_1.sex);printf(nPlease input you Classbbbbbbb);scanf(%ld,&student_1.classes);printf(nPlease input you date of

42、birthbbbbbbb);scanf(%ld,&student_1.birth);fp=fopen(student1.txt,ab);if(!fp)printf(Document error! );exit(0); elsefprintf(fp,%ld%s%d%ld%ld,b,student_1.name,student_1.sex,student_1.classe s,student_1.birth);printf(%ld%s%d%ld%ld,b,student_1.name,student_1.sex,student_1.classes,st udent_1.birth);n=k+1;r

43、ewind(fp); fprintf(fp,%d,n); fclose(fp); free(st);menu();*inquiriesvoid inquiries(int k,STU *st)int i,j=0,n,p,w; long a;doprintf(ntt*INQUIRIE MENU*nn);printf(ttt1.Inquiries school numbern);printf(ttt2.Inquiries classesn);printf(ttt3.Inquiries date of birthn);printf(ttt4.Back to menun);printf(nntt*n)

44、;bbbbbbb);printf(Choice your number(1-4)scanf(%d,&n);if(n4) w=1;getchar();elsew=0;while(w=1);switch(n)case 1:j=0;printf(Please input your inquiries school number bbbbbbb);scanf(%ld,&a);for(i=0;ik;i+)if(sti.num=a) j=1;p+;printf(%ld%s%d%ld%ld,sti.num,,sti.sex,sti.classes,sti.birth); if(!j)prin

45、tf(There is no this school number!);elseprintf(Success.There are %d student.,p);inquiries(k,st);break;case 2:j=0;printf(Please input you class number bbbbbbb); scanf(%ld,&a);for(i=0;ik;i+)if(sti.classes=a)i=1;p+;printf(%d%s%d%d%ld,sti.num,,sti.sex,sti.classes,sti.birth); if(!j)printf(There i

46、s no this Class!);elseprintf(Success.There are %d student.,p);inquiries(k,st);break;case 3:j=0;printf(Please input you date of birth bbbbbbb); scanf(%ld,&a);for(i=0;ik;i+)if(sti.birth=a)i=1;p+;printf(%d%s%d%d%ld,sti.num,,sti.sex,sti.classes,sti.birth); if(!j)printf(There is no this date of b

47、irth!);elseprintf(Success.There are %d student.,p); inquiries(k,st);break;case 4:free(st);menu();break;change*/void change(int k,STU *st)int a,i,n,w,j=0,p,q=0;FILE *fp; fp=fopen(student1,wb); if(!fp)printf(Document error! ); exit(0);printf(Plese input you change numberbbbbbbb);scanf(%ld,&a);for(i=0;ik;i+)if(sti.num=a) j=1;p=i;doprintf(nttt2.Change Name);printf(nttt3.Change Sex);printf(nttt5.Change Date of birth

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论