C语言期末课设-学生信息管理系统(绝对正确代码版本)(共15页).doc
精选优质文档-倾情为你奉上 沈阳理工大学C语言课程设计题 目 名 称 学生信息管理系统 课 程 名 称 C语言程序课程设计 学 生 姓 名 学 号 系 、专 业 指 导 教 师 目 录1前言 编写一个程序来处理同学个人信息。通过一个结构体数组来存放输入的每一位同学的记录(包括姓名、电话号码、e_mail、地址),然后将其信息存入文件中。输入一个姓名查询该同学的信息,并显示在屏幕上。2 需求分析2.1 要求(1)用C语言实现程序设计;(2)利用结构体进行相关信息处理;(3)画出查询模块的流程图;(4)系统的各个功能模块要求用函数的形式实现;(5)界面友好(良好的人机互交),程序要有注释。2.2任务用C语言编写一个能够管理学生个人信息的管理系统。程序运行时显示菜单,菜单内容包括:(1)录入个人信息:5个学生的个人信息,学生信息可以包括学号、姓名、性别、出生日期、联系电话、邮编和家庭住址等; (2)修改个人信息:用户可以修改个人信息,在输入某同学的编号后,进入修改信息的菜单至少包括: 修改学生姓名 修改学生联系电话(3)查询个人信息:可以按学号查询;(4)浏览所有信息:显示所有同学的信息;(5)删除个人信息:按学生姓名删除记录。(6)退出系统。其中,学生信息可以用二进制文件方式存储。2.3 运行环境(1)windowsXP系统(2)VC+2.0编译环境2.4 开发工具C语言3概要设计与详细设计3、1系统流程图开 始 调用函数struct record调用函数 shuru ()调用函数 chaxun()调用函数 xiugai()调用函数 shanchu()调用函数 xianshi()调用函数 baocun()结 束图3.1 系统流程图 4 具体代码实现41程序代码#include "stdio.h"#include "stdlib.h"#include "string.h"# include "conio.h"# define N sizeof(struct stud) /测结构体变量的大小/typedef struct studchar number20;char name20;char sex20;char call20;char QQ20;char add20;struct stud *next;Elemsn; /为结构体命名/Elemsn *creatlink(void) /创建链表信息/ Elemsn *p1,*p2,*head; /p1为前驱,p2为后继/ int i=1; char choice; head=p2=(Elemsn *)malloc(N); head->next=NULL; choice='y' for(i=1;choice='y'|choice='Y'i+) p1=(Elemsn *)malloc(N); printf("*nn"); printf("请输入第%d个学生的信息:n",i); printf("学号:"); scanf("%s",p1->number); printf("n姓名:"); scanf("%s",p1->name); printf("n性别:"); scanf("%s",p1->sex); printf("n电话:"); scanf("%s",p1->call); printf("nQQ:"); scanf("%s",p1->QQ); printf("n宿舍号:"); scanf("%s",p1->add); p2->next=p1; p2=p1; printf("n是否继续?(Y/N):"); choice=getche(); printf("n"); p2->next=NULL; return(head);void savelink(Elemsn *h) /保存链表信息/ Elemsn *p; FILE *fp; char fliename20; printf("n请输入你要保存的文件名:"); scanf("%s",fliename); if(fp=fopen(fliename,"wt")=NULL) printf("写文件出错,按任意键退出!"); getche(); exit(1); for(p=h->next;p!=NULL;p=p->next) fprintf(fp,"%s %s %s %s %s %sn",p->number,p->name,p->sex,p->call,p->QQ,p->add); /向文件中写入数据/ printf("文件已成功保存,按任意键返回!"); getche(); fclose(fp);Elemsn *readlink(void) /读出已保存文件的信息/ Elemsn *head,*p,*q; FILE *fp; char filename20; printf("n请输入要打开的文件名:"); scanf("%s",filename); if(fp=fopen(filename,"rt")=NULL) printf("读文件出错,按任意键退出!"); getche(); exit(1); head=q=(Elemsn *)malloc(N); head->next=NULL; while(!feof(fp) p=(Elemsn *)malloc(N); /建立新链表,并从文件中读出数据/ fscanf(fp,"%s %s %s %s %s %sn",p->number,p->name,p->sex,p->call,p->QQ,p->add); q->next=p; q=p; q->next=NULL; fclose(fp); printf("文件信息已正确读出,按任意键返回!"); getch(); return head;Elemsn *insert(Elemsn *head) /插入信息/ Elemsn *p; p=(Elemsn *)malloc(N); printf("n请输入要插入学生的信息:n"); printf("n学号:"); scanf("%s",p->number); printf("n姓名:"); scanf("%s",p->name); printf("n性别:"); scanf("%s",p->sex); printf("n电话:"); scanf("%s",p->call); printf("nQQ:"); scanf("%s",p->QQ); printf("n宿舍号:"); scanf("%s",p->add); if(head->next!=NULL) p->next=head->next; /插入数据操作代码/ head->next=p; printf("n学生信息插入成功!按任意键继续!"); getche(); return head;Elemsn *delet(Elemsn *p0) /删除信息/ char num20; Elemsn *p; char choice; if(p0->next=NULL) printf("信息出错!按任意键退出!"); getch(); exit(1); printf("n请输入要删除学生的学号:"); scanf("%s",num); for(p=p0->next;strcmp(p->number,num)!=0;p0=p,p=p->next) ; /找到要删除的学生的信息/ printf("你要删除的信息如下,请确认是否删除:n"); printf("n学号:%s 姓名:%s 性别:%s 电话:%s QQ:%s 宿舍号:%snn",p->number,p->name,p->sex,p->call,p->QQ,p->add); printf("n是Y,否N:"); /显示要删除的学生的信息/ choice=getche(); if(choice='Y'|choice='y') p0->next=p->next; free(p); printf("n文件删除成功!"); printf("n按任意键结束!"); getche(); return p0;Elemsn *modify(Elemsn *h) /修改信息/ char num20; Elemsn *p; char choice; printf("n请输入要修改学生信息的学号:"); scanf("%s",num); for(p=h;strcmp(p->number,num)!=0;p=p->next) ; /找到要删除的学生的信息/ while(1) printf("请输入修改后学生的信息:n"); printf("学号:"); scanf("%s",p->number); printf("n姓名:"); scanf("%s",p->name); printf("n性别:"); scanf("%s",p->sex); printf("n电话:"); scanf("%s",p->call); printf("nQQ:"); scanf("%s",p->QQ); printf("n宿舍号:"); scanf("%s",p->add); printf("修改后学生信息如下:n"); printf("n学号:%s 姓名:%s 性别:%s 电话:%s QQ:%s 宿舍号:%snn",p->number,p->name,p->sex,p->call,p->QQ,p->add); printf("n确认?是Y否N:"); choice=getche(); if(choice='y'|choice='Y') break; printf("n修改成功,按任意键继续!"); getche(); return h;void find(Elemsn *h) /查询信息/ char num20; Elemsn *p; printf("n请输入你要查找的学生的学号:"); scanf("%s",num); for(p=h;strcmp(p->number,num)!=0;p=p->next) ; printf("你查找的学生信息如下:n"); printf("n学号:%s 姓名:%s 性别:%s 电话:%s QQ:%s 宿舍号:%snn",p->number,p->name,p->sex,p->call,p->QQ,p->add); printf("按任意键继续!"); getche();void print(Elemsn *p) /显示全部信息/ p=p->next; while(p!=NULL) printf("n学号:%s 姓名:%s 性别:%s 电话:%s QQ:%s 宿舍号:%sn",p->number,p->name,p->sex,p->call,p->QQ,p->add); p=p->next; printf("n按任意键继续!"); getche();Elemsn *sort(Elemsn *head) Elemsn *q,*t,*p; p=head; t=NULL; while(t!=head->next) p=head; q=p->next; while(q->next!=t) if(strcmp(p->next->number,q->next->number)>0) /*前结点和后结点比较大小*/p->next=q->next; q->next=q->next->next; p->next->next=q; p=p->next; q=p->next; t=q; printf("学生信息排序完毕,按任意键继续!");getche();print(head); return(head); /*返回头指针*/ main() int choice=1,i,ok=1; /choice用于选择对数据执行操作,i循环,ok主界面选择/ Elemsn *head,*h; head=NULL; for(i=1;ok!=0;i+) system("cls"); printf("n欢迎来到学生信息管理系统主界面!nnn"); printf("nnn 1.创建新文件.nnn"); printf(" 2.读取原文件,并执行相应操作.(原文件名为:jxx)"); printf("nnn 0.退出;"); printf("nnnnn请选择你要执行的操作:"); scanf("%d",&ok); if(ok=1) system("cls"); head=creatlink(); /创建新链表并保存文件/ savelink(head); if(ok=2) head=readlink(); /进入文件,对已知数据进行操作/ for(i=1;choice!=0;i+) system("cls"); printf("*欢迎来到学生信息管理系统*nnn"); printf(" 1. 添加学生信息; nn"); printf(" 2. 删除学生信息; nn"); printf(" 3. 修改学生信息; nn"); printf(" 4. 查询学生信息; nn"); printf(" 5. 显示全部信息; nn"); printf(" 6. 排序全部信息; nn"); printf(" 0. 退出; nn"); printf("请输入你要执行的操作代码:"); scanf("%d",&choice); switch(choice) case 1: h=insert(head);savelink(h);break; /执行增,删,改完毕后对新信息进行保存/ case 2: h=delet(head);savelink(h);break; case 3: h=modify(head);savelink(h);break; case 4: find(head);break; case 5: print(head);break; case 6: h=sort(head);savelink(h);break; case 0: break; 4.2程序结果 图1 主界面 图2 输入学生信息操作 图3 按学号查询学生信息操作图4 修改学生信息操作图5 删除学生信息操作5.2 课程设计总结 从这次C语言课程设计,我不仅学会了怎样编出一个管理系统,而且还深深的体会到编好一个程序是一件非常有意义的事。 我觉得编程不仅需要信心,还需要耐心,更需要团队合作之心,有了这些还不够,我们应该从实践出发,并从实践得到检验,不懂就是不懂,虚心求教才是解决问题的好办法。在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,学会了运筹帷幄,学会了做人与处世。 课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础通过这次课程设计,本人在多方面都有所提高。提高了编程能力,绘图能力,熟悉了规范和标准,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。专心-专注-专业