学生籍贯信息记录簿
学生籍贯信息记录簿课程报告书课件
合肥学院计算机科学与技术系课程设计报告2013 ~2014 学年第2 学期课程面向过程综合设计课程设计名称学生籍贯信息记录簿设计学生姓名学号专业班级软件工程(2)班指导教师2014 年6 月一、需求分析随着学校办学规模的不断扩大、办学层次的多样化、在校生的不断增多。
开发这系统可以是教务处老师减轻工作压力,比较系统的对学生进行管理,加快速度、加强管理,使各项管理更加规范化。
题目要求设计一个学生籍贯信息记录簿系统,该系统要求对学生籍贯信息进行管理和维护。
要求为:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的籍贯信息;(3)按学号和姓名查询籍贯;(4)按籍贯查询并输出该籍贯的所有学生;(5)能添加、删除和修改学生的籍贯信息;(可选项)二、系统设计(一)算法及说明本程序运用c编写,使用顺序表的数据结构来实现。
程序中定义了一个结构体student。
其中在student结构体中包含了学生的基本信息(学生的学号,姓名,性别,年龄,籍贯)。
程序还定义了几个功能函数(保存、录入、显示、添加、查询),这五个函数是彼此相互独立的功能模块。
(二)各项功能分析(1)学生基本信息的录入:这部分的功能主要包括信息的录入,首先按程序提示输入学生的学号,姓名,性别,年龄,籍贯。
录入完毕后,按任意键回到菜单,主菜单还有显示学生的全部信息,按学号查询学生的籍贯,按姓名查询学生的籍贯,按籍贯查询该籍贯的所有学生,添加学生的籍贯信息,退出程序等功能,并且这些函数用后的信息都会写到你所指定的文本文件中。
(2)显示学生信息:此功能将录入的学生信息独处,并在屏幕上显示出来,并且录入到你所指定的文本文件中。
(3)按学号查询学生籍贯信息此功能可以根据用户输入的选择查出该学生的籍贯信息。
(4)按姓名查询学生的籍贯信息此功能可以更具用户输入的选择查出该学生的籍贯信息。
(5)按籍贯查询学生信息此功能可以根据你输入的信息查询相对应的学生信息。
程序设计--学生籍贯信息记录簿
程序设计--学生籍贯信息记录簿一、需求分析为了方便管理和查询,需要对全体学生的籍贯信息进行记录和统计。
本系统需要满足以下功能要求:1. 记录学生的籍贯信息,包括省、市、县/区。
2. 可以查询某个省、市、县/区的学生人数及比例。
3. 可以查看某个学生的详细信息,包括学号、姓名、性别、身份证号、电话号码等。
二、概要设计本系统采用MVC架构,前端使用HTML+CSS+Javascript,后端使用Java语言和MySQL数据库实现。
1. 数据库设计数据库中包含两个表:学生表和籍贯表。
学生表包含学生的基本信息,籍贯表包含省、市、县/区的信息。
学生表字段如下:| 字段名 | 类型 | 说明 || ---------- | ------ | -------- || id | int | 主键 || name | varchar(20) | 姓名 || gender | int | 性别(0: 男, 1: 女) || id_card | varchar(18) | 身份证号码 || phone_num | varchar(11) | 电话号码 || province_id | int | 省id || city_id | int | 市id || county_id | int | 县/区id |2. 功能实现实现方法:1. 添加学生信息用户在前端输入学生信息,包括姓名、性别、身份证号码、电话号码和籍贯信息,点击保存按钮后将学生信息插入数据库中。
2. 查询某个省、市、县/区的学生人数及比例用户在前端选择省、市、县/区,点击查询按钮后,后端计算该地区的学生人数及比例,将结果在前端显示。
3. 查看某个学生的详细信息三、详细设计省、市、县/区的信息分别封装在Province、City和County类中。
学生信息封装在Student类中。
Province:public class Province {private int id;private String name;// getter和setter方法}City:Student:public class Student {private int id;private String name;private int gender;private String id_card;private String phone_num;private Province province;private City city;private County county;2. DAO层设计数据访问层(DAO)通过封装SQL查询语句,对数据库进行操作。
学生籍贯信息记录簿.
程序设计课程设计报告学生籍贯信息记录簿计算机科学与技术专业__________ (嵌入式软件人才培养)______ 学生姓名_______________ 李苏兴______________ 班级_______________________________________ 学号_______________________________________ 指导教师____________________________________完成日期____________ 2013年6月____________目录第 1 章设计目的............................................... 第 2 章设计内容与要求......................................... 第 3 章主要技术指标及特点..................................... 第 4 章设计小结............................................... 第 5 章参考文献............................................... 附录:源代码清单...............................................第1章设计目的1) 加深对《C 语言程序设计》课程知识的理解,掌握 发方法和步骤;2) 进一步掌握和利用C 语言进行课程设计的能力;3) 进一步理解和运用结构化程序设计的思想和方法;4) 初步掌握开发一个小型实用系统的基本方法;5) 学会调试一个较长的程序的基本方法;6) 学会利用流程图或N-S 图表示算法;7) 掌握书写课程设计开发文档的能力(书写课程报告) C 语言应用程序的开第2 章设计内容与要求课程设计目的课程设计题目:学生籍贯信息记录簿;该软件主要是编制一个学生籍贯信息记录簿每个学生信息包括:学号、姓名、籍贯具体功能要求如下:1) 创建信息链表并以磁盘文件保存;2) 读取磁盘文件并显示输出所有学生的籍贯信息;3) 按学号或姓名查询其籍贯;4) 按籍贯查询并输出该籍贯的所有学生;5) 能添加、删除和修改学生的籍贯信息;6) 显示输出江苏籍和非江苏籍的所有学生的信息并可分别存盘第3章主要技术指标及特点各项功能(模块层次图):该软件主要组成模块和各个模块之间的调用关系如图:退出系统程序采用主要的结构类型分析该程序采用的是结构体类型来处理学生的所有基本信息,如下所述结构体为:typedef struct Student {char num[20];char name[20];char place[20];struct Student *next;}STU;包含的库函数有:#include <stdio.h>#include <string.h>#include <stdlib.h> //文件的使用包含的函数有:Select(); /*主菜单*/New(); /* 初始化学生信息*/Add(); /* 添加学生信息*/Query1(); /* 查找学生信息(按学号)*/Query2(); /*查找学生信息(按姓名)*/Query3(); /*查找学生信息(按籍贯)*/Change(); /* 修改学生信息*/Displayall(); /* 显示学生信息(全部)*/Displayjs(); /* 显示学生信息(分类)*/Delete(); /* 删除学生信息*/Save(); /* 保存学生信息*/Load(); /* 载入学生信息*/函数分析(1)main()该函数的主要功能是调用其他12 个函数来实现主菜单的8 项功能,通过择语句switch 选选择操作,然后通过调用各种函数实现调用:void mai n(){FILE *fp; /*创建文件型指针*/if((fp=fope n("Stude nt.dat","rb"))==NULL)New();elseLoad();for(;;) /*循环调用模式,保证能进行重复操作*/{switch(Select()) /* 功能选择*/{case 0:system("cls");/*清除屏幕先前的显示内容*/ Save();printf("\n\n\t 文件保存成功!\n");printf("\n\n\t欢迎下次使用本系统!\n"); getchar();exit(0);case 1: Add();break;case 2: Query1();break;case 3: Query2();break;case 4: Query3();break;case 5: Chan ge();break;case 6: Delete();break;case 7: Displayall();break;case 8: Displayjs();break; default:printf("\n 错误!");exit(O);}第4章设计小结好久没用C语言写东西了,自从程序竞赛结束后就没怎么碰过C语言,在做课程设计的时候暴露出很多问题,知识点的遗忘之类的。
学生籍贯信息记录簿
for(i=0;i<n;i++)
{
fread(&S[i],sizeof(struct student),1,fp);
if(S[i].num==fnum)
{
printf("------------------------------\n");
{
printf("\n请输入第%d名学生的学号:",i+1);
scanf("%d",&S[i].num);
printf("请输入第%d名学生的姓名:",i+1);
scanf("%s",S[i].name);
printf("请输入第%d名学生的籍贯:",i+1);
scanf("%s",S[i].bp);
printf("\t\t\t 欢迎进入信息显示系统\n");
printf("\t\t\t\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\n\n");
int i,n,x;
fp=fopen("file","rb");
scanf("%s",fname);
fp=fopen("file","rb");
nfp=fopen("nfile","rb");
fread(&n,sizeof(int),1,nfp);
学生信息记录薄.
{
system("cls");
goto c;
}
else
{
system("pause");
}
return 0;
}
3.2 数据录入实现
StuNode *CreateList(StuNode *Head)
{
StuNode *pnew,*paid,*ps,*pe;
Head=NULL;
cout<<"开始创建学生链表,输入学号为0或负则停止:"<<endl;
实现修改学生信息;
StuNode *showscjg(StuNode *Head)
实现显示四川籍贯信息的学生信息;
StuNode *showfscjg(StuNode *Head)
实现显示非四川籍贯信息的学生信息;
3 详细设计
3.1 主函数的实现
int _tmain(int argc, _TCHAR* argv[])
//cout<<infile.tellg()<<endl;
if(Head==NULL)
{
Head=pnew;
paid=pnew;
paid->next=NULL;
}
else
{
paid->next=pnew;
paid=pnew;
paid->next=NULL;
}
}//while,读文件结束
infile.close();
关键词:学生籍贯信息、更快、更强、更加规范、更加方便
引
经过一个学期的学习,我们应掌握C++语言编程的基础知识。较熟练地编写C++语言应用程序。了解C语言的常用标准函数、编程技巧、异常处理。联系已学过的内容,巩固所学的理论,增强独立工作能力。通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。
课程设计报告-学生籍贯信息记录薄
学生籍贯信息记录薄《学生籍贯信息记录簿》程序设计基础课程设计报告专业:计算机科学与技术系班级:一班姓名:学号:指导教师:完成日期:2012-6-25目录1. 课程设计目的................................................................................................................................ - 3 -1.1课程设计目的: (3)1.2课程设计题目: (3)1.3题目要求: (3)2.总体设计.......................................................................................................................................... - 5 -2.1总体组成框图: (5)2.2总体流程图: (5)3.详细设计.......................................................................................................................................... - 6 -3.1信息录入模块. (6)3.1.1函数功能:........................................................................................................................ - 6 -3.1.2函数入口:........................................................................................................................ - 6 -3.1.3函数流程图:.................................................................................................................... - 6 -3.2显示物品信息模块.. (7)3.2.1函数功能:........................................................................................................................ - 7 -3.2.2函数介绍:........................................................................................................................ - 7 -3.2.3函数流程图:.................................................................................................................... - 7 -3.3查找学生信息模块.. (8)3.3.1函数功能:........................................................................................................................ - 8 -3.3.2函数介绍:........................................................................................................................ - 8 -3.3.3函数流程图........................................................................................................................ - 9 -3.4删除学生信息模块.. (9)3.4.1函数功能:........................................................................................................................ - 9 -3.4.2函数介绍:........................................................................................................................ - 9 -3.4.3函数流程图:.................................................................................................................. - 10 -3.5修改学生信息模块 (10)3.5.1函数功能:...................................................................................................................... - 10 -3.5.2函数介绍:...................................................................................................................... - 10 -3.5.3函数流程图:.................................................................................................................. - 11 -3.6显示所有四川籍学生信息 (11)3.6.1函数功能.......................................................................................................................... - 11 -3.6.2函数介绍:...................................................................................................................... - 12 -3.6.3函数流程图...................................................................................................................... - 12 -4、运行结果..................................................................................................................................... - 13 -4.1主界面.. (13)4.2录入信息 (13)4.3显示学生信息 (14)4.4查找学生信息 (14)4.5删除学生信息 (15)4.6修改学生信息 (16)4.7四川籍学生信息展示 (17)5、课程设计总结............................................................................................................................. - 18 -6、参考文献..................................................................................................................................... - 19 -1. 课程设计目的1.1课程设计目的:《C++程序设计》是计算机科学与技术专业的必修课。
3-学生籍贯信息记录簿设计
合肥学院计算机科学与技术系课程设计任务书2010~2011学年第二学期课程C语言课程设计课程设计名称学生籍贯信息记录簿设计专业班级指导教师2011年6月一、课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。
通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《C语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
(3)利用所学知识,开发小型应用系统,掌握运用C语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
(5)掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。
(6)熟练掌握C语言的基本语法,灵活运用各种数据类型。
(7)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。
二、课程设计名称及内容课程设计名称:学生籍贯信息记录簿设计设计内容:设计一个学生籍贯信息记录簿系统,该系统要求对学生籍贯信息进行管理和维护。
三、任务和要求编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、性别、年龄、籍贯。
具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的籍贯信息;(3)按学号或姓名查询其籍贯;(4)按籍贯查询并输出该籍贯的所有学生;(5)能添加、删除和修改学生的籍贯信息(可选项);四、主要知识点●程序设计方法●界面制作●动态数组(链表)●文件的读写五、其他程序设计可在Turbo C、VC++、C++ Builder环境下进行。
六、参考资料[1]黄明等编著《C语言课程设计》北京:电子工业出版社[2]郭翠英编著《C语言课程设计案例精编》北京:中国水利水电出版社[3] 宁正元《数据结构(c语言)》南京:东南大学出版社。
程序设计--学生籍贯信息记录簿
程序设计--学生籍贯信息记录簿-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN程序设计报告( 2012 /2013 学年第二学期)题目:学生籍贯信息记录簿专业学生姓名班级学号指导教师指导单位日期学生籍贯信息记录簿一、课题内容和要求编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。
具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的籍贯信息;(3)按学号或姓名查询其籍贯;(4)按籍贯查询并输出该籍贯的所有学生;(5)能添加、删除和修改学生的籍贯信息;(6)显示输出江苏籍和非江苏籍学生的信息并可分别存盘。
二、需求分析模块1:显示基本信息(创建信息链表并以磁盘文件保存,读取磁盘文件)模块2:输出籍贯信息(显示输出所有学生的籍贯信息)模块3:根据条件查询(按学号或姓名查询其籍贯,按籍贯查询)模块4:输出学生信息(输出该籍贯的所有学生)模块5:基本信息管理(添加、删除和修改学生的籍贯信息)模块6:分别显示存盘(显示输出江苏籍和非江苏籍学生的信息并可分别存盘)模块7:结束程序(退出系统)三、概要设计四、源程序代码#include<>#include<>#include<>#include<>#define MAX 100 取最初输入的信息并显示void Readfile(); 改第i个学生的姓名和籍贯void Save1(); 示输出江苏,非江苏学生信息void Find(int i); 学号或姓名查询籍贯void Finds(); 入信息并存档\n");printf("2.读取信息并显示\n");printf("3.按学号或姓名查询籍贯\n");printf("4.按籍贯查询学生\n");printf("5.修改(删除)指定姓名或学号的学生的姓名和籍贯\n");printf("6.显示输出江苏,非江苏学生信息\n");printf("**********************************************************\n");scanf("%s",&choose);switch(choose){case '1':{Input();Save1();}break;case '2':{Readfile();Display();}break;case '3':{Readfile();Find(1);}break;case '4':{Readfile();Finds();}break;case '5':{Readfile();Find(0);}break;case '6':{Readfile();Dis();}break;default:printf("输入错误,请重新输入:\n");}}while(1);}void Save2(int t) um,stu[t].name,stu[t].address);um);if(strcmp(stu[n].num,"Finish")==0) break;scanf("%s",stu[n].name);scanf("%s",stu[n].address);n++;}while(1);}void Save1() um,stu[i].name,stu[i].address);取信息并显示{int i;printf(" 学号姓名籍贯:\n");for(i=0;i<n;i++){printf("%5s %5s %5s\n",stu[i].num ,stu[i].name ,stu[i].address);}}void Find(int f) 学号或姓名查询籍贯{int i;int choose,k;char ans[50]; 学号查询\n");printf("2.按姓名查找\n");printf("3.返回主菜单\n");scanf("%d",&choose);if(choose==1){printf("请输入学号\n");scanf("%s",ans);k=-1;for(i=0;i<n;i++)if(strcmp(ans,stu[i].num)==0){k=i;break;}if(k==-1)printf("不存在该学生信息\n");else{if(f==1)printf("%s %s %s\n",stu[k].num,stu[k].name,stu[k].address);elseModify(k);ame)==0){k=i;break;}if(k==-1)printf("不存在该学生信息\n");else{if(f==1)printf("%s %s %s\n",stu[k].num,stu[k].name,stu[k].address);elseModify(k);改第t个学生的姓名和籍贯{int choose;int i;printf("1.删除\n");printf("2.修改\n");scanf("%d",&choose);if(choose==1){for(i=t;i<n-1;i++){stu[i]=stu[i+1];}n--;}else{printf(">>>>请重新输入该学生信息:\n");scanf("%s %s %s",stu[t].num,stu[t].name,&stu[t].address);}Save2(t); um,stu[n].name,&stu[n].address);示输出江苏,非江苏学生信息{int i;printf("江苏学生:\n");printf("学号姓名籍贯\n");for(i=0;i<n;i++){if(strcmp(stu[i].address,"江苏")==0)um,stu[i].name,stu[i].address);}}printf("\n");printf("\n");printf("非江苏学生:\n");printf("学号姓名籍贯\n");for(i=0;i<n;i++){if(strcmp(stu[i].address,"江苏")!=0){printf("%s %7s %5s\n",stu[i].num,stu[i].name,stu[i].address);}}}void Finds(){int i,k=-1;int choose;char ans[50];printf("请输入籍贯\n");scanf("%s",ans);for(i=0;i<n;i++)if(strcmp(ans,stu[i].address)==0){k=1;printf("%s %s %s\n",stu[i].num,stu[i].name,stu[i].address);}if(k=-1)printf("无此省份学生信息\n");return;}五、测试数据及其结果分析截取了调试时的图片,基本符合要求,但然后一些不人性化的地方值得修改。
学生籍贯信息记录簿设计c语言
学生籍贯信息记录簿设计c语言学生籍贯信息记录簿设计C语言随着教育水平的提高,学生的籍贯信息越来越重要。
籍贯信息记录簿是学生个人信息管理的一个重要组成部分,它既方便管理者查看学生人口分布情况,也方便学生查询自己的籍贯信息。
本文将介绍一个基于C语言的学生籍贯信息记录簿设计方案。
这个方案可以轻松地记录和查询学生的籍贯信息,还支持对信息进行排序和修改。
1、设计思路设计一个包含以下功能的学生籍贯信息记录簿:- 添加学生籍贯信息:输入学生的姓名和籍贯信息,将其加入记录簿中。
- 查询学生籍贯信息:按学生姓名查询学生籍贯信息。
- 修改学生籍贯信息:按学生姓名修改学生籍贯信息。
- 排序学生籍贯信息:按学生姓名或籍贯信息排序学生籍贯信息。
- 导出学生籍贯信息:将学生籍贯信息导出为文本文件。
2、数据结构设计为实现上述功能,需要以下数据结构:``` struct student { char name[20]; //学生姓名 char province[20]; //籍贯 };struct node { struct student data; //数据struct node *next; //指向下一个节点的指针 }; ```这里用链表来存储学生籍贯信息记录簿,每个节点表示一个学生的信息。
数据结构包含了学生姓名和籍贯信息,还有指向下一个节点的指针。
3、函数设计实现上述功能,需要以下函数:- `void menu()`: 显示功能菜单。
- `voidadd_node(struct node **head)`: 添加节点。
- `void search_node(struct node *head)`: 按学生姓名查询节点。
- `void modify_node(struct node *head)`: 按学生姓名修改节点。
- `void sort_node(struct node*head)`: 按学生姓名或籍贯信息排序节点。
学生籍贯信息记录簿课程报告书
合肥学院计算机科学与技术系课程设计报告2013 ~2014 学年第2 学期课程面向过程综合设计课程设计名称学生籍贯信息记录簿设计学生姓名学号专业班级软件工程(2)班指导教师2014 年6 月一、需求分析随着学校办学规模的不断扩大、办学层次的多样化、在校生的不断增多。
开发这系统可以是教务处老师减轻工作压力,比较系统的对学生进行管理,加快速度、加强管理,使各项管理更加规范化。
题目要求设计一个学生籍贯信息记录簿系统,该系统要求对学生籍贯信息进行管理和维护。
要求为:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的籍贯信息;(3)按学号和姓名查询籍贯;(4)按籍贯查询并输出该籍贯的所有学生;(5)能添加、删除和修改学生的籍贯信息;(可选项)二、系统设计(一)算法及说明本程序运用c编写,使用顺序表的数据结构来实现。
程序中定义了一个结构体student。
其中在student结构体中包含了学生的基本信息(学生的学号,姓名,性别,年龄,籍贯)。
程序还定义了几个功能函数(保存、录入、显示、添加、查询),这五个函数是彼此相互独立的功能模块。
(二)各项功能分析(1)学生基本信息的录入:这部分的功能主要包括信息的录入,首先按程序提示输入学生的学号,姓名,性别,年龄,籍贯。
录入完毕后,按任意键回到菜单,主菜单还有显示学生的全部信息,按学号查询学生的籍贯,按姓名查询学生的籍贯,按籍贯查询该籍贯的所有学生,添加学生的籍贯信息,退出程序等功能,并且这些函数用后的信息都会写到你所指定的文本文件中。
(2)显示学生信息:此功能将录入的学生信息独处,并在屏幕上显示出来,并且录入到你所指定的文本文件中。
(3)按学号查询学生籍贯信息此功能可以根据用户输入的选择查出该学生的籍贯信息。
(4)按姓名查询学生的籍贯信息此功能可以更具用户输入的选择查出该学生的籍贯信息。
(5)按籍贯查询学生信息此功能可以根据你输入的信息查询相对应的学生信息。
程序设计--学生籍贯信息记录簿
程序设计报告(2012 /2013 学年第二学期)题目:学生籍贯信息记录簿专业学生姓名班级学号指导教师指导单位日期学生籍贯信息记录簿一、课题容和要求编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。
具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的籍贯信息;(3)按学号或姓名查询其籍贯;(4)按籍贯查询并输出该籍贯的所有学生;(5)能添加、删除和修改学生的籍贯信息;(6)显示输出籍和非籍学生的信息并可分别存盘。
二、需求分析模块1:显示基本信息(创建信息链表并以磁盘文件保存,读取磁盘文件)模块2:输出籍贯信息(显示输出所有学生的籍贯信息)模块3:根据条件查询(按学号或姓名查询其籍贯,按籍贯查询)模块4:输出学生信息(输出该籍贯的所有学生)模块5:基本信息管理(添加、删除和修改学生的籍贯信息)模块6:分别显示存盘(显示输出籍和非籍学生的信息并可分别存盘)模块7:结束程序(退出系统)三、概要设计四、源程序代码#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#define MAX 100 //宏定义最多输入人数typedef struct{char num[50];char name[50];char address[50];}Student; //定义了一个新的结构体类型Student Student stu[MAX]; //定义结构体型数组int n; //定义一个全局变量,表示第n个学生int t;int s=0;void Input(); //输入信息void Display(); //2.读取最初输入的信息并显示void Readfile(); //读取文件student.dat的信息void Modify(int i); //5.修改第i个学生的姓名和籍贯void Save1(); //将最初输入的容存档到student.dat文件中void Save2(); //传送格式化输出到student.dat文件void Dis(); //6.显示输出,非学生信息void Find(int i); //3.按学号或姓名查询籍贯void Finds(); //4按籍贯查找学生void main(){char choose;do {if(s==0){int M=35;printf("欢迎大家进入邮电大学籍贯管理系统\n");s++;}printf("**********************************************************\n");printf("1.输入信息并存档\n");printf("2.读取信息并显示\n");printf("3.按学号或姓名查询籍贯\n");printf("4.按籍贯查询学生\n");printf("5.修改(删除)指定姓名或学号的学生的姓名和籍贯\n");printf("6.显示输出,非学生信息\n");printf("**********************************************************\n");scanf("%s",&choose);switch(choose){case '1':{Input();Save1();}break;case '2':{Readfile();Display();}break;case '3':{Readfile();Find(1);}break;case '4':{Readfile();Finds();}break;case '5':{Readfile();Find(0);}break;case '6':{Readfile();Dis();}break;default:printf("输入错误,请重新输入:\n");}}while(1);}void Save2(int t) //传送格式化输出到student.dat文件中{FILE* fp;fp=fopen("student.dat","w"); //以只写的方式打开student.dat文件fprintf(fp,"%s %s %s\n",stu[t].num,stu[t].name,stu[t].address);//格式化输出:学号姓名地址fclose(fp);}void Input() //输入信息{n=0;do{printf("请输入第%d个学生信息,输入Finish结束输入(输入格式:学号姓名籍贯)\n",n+1);scanf("%s",stu[n].num);if(strcmp(stu[n].num,"Finish")==0) break;scanf("%s",stu[n].name);scanf("%s",stu[n].address);n++;}while(1);}void Save1() //将最初输入的容存档到student.dat文件中{int i;FILE* fp;if((fp=fopen("student.dat","a+"))==NULL)//以读写的方式打开student.dat文件fp=fopen("student.dat","w"); //以只写的方式打开student.dat文件for(i=0;i<n;i++){fprintf(fp,"%s %s %s\n",stu[i].num,stu[i].name,stu[i].address);//用格式化输出函数输出容到student.dat}fclose(fp);}void Display() //2.读取信息并显示{int i;printf(" 学号姓名籍贯:\n");for(i=0;i<n;i++){printf("%5s %5s %5s\n",stu[i].num ,stu[i].name ,stu[i].address);}}void Find(int f) //3.按学号或姓名查询籍贯{int i;int choose,k;char ans[50]; //定义字符串型数组,用于查找do{printf("1.按学号查询\n");printf("2.按姓名查找\n");printf("3.返回主菜单\n");scanf("%d",&choose);if(choose==1){printf("请输入学号\n");scanf("%s",ans);k=-1;for(i=0;i<n;i++)if(strcmp(ans,stu[i].num)==0){k=i;break;}if(k==-1)printf("不存在该学生信息\n");else{if(f==1)printf("%s %s %s\n",stu[k].num,stu[k].name,stu[k].address);elseModify(k);//执行修改第t个学生的姓名和籍贯的函数}}else if(choose==2){printf("请输入姓名\n");scanf("%s",ans);k=-1;for(i=0;i<n;i++)if(strcmp(ans,stu[i].name)==0){k=i;break;}if(k==-1)printf("不存在该学生信息\n");else{if(f==1)printf("%s %s %s\n",stu[k].num,stu[k].name,stu[k].address);elseModify(k);//执行修改第t个学生的姓名和籍贯的函数}}else return;}while(1);}void Modify(int t) //4.修改第t个学生的姓名和籍贯{int choose;int i;printf("1.删除\n");printf("2.修改\n");scanf("%d",&choose);if(choose==1){for(i=t;i<n-1;i++){stu[i]=stu[i+1];}n--;}else{printf(">>>>请重新输入该学生信息:\n");scanf("%s %s %s",stu[t].num,stu[t].name,&stu[t].address);}Save2(t); //传送修改过的格式化输出到student.dat文件中}void Readfile() //读取文本文件student.dat的信息{FILE *fp;if((fp=fopen("student.dat","r"))==NULL) return ;//以只读的方式打开student.dat文件n=0;while(!feof(fp)) //判断文件指针是否指向文件结束处{fscanf(fp,"%s%s%s",stu[n].num,stu[n].name,&stu[n].address);//利用fscanf()函数输入信息n++;}fclose(fp);}void Dis() //5.显示输出,非学生信息{int i;printf("学生:\n");printf("学号姓名籍贯\n");for(i=0;i<n;i++){if(strcmp(stu[i].address,"")==0)//比较字符串大小{printf("%s %5s %5s\n",stu[i].num,stu[i].name,stu[i].address);}}printf("\n");printf("\n");printf("非学生:\n");printf("学号姓名籍贯\n");for(i=0;i<n;i++){if(strcmp(stu[i].address,"")!=0){printf("%s %7s %5s\n",stu[i].num,stu[i].name,stu[i].address);}}}void Finds(){int i,k=-1;int choose;char ans[50];printf("请输入籍贯\n");scanf("%s",ans);for(i=0;i<n;i++)if(strcmp(ans,stu[i].address)==0){k=1;printf("%s %s %s\n",stu[i].num,stu[i].name,stu[i].address);}if(k=-1)printf("无此省份学生信息\n");return;}五、测试数据及其结果分析截取了调试时的图片,基本符合要求,但然后一些不人性化的地方值得修改。
学生籍贯信息记录簿
<<"
*
Page
8
cin>>k; if (k==1) {AddStudent();SaveFile();} else if(k==2) Loop(); else if(k==3) FindID(); else if(k==4) FindProvince(); else if(k==5) FindName(); else if(k==6) {Remove();SaveFile();} else if(k==7) {Xg();SaveFile();} else if(k==0) cout<<"完成!!!\n"; else cout<<"你输入了一个错误的数字,请重新输入:"; } }
Page
15
按学号查询学生(部分主要程序)
int FindID()//按学号查询学生: { int id1,id2; string province,name; cout<<"学号:";cin>>id1; ifstream iFile(fileName.c_str());//用文件输入流读入文件名为fileName这个文件 while(iFile>>id2>>province>>name) { if(id1==id2) { cout<<id2<<" "<<province<<" "<<name<<endl; break; } } iFile.close(); return 0; }
Page
18
修改前学生信息
学生籍贯信息记录簿课程设计报告
山东交通学院面向过程课程设计学生籍贯信息记录簿软件院(系)别信息工程系班级电气102班学号姓名杨其杭指导教师时间2011-8-29—2011-9-2课程设计任务书题目学生籍贯信息记录簿系(部) 信息工程系专业电气类班级102班学生姓名杨其杭学号8 月29 日至9 月 2 日共 1 周指导教师(签字)系主任(签字)年月日一、设计内容及要求编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。
具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的籍贯信息;(3)按学号或姓名查询其籍贯;(4)按籍贯查询并输出该籍贯的所有学生;(5)能添加、删除和修改学生的籍贯信息;(6)显示输出四川籍和非四川籍学生的信息并可分别存盘。
二、设计原始资料1、链表基础知识2、文件处理基础知识三、设计完成后提交的文件和图表1.计算说明书部分数据库设计分析#include<stdio.h>#include<string.h>#include<stdlib.h>#define LEN sizeof(struct Student)struct Student{char num[21];char name[256];char address[562];struct Student *next;};int n;//n为全局变量,本文件模块中各函数均可使用它struct Student *creat()//定义函数。
此函数返回一个指向链表头的指针{struct Student *p1,*p2;n=0;p1=p2=(struct Student *)malloc(LEN);printf("请依次输入学生的信息,输入学号为零时退出。
\n");printf("请输入学生的学号:\n");gets(p1->num);printf("请输入学生的姓名:\n");gets(p1->name);printf("请输入学生的地址:\n");gets(p1->address);head=NULL;while(p1->num[0]!='0')//当学号是0时,退出{n=n+1;if(n==1)head=p1;elsep2->next=p1;p2=p1;p1=(struct Student *)malloc(LEN);//开辟动态存储区,把起始地址付给p1printf("请输入学生的学号:\n");gets(p1->num);//输入其他学生的学号和成绩printf("请输入学生的姓名:\n");gets(p1->name);printf("请输入学生的地址:\n");gets(p1->address);}p2->next=NULL;system("cls");return(head);}void print_save(struct Student head){FILE *fp;struct Student *p;if(fp==NULL){printf("文件无法打开\n");exit(0);}printf("\n现在,有 %d 条记录,分别是:\n",n);p=&head;if(&head!=NULL)do{printf("\n学号:");puts(p->num);printf("\n姓名:");puts(p->name);printf("\n地址:");puts(p->address);fseek(fp,0,2);if(fwrite(p,sizeof(struct Student),1,fp)!=1)printf("文件无法写入\n");p=p->next;}while(p!=NULL);fclose(fp);//关闭文件getchar();system("cls");}struct Student *pt;//定义一个Student类型的指针char comp[3];//comp为保存输入的变量int main()//一个调用这个creat函数的main函数 c{void ShowView();//界面显示void name_surch();//按姓名查找void num_surch();//按学号查找void NativePlace_surch();//按籍贯查找void Delete_shiyan();//删除学生信息void modification_shiyan();//修改学生信息void fileout(struct Student *p);//文件输出void print_save(struct Student head);while(1){ShowView();if(strnicmp(comp,"1",3)==0)//strnicmp比较两个字符串的函数{pt=creat();//函数返回链表第一个结点的地址}else if(strnicmp(comp,"6",3)==0){print_save(*pt);}else if(strnicmp(comp,"3",3)==0)//输出文件内容{fileout(pt);}else if(strnicmp(comp,"2",3)==0){name_surch();}else if(strnicmp(comp,"7",3)==0){num_surch();}else if(strnicmp(comp,"9",3)==0){//modification();modification_shiyan();//修改学生信息}else if(strnicmp(comp,"4",3)==0){//Delete();Delete_shiyan();}{showSzechwan_No();}else if(strnicmp(comp,"8",3)==0){NativePlace_surch();}else if(strnicmp(comp,"0",3)==0){break;}else{printf("输入错误!!!!!!\n");}getchar();system("cls");}return 0;}void fileout(struct Student *p){FILE *fp;printf("现在有%d条记录,分别是:\n",n);fp=fopen("D:\\stduent.txt","rb");//0x00429af0if(fp==NULL){printf("文件无法打开\n");exit(0);}rewind(fp);while(!feof(fp)){fread(p,sizeof(struct Student),1,fp);//从文件中读取一块数据printf("%-15s",p->num);printf("%-15s",p->address);puts("\n");}fclose(fp);getchar();system("cls");}void ShowView()//主菜单{printf("*********************************************************************** ********\n");printf("**********************欢迎进入学生籍贯信息记录簿*******************************\n");printf("*********************************************************************** ********\n");printf("****1、cin添加*****\n");printf("****2、namesurch按名字搜索*****\n");printf("****3、fileout显示文件中的信息*****\n");printf("****4、delete删除学生信息*****\n");printf("****5、showSzechwan_No分别显示四川和非四川籍学生并非别存盘*****\n");printf("****6、save保存当前信息*****\n");printf("****7、numsurch按学号搜索*****\n");printf("****8、nativeplace安籍贯查询*****\n");printf("****9、modif修改学生信息*****\n");printf("****0、break退出*****\n");********\n");printf("********************请输入您的选择¥¥:");gets(comp);system("cls");//清屏}void name_surch(){FILE *fp;char surch[256];printf("请输入要查询的人的名字:\n");gets(surch);fp=fopen("D:\\stduent.txt","r");//0x00429af0if(fp==NULL){printf("不能打开文件\n");exit(0);}rewind(fp);//指向文件的开始while(!feof(fp))//查找{Student a;while(!feof(fp)){fread(&a,sizeof(Student),1,fp);//从p指向的文件读入一组数据if(!strcmp(,surch)){printf("%s,%s,%s\n",a.num,,a.address);break;}}if(!feof(fp)){return;}else{printf("查无此人····\n");fclose(fp);getchar();system("cls");}void num_surch(){FILE *fp;char surch[256];printf("请输入要查询的人的学号:");gets(surch);fp=fopen("D:\\stduent.txt","rb");//0x0042aab8if(fp==NULL){printf("ERROR");exit(0);}rewind(fp);//指向文件的开始while(!feof(fp))//查找{Student a;while(!feof(fp)){fread(&a,sizeof(Student),1,fp);//从p指向的文件读入一组数据if(!strcmp(a.num,surch)){printf("%s,%s,%s\n",a.num,,a.address);break;}}if(!feof(fp)){return;}else{printf("查无此人····\n");fclose(fp);getchar();system("cls");}void NativePlace_surch()//按籍贯查询{FILE *fp;char surch[256];printf("请输入要查询的人的籍贯:\n");gets(surch);fp=fopen("D:\\stduent.txt","rb");//0x00429af0if(fp==NULL){printf("文件打不开\n");exit(0);}rewind(fp);//指向文件的开始Student a;while(!feof(fp)){fread(&a,sizeof(struct Student),1,fp);//从p指向的文件读入一组数据if(!strcmp(a.address,surch))//相当于strcmp(a.address,surch)==0{printf("%s,%s,%s\n",a.num,,a.address);}}if(!feof(fp)){return;}fclose(fp);getchar();system("cls");}void showSzechwan_No()//分别显示四川和非四川籍学生并非别存盘{FILE *sfp;//指向四川籍学生文件sfp=fopen("D:\\四川stduent.txt","wb");if(sfp==NULL){printf("不能打开文件\n");exit(0);}FILE *ffp;//指向非四川籍学生文件ffp=fopen("D:\\非四川stduent.txt","wb");if(ffp==NULL)//ffp=0x0042aad8{printf("不能打开文件\n");exit(0);}fp=fopen("D:\\stduent.txt","rb");//0x00429af0if(fp==NULL){printf("不能打开文件\n");exit(0);}rewind(fp);//指向文件的开始printf("四川籍学生信息:\n");Student a;while(!feof(fp)){fread(&a,sizeof(struct Student),1,fp);//从p指向的文件读取一组数据if(!strcmp(a.address,"四川")||!strcmp(a.address,"sichuan")||!strcmp(a.address,"sichuansheng")||!strcmp(a.addr ess,"四川省")){printf("%s,%s,%s\n",a.num,,a.address);if(fwrite(&a,sizeof(struct Student),1,sfp)!=1){printf("文件无法写入\n");break;}}else{if(fwrite(&a,sizeof(struct Student),1,ffp)!=1)printf("文件无法写入\n");}}fclose(fp);fclose(ffp);fclose(sfp);printf("非四川籍学生信息:\n");ffp=fopen("D:\\非四川stduent.txt","rb");if(NULL==ffp){printf("文件打不开\n");}while(!feof(ffp)){//此处有问题????????????????????????????????????fread(&a,sizeof(struct Student),1,ffp);//从p指向的文件读取一组数据if(a.num=="0")//ffp=0x0042aab8break;printf("%s,%s,%s\n",a.num,,a.address);}fclose(ffp);getchar();system("cls");}/*编写写入部分,完成修改,删除,四川与非四川籍分别保存的部分freab与fwrite用法的详细区别阐述*/void Delete_shiyan()//删除学生信息{FILE *fp;FILE *fptemp;char surch[256];printf("请输入要删除的人的学号:\n");gets(surch);fp=fopen("D:\\stduent.txt","rb");//0x00429af0fptemp=fopen("D:\\temp.txt","wb");if(fp==NULL){printf("文件打不开\n");exit(0);}Student a;while(!feof(fp)){mark:fread(&a,sizeof(struct Student),1,fp);//从p指向的文件读入一组数据fp=0x0042aab8if(0==strcmp(a.num,surch)){char p;printf("%s,%s,%s\n",a.num,,a.address);printf("如果以上信息与你要删除的人的信息对应,请输入(y/n):\n");scanf("%c",&p);if('Y'==p||'y'==p){goto mark;}}if(strcmp(a.num,surch)!=0){fwrite(&a,sizeof(struct Student),1,fptemp);}}fclose(fp);fclose(fptemp);FILE *aa;FILE *bb;aa=fopen("D:\\stduent.txt","wb");bb=fopen("D:\\temp.txt","rb");while(!feof(bb)){fread(&a,sizeof(struct Student),1,bb);fwrite(&a,sizeof(struct Student),1,aa);}getchar();system("cls");}void modification_shiyan()//修改学生信息{FILE *fp;FILE *fptemp;struct Student a;char surch[256];printf("请输入要修改的人的学号:\n");gets(surch);fp=fopen("D:\\stduent.txt","rb");//0x0042aab8fptemp=fopen("D:\\temp.txt","wb");if(fp==NULL){printf("文件打不开\n");exit(0);}rewind(fp);//指向文件的开始while(!feof(fp)){fread(&a,sizeof(struct Student),1,fp);//从p指向的文件读入一组数据fp=0x0042aab8if(0==strcmp(a.num,surch)){char p;printf("%s,%s,%s\n",a.num,,a.address);printf("如果以上信息与你要修改的人的信息对应,请输入(y/n):\n");scanf("%c",&p);if('Y'==p||'y'==p){printf("请输入要修改成的信息(学号、姓名、籍贯):\n");getchar();printf("学号:");gets(a.num);printf("姓名:");gets();printf("地址:");gets(a.address);}}fwrite(&a,sizeof(struct Student),1,fptemp);}fclose(fp);fclose(fptemp);FILE *bb;FILE *pp;bb=fopen("D:\\stduent.txt","wb");//0x0042aab8pp=fopen("D:\\temp.txt","rb");while(!feof(pp)){fread(&a,sizeof(struct Student),1,pp);fwrite(&a,sizeof(struct Student),1,bb);}getchar();getchar();system("cls");}2.图纸部分:程序流程图四、进程安排(1)第一天完成创建信息链表并以磁盘文件保存,读取磁盘文件并显示输出所有学生的籍贯信息的功能;(2)第二天完成按学号或姓名查询其籍贯,按籍贯查询并输出该籍贯的所有学生的功能;(3)第三天完成显示输出四川籍和非四川籍学生的信息并可分别存盘的功能并修饰;(4)第四天完成能添加、删除和修改学生的籍贯信息的功能并完善;五、主要参考资料[1] 马安鹏.Visual C++程序设计导学。
c语言程序学生籍贯信息记录簿设计
c 语言程序学生籍贯信息记录簿设计学生籍贯信息记录簿课程设计报告书班级: 方0909-1 学号: 20096401 姓名: 苑小叶指导教师: 康亚男石家庄铁道大学四方学院2010年07月14日1课程设计报告内容1. 选择题目题目: 学生籍贯信息记录簿设计 2. 内容摘要摘要:学生籍贯信息管理系统是典型的信息管理系统, 根据开发要求,主要完成对学生姓名、学号、籍贯等管理。
随着学校办学规模的不断扩大、办学层次的多样化、在校生的不断增多。
开发这系统可以是教务处老师减轻工作压力,比较系统的对学生进行管理,加快速度、加强管理,使各项管理更加规范化。
本系统管理内容广泛,全面涉及管理学生资料信息的管理。
3. 索引关键词关键词:学生籍贯管理,结构体,循环,函数学生籍贯信息记录簿4. 目录目录1题目要求................................................ 4 2设计思想............................................. 4 3系统完成及功能.......................................... 44界面设计............................................ 5 5正文................................................. 5 6结论................................................. 14 7参考资料............................................ 14 8后记................................................. 15 9附录. (15)3学生籍贯信息记录簿 5. 正文1.1 课程设计题目要求1.要求利用C语言面向过程的编程思想来完成系统的设计;2.突出C语言的函数特征,以多个函数实现每一个子功能;3. 画出功能模块图;4. 进行简单界面设计,能够实现友好的交互;5. 具有清晰的程序流程图和数据结构的详细定义;6.熟练掌握C语言对文件的各种操作。
C语言课程设计 学生籍贯信息记录簿设计教学教材
C语言课程设计学生籍贯信息记录簿设计C语言与程序设计课程设计学生籍贯信息记录簿设计学院信息工程班级物联1301班学号 131408119姓名滕玲一.设计目的该软件主要是编辑一个学生籍贯信息记录簿记录每个学生信息,包括:学号、姓名、籍贯。
具体功能:1.创建信息链表并以磁盘文件保存;2.读取磁盘文件并显示输出所有学生的籍贯信息;3.按学号或姓名查询其籍贯;4.按籍贯查询并输出该籍贯的所有学生;5.能添加、删除和修改学生的籍贯信息;二.总体设计1.设置输入输出流及将程序由磁盘文件保存,构件类stu,其主要包括:学号,姓名,籍贯;2.构建无返回值main函数,输出由与程序相关操作构成的信息链表;3.根据链表设置利用switch函数和循环函数将链表中的内容一一实现;三.详细设计1.学生基本信息的录入这部分的功能主要包括信息的录入,首先按程序提示输入学生的学号,姓名,籍贯等。
在录入数据的同时,系统将对信息的合法性进行检验。
若用户输入不合法的信息,则被系统要求重新输入;若合法性成立则录入完毕后系统将返回主页面。
主页面还有显示学生的全部信息,并且这些信息都会写到你所指定的文本文件中。
2.显示学生信息此功能是将原录入的学生信息读出,并在屏幕上显示出来,并且录入到你所指定的文本文件中。
3.学生信息读取进入该项功能界面后,用户可以对学生的个人信息进行查看,并且录入到你所指定的文本文件中。
4.按学号或姓名查找学生信息此项功能可以根据用户输入的选择查处该学生的所有信息,并且录入到你所指定的文本文件中。
5.删除和修改个人信息选择此项功能后,系统将会自动在屏幕上显示按学号录入原来同学的个人信息,输入后进行修改,并且录入到你所指定的文本文件中。
6.退出系统,结束任务【注:main()主函数每一C 程序都必须有一main()函数, 可以根据自己的爱好把它放在程序某个地方。
程序之前输入学生信息,main()申明主函数,输出相应的功能函数。
籍贯信息记录簿
《高级语言程序设计》课程设计报告课题名称:学生籍贯信息记录簿姓名:胡瑞君班级:物联网1312 学号:指导教师:张艳电子信息学院2014年 7月 4日目录1 课题分析 (3)1.1 问题描述 (3)1.2 功能需求分析 (3)1.3 数据属性分析 (3)2 系统设计.............................. 错误!未定义书签。
2.1 数据存储设计 (4)2.2 数据结构设计 (5)2.3 函数设计与说明 (5)2.4 菜单设计 (5)2.5 文件清单与说明 (6)3 系统实现 (8)3.1 添加学生籍贯信息 (9)3.2 修改学生籍贯信息 (10)3.3 删除学生籍贯信息 (10)3.4 显示所有学生信息与查询 (11)3.5 显示上海与非上海市籍学生信息 (13)4 测试数据与测试过程记录 (14)4.1 菜单测试 (15)4.2 系统功能测试 (15)5 课程设计遇到的问题及解决方法 (17)6 课程设计总结 (17)参考文献 (18)1 课题分析1.1 问题描述以本班同学的具体数据为背景,编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。
具体功能为:1)系统以菜单方式工作;2)添加学生信息,至少10条。
3)显示所有学生的信息;4)按学号或姓名查询其籍贯;5)按籍贯查询并输出该籍贯的所有学生(至少3个城市);6)删除和修改学生的籍贯信息;7)显示输出上海市籍和非上海市籍学生的信息并可分别存盘。
1.2 功能需求分析按系统所需实现的功能要求,功能模块如图1所示。
图1 系统功能模块图1.3 数据属性分析学生籍贯信息记录簿中的数据信息主要有一类,即学生信息,其记录属性如下。
1.3.1 学生信息属性●姓名:学生姓名,由汉字组成,长度小于10个字符。
●学号:由两到三位数字组成,且学号不可重复,长度小于50个字符。
●籍贯:学生籍贯,由汉字组成,长度小于20个字符。
1.3.2 学生数组信息属性●数组中学生的个数。
学生籍贯记录簿
#include"comnirecord.h"#include"iostream.h"#include"fcntl.h"#include"errno.h"#define FILENAME1 "sichuan.txt"#define FILENAME2 "feisichuan.txt"void menu(){cout<<" [1]----------添加"<<endl;cout<<" [2]----------删除"<<endl;cout<<" [3]----------修改"<<endl;cout<<" [4]----------按学号查询"<<endl;cout<<" [5]----------按姓名查询"<<endl;cout<<" [6]----------按籍贯查询"<<endl;cout<<" [7]----------显示"<<endl;cout<<" [8]----------退出"<<endl;cout<<" 请选择要进行的操作:"<<endl;}void main(){int mu;cout<<"----------------------------------------"<<endl<<endl;cout<<"*****欢迎使用学生籍贯信息记录簿系统*****"<<endl<<endl;cout<<"----------------------------------------"<<endl;menu();cin>>mu;info inform;inform.studentID=new char[10];=new char[10];inform.province=new char[10];FILE* fh=fopen(FILENAME1,"r+");FILE* fh2=fopen(FILENAME2,"r+");if (fh==NULL||fh2==NULL){perror(FILENAME1);return;}comnirecord a(fh);//a是从四川籍的用户的链表comnirecord b(fh2);//b是从非四川籍的用户的链表while (mu!=8){switch (mu){case 1:cout<<"请输入你要添加的用户的信息:"<<endl;cout<<"请输入你要添加的用户的学号:"<<endl;cin>>inform.studentID;cout<<"请输入你要添加的用户的姓名:"<<endl;cin>>;cout<<"请输入你要添加的用户的籍贯:"<<endl;cin>>inform.province;if (strcmp(inform.province,"四川")==0){a.Insert(a.Getn()-1,inform.studentID,,inform.province);}elseb.Insert(b.Getn()-1,inform.studentID,,inform.province);break;case 2:cout<<"请输入你要删除的用户的学号:"<<endl;cin>>inform.studentID;if(!(a.Delete(inform.studentID)||b.Delete(inform.studentID))){cout<<"删除失败!未找到该学号的用户!"<<endl;}break;case 3:cout<<"请输入你要修改的用户的学号:"<<endl;cin>>inform.studentID;if(!(a.Delete(inform.studentID)||b.Delete(inform.studentID))){cout<<"修改失败!未找到该学号的用户!"<<endl;}else{cout<<"请输入你要修改的用户修改后的信息:"<<endl;cout<<"修改后的学号:";cin>>inform.studentID;cout<<"修改后的姓名:";cin>>;cout<<"修改后的籍贯:";cin>>inform.province;if (strcmp(inform.province,"四川")==0){a.Insert(a.Getn()-1,inform.studentID,,inform.province);}elseb.Insert(b.Getn()-1,inform.studentID,,inform.province);}break;case 4:cout<<"请输入要查询的用户的学号:"<<endl;cin>>inform.studentID;if (!(a.SearchID(inform.studentID)||b.SearchID(inform.studentID))){cout<<"未找到该学号的用户!"<<endl;}break;case 5:cout<<"请输入要查询的用户的姓名:"<<endl;cin>>;if (!(a.SearchNam()||b.SearchNam())){cout<<"未找到该姓名的用户!"<<endl;}break;case 6:cout<<"请输入要查询的用户的籍贯:"<<endl;cin>>inform.province;if (!(a.SearchPro(inform.province)||b.SearchPro(inform.province))){cout<<"未找到该籍贯的用户!"<<endl;}break;case 7:a.Display();b.Display();break;default:cout<<"输入有错,请重输!"<<endl;break;}menu();cin>>mu;}delete[]inform.studentID;delete[];delete[]inform.province;fclose(fh);FILE* fg=fopen(FILENAME1,"w+");FILE* fg2=fopen(FILENAME2,"w+");a.WriteInFile(fg);b.WriteInFile(fg2);}2、comnirecord头文件:#include"iostream.h"#include"string.h"#include"stdio.h"class comnirecord;struct info{char * studentID;char * name;char * province;friend comnirecord;};class Node{info element;Node * link;friend comnirecord;};class comnirecord{public:comnirecord(FILE * fp);~comnirecord();bool Insert(int i,char * stuID,char * nam,char * prov);//存取void Display(info x);//显示void Display();bool Delete(char * stuID);// 按学号删除bool SearchID(char * stuID);//按学号查询bool SearchNam(char * nam);//按姓名查询bool SearchPro(char * prov);//按籍贯查询bool WriteInFile(FILE * fp);int Getn();private:bool SearchID(char * stuID,info & x)const;bool SearchNam(char * nam,info & x)const;bool SearchPro(char * prov,Node * &x)const;Node * first;int n;};int comnirecord::Getn(){return n;}comnirecord::comnirecord(FILE * fp){n=0;first=NULL;int count=-1;int q[3];int k1,k2,k3;char * s=new char[30];while (fgets(s,30,fp)!=NULL){Node * p=new Node;int j=0;for (int i=0;s[i]!='\0';i++)//可以考虑中间是用","隔开的情况{if (s[i]==' '&&j<=2){q[j]=i;j++;}}p->element.studentID=new char[q[0]+1];p->=new char[q[1]-q[0]];p->element.province=new char[q[2]-q[1]];k1=sprintf(p->element.studentID,"%c",s[0]);for (i=1;i<q[0];i++){k1+=sprintf(p->element.studentID+k1,"%c",s[i]);}k2=sprintf(p->,"%c",s[q[0]+1]);for (i=q[0]+2;i<q[1];i++){k2+=sprintf(p->+k2,"%c",s[i]);}k3=sprintf(p->element.province,"%c",s[q[1]+1]);for (i=q[1]+2;i<q[2];i++){k3+=sprintf(p->element.province+k3,"%c",s[i]);}Insert(count,p->element.studentID,p->,p->element.province);count++;delete[]s;s=new char[30];}delete [] s;}comnirecord::~comnirecord(){Node *p;while (first){p=first->link;delete first->element.studentID;// 是否需要??delete first->;delete first->element.province;delete first;first=p;}}bool comnirecord::Insert(int i,char * stuID,char * nam,char * prov){if(i<-1||i>n-1){cout<<"out of bounds!"<<endl;cout<<"录取失败!"<<endl;return false;}Node * q=new Node;q->element.studentID=new char[strlen(stuID)+1];strcpy(q->element.studentID,stuID);q->=new char[strlen(nam)+1];strcpy(q->,nam);q->element.province=new char[strlen(prov)+1];strcpy(q->element.province,prov);Node * p=first;for (int j=0;j<i;j++) p=p->link;if (i>-1){q->link=p->link;p->link=q;}else{q->link=first;first=q;}n++;return true;}bool comnirecord::Delete(char * stuID){if(!n){cout<<"underflow"<<endl; return false;}Node * p=first;Node * q=first;for (int j=0;j<n&&strcmp(p->element.studentID,stuID)!=0;j++){q=p;p=p->link;}if (!p){//cout<<"未找到该学号的学生信息!"<<endl;return false;}if (p==first){first=first->link;}else{p=q->link;q->link=p->link;}delete []p->element.studentID;delete []p->;delete []p->element.province;delete []p;n--; return true;}bool comnirecord::SearchID(char * stuID){info x;bool a=SearchID(stuID,x);if (a){Display(x);}return a;}bool comnirecord::SearchID(char * stuID,info & x)const{Node * p=first;for (int j=0;j<n&&strcmp(p->element.studentID,stuID)!=0;j++) p=p->link;if (!p){//cout<<"未找到该学号的学生信息!"<<endl;return false;}x.studentID=newchar[strlen(p->element.studentID)+1];strcpy(x.studentID,p->element.studentID);=new char[strlen(p->)+1];strcpy(,p->);x.province=newchar[strlen(p->element.province)+1];strcpy(x.province,p->element.province);return true;}bool comnirecord::SearchNam(char * nam){info x;bool a=SearchNam(nam,x);if (a){Display(x);}return a;}bool comnirecord::SearchNam(char * nam,info & x)const {Node * p=first;。
学生籍贯信息记录簿C语言课程设计
精品文档程序设计课程设计报告课题名称:学生籍贯信息记录簿专业计算机科学与技术(软件工程)学生姓名___________________________________ 班级_______________________________________ 学号_______________________________________ 指导教师____________________________________ 完成日期___________________________________精品文档------------------------------------------------ 1 ------------------------------------------- 23.2 读 取 磁 盘 文 件 并 显 示 输 出 所 有 学 生 的 籍 贯 信 息 ; ------------------------- 3------------------------------------ 113.6 显 示输出 江 苏籍 和非 江 苏籍 学 生的信 息并 可分别 存 盘 16四 设 计 小 结-------- 17五程 序源 代 码课程设计的目的-1二设计内容与要求-1-三------------主要 技术 ------- 1指标及 特点八、3.0信息描述(注 用流程 图表示)3.1创建信息链表并以磁盘文 3.3 按 学 号 或 姓 名 ------------------- 5查询其籍贯;3.4 按 籍 贯 查 询 并 输 出 该 籍 9贯的所有 学生;3.5能添加 删除和修改学 生的籍贯信息;精品文档183欢迎。
下载六 参 考 文 献-------- 29课程设计的目的1.加深对《C 语言程序设计》课程知识的理解,掌握 C 语言应用程序的开发方法和步骤;2. 进一步掌握和利用C 语言进行课程设计的能力;3. 进一步理解和运用结构化程序设计的思想和方法;4. 初步掌握开发一个小型实用系统的基本方法;5. 学会调试一个较长的程序的基本方法;6. 学会利用流程图或N-S 图表示算法;7. 掌握书写课程设计开发文档的能力(书写课程报告)。
学生籍贯信息记录簿设计
}
printf("\n Saving File \n");
info = start;
while(info){
fwrite(info,sizeof(structaddress),1,fp);
info = info->next;/* get next address */
}
fclose(fp);
charname[30];
charstreet[40];
charcity[20];
charstate[3];
charzip[11];
structaddress *next;/* pointer to next entry */
structaddress *prior;/* pointer to previous record */
voidenter(void)
{
structaddress *info;
for(;;){
info= (structaddress *)malloc(sizeof(structaddress));
if(!info){
printf("\n out of memory");
return;
}
inputs("Enter name:", info->name,30);
}
/* Load the address file. */
voidload()
{
structaddress *info;
FILE *fp;
fp = fopen("mlist.txt","rb");
if(!fp){
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《学生籍贯信息记录簿》程序设计基础课程设计报告专业:电子信息工程班级:2班姓名:***学号:**********指导老师:***二00八年7月3日目录1 程序设计的目的………………………………………………………………2 课程设计题目描述和要求……………………………………………………3 课程设计原程序………………………………………………………………4 调试与测试……………………………………………………………………5 流程图…………………………………………………………………………6 课程设计总结…………………………………………………………………7 参考书目………………………………………………………………………1.课程设计的目的编制一个学生籍贯信息记录簿,每个学生信息包括:学号,姓名,籍贯。
2 课程设计题目描述和要求编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。
具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的籍贯信息;(3)按学号或姓名查询其籍贯;(4)按籍贯查询并输出该籍贯的所有学生;(5)能添加、删除和修改学生的籍贯信息;(6)显示输出四川籍和非四川籍学生的信息并可分别存盘3 课程设计原程序#include <iostream>#include <string>using namespace std;class Student //建立student类{public:Student(){} //无参数的构造函数Student(int n,string nam,string home) //构造函数初始化{num=n;name=nam;hometown=home;}void input() //录入信息的函数{cout<<"请输入学号"<<endl;cin>>num;cout<<"请输入姓名"<<endl;cin>>name;cout<<"请输入籍贯"<<endl;cin>>hometown;}void display() //输出函数{cout<<"学号:"<<num<<" "<<"姓名:"<<name<<" "<<"籍贯:"<<hometown<<endl;}string get_name(){return name;} //得到的学生姓名string get_num(){return num;} //得到学号string get_hometown(){return hometown;} //得到籍贯void set_num(string n){num=n;}void set_name(string nam){name=nam;}void set_hometown(string h){hometown=h;}protected: //保护成员string num;string name;string hometown;};void add(Student stu[30],int &sum) //添加函数参数是学生数组,sum是录入的学生数{stu[sum++].input(); //依次输入信息}void delet(Student stu[30],int &sum) //删除函数{cout<<"你要删除学生的姓名:";string name;cin>>name;for(int i=0;i<sum;i++) //通过for循环找到要删除的学生姓名if(stu[i].get_name()==name){if(i<sum-1){for(int j=i;j<sum;j++) //用后面的植覆盖前面的植stu[j]=stu[j+1];}break;}if(i>=sum) //若超过学生总数则报错cout<<"无此人!"<<endl;else sum--;}void change(Student stu[30],int &sum) //修改函数{string chose,name,home,num;cout<<"\n1修改学号2修改姓名3修改籍贯"<<endl;cin>>chose;if(chose=="1"){int i;cout<<"请输入你要修改的学生的原学号:"; //修改学号cin>>num;for(i=0;i<sum;i++) //通过for循环找到要修改的学号if(stu[i].get_num()==num){cout<<"新学号:";cin>>num;stu[i].set_num(num);cout<<"修改后的数据:"<<endl;stu[i].display();break;}if(i>=sum) cout<<"无此学生"<<endl;}else if(chose=="2"){int i;cout<<"请输入你要修改的学生的原姓名:"; //修改姓名cin>>name;for(i=0;i<sum;i++)if(stu[i].get_name()==name) //通过for循环找到要修改的姓名{cout<<"新姓名:";cin>>name;stu[i].set_name(name); //修改数据cout<<"修改后的数据:"<<endl;stu[i].display();break;}if(i>=sum)cout<<"无此学生"<<endl;}else if(chose=="3"){cout<<"请输入你要修改的学生的原籍贯:"; //修改籍贯cin>>home;}}void find(Student stu[30],int &sum){string name;cout<<"请输入你要查找的学生的姓名:"; //修改姓名cin>>name;for(int j=0;j<sum;j++){if(stu[j].get_name()==name){stu[j].display();break;}elsecout<<"无此人!\n";}void main(){Student stu[30];int sum=0; //sum是记录学生数目的变量char n='1';cout<<"学生籍贯信息记录簿"<<endl;while(n!='0'){cout<<"\n1查看所有学生的籍贯信息\n2添加信息\n3修改信息\n4删除信息\n5查询信息\n0退出\n"<<endl;cin>>n;switch(n) //用switch进行选择{case '1':if(sum==0) cout<<"没有学生信息,请先添加信息。
"<<endl;else{for(int i=0;i<sum;i++)stu[i].display();}break;case'2':add(stu,sum);break;case'3':change(stu,sum);break;case'4':delet(stu,sum);break;case'5':find(stu,sum);break;default:cout<<"选择错误"<<endl;break;}cout<<endl;}}4 调试与测试在我编程序的过程中,考虑不周全,比如在查找函数中,没考虑到如果输入的姓名,学号,籍贯与实际不符的情况,等等一些细节,经过指点,我进不步把程序完善,考虑周全。
遇到的问题:开始在change函数中,通过for循环找到所需要修改的学生信息后,不知道怎样修改,直接用赋值语句,出现错误,通过问同学,请教到一个简洁的方法例:stu[i].set_num(num),这样就可以完成修改命令。
编译后无错误。
5.流程图6.课程设计总结在此次课程设计的过程中,运用了类,数组等的C++知识,在数据处理中用到了构造函数,保护数据成员以及条件循环的知识,在此次实验中看到了一些程序的编写需要很多方面的知识的交错运用,而且知识运用比较分散,这也让我看到了C++的灵活之处,自己在对知识的灵活运用上还存在很大的缺陷,还必须在以后的大量实验中加强还有就是在循环方面的动系比较薄弱,课程设计虽然只是C++的一形式,但是形式比较新颖,在以后应该加强这种新形式的练习。
在实验中看到自己对于很多知识的理解不够透彻和熟练,只是知道而不会应用或者用得不好,在书籍和同学的帮助下完成这次实验,写程序的严谨性也有待加强。
7.参考书目:[1].谭浩强《C++程序设计》,北京,清华大学出版社,2006年。
[2].钱能,《C++程序设计实验指导》,北京,清华大学出版社,2003年3月。
[3].孙一平王庆宝,《C++程序设计学习辅导》,北京,清华大学出版社,2006年。