




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生信息管理系统课程设计报告同组人员:王立权(组长)赵丹菲孙逊陈光完成日期:2011-6-20指导教师:张光妲一、课程设计目的 1.通过c+课程设计,使学生能够将学到的面向对象的设计思想运用在具体的工作和学习 中,加深对类和对象的理解,要求学生对生活中许多具体的事物抽象出类,并掌握继承和派 生类、基类、虚函数和多态的概念。2、通过这次课程设计掌握c+语言程序设计的编程思想,为后续课程打下基础。3、培养我实际操作能力和实践能力,为以后的工作打下坚实的基础。课程设计的要求 利用学到的编程知识和编程技巧,要求学生:1、对系统进行功能模块分析、控制模块分
2、析正确2、系统设计要能完成题目所要求的功能。3、编程简练,可用,尽可能的使系统的功能更加完善和全面4、使用说明书、流程图要清楚。5、特别要求自己独立完成。二、课程设计的内容1、课程设计的题目及简介有新生来报到,要逐个录入其信息,如:学生姓名,学号,性别,年龄,出生日期,家庭地址,e-mail,电话文本界面为:1. 新增学生信息2. 删除学生信息3. 导入学生信息(已经保存于的文件信息)4. 学生信息搜索(按姓名或按学号)5. 学生信息统计6. 学生信息保存7. 退出2、设计说明总体结构我们采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理。也可根据自己对题目的理解增
3、加新的功能模块。系统以菜单界面方式(至少采用文本菜单界面,如能采用图形菜单界面更好)工作,运行界面友好,演示程序以用户和计算机的对话方式进行(1)首先,看题目要求,每一条记录包括一个学生姓名,学号,性别,年龄,出生日期,家庭地址,e-mail,电话。同时,应具备以下功能:1、输入功能:一次可以完成自定义学生人数的学生信息记录的输入。2、删除功能:对指定学生的信息进行删除。3、修改功能:对指定学生的信息进行修改。4、查询功能:选择某种方式并输入该信息查询符合条件的学生信息。5排序功能:以英语课程的分数为依据对学生信息进行排序。6显示功能:将以上功能操作后的学生信息显示出来。7退出主菜单。3 程序
4、流程图 各功能模块的实现流程图:1增加学生信息调用函数node* create()判断gg是否等于一如果是可创建链表输入相应的学生信息如果不是则需要运用insert(p)函数插入结点增加学生信息的,并通过chundang(p)函数进行存档,具体流程如下图所示判断以前是否存储了学生信息是新增信息退出该功能,返回主菜单,继续选择流程图新增学生信息按提示:输入学个的各种信息按格式显示输入的学生信息 2删除学生信息 调用函数node* delete(node* head , int num) 删除学生的信息则必须对链表结点进行删除意味着将某个要删除结点前后的连续打断,去掉该结点,使前后指针变量重新连接
5、,完成链表结点的删除任务 流程图输入要删除学生信息2退出该功能,返回主菜单,继续选择输入要删除信息的编号该生信息已删除,显示其他同学的信息输出所有学生的信息3导入学生信息打开存档文件ifstream filein("out.txt");输出说存档的学生信息导入学生信息显示学生的信息退出该功能,返回主菜单,继续选择 4、学生信息的搜索 调用函数node* sousuo(node* head , char na20) ,按学生的姓名进行搜索退出该功能,返回主菜单,继续选择 输出所以查询的学生信息按照提示输入学生的姓名进行搜索搜索学生信息 4流程图:按学生信息进行排序5总功能模块
6、图:2、输入要删除的学生的编号,删除学生信息。1输入学生的信息: 学生姓名,学号,性别,年龄,出生日期,家庭地址,e-mail,电话 菜单1. 新增学生信息2. 删除学生信息3. 导入学生信息4. 学生信息搜索5. 学生信息保存6. 退出7保存学生信息:提示保存成功4、输入你要查找你学生姓名3、输出学生的学生姓名,学号,性别,年龄,出生日期,家庭地址,e-mail,电话8、退出系统学生管理系统功能模块图三任务分配陈光:学生信息的录入模块孙逊:学生信息的浏览模块赵丹菲:学生信息查找模块王立权:学生信息的修改模块各功能显示效果模块图:输入学生信息浏览学生信息查询学生信息修改学生信息4、程序清单/*
7、:学生信息管理系统学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,e-mail等。实现的功能:(1) 系统以菜单方式工作(2) 学生信息录入功能(学生信息用文件保存)-输入(3) 学生信息浏览功能-输出(4) 查询、排序功能-算法(5) 按学号查询(6) 按姓名查询 (7)学生信息的删除与修改*/#include <stdio.h>#include <stdlib.h>#include <string.h>#define pf printf#define len sizeof(struct student)/定义结构体struct student
8、 char no20; char name20; int age; char sex3; /*'f'表示性别男,'m'表示性别女*/ char birthday10; char address30; char phone20; char e_mail20; struct student *next; /下个结点;typedef struct student stu;stu *head=null; /全局指针int n,i=0; /全局变量/自定义函数void show_menu(); /显示菜单void menu(); /执行菜单void creat_stu()
9、; /建立链表 void insert_stu(); /学生信息录入void print_stu(); /学生信浏览void search_no(); /以学号方式查询信息void search_name(); /以姓名方式查询信息void arrage_stu(); /排序void del_stu(); /删除学生信息void revise_stu(); /修改学生信息void save(); /保存信息void main() creat_stu(); menu();/创建链表void creat_stu() file *fp; long size; stu *p1,*p2; head=(s
10、tu *)malloc(sizeof(stu); head->next=null; if(fp=fopen("fname.txt","r")=null) printf("这是新表n"); return; fseek(fp,0l,2); size=ftell(fp); if(!size) printf("这是空表n"); return; /开始创建链表 rewind(fp); /移动到文件首 p2=head->next; /找到但前位置 while(!feof(fp) p1=(stu *)malloc(s
11、izeof(stu); fscanf(fp,"%s %s %d %s %s %s %s %sn",p1->no,p1->name,&p1->age, p1->sex,p1->birthday,p1->address,p1->phone,p1->e_mail); p1->next=null; /创建节点完 if(head->next=null) head->next=p1; else p2->next=p1; p2=p1; n+; p2->next=null; fclose(fp);/执行菜
12、单void menu() int c; show_menu(); while(1) scanf("%d",&c); switch(c) getchar(); case 1:insert_stu();break; case 2:print_stu();break; case 3:search_no(); break; case 4:search_name(); break; case 5:del_stu(); break; case 6:revise_stu(); break; case 7:arrage_stu();break; case 0:exit(0); /执
13、行菜单选项 show_menu(); /显示菜单void show_menu() pf("n"); pf("n菜单n"); pf("tt1.输 入 学 生 信 息 n"); pf("tt2.浏 览 学 生 信 息 n"); pf("tt3.以学号方式查询信息n"); pf("tt4.以姓名方式查询信息n"); pf("tt5.删 除 学 生 信 息 n"); pf("tt6.修 改 学 生 信 息 n"); pf("tt7 排
14、 序 n"); pf("tt0. 退 出 n"); pf("n"); pf("n请选择n");/学生信息录入void insert_stu() /学生信息录入 n=0; stu *p1=null,*p2=null; p1=(stu *)malloc(sizeof(stu); pf("n录入学生信息n"); /录入学生信息 pf("tt输入学生学号:t"); scanf("%s",p1->no); /学号 pf("tt输入学生姓名:t");
15、scanf("%s",p1->name); /姓名 pf("tt输入学生年龄:t"); scanf("%d",&p1->age); /年龄 pf("tt输入学生性别:t"); scanf("%s",p1->sex); /性别 pf("tt输入学生出生年月:t"); scanf("%s",p1->birthday); /出生年月 pf("tt输入学生地址:t"); scanf("%s",
16、p1->address); /地址 pf("tt输入学生电话:t"); scanf("%s",p1->phone); /电话 pf("tt输入学生e-mail:t"); scanf("%s",p1->e_mail); /e-mail n+; if(head->next=null) head=(stu *)malloc(len); head->next=p1; else for(p2=head;p2->next!=null;p2=p2->next); /*找到最后的结点,然后
17、 将增加的结点挂在它上面*/ p2->next=p1; p1->next=null; save();/保存到文件 /学生信浏览void print_stu() /学生信浏览 stu *p=null; if(head=null) /判断链表是否为空 pf("文档中无记录!n"); return; for(p=head->next;p!=null;p=p->next) /读出信息 pf("学生信浏览n"); pf("tt学生学号:t%sn",p->no); pf("tt学生姓名:t%sn"
18、,p->name); pf("tt学生年龄:t%dn",p->age); pf("tt学生性别:t%sn",p->sex); pf("tt学生出生年月:t%sn",p->birthday); pf("tt学生地址:t%sn",p->address); pf("tt学生电话:t%sn",p->phone); pf("tt学生e-mail:t%sn",p->e_mail); pf("n"); /输出信息 /学生姓名信息
19、查找void search_name() /学生姓名信息查找 stu *p=null; char name20; if(head=null) /判断链表是否为空 pf("文档中无记录!n"); return; pf("输入学生姓名:"); scanf("%s",name); for(p=head->next;p!=null;p=p->next) /读出信息 if(!strcmp(p->name,name) pf("您查找的学生是n"); pf("tt学生学号:t%sn",p-&
20、gt;no); pf("tt学生姓名:t%sn",p->name); pf("tt学生年龄:t%dn",p->age); pf("tt学生性别:t%sn",p->sex); pf("tt学生出生年月:t%sn",p->birthday); pf("tt学生地址:t%sn",p->address); pf("tt学生电话:t%sn",p->phone); pf("tt学生e-mail:t%sn",p->e_mail)
21、; pf("n"); i=1; /输出信息 if(!i) pf("无该生信息!请查证:"); /没找到信息时的处理 /学生学号信息查找void search_no() /学生学号信息查找 stu *p=null; char no20; if(head=null) /判断链表是否为空 pf("文档中无记录!n"); return; pf("请输入学生学号:"); scanf("%s",no); for(p=head->next;p!=null;p=p->next) /读出信息 if(!
22、strcmp(p->no,no) pf("您查找的学生是n"); pf("tt学生学号:t%sn",p->no); pf("tt学生姓名:t%sn",p->name); pf("tt学生年龄:t%dn",p->age); pf("tt学生性别:t%sn",p->sex); pf("tt学生出生年月:t%sn",p->birthday); pf("tt学生地址:t%sn",p->address); pf("
23、tt学生电话:t%sn",p->phone); pf("tt学生e-mail:t%sn",p->e_mail); pf("n"); i=1; /输出信息 if(!i) pf("无该生信息!请查证:"); /没找到信息时的处理 /修改学生信息void revise_stu() stu *p=null; if(head=null) /判断链表是否为空 pf("文档中无记录!n"); return; char no20; pf("请输入学生的学号:t"); scanf("
24、;%s",no); for(p=head->next;p!=null;p=p->next) if(!strcmp(p->no,no) /验证信息是否正确 pf("你要修改的学生是n"); pf("tt学生学号:t%sn",p->no); pf("tt学生姓名:t%sn",p->name); pf("tt学生年龄:t%dn",p->age); pf("tt学生性别:t%sn",p->sex); pf("tt学生出生年月:t%sn&quo
25、t;,p->birthday); pf("tt学生地址:t%sn",p->address); pf("tt学生电话:t%sn",p->phone); pf("tt学生e-mail:t%sn",p->e_mail); pf("n"); /输出要修改信息 i=1; pf("修改学号为%s的学生n",no); strcpy(p->no,no); pf("tt输入修改学生姓名:t"); scanf("%s",p->name);
26、pf("tt输入修改学生年龄:t"); scanf("%d",&p->age); pf("tt输入修改学生性别:t"); scanf("%s",p->sex); pf("tt输入修改学生出生年月:t"); scanf("%s",p->birthday); pf("tt输入修改学生地址:t"); scanf("%s",p->address); pf("tt输入修改学生电话:t"); sc
27、anf("%s",p->phone); pf("tt输入修改学生e-mail:t"); scanf("%s",p->e_mail); pf("n"); /输入修改信息 save(); if(!i) pf("无该生信息!请查证:"); /*没找到信息时的处理*/ /删除学生信息void del_stu() stu *p=null; if(head=null) /判断链表是否为空 pf("文档中无记录!n"); return; else char no20; pf(&
28、quot;请输入学生的学号:t"); scanf("%s",no); for(p=head;p!=null;p=p->next) if(!strcmp(p->next->no,no) /验证信息是否正确 pf("你要删除的学生是n"); pf("tt学生学号:t%sn",p->next->no); pf("tt学生姓名:t%sn",p->next->name); pf("tt学生年龄:t%dn",p->next->age); pf(
29、"tt学生性别:t%sn",p->next->sex); pf("tt学生出生年月:t%sn",p->next->birthday); pf("tt学生地址:t%sn",p->next->address); pf("tt学生电话:t%sn",p->next->phone); pf("tt学生e-mail:t%sn",p->next->e_mail); pf("n"); /输出要删除的信息 i=1; if(p->
30、next->next) printf("第一个n"); p->next=p->next->next; else p->next=null; n-; save(); return; if(!i) pf("无该生信息!请查证:"); /没找到信息时的处理 return; /按学号排序void arrage_stu() stu *p1,*p2; int in=0,j; if(head->next=null) /首先判断 printf("你还没有记录,无法排序n"); return ; printf(&qu
31、ot;n=%d",n); p1=head->next; for(in=0;in<n-1;in+) for(j=0,p1=head->next;j<=n-in-3;p1=p1->next,j+) if(j=0)/第一次比较第一个和第二个节点信息 if(strcmp(p1->no,p1->next->no)/比较p1本身和p1下一个节点 p2=p1->next; p1->next=p1->next->next; p2->next=p1; head->next=p2; p1=head->next;/从
32、新给cur赋值 /* p1=head->next; p1=p2; 错误:如果一个变量=他前一个节点的next 那么不可以说把另外一个变量赋给它就可以改变它 前一个节点的next 他只能操作后节点! */ if(strcmp(p1->next->no,p1->next->next->no)/比较p1下一个和p1下两个节点 p2=p1->next; p1->next=p1->next->next; p2->next=p1->next->next; p1->next->next=p2; if(strcmp(head->next->no,head->next->next->no)/只有两个节点信息时直接比较他们两个 p1=head->next; head->next=p1->next; p1->next=p1->next->next; head->next->next=p1; if(n=2) /只有两个节点信息时把第二个节点的next赋为空 head->next->nex
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 果树种植的土壤改良与肥料选择考核试卷
- 危险废物处理与环境保护意识提升考核试卷
- 橡胶制品生产过程中的资源优化考核试卷
- 污水处理中的废物处理与处置考核试卷
- 供货酒店合同标准文本
- 个人煤炭购买合同标准文本
- 机床制造业市场开拓与国际合作考核试卷
- 2014工装合同标准文本
- 亲子衣服出租合同标准文本
- 分包技术服务合同范本
- 对外贸易操作流程作业指导书
- 江苏省历年中考语文现代文阅读之非连续性文本阅读39篇(含答案)(2003-2023)
- 港口液体危化品装卸管理人员理论考试题库-下(判断题)
- 2024住院患者静脉血栓栓塞症预防护理与管理专家共识要点(全文)
- 金蝶云星空标准解决方案
- 缠论-简单就是美
- 2023年浙江宁波文旅会展集团有限公司招聘考试真题
- 异地就医备案的个人承诺书
- 南京市江宁区竹山中学2023-2024学年七年级下学期月考数学试题【带答案】
- QCT1177-2022汽车空调用冷凝器
- 港口基础设施智能化改造与升级
评论
0/150
提交评论