学生籍贯信息记录簿设计
- 格式:doc
- 大小:501.50 KB
- 文档页数:20
《软件工程》实验设计报告题目:学生籍贯信息记录簿系统院(系):计算机与软件学院年级:2010级专业:软件工程姓名:学号:教师:学期:学生籍贯信息记录簿第一章课程设计内容和要求1.1 课程设计的目的:通过软件开发的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。
具体如下:1. 学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析与设计,编码和测试方面的知识;2. 进一步加强和提高软件文档编写能力;3. 加强大家的自学能力,为毕业设计做很好的铺垫;4. 培养写作和团队精神。
1.2 课程设计实现的要求:在程序设计中,既可以用传统的结构化程序设计方法,也可以用先进的面向对象程序设计方法。
学生籍贯信息记录簿是一个基于学生籍贯信息的查询、添加、删除、修改、显示功能为一体的程序,本程序需要把记录簿中四川籍贯和非四川籍贯的学生信息分别存储。
1.4进度安排:需求分析:1周概要设计:1到2周详细设计:2周前台编码:3到4周1.5开发环境:编写语言:c语言开发工具:Visual C++ 6.0第二章需求分析2.1 学生籍贯信息记录簿编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。
具体功能:1.创建信息链表并以磁盘文件保存 2.读取磁盘文件并显示输出所有学生的籍贯信息3.按学号或姓名查询其籍贯4.按籍贯查询并输出该籍贯的所有学生;能添加、删除和修改学生的籍贯信息 5.显示输出四川籍和非四川籍学生的信息并可分别存盘。
2.2可行性分析从技术方面,是通过C++来做系统的前台,来实现整个系统的功能;从操作方面,基本的录入、查询、修改等都能满足用户的需求;从经济方面,学生籍贯信息记录簿系统本身是不会直接产生经济效益的,是其应用能够节省人力资源的消耗和浪费,从而节约成本,提高效率,能够起到的作用也是十分可观的。
整个系统不需要特殊设备的支持,只要有计算机即可。
合肥学院计算机科学与技术系课程设计报告2013 ~2014 学年第2 学期课程面向过程综合设计课程设计名称学生籍贯信息记录簿设计学生姓名学号专业班级软件工程(2)班指导教师2014 年6 月一、需求分析随着学校办学规模的不断扩大、办学层次的多样化、在校生的不断增多。
开发这系统可以是教务处老师减轻工作压力,比较系统的对学生进行管理,加快速度、加强管理,使各项管理更加规范化。
题目要求设计一个学生籍贯信息记录簿系统,该系统要求对学生籍贯信息进行管理和维护。
要求为:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的籍贯信息;(3)按学号和姓名查询籍贯;(4)按籍贯查询并输出该籍贯的所有学生;(5)能添加、删除和修改学生的籍贯信息;(可选项)二、系统设计(一)算法及说明本程序运用c编写,使用顺序表的数据结构来实现。
程序中定义了一个结构体student。
其中在student结构体中包含了学生的基本信息(学生的学号,姓名,性别,年龄,籍贯)。
程序还定义了几个功能函数(保存、录入、显示、添加、查询),这五个函数是彼此相互独立的功能模块。
(二)各项功能分析(1)学生基本信息的录入:这部分的功能主要包括信息的录入,首先按程序提示输入学生的学号,姓名,性别,年龄,籍贯。
录入完毕后,按任意键回到菜单,主菜单还有显示学生的全部信息,按学号查询学生的籍贯,按姓名查询学生的籍贯,按籍贯查询该籍贯的所有学生,添加学生的籍贯信息,退出程序等功能,并且这些函数用后的信息都会写到你所指定的文本文件中。
(2)显示学生信息:此功能将录入的学生信息独处,并在屏幕上显示出来,并且录入到你所指定的文本文件中。
(3)按学号查询学生籍贯信息此功能可以根据用户输入的选择查出该学生的籍贯信息。
(4)按姓名查询学生的籍贯信息此功能可以更具用户输入的选择查出该学生的籍贯信息。
(5)按籍贯查询学生信息此功能可以根据你输入的信息查询相对应的学生信息。
C语言课程设计学生籍贯信息记录簿系统院(系)别班级学号姓名指导教师时间2010-6-12—2008-6-24课程设计任务书题目学生籍贯信息记录簿考试系统系(部)专业班级学生姓名学号6 月12 日至 6 月24 日共 2 周指导教师(签字)系主任(签字)年月日成绩评定表摘要这次程序设计,我选择的是设计学生籍贯信息记录簿系统的程序,之所以选择要设计这个程序首先因为我自己认为这个程序非常实用,虽然说老师给我们的每一个程序都很实用,但是在平时籍贯信息比较常用。
其次,通过向信息的同学了解,建立这个程序有一个方法就是利用链表,而我们的C语言课还没有学到这一步呢,我自己觉得挺有挑战性的,就打算在同学的帮助下编写这个程序了。
其实,刚拿到这个题目,真的没有什么头绪,但是在同学的帮助下,通过自己看课本,通过上网查资料,通过向老师询问,根据自己制定的进程安排,我还是完成了任务。
通过为期一周的课程设计,我对编程有了更加深刻的认识,也让我学到了一些关于用指针处理链表的知识,增强了自己的动手操作能力。
这一周的课程设计,让我对以前学过的知识有了一个更好的巩固,同时也增加了我的新的知识,使我受益匪浅,也让我对Visual C++ 6.0有了进一步的了解,而且,在编程过程中我也学到了许多的东西,也让我明白了一个道理:不管做什么事情,态度是最重要的。
关键字:学生籍贯信息记录簿,链表,指针AbstractTo increase the capacity of practices we have created more going to be able to operate the knowledge learned, the school has arranged for two weeks, especially our Visual C + + to carry out a practical design courses Masu.Detailed description of this file under Visual C + +6.0 environment, the process of designing a single software, this software is that the number of different data statistics.This software features, users enter a single-stage character, the software records the number of letters in each kind of data, the number of data in English, the number of numeric data, empty data include the number of the number and types of data that shows clear them.The following courses through the design and description, data description and statistical software to adjust the program description, and to develop overall direction, describes the process of making the program more, action , can perform various operations.Keyword:Multiple Choice,Head Files,VC++6.0目录前言 (1)第1章软件设计内容 (2)1.1软件达到的目的 (2)1.2软件功能说明 (2)1.2.1功能分析说明图 (2)1.2.2各项功能说明 (3)第2章软件设计环境与原理 (12)2.1设计环境与模块的划分 (12)2.1.1软件设计环境 (12)2.1.2软件模块的划分 (12)2.2软件设计主要原理 (13)2.2.1采用的主要数据结构类型 (13)第3章软件的设计过程 (14)3.1各软件模块之间的调用方式 (14)3.3数据保存方式以及格式 (14)第4章运行程序并截图以及对应的编程 (14)第5章总结 ................................................................... 错误!未定义书签。
目录1 课题分析 (1)1.1 问题描述 (1)学生籍贯信息记录簿 (1)1.2 功能需求分析 (1)2 系统设计 (2)2.1 数据存储设计 (2)2.5 文件清单与说明 (4)3.1菜单设计 (5)3.2学生信息查看设计 (5)3.3 分盘存储设计 (6)4 测试数据与测试过程记录 (7)4.1 菜单测试 (7)4.2查看学生信息功能测试 (7)4.3 学生信息处理测试 (9)5 课程设计遇到的问题及解决方法 (20)6 课程设计总结 (20)参考文献 (21)附录源文件 (21)1 课题分析1.1 问题描述学生籍贯信息记录簿编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。
具体功能:1) 系统以菜单方式工作;2)添加学生信息,至少10条。
3)显示所有学生的信息;4)按学号或姓名查询其籍贯;5)按籍贯查询并输出该籍贯的所有学生(至少3个城市);6)删除和修改学生的籍贯信息;7)显示输出上海市籍和非上海市籍学生的信息并可分别存盘。
1.2 功能需求分析1.图表图1 系统功能模块图2.表格2 系统设计2.1 数据存储设计void save_data(){FILE *fp;int i,k;k=dd.count;fp=fopen("c:/dada.txt","w");fwrite(&k,sizeof(int),1,fp);for(i=0;i<k;i++)fwrite(&dd.stu[i],sizeof(struct student),1,fp);fclose(fp);}2.2 数据结构设计void read_data(){FILE *fp;int i,k;struct student st;k=0;if(fopen("d:/students.txt","r")==NULL) // 如果文件不存在{fp=fopen("d:/students.txt","w");fwrite(&k,sizeof(int),1,fp);fclose(fp);}fp=fopen("d:/students.txt","r");fread(&k,sizeof(int),1,fp);dd.count=k;for(i=0;i<k;i++){fread(&st,sizeof(struct student),1,fp);strcpy(dd.stu[i].name,);strcpy(dd.stu[i].no,st.no);strcpy(dd.stu[i].ad,st.ad);}fclose(fp);}2.3 函数设计与说明2.4菜单设计2.5 文件清单与说明3 系统实现3.1菜单设计进入菜单页面,输入相应的功能序号,判定序号是否有效,若有效则执行,无效则提示有误并重新输入。
+64编制一种学生籍贯信息记录簿,每个学生信息涉及:学号、姓名、籍贯。
详细功能:(1)创立信息链表并以磁盘文献保存;(2)读取磁盘文献并显示输出所有学生籍贯信息;(3)按学号或姓名查询其籍贯;(4)按籍贯查询并输出该籍贯所有学生;(5)能添加、删除和修改学生籍贯信息;#include "dos.h"#include "stdio.h"#include "stdlib.h"#include "conio.h"#include "math.h"#include "string.h"/**********************建立链表******************************/struct hj{ int age;long number;char name[10],address[50],sex[2];struct hj *next;};/**************************文献操作函数******************************/FILE *fp;void openfile(char xx[20]){fp=fopen(xx,"ab+");if(fp==NULL)fp=fopen(xx,"wb");}/************************录入信息函数***********************************/void hjnew(void){system("cls");int n=0,xage;long xnumber;char xname[10];char xaddress[50];char xsex[2];struct hj *head;struct hj *x1,*x2;head=NULL;x2=NULL;printf("\n ★★★★★欢迎使顾客籍管理系统★★★★★\n"); printf("\n ★★★录入信息★★★\n");printf("\n 〓提示输入0返回上级菜单〓\n\n\n"); printf("\n 请输入学号【15字内】:");scanf("%ld",&xnumber);if(xnumber==0)goto haha;printf("\n 请输入姓名【10字内】:");scanf("%s",xname);printf("\n 请输入年龄【|-__-|】:"); scanf("%d",&xage);printf("\n 请输入性别【男OR女】:");scanf("%s",xsex);printf("\n 请输入籍贯【25字内】:"); scanf("%s",xaddress);while(xnumber!=0){n++;x1=(struct hj *)malloc(sizeof(struct hj));x1->number=xnumber;strcpy(x1->name,xname);strcpy(x1->sex,xsex);x1->age=xage;strcpy(x1->address,xaddress);if(n==1)head=x1;elsex2->next=x1;x2=x1;printf("\n 请输入学号【15字内】:"); scanf("%ld",&xnumber);if(xnumber==0)break;printf("\n 请输入姓名【10字内】:"); scanf("%s",xname);printf("\n 请输入年龄【|-__-|】:"); scanf("%d",&xage);printf("\n 请输入性别【男OR女】:");scanf("%s",xsex);printf("\n 请输入籍贯【25字内】:"); scanf("%s",xaddress);}x2->next=NULL;x1=head;while(x1!=NULL){openfile("hj.txt");char d[5]="四川";fwrite(x1,sizeof(struct hj),1,fp);fclose(fp);if(strstr(x1->address,d)!=NULL){openfile("schj.txt");fwrite(x1,sizeof(struct hj),1,fp);fclose(fp);}else{openfile("qthj.txt");fwrite(x1,sizeof(struct hj),1,fp);fclose(fp);}x1=x1->next;}haha:;}/*****************************查询函数*************************/void hjxmselect(void) //按学号方式查询函数{ssmmx:int n=0;long hh;system("cls");printf("\n ★★★★★欢迎使顾客籍管理系统★★★★★\n"); printf("\n ★★★查询编辑信息★★★\n");printf("\n 〓提示输入0返回上级菜单〓\n\n\n"); printf(" 请您输入学号:");scanf("%ld",&hh);if(hh!=0){struct hj *p;struct hj *q=NULL,*head=NULL;fp=fopen("hj.txt","rb");if(fp==NULL){printf("\n没有记录,请输入记录然后再查询!"); getch();goto jjx;}while(!feof(fp)){n++;p=(struct hj *)malloc(sizeof(struct hj));fread(p,sizeof(struct hj),1,fp);if(n==1)head=p;elseq->next=p;q=p;}q->next=NULL;p=head;while(p!=NULL){if(p->number==hh){int a;printf("\n 结果→ 学号=%ld 姓名=%s 年龄=%d 性别=%s ",p->number,p->name,p->age,p->sex);printf("\n 地址=%s",p->address);printf("\n\n 操作→ ⑴更改数据⑵删除数据⑶查询其她数据⑷返回上页⑸退出程序\n\n 请您选取操作:");ssmx:scanf("%d",&a);switch(a){void hjedit(struct hj *headd,struct hj *pp);void hjdelete(struct hj *headdd,struct hj *ss);case 1:hjedit(head,p);goto ssmmx;break;case 2:hjdelete(head,p);goto ssmmx;break;case 3:goto ssmmx;case 4:goto jjx;case 5:exit(0);default:printf("\n 错误选取,请重新选取:");goto ssmx;}}elsep=p->next;}int iiii=0;printf("\n 没有此记录1.重新查询2.返回上一页3.退出程序!");printf("\n 请选取:");qqqq:scanf("%d",&iiii);switch(iiii){case 1:goto ssmmx;case 2:goto jjx;case 3:exit(0);default:printf("\n 错误选取,请重新选取:");goto qqqq;}goto jjx;}jjx:;}void hjxhselect(void)//按姓名方式查询函数{ssmm:int n=0;char hh[10];system("cls");printf("\n ★★★★★欢迎使顾客籍管理系统★★★★★\n"); printf("\n ★★★查询编辑信息★★★\n");printf("\n 〓提示输入0返回上级菜单〓\n\n\n"); printf(" 请您输入姓名:");scanf("%s",hh);if(strcmp(hh,"0")!=0){struct hj *p;struct hj *q=NULL,*head=NULL;fp=fopen("hj.txt","rb");if(fp==NULL){printf("\n没有记录,请输入记录然后再查询!");getch();goto jjj;}while(!feof(fp)){n++;p=(struct hj *)malloc(sizeof(struct hj));fread(p,sizeof(struct hj),1,fp);if(n==1)head=p;elseq->next=p;q=p;}q->next=NULL;p=head;while(p!=NULL){if(strcmp(p->name,hh)==0){int a;printf("\n 结果→ 学号=%ld 姓名=%s 年龄=%d 性别=%s ",p->number,p->name,p->age,p->sex);printf("\n 地址=%s",p->address);printf("\n\n 操作→ ⑴更改数据⑵删除数据⑶查询其她数据⑷返回上页⑸退出程序\n\n 请您选取操作:");ssm:scanf("%d",&a);switch(a){void hjedit(struct hj *headd,struct hj *pp);void hjdelete(struct hj *headdd,struct hj *ss);case 1:hjedit(head,p);goto ssmm;break;case 2:hjdelete(head,p);goto ssmm;break;case 3:goto ssmm;case 4:goto jjj;case 5:exit(0);default:printf("\n 错误选取,请重新选取:");goto ssm;}}elsep=p->next;}int iii=0;printf("\n 没有此记录1.重新查询2.返回上一页3.退出程序!");printf("\n 请选取:");qqq:scanf("%d",&iii);switch(iii){case 1:goto ssmm;case 2:goto jjj;case 3:exit(0);default:printf("\n 错误选取,请重新选取:");goto qqq;}goto jjj;}jjj:;}void hjjgselect(void)//按籍贯方式查询{yyy:int i;system("cls");printf("\n ★★★★★欢迎使顾客籍管理系统★★★★★\n"); printf("\n ★★★籍贯方式查询信息★★★\n\n\n"); printf("\n 一显示所有信息\n");printf("\n 二显示四川籍所有信息\n");printf("\n 三显示其他籍所有信息\n");printf("\n 四自定义查询信息\n");printf("\n 五←返回上级菜单\n");printf("\n 六↓退出程序\n");printf("\n\n 请选取:");scanf("%d",&i);switch(i){ void zdyselect(void);void allselect(char a[8]);case 1:allselect("hj.txt");goto yyy;break;case 2:allselect("schj.txt");goto yyy;break;case 3:allselect("qthj.txt");goto yyy;break;case 4:zdyselect();case 5:break;case 6:exit(0);}}void zdyselect(void){ssmmz:int n=0,j=0;char hh[10];system("cls");printf("\n ★★★★★欢迎使顾客籍管理系统★★★★★\n"); printf("\n ★★★自定义查询信息★★★\n\n\n"); printf(" 请您输入地址核心字:");scanf("%s",hh);if(strcmp(hh,"0")!=0){struct hj *p;struct hj *q=NULL,*head=NULL;fp=fopen("hj.txt","rb");if(fp==NULL){printf("\n 没有记录,请输入记录然后再查询!");getch();goto jjz;}while(!feof(fp)){n++;p=(struct hj *)malloc(sizeof(struct hj)); fread(p,sizeof(struct hj),1,fp);if(n==1)head=p;elseq->next=p;q=p;}q->next=NULL;p=head;while(p!=NULL){if(strstr(p->address,hh)!=NULL){int a;j++;printf("\n 结果→ 学号=%ld 姓名=%s 年龄=%d 性别=%s ",p->number,p->name,p->age,p->sex);printf("\n 地址=%s",p->address);printf("\n\n 操作→ ⑴更改数据⑵删除数据⑶查询下一条数据⑷返回上页⑸退出程序\n\n 请您选取操作:");ssmz:scanf("%d",&a);switch(a){void hjedit(struct hj *headd,struct hj *pp);void hjdelete(struct hj *headdd,struct hj *ss);case 1:hjedit(head,p);goto ssmmz;break;case 2:hjdelete(head,p);goto ssmmz;break;case 3:p=p->next;continue;case 4:goto jjz;case 5:exit(0);default:printf("\n 错误选取,请重新选取:");goto ssmz;}p=p->next;}elsep=p->next;}if(j==0){printf("\n\n\n没有匹配记录按任意键继续!");getch();fclose(fp);goto ssmmz;}else{ int xx;printf("\n\n查询完毕!⑴继续查询⑵返回上一级菜单⑶退出程序");printf("\n请选取:");scanf("%d",&xx);if(xx==2)goto jjz;else if(xx==3)exit(0);}goto ssmmz;jjz:;}}void allselect(char a[8])//所有查询{int n=0;int k=0;system("cls");printf("\n ★★★★★欢迎使顾客籍管理系统★★★★★\n"); printf("\n ★★★籍贯方式信息★★★\n\n\n");struct hj *p;struct hj *q=NULL,*head=NULL;fp=fopen(a,"rb");if(fp==NULL){printf("\n对不起,没有记录无法查询!");goto xxxx;}rewind(fp);while(!feof(fp)){n++;p=(struct hj *)malloc(sizeof(struct hj));fread(p,sizeof(struct hj),1,fp);if(n==1)head=p;elseq->next=p;q=p;}q->next=NULL;struct hj *h1,*p2,*q3,*r4,*s5;h1=p2=(hj *)malloc(sizeof(struct hj));p2->next=head;while(p2->next!=NULL){q3=p2->next;r4=p2;while(q3->next!=NULL){if(q3->next->number<p2->next->number) r4=q3;q3=q3->next;}if(r4!=p2){s5=r4->next;r4->next=s5->next;s5->next=p2->next;p2->next=s5;}p2=p2->next;}head=h1->next->next;free(h1);p=head;while(p!=NULL&&n>0){n--;printf("\n学号=%ld 姓名=%s 年龄=%d 性别=%s",p->number,p->name,p->age,p->sex);printf("\n地址=%s",p->address);p=p->next;}xxxx:printf("\n→显示完毕←\n⑴↑返回上级菜单⑵↓退出程序\n请选择:"); xxx:scanf("%d",&n);switch(n){case 1:break;case 2:exit(0);default:printf("\n错误选取,请重新选取:");goto xxx;}}void hjselect(void)//查询编辑信息函数{cxbegin:int a;system("cls");printf("\n ★★★★★欢迎使顾客籍管理系统★★★★★\n"); printf("\n ★★★查询编辑信息★★★\n\n\n"); printf("\n 一按学号方式查询\n");printf("\n 二按姓名方式查询\n");printf("\n 三按籍贯方式查询\n");printf("\n 四→显示所有信息\n");printf("\n 五←返回上级菜单\n");printf("\n 请选择查询方式:");cxmm:scanf("%d",&a);switch(a){case 1:hjxmselect();goto cxbegin;break;case 2:hjxhselect();goto cxbegin;break;case 3:hjjgselect();goto cxbegin;break;case 4:allselect("hj.txt");goto cxbegin;break;case 5:break;default:printf("\n错误选取,请重新选取:");goto cxmm;}}void hjde(void)//删除界面函数{cxxbegin:int a;system("cls");printf("\n ★★★★★欢迎使顾客籍管理系统★★★★★\n"); printf("\n ★★★删除信息★★★\n\n\n");printf("\n 一按学号方式删除\n");printf("\n 二按姓名方式删除\n");printf("\n 三按籍贯方式删除\n");printf("\n 四→删除所有信息\n");printf("\n 五←返回上级菜单\n");printf("\n 请选择删除方式:");cxxmm:scanf("%d",&a);int i=0;switch(a){case 1:hjxmselect();goto cxxbegin;break;case 2:hjxhselect();goto cxxbegin;break;case 3:zdyselect();goto cxxbegin;break;case 4:fp=fopen("hj.txt","wb");if(fp!=NULL)i++;fp=fopen("schj.txt","wb");if(fp!=NULL)i++;fp=fopen("qthj.txt","wb");if(fp!=NULL)i++;if(i==3){printf("\n 所有数据已经删除敲任意键继续");getch();}goto cxxbegin;break;case 5:break;default:printf("\n错误选取,请重新选取:");goto cxxmm;}}//==============删除函数接口===============void hjdelete(struct hj *headdd,struct hj *ss){struct hj *q;char d[5]="四川";if(headdd==ss){headdd=headdd->next;goto gogo;}q=headdd;while(q!=NULL){if(q->next->number==ss->number) {break;}q=q->next;}q->next=ss->next;gogo:q=headdd;fp=fopen("hj.txt","wb");while(q!=NULL){fwrite(q,sizeof(struct hj),1,fp);q=q->next;}fclose(fp);q=headdd;fp=fopen("schj.txt","wb");while(q!=NULL){if(strstr(q->address,d)!=NULL){fwrite(q,sizeof(struct hj),1,fp);}q=q->next;}fclose(fp);q=headdd;fp=fopen("qthj.txt","wb");while(q!=NULL){if(strstr(q->address,d)==NULL){fwrite(q,sizeof(struct hj),1,fp);}q=q->next;}fclose(fp);}//===============编辑函数接口==============void hjedit(struct hj *headd,struct hj *pp) {int n=0;struct hj *p,*p1,*p2;char d[5]="四川";printf("\n 输入→ 学号="); scanf("%ld",&pp->number);printf("\n 姓名="); scanf("%s",pp->name);printf("\n 年龄="); scanf("%d",&pp->age);printf("\n 性别="); scanf("%s",pp->sex);printf("\n 地址="); scanf("%s",pp->address);p=headd;fp=fopen("hj.txt","wb");while(p!=NULL){fwrite(p,sizeof(struct hj),1,fp);p=p->next;}fclose(fp);p1=headd;fp=fopen("schj.txt","wb");while(p1!=NULL){if(strstr(p1->address,d)!=NULL){fwrite(p1,sizeof(struct hj),1,fp);}p1=p1->next;}fclose(fp);p2=headd;fp=fopen("qthj.txt","wb");while(p2!=NULL){if(strstr(p2->address,d)==NULL){fwrite(p2,sizeof(struct hj),1,fp);}p2=p2->next;}fclose(fp);}/*****************************主函数****************************************/ int main(int argc,char* argv[]){begin:int t;system("cls");printf("\n ★★★★★欢迎使顾客籍管理系统★★★★★\n\n\n\n\n");printf(" 一录入学生籍贯信息\n\n");printf(" 二查编学生籍贯信息\n\n");printf(" 三删除学生籍贯信息\n\n");printf(" 四退出程序\n\n");printf(" 请您选取:");mm:scanf("%d",&t);switch(t){case 1:hjnew();break;case 2:hjselect();break;case 3:hjde();break;case 4:exit(0);default:printf("\n 错误选取,请重新选取:");goto mm;}goto begin;return 0;}。
合肥学院计算机科学与技术系课程设计报告2013 ~2014 学年第2 学期课程面向过程综合设计课程设计名称学生籍贯信息记录簿设计学生姓名学号专业班级软件工程(2)班指导教师2014 年6 月一、需求分析随着学校办学规模的不断扩大、办学层次的多样化、在校生的不断增多。
开发这系统可以是教务处老师减轻工作压力,比较系统的对学生进行管理,加快速度、加强管理,使各项管理更加规范化。
题目要求设计一个学生籍贯信息记录簿系统,该系统要求对学生籍贯信息进行管理和维护。
要求为:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的籍贯信息;(3)按学号和姓名查询籍贯;(4)按籍贯查询并输出该籍贯的所有学生;(5)能添加、删除和修改学生的籍贯信息;(可选项)二、系统设计(一)算法及说明本程序运用c编写,使用顺序表的数据结构来实现。
程序中定义了一个结构体student。
其中在student结构体中包含了学生的基本信息(学生的学号,姓名,性别,年龄,籍贯)。
程序还定义了几个功能函数(保存、录入、显示、添加、查询),这五个函数是彼此相互独立的功能模块。
(二)各项功能分析(1)学生基本信息的录入:这部分的功能主要包括信息的录入,首先按程序提示输入学生的学号,姓名,性别,年龄,籍贯。
录入完毕后,按任意键回到菜单,主菜单还有显示学生的全部信息,按学号查询学生的籍贯,按姓名查询学生的籍贯,按籍贯查询该籍贯的所有学生,添加学生的籍贯信息,退出程序等功能,并且这些函数用后的信息都会写到你所指定的文本文件中。
(2)显示学生信息:此功能将录入的学生信息独处,并在屏幕上显示出来,并且录入到你所指定的文本文件中。
(3)按学号查询学生籍贯信息此功能可以根据用户输入的选择查出该学生的籍贯信息。
(4)按姓名查询学生的籍贯信息此功能可以更具用户输入的选择查出该学生的籍贯信息。
(5)按籍贯查询学生信息此功能可以根据你输入的信息查询相对应的学生信息。
学生籍贯信息课程设计报告一、课程目标知识目标:1. 学生能够了解和掌握籍贯的概念,理解籍贯与地理位置、历史文化的关系。
2. 学生能够通过查阅资料、地图等方式,掌握自己和他人的籍贯信息,了解不同地区的风土人情。
3. 学生能够运用所学知识,分析籍贯对个体和群体的影响,提高对地域文化的认识。
技能目标:1. 学生培养运用地图、网络等工具查找和整理籍贯信息的能力。
2. 学生提高观察、分析、总结和表达能力,通过小组讨论、课堂汇报等形式展示对籍贯的了解。
3. 学生学会尊重他人,善于倾听和合作,形成良好的团队协作精神。
情感态度价值观目标:1. 学生培养对家乡的热爱之情,增强对中华文化的认同和自豪感。
2. 学生树立地域平等观,尊重不同地区的文化差异,消除地域歧视。
3. 学生通过了解和关注籍贯,培养对人文地理的兴趣,激发探索世界的热情。
课程性质:本课程以人文地理为主题,结合学生的生活实际,以提高学生的地域文化素养为目标。
学生特点:学生处于好奇心强、求知欲旺的年级,具有一定的地图阅读能力和信息查找能力,但可能对籍贯的概念和地域文化了解有限。
教学要求:教师应注重启发式教学,引导学生主动探究、合作学习,关注学生的个体差异,提高教学效果。
通过本课程的学习,使学生达到上述具体、可衡量的学习成果。
二、教学内容本课程以《人文地理》教材为依托,结合以下教学内容,确保课程的科学性和系统性:1. 籍贯的定义与意义:介绍籍贯的概念、起源及在我国历史文化中的重要性。
- 教材章节:第一章 地理与人文,第三节 人的活动与地理环境2. 地理分布与籍贯:分析我国各地的地理环境、历史文化特点,探讨其对籍贯的影响。
- 教材章节:第二章 地理环境,第一、二节 地理环境概述、地理环境差异3. 籍贯与姓氏:探讨姓氏与籍贯的关系,了解我国姓氏的起源、分布及演变。
- 教材章节:第三章 人口与民族,第一节 人口分布与迁移4. 各地风土人情:介绍我国各地的民风民俗、传统节日、特色美食等,让学生感受地域文化的魅力。
HUNAN UNIVERSITY 程序设计训练报告学生姓名易伟浪殷婷婷学生学号20110704115 20110704106 专业班级测控技术与仪器一班指导老师洪跃山2012 年7 月 4 日一. 需求分析随着计算机技术的日益发达,计算机软件功能已涉入生活的诸多方面。
其中对学生籍贯信息的管理就是其中的一个小小的方面。
利用计算机软件来管理学生籍贯信息能够克服传统的文档管理的不足。
通过计算机实现学生籍贯信息管理薄具有存储信息量大,方便查询,修改,添加,删除,浏览等传统纸质文档不具备的良好功能。
二. 程序功能说明 1.功能分析说明图:2.各项功能说明:a.主菜单:用于显示系统主模块信息,供用户选择。
b.录入学生籍贯信息:用来将员工信息输入到计算机中,并保存到数据文件中,此模块还具有添加学生籍贯信息的功能。
c.查询学生籍贯信息:可按学号和姓名查找学生籍贯信息。
d.浏览学生籍贯信息:将系统中已有学生籍贯信息全部列出。
e.修改学生籍贯信息:根据学号进行查询,修改指定字段内容。
f.删除学生籍贯信息:删除指定学号的学生籍贯信息。
以上模块可由用户选择执行,另外,当用户运行此程序时,必须判断学生信息是否曾经保存过。
若学生籍贯信息事先未保存,必须先进行学生籍贯信息的录入。
三.软件基本操作先打开源程序,编译,运行。
然后根据提示输入相关内容。
具体如下:1.若学生籍贯信息已存在(即data.dat文件被创建,且不为空),输入Y或y,进入主界面。
若学生籍贯信息已存在则按其他键,进入主界面。
如图所示(主界面):2.输入要选择的项目(选择1),进入界面(按照提示进行输入):a.若学籍信息已保存过,则输入的信息添加到文件中。
b.若学学籍信息未保存过,输入的信息组成链表首次存到文件中。
c.若不再继续添加,则输入其他键,此时程序会将调用print()函数将文件中信息显示出来。
再输入除n或N的其他键,保存刚输入的内容。
d.最后保存完毕时,输入任意键返回主界面。
课程设计报告书学生籍贯信息记录薄班级:方 1310-1学号:**********:***指导教师:**石家庄铁道大学四方学院2014.6.24一、设计思想运用结构体定义几个变量,再通过编译各个功能的函数,在主函数中进行调用,并利用C语言中常用的For循环、if函数、while函数、printf语句、scanf语句等相关内容完成本设计。
进行完每次操作后都能返回菜单,也可从菜单中选择直接退出。
其中主要利用了函数的循环和调用。
二、系统完成功能及框图①可以存储学生信息;②按学号和姓名查找该学生的籍贯;③按籍贯可以查询所有学生的信息;④可以对学生的信息加以修改;⑤可以删除学生的信息;⑥读取磁盘文件并显示输出所有学生的籍贯信息;三、核心算法及说明1、// 主函数void main(){ 主要功能图1主要功能int fun;read_data();menu();while(1){printf("请输入功能号[0-7]:",&fun);scanf("%d",&fun);switch(fun){case 0: // 退出break;case 1: // 查看所有学生信息view_data();break;case 2: // 输入学生记录add_data();break;case 3: // 删除学生记录delete_data();break;case 4: // 编辑学生记录edit_data();break;case 5: // 查询(学号)query_data_no();break;case 6: // 查询(姓名)query_data_name();break;case 7: // 查询(籍贯)sort_data_address();break;}if(fun==0) break;to_menu();}}其上为本程序的主函数,对已经定义好的子函数进行调用,是整个程序的主体部分。
其中的每一个“case”语句分别对应其子函数的程序以及对其进行使用。
四、界面设计图2 主要功能菜单图3 查看所有学生信息图4 输入学生信息图5 删除学生的学号图6 编辑学生的学号图7 按照学生学号查询图8 按照学生姓名查询图9 按照学生的籍贯查询五、结论本程序的用途很广,能为学校对学生的管理提供很大的帮助;其编写过程其实不易,工作量很大,需要自己认真仔细地去完成,丝毫不能有一点的差错,否则该程序将是一团糟的,什么也执行不了;同时也真让我体会到了C语言的困难之处,也不是一朝一夕能学成的,所以还需要自己继续努力,对C语言做更深更全面的了解。
此次工作我们分工细致,工作积极,各自完成了自己所分担的责任,也完成的比较完善。
总之,是我和同伴一起努力共同完成的结果。
六、参考资料严蔚敏吴伟民,《数据结构(C语言版)》, 清华大学出版社, 2007.9 潭浩强,《C语言程序设计(第三版)》,高等教育出版社,2002.4 /yhss_214/blog/static/1037697920071177368518/nm169_view.php?fid=446&id=476刘卫国.《C语言程序设计》,中国铁道出版社,2008.2刘卫国.《C语言程序设计实践教程》,中国铁道出版社,2008.2邵军王忠《C语言程序设计》西安电子科技大学出版社周立功《C程序设计高级教程》北京航空航天出版社附录程序代码如下:#include <stdio.h>#include <io.h>#include <stdlib.h>#include <string.h>#define MAX 300struct student{char name[10]; // 姓名char no[50]; // 学号char ad[20]; //籍贯};struct data{int count; // 当前学生数组中学生的个数struct student stu[MAX]; // 学生数组} dd;// 显示主菜单void menu(){system("cls");printf("\n");printf("\t\t\t********************************\n");printf("\t\t\t* *\n");printf("\t\t\t* 学生籍贯信息记录簿*\n");printf("\t\t\t* *\n");printf("\t\t\t* [0] 退出*\n");printf("\t\t\t* [1] 查看所有学生信息*\n");printf("\t\t\t* [2] 输入学生记录*\n");printf("\t\t\t* [3] 删除学生记录*\n");printf("\t\t\t* [4] 编辑学生记录*\n");printf("\t\t\t* [5] 查询(学号)*\n");printf("\t\t\t* [6] 查询(姓名)*\n");printf("\t\t\t* [7] 查询(籍贯)*\n");printf("\t\t\t* *\n");printf("\t\t\t********************************\n");printf("\t\t\t* *\n"); }// 等待用户按回车后回到主菜单void to_menu(){char c1,c2;printf("\n\n\n按回车键返回主菜单...");scanf("%c%c",&c1,&c2);menu();}// 查看所有学生信息void view_data(){int i;printf("姓名\t学号\t籍贯");printf("\n-------------------------------------------------------------------\n");for(i=0;i<dd.count;i++)printf("%s\t%s\t%s\n",dd.stu[i].name,dd.stu[i].no,dd.stu[i].ad);}// 将数据从结构体数组保存到文件中void save_data(){FILE *fp;int i,k;k=dd.count;fp=fopen("c:/dada.txt","w");fwrite(&k,sizeof(int),1,fp);for(i=0;i<k;i++)fwrite(&dd.stu[i],sizeof(struct student),1,fp);fclose(fp);}// 输入学生记录void add_data(){struct student st;int b;int k;int i,j;while(1){j=0;printf("\n请输入学生信息:");printf("\n姓名\t学号\t籍贯");printf("\n---------------------------------------------------------------\n");scanf("%s%s%s",,st.no,st.ad);for(i=0;i<dd.count;i++)if(strcmp(dd.stu[i].no,st.no)==0){j=1;printf("学号录入重复,请重新输入!");break;}if(j==1)continue;if(j==0){k = dd.count;strcpy(dd.stu[k].name,);strcpy(dd.stu[k].no,st.no);strcpy(dd.stu[k].ad,st.ad);dd.count++;}printf("\n\n继续添加学生信息[1-yes 0-no]:");scanf("%d",&b);if(b==0) break;}save_data();}// 将数据从文件读到结构体数组中void read_data(){FILE *fp;int i,k;struct student st;k=0;if(access("c:/dada.txt",0)==-1) // 如果文件不存在{fp=fopen("c:/dada.txt","w");fwrite(&k,sizeof(int),1,fp);fclose(fp);}fp=fopen("c:/dada.txt","r");fread(&k,sizeof(int),1,fp);dd.count=k;for(i=0;i<k;i++){fread(&st,sizeof(struct student),1,fp);strcpy(dd.stu[i].name,);strcpy(dd.stu[i].no,st.no);strcpy(dd.stu[i].ad,st.ad);}fclose(fp);}// 删除学生记录void delete_data(){int i,k;char no[50];printf("\n请输入要删除学生的学号:");scanf("%s",no);k=-1;for(i=0;i<dd.count;i++){if(strcmp(dd.stu[i].no,no)==0){k=i;break;}}if(k==-1){printf("\n\n没有找到该学生(学号-%s)!",no);}else{for(i=k;i<dd.count;i++){strcpy(dd.stu[i].name,dd.stu[i+1].name);strcpy(dd.stu[i].no,dd.stu[i+1].no);strcpy(dd.stu[i].ad,dd.stu[i+1].ad);}dd.count--;save_data();printf("\n\n删除(学号-%s)成功!",no);}}// 编辑学生记录void edit_data(){int i,k;char no[50],ad[20];printf("\n请输入要编辑学生的学号:");scanf("%s",no);k=-1;for(i=0;i<dd.count;i++){if(strcmp(dd.stu[i].no,no)==0){k=i;break;}}if(k==-1){printf("\n\n没有找到该学生(学号-%s)!",no);}else{printf("\n姓名:%s,学号:%s",dd.stu[k].name,dd.stu[k].no);printf("\n请修改学生数据:");printf("\n籍贯:");scanf("%s",ad);strcpy(dd.stu[k].ad,ad);}}// 查询(学号)void query_data_no(){int i,k;char no[50];printf("\n请输入要查询学生的学号:");scanf("%s",no);k=-1;for(i=0;i<dd.count;i++){if(strcmp(dd.stu[i].no,no)==0){{printf("\n\n姓名\t学号\t籍贯");printf("\n-----------------------------------------------------------------\n");}k=i;printf("%s\t%s\t%s\n",dd.stu[i].name,dd.stu[i].no,dd.stu[i].ad);}}if(k==-1){printf("\n\n没有找到该学生(学号-%s)!",no);}}// 查询(姓名)void query_data_name(){int i,k;char name[10];printf("\n请输入要查询学生的姓名:");scanf("%s",name);k=-1;for(i=0;i<dd.count;i++){if(strcmp(dd.stu[i].name,name)==0){{printf("\n\n姓名\t学号\t籍贯");printf("\n-----------------------------------------------------------------\n");}k=i;printf("%s\t%s\t%s\n",dd.stu[i].name,dd.stu[i].no,dd.stu[i].ad);}}if(k==-1){printf("\n\n没有找到该学生(姓名-%s)!",name);}}//查询(籍贯)void query_data_address(){int i,sum=0;char ad[20];printf("请输入籍贯信息:");scanf("%s",ad);printf("该籍贯的学生有:");for(i=0;i<dd.count;i++)if(strcmp(dd.stu[i].ad,ad)==0){printf("%s\t",dd.stu[i].name);sum++;}if(sum==0)printf(" 0 人\n");}// 主函数void main(){int fun;read_data();menu();while(1){printf("请输入功能号[0-7]:",&fun);scanf("%d",&fun);switch(fun){case 0: // 退出break;case 1: // 查看所有学生信息view_data();break;case 2: // 输入学生记录add_data();break;case 3: // 删除学生记录delete_data();break;case 4: // 编辑学生记录edit_data();break;case 5: // 查询(学号)query_data_no();break;case 6: // 查询(姓名)query_data_name();break;case 7: // 查询(籍贯)query_data_address();break;}if(fun==0) break;to_menu();}}。