学生证信息管理系统_第1页
学生证信息管理系统_第2页
学生证信息管理系统_第3页
学生证信息管理系统_第4页
学生证信息管理系统_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1系统的意义及其功能 本系统为学生证管理程序。系统任务描述:假设某校学生学生证基本信息主要包括:学号、姓名、所在系、班级等,本系统应能对这些基本信息进行管理,并要求具有以下功能:(1)通过键盘输入某位学生的学生证信息。学生证包含的信息请参看自己的学生证;(2)给定学号,显示某位学生的学生证信息;(3)给定某个班级的班号,显示该班所有学生的学生证信息;(4)给定某位学生的学号,修改该学生的学生证信息;2系统的功能结构图以及调用关系学生证管理程序输入学号输入某班级的班号输入某位学生的学号按学号排序或姓名排序来显示该班所有学生证信息的学生证信息显示该生学生证信息修改该生的学生证信息键入某位学生的学生证信息3系统功能详细分析学生证管理系统需要完成的功能主要有:从主函数进入各个子函数:子函数包括学生证信息的键入、查询信息的功能、修改学生证信息的功能、退出系统。具体功能如下:3.1学生证信息的键入学生证信息的键入此程序是将学生证信息录入文件开始主菜单学生证信息的键入输入学生证信息是否继续保存文件YN3.2 查询信息的功能查询记录的主要功能是通过不同的查询方式查询学生的信息。先是进入查询界面,再选择查询的方式,选择后将输出该学生的信息。共分为两种: 给定某个学生的学号,显示该学生的学生证信息; 给定某个班级的班号,按学号排序来显示该班所有学生的学生证信息; 按班级排序来显示该班所有学生的学生证信息;3.2.1 输入学号,显示该生的学生证信息学生证信息查询此程序是通过输入某位学生的学号,显示该生的学生证信息。开始主菜单学生证信息查询输入学号显示该生的学生证信息关闭文件是否继续NY3.2.2 输入班号,显示该班所有学生的学生证信息学生证信息查询此程序是通过输入某班级的班号,然后选择按学号排序或班级排序,最后显示该班所有学生的学生证信息。开始主菜单学生证信息查询输入班号显示该班所有学生的学生证信息关闭文件是否继续NY按学号排序按班级排序3.3 修改学生证信息的功能修改信息功能修改信息的主要功能是通过输入某位学生的学号来修改该生的学生证信息。先是进入修改界面,再输入学号,输入后,将输出该生的学生证信息,再选择是否修改此记录,选择是,则输入修改的信息,并保存修改。开始主菜单修改学生证信息功能输入学号显示该生学生证信息是否修改写入并保存文件YN4 运行界面主菜单界面学生证键入的界面个人学生证信息显示界面显示班级信息的选择输出方式的界面按学号排序显示该班所有学生的学生证信息界面按姓名排序显示该班所有学生的学生证信息界面显示班级信息的退出界面修改学生证信息的界面5系统使用说明1、进入程序时,先以菜单形式显示所有命令,然后用户通过菜单项选择操作;例如:1 学生证信息的键入2 输入学号,显示该生学生证信息3 输入班号,显示该班所有学生的学生证信息4 给定学号,修改该生学生证信息5 退出系统请选择1/2/3/4/5:2、键入学生证信息时,按照所给定的格式输入。3、查询信息是按学生学号和班号的形式进行查询,填入学号后,则显示出该生所有信息;选择按班号查询功能后,在选择显示输出方式,分两种:一种按学号排序;另一种是按姓名排序。选定后,再填入班号,则显示出该班所有学生的学生证信息(按已选定的排序方式显示)。4、修改信息是按输入学号的形式进行修改,填入后,则显示出该生所有信息,然后询问是否修改,若回答“y”(大小写通用),则输入新值,否则不作修改。6 C语言源程序代码#include #include /用来使用清屏函数#include #include #include #define LEN sizeof(struct STUcard)struct STUcard *creat();void viewperson();void viewclass();void number();void name();void change();struct STUcard *save();struct dateint year;int month;int day; /定义用来嵌套的结构体struct STUcard int number; char name20; char sex10; char department20; char classnumber10; struct date timeofenter; /嵌套结构体 char IDnumber30; struct date birthday; struct STUcard *next; /定义结构体 void main()char c; int n=0; struct STUcard *head;char build; /创建文件FILE *fp;fp=fopen(XX.out,rb);if(fp=NULL)printf(文件不存在,请创建(Y or N)); scanf(%c,&build); if(build=Y) fp=fopen(XX.out,wb); else exit(0); do system(cls); /清屏 printf(*n); printf( 1: 输入学生证信息 n); printf( 2: 查找个人信息 n); printf( 3: 查找班级里所有学生的学生证信息 n); printf( 4: 修改学生证信息 n); printf( 5: 退出 n); printf(*n); printf( n); printf(请选择输入选项12345:); do c=getchar(); while(c!=1&c!=2&c!=3&c!=4&c!=5); getchar(); switch(c) case 1: head=creat(); break; case 2: viewperson(head); break; case 3: viewclass(head); break; case 4: change(head); break; case 5: exit(0); break; printf( 按任意键返回主菜单:n); flushall(); getchar(); printf(%d,n); system(cls); while(1); int n;struct STUcard *creat() /录入学生证信息函数struct STUcard *head,*p1,*p2;n=0;head=NULL;p1=p2=(struct STUcard *)malloc(LEN);printf(请按以下格式输入学生证信息,注意 每个数据之间间隔一个空格!n以学号为00000000结束录入,并且剩下的信息字符用“0”代替输入 注意:输入格式不变!:n);printf(学号 姓名 性别 院系 班级 入学时间(年 月 日) 身份证号 出生日期(年 月 日)n); scanf(%d %s %s %s %s %d %d %d %s %d %d %d,&p1-number,p1-name,p1-sex,p1-department,p1-classnumber,&p1-timeofenter.year,&p1-timeofenter.month,&p1-timeofenter.day,p1-IDnumber,&p1-birthday.year,&p1-birthday.month,&p1-birthday.day);while(p1-number!=00000000)n=n+1;if(n=1) head=p1;else p2-next=p1;p2=p1;p1=(struct STUcard *)malloc(LEN);scanf(%d %s %s %s %s %d %d %d %s %d %d %d,&p1-number,p1-name,p1-sex,p1-department,p1-classnumber, &p1-timeofenter.year,&p1-timeofenter.month,&p1-timeofenter.day,p1-IDnumber, &p1-birthday.year,&p1-birthday.month,&p1-birthday.day);p2-next=NULL;free(p1);save(head); /保存文件return(head); /把已录入信息的链表头指针返回给住函数void viewperson(struct STUcard * head) /查找个人信息函数int m,a=0;struct STUcard *p;printf(请输入学号:);printf( n );scanf(%d,&m);p=head; /获取头指针,以使用链表 while(p-next!=NULL) /判断是否为空指针if(p-number=m) printf(学号:%dn姓名:%sn性别:%sn院系:%sn班级:%sn入学时间:%d年%d月%d日n身份证号:%sn出生日期:%d年%d月%d日n, p-number,p-name,p-sex,p-department,p-classnumber, p-timeofenter.year,p-timeofenter.month,p-timeofenter.day,p-IDnumber, p-birthday.year,p-birthday.month,p-birthday.day);printf(n);a=a+1; p=p-next; /结点后移if(p-number=m)printf(学号:%dn姓名:%sn性别:%sn院系:%sn班级:%sn入学时间:%d年%d月%d日n身份证号:%sn出生日期:%d年%d月%d日n, p-number,p-name,p-sex,p-department,p-classnumber, p-timeofenter.year,p-timeofenter.month,p-timeofenter.day,p-IDnumber, p-birthday.year,p-birthday.month,p-birthday.day);printf(n);a=a+1;printf(n);printf(共%d人n,a);if(a=0) printf( 对不起,查无此人!n);void viewclass(struct STUcard * head) /查找班级信息函数char c;void number();void name();do system(cls); /清屏 printf(*n); printf( 1: 按学号排序输出 n); printf( 2: 按姓名排序输出 n); printf( 3: 退出 n); printf(*n); printf( n); printf(请选择输入选项123:); do c=getchar(); while(c!=1&c!=2&c!=3); getchar(); switch(c) case 1: number(head); break; case 2: name(head); break; case 3: exit(0); continue; printf( 按任意键返回上层菜单:n); flushall(); getchar(); system(cls); while(1); void number(struct STUcard *head) /按学号排序 char c10; int h1,a=0,i,j,k,w; char hname20; char hsex20; char hdepartment20; char hclassnumber10; char hIDnumber30; struct date htimeofenter; struct date hbirthday; struct STUcard *p,*p2,*p3; p=head; p2=head; p3=p2-next; for(k=1;k+) /用来确定链表中共多少个结点 if(p-next!=NULL) p=p-next; else break; for(i=0;inext; for(j=0;jnumberp3-number) h1=p2-number; strcpy(hname,p2-name); strcpy(hsex,p2-sex); strcpy(hdepartment,p2-department); strcpy(hclassnumber,p2-classnumber); strcpy(hIDnumber,p2-IDnumber); htimeofenter=p2-timeofenter; hbirthday=p2-birthday; p2-number=p3-number; strcpy(p2-name,p3-name); strcpy(p2-sex,p3-sex); strcpy(p2-department,p3-department); strcpy(p2-classnumber,p3-classnumber); strcpy(p2-IDnumber,p3-IDnumber); p2-timeofenter=p3-timeofenter; p2-birthday=p3-birthday; p3-number=h1; strcpy(p3-name,hname); strcpy(p3-sex,hsex); strcpy(p3-department,hdepartment); strcpy(p3-classnumber,hclassnumber); strcpy(p3-IDnumber,hIDnumber); p3-timeofenter=htimeofenter; p3-birthday=hbirthday; p2=p3; p3=p3-next; printf(请输入班级:n); scanf(%s,&c); p=head; for(w=1;wclassnumber,c)=0) printf(学号:%dn姓名:%sn性别:%sn院系:%sn班级:%sn入学时间:%d年%d月%d日n身份证号:%sn出生日期:%d年%d月%d日n, p-number,p-name,p-sex,p-department,p-classnumber, p-timeofenter.year,p-timeofenter.month,p-timeofenter.day,p-IDnumber, p-birthday.year,p-birthday.month,p-birthday.day);a=a+1; p=p-next; printf(n); printf(共%d人n,a); if(a=0) printf(对不起 无此班级); void name(struct STUcard *head) /按姓名排序 char c10; int h1,a=0,i,j,k,w; char hname20; char hsex20; char hdepartment20; char hclassnumber10; char hIDnumber30; struct date htimeofenter; struct date hbirthday; struct STUcard *p,*p2,*p3; p=head; p2=head; p3=p2-next; for(k=1;k+) if(p-next!=NULL) p=p-next; else break; for(i=0;inext; for(j=0;jname,p3-name)0) h1=p2-number; strcpy(hname,p2-name); strcpy(hsex,p2-sex); strcpy(hdepartment,p2-department); strcpy(hclassnumber,p2-classnumber); strcpy(hIDnumber,p2-IDnumber); htimeofenter=p2-timeofenter; hbirthday=p2-birthday; p2-number=p3-number; strcpy(p2-name,p3-name); strcpy(p2-sex,p3-sex); strcpy(p2-department,p3-department); strcpy(p2-classnumber,p3-classnumber); strcpy(p2-IDnumber,p3-IDnumber); p2-timeofenter=p3-timeofenter; p2-birthday=p3-birthday; p3-number=h1; strcpy(p3-name,hname); strcpy(p3-sex,hsex); strcpy(p3-department,hdepartment); strcpy(p3-classnumber,hclassnumber); strcpy(p3-IDnumber,hIDnumber); p3-timeofenter=htimeofenter; p3-birthday=hbirthday; p2=p3; p3=p3-next; printf(请输入班级:n); scanf(%s,&c); p=head; for(w=1;wclassnumber,c)=0) printf(学号:%dn姓名:%sn性别:%sn院系:%sn班级:%sn入学时间:%d年%d月%d日n身份证号:%sn出生日期:%d年%d月%d日n, p-number,p-name,p-sex,p-department,p-classnumber, p-timeofenter.year,p-timeofenter.month,p-timeofenter.day,p-IDnumber, p-birthday.year,p-birthday.month,p-birthday.day);a=a+1; p=p-next; printf(n); printf(共%d人n,a); if(a=0) printf(对不起 无此班级); void change(struct STUcard * head) /修改信息int x; struct STUcard *p1,*p2; printf(输入要修改学生的学号n); scanf(%d,&x); p1=head; while(p1-number!=x)&(p1-next!=NULL) p2=p1; p1=p1-next; if(p1-number=x) printf(请输入需要修改的信息:n); printf(输入学号:);scanf(%d,&p1-number);printf(输入姓名:);scanf(%s,p1-name);printf(输入性别:);scanf(%s,p1-sex);printf(输入院系:);scanf(%s,p1-department);printf(输入班级:);scanf(%s,p1-classnumber); printf(输入入学时间(年 月 日):); scanf(%d %d %d,&p1-timeofenter.year,&p1-timeofenter.month,&p1-timeofenter.day);printf(输入身份证号:); scanf(%s,p1-IDnumber);printf(输入出生日期(年 月 日):); scanf(%d %d %d,&p1-birthday.year,&p1-birthday.month,&p1-birthday.day); printf(信息已修改);save(head); else printf(%d 找不到该学号!n,x);struct STUcard *save(struct STUcard *head) /_保存函数FILE *fp;struct STUcard *p;p=head;fp=fopen(XX.out,w+);if(fp=0)printf(不能打开文件); exit(0);while (p)fprintf(fp,学号:%dn姓名:%sn性别:%sn院系:%sn班级:%sn入学时间:%d年%d月%d日n身份证号:%sn出生日期:%d年%d月%d日n, p-number,p-name,p-sex,p-department,p-classnumber, p-timeofenter.year,p-timeofenter.month,p-timeofenter.day,p-IDnumber, p-birthday.year,p-birthday.month,p-birthday.day);printf(n); p=p-next;printf(n文件保存成功!n,n);fclose(fp);return head; /返回后结点7心得体会通过这次的C语言程序设计,让我意识到自己的基础还不是太扎实,发现自己在编程方面还有些不足,有一些小小的错误不能避免。这次的设计培养了我发现问题、解决问题的基本能力,也让自己的实际动手编程能力有一些提升,这对于我的学习有很大的帮助。将所学知识运用起来也是这次程序设

温馨提示

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

评论

0/150

提交评论