1、学生信息管理系统C语言课程方案课 程 设 计 报 告 书所属课程名称 C语言课程设计 题 目 学生信息管理系统 2018年6月14日目 录第1章 需求分析 第2章 整体设计 第3章 详细设计 第4章 系统测试 第5章 课程设计心得第6章 参考文献 第一章 设计内容及要求设计“学生信息管理系统”使其具有学生信息录入功能,修改、删除、显示和查询功能。 1)包括创建学生个人信息:学生学号、姓名、年龄、号码、地址。 2)学生信息添加功能。 3)学生信息删除功能。 3)学生信息修改功能。 4)查询学生信息功能。 程序设计组成框图2程序流程图头文件#include #include#include#inc
2、lude#define Nsizeof(struct stud2数入口说明main(。主函数;void menu(。主菜单界面;void add(。添加新的学生信息;void print(int i。打印学生信息;void scan(。查找学生信息;void res(。检索学生信息界面;void res_name(。按姓名检索;void res_num(。按学号检索;void del(int i。删除学生信息;void modify(int i。修改学生信息;void fileopen(。打开文件;void filesave(。保存文件;3调用关系add(menu(add(fileopen(r
3、es(add(menu(scan(menu(main(modify(int ires_name(res(del(int ires_numfilesave(第四章 调试与测试1编译工具VC+6.02主菜单第五章 心得体会通过这次C程序课程设计,我感受到了编程是一项非常烦琐周密的活动,它不但需要一个人周密的思考问题的能力,处理问题的能力,还需要有足够的耐心和严谨治学的作风,来不得半点马虎,一点小的错误就可能导致整个程序不能运行。我初步学会了课程设计的基本方法,学会了怎样去借鉴别人的方法和经验,知道如何去查找资料和整合处理这些资料的能力,使我收益最大的是享受到了一种成功的喜悦。因为C语言底子比较差,
4、我选择的是相对容易的学生信息管理系统。先开始,比较快速的把大体程序代码写出来了,然后是进行编译,这个环节是一个非常痛苦和艰难的,常常会因为一小点的错误而在编译失败与再次修改的漫漫循环之路中,但失败的越多,对人的考验就越多,在编译运行成功之后的享受成功的喜悦也就越多,另外在调试程序的过程中不断的思考和运用已经学到的知识,这对于自己是有很大的提高的。由于所学的知识不多,自己的编程经验不足,仍存在一些问题,如不能实现模糊查找等功能。按现有的知识水平有些东西暂时还无法解决,还有待于在以后的学习中不断提高和改进第六章 参考文献1.谢希仁. 计算机网络第五版)M. 北京:电子工业出版社,2008年2月2.
5、胡小强 计算机网络M 北京:北京邮电大学出版社2005年1月3.李丽娟C语言程序设计教程第二版)M 人民邮电出版社,2009年3月4.李丽娟C语言程序设计教程习题答案与实验指导第二版)M 人民邮电出版社附件 程序源代码#include #include #include # include # define N sizeof(struct stud /测结构体变量的大小/ typedef struct stud char number20。 char name20。 char sex20。 char call20。 char add20。 struct stud *next。 fun。 /为结
6、构体命名/ fun *creatlink(void /创建链表信息/ fun *p1,*p2,*head。 /p1为前驱,p2为后继/ int i=1。 char choice。 head=p2=(fun *malloc(N。 head-next=NULL。 choice=y。 for(i=1。choice=y|choice=Y。i+ p1=(fun *malloc(N。 printf(*nn。 printf(请输入第%d个学生的信息:n,i。 printf(学号:。 scanf(%s,p1-number。 printf(n姓名:。 scanf(%s,p1-name。 printf(n性别:。
7、 scanf(%s,p1-sex。 printf(n电话:。 scanf(%s,p1-call。 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(fun *h /保存链表信息/ fun *p。 FILE *fp。 char fliename20。 printf(n请输入你要保存的文件名?。 scanf(%s,fliename。 if(fp=fopen(fliename,w
8、t=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-add。 /向文件中写入数据/ printf(文件已成功保存?按任意键返回!。 getche(。 fclose(fp。 fun *readlink(void /读出已保存文件的信息/ fun *head,*p,*q。 FILE *fp。 char filename20。 printf(n请输入要打开的文件名:。 scanf(
9、%s,filename。 if(fp=fopen(filename,rt=NULL printf(读文件出错?按任意键退出!。 getche(。 exit(1。 head=q=(fun *malloc(N。 head-next=NULL。 while(!feof(fp p=(fun *malloc(N。 /建立新链表,并从文件中读出数据/ fscanf(fp,%s %s %s %s %s %sn,p-number,p-name,p-sex,p-call,p-add。 q-next=p。 q=p。 q-next=NULL。 fclose(fp。 printf(文件信息已正确读出?按任意键返回!。
10、 getch(。 return head。 fun *insert(fun *head /插入信息/ fun *p。 p=(fun *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(n宿舍号:。 scanf(%s,p-add。 if(head-next!=NULL p-next=head-next。 /插入数据操作代码/ h
11、ead-next=p。 printf(n学生信息插入成功!按任意键继续!。 getche(。 return head。 fun *delet(fun *p0 /删除信息/ char num20。 fun *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(你要删除的信息如下,请确认是否删除:
12、n。 printf(n 学号:%s 姓名:%s 性别:%s 电话:%s 宿舍号:%snn,p-number,p-name,p-sex,p-call,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。 fun *modify(fun *h /修改信息/ char num20。 fun *p。 char choice。 printf(n请输入要修改学
13、生信息的学号?。 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(n宿舍号:。 scanf(%s,p-add。 printf(修改后学生信息如下:n。 printf(n 学号:%s 姓名:%s
14、性别:%s 电话:%s 宿舍号:%snn,p-number,p-name,p-sex,p-call,p-add。 printf(n确认?是Y否N:。 choice=getche(。 if(choice=y|choice=Y break。 printf(n修改成功,按任意键继续!。 getche(。 return h。 void find(fun *h /查询信息/ char num20。 fun *p。 printf(n请输入你要查找的学生的学号?。 scanf(%s,num。 for(p=h。strcmp(p-number,num!=0。p=p-next 。 printf(你查找的学生信息如
15、下:n。 printf(n 学号:%s 姓名:%s 性别:%s 电话:%s 宿舍号:%snn,p-number,p-name,p-sex,p-call,p-add。 printf(按任意键继续!。 getche(。 void print(fun *p /显示全部信息/ p=p-next。 while(p!=NULL printf(n 学号:%s 姓名:%s 性别:%s 电话:%s 宿舍号:%sn,p-number,p-name,p-sex,p-call,p-add。 p=p-next。 printf(n按任意键继续!。 getche(。 fun *sort(fun *head fun *q,*
16、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-number0 /*前结点和后结点比较大小*/ 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。 /*返回头指针*/ void main( int choice=1,i,
17、ok=1。 /choice用于选择对数据执行操作,i循环,ok主界面选择/ fun *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(hea
18、d。 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。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1