学生信息管理系统高级语言程序设计报告.docx
- 文档编号:5800094
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:43
- 大小:300.62KB
学生信息管理系统高级语言程序设计报告.docx
《学生信息管理系统高级语言程序设计报告.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统高级语言程序设计报告.docx(43页珍藏版)》请在冰豆网上搜索。
学生信息管理系统高级语言程序设计报告
学校名称
软件设计报告
题目:
学生信息管理系统
系部名称
:
专业名称
:
班级
:
学号
:
学生姓名
:
指导教师
:
时间
:
一、实验目的
1通过上机编写程序加深对C语言的认识与理解。
2能够熟练应用函数的调用,结构体数组。
。
3熟练应用for,do-while等循环语句,if,switch等条件判断语句,以及strcmp,strcpy的运用。
4学会用VisualC++解决实际问题,提高独自解决问题的能力。
5熟练掌握运用文件的相关知识。
二、实验内容
编写公寓管理系统程序,设置管理人员和非管理人员页面,管理人员页面主要有排序、查询、输入、更新、外来人员登记以及修改密码,储存信息有学生信息、公寓物品信息以及外来人员信息,学生信息有:
姓名、学号、性别、年龄以及所在系别;公寓物品信息主要统计桌子椅子床衣柜的总数量和损坏的数量,以及需要维修的其它物品;外来人员信息主要记录人员姓名、性别、年龄以及证件号,并对此程序进行调试,修改,运行,最终达到实际应用。
三、需求分析
1.系统功能描述
1)进入管理人员页面设置了注册和登陆功能,注册信息时需要管理人员才能确认码(1234)才能完成登陆。
可进入管理员系统修改密码。
2)输入信息包括输入学生信息和输入物品信息。
3)更新信息中主要有添加(学生、物品)、修改(学生、物品)和删除(学生、物品、外来人员记录)。
4)查询信息:
学生信息可以按学号、姓名和公寓号查询,物品按公寓号查询,外来人员按证件号查询。
5)排序分为按学号和姓名排序(只对学生信息)。
6)外来人员登记主要是记录外来人员的信息。
7)非管理人员系统可实现的只有排序和查询。
8)将信息保存在文件中,以便随时调用。
2.本系统要实现的目标。
1)将烦琐复杂的排序等工作用计算机完成。
2)将各类信息分开方便查询和修改。
3)记录外来人员的信息。
4)将管理人员和非管理人员分开,就是非管理人员只能查询和查看排序表。
5)管理人员进入页面需要登陆,账号密码通过注册获得,注册时需要管理人员确认码(1234)。
3.本系统的运行环境是Visualc++。
四、概要设计
1.系统结构图(功能模块图)
2、程序可以满足以下功能:
(1).各模块间通过菜单切换和调用
(2).主函数通过调用菜单函数实现对各功能模块的调用,各功能模块间根据需要可相互调用。
(3).程序能够保证各模块功能的独立和数据共享。
3.各功能介绍:
(1):
输入功能:
进入主菜单后,选择一个界面(管理人员界面或非管理人员界面),输入有关信息。
(2):
输出功能:
屏幕上输出录入的的相关信息。
(3):
排行功能:
将输入的新秀按学号由小到大进行排序。
(4):
查询功能:
查询录入的相关信息。
(5):
修改功能:
将学生的密码进行修改。
(6):
添加功能:
可以任意添加相关信息。
五、详细设计及运行结果
1、公寓管理系统模块图:
2、运行结果:
初始界面:
管理员系统:
输入学生的信息:
输出按学号排行情况:
输出按姓名排序的情况:
学生的新信息:
公寓物品信息录入
更改密码
流程图,函数之间相互调用的图示,程序设计及编码,运行结果
六、调试情况,总结及体会
1.调试情况:
几经周折写完程序进行调试,一开始直接提示102个Errors还有几个Warnings,感觉自己程序做的也太失败了,看看周围其他同学也都在进行调试,每个人都会出现各种各样的错误,大家都在认真找错,自己也就静下心来一个错误一个错误改正。
在那些错误当中发现好多都是犯同一个错,有的是自己粗心输入错误,例如:
把revise输成revese之类的拼写小错误,很明显的错误自己只要认真找找都能改掉,而有的虽然光标已经明显指出哪错的,但是自己还是不会改,找同学帮着也改了不少错误,许多函数都没定义,别人指出一点,自己就能改掉所有这一类型的好多错,以后遇见这些问题自己就再也不会犯了,之后还遇见多输入了一个花括号,导致程序出现好几个错误。
认真改完所有错误之后,当提示0Errors,0Warnings的时候,调试成功了!
2.主要问题:
刚开始时在结构体中加了循环导致错误,还在老师提醒,指出错误,再将所有的程序修改;在字符串比较大小时没将两字符串的占用内存设置一样,导致无法比较;设置密码系统时开始无法使密码正确输入,经过参考同学的程序找到了问题所在。
3.我的体会:
在VC++环境下运行与在TC下运行有很多不同,像getch()等一些函数都需要先定义,不过在VC++下可以用中文,而且可以设置页面的颜色。
编写程序时很枯燥,但经过程序的不断完善,心情越来越好,而且经过和同学的一些交流可以曾加自己的知识面,通过分工,在网上找到一些好的方法一起研究,也拓宽了自己的知识面,运用指针文件在一知半解的情况下,仿照课本上的例子也成功运用了。
觉得这两个星期的实习,不但把以前的只是复习了,而且将原本零散的知识串到了一起。
有的自己一个人改不了的错误找同学帮着也改了不少,许多函数都没定义,别人指出一点,自己就能改掉所有这一类型的好多错,而这些错误自己找了好长时间也还是没找出来,所以在实习期间也发现一定要不懂就问,虚心接受别人的意见,取别人之长补自己之短。
有些错误大家都改不了的就找老师帮忙,老师看看程序,几下就解决了,所以从老师身上自己也学会了很多东西。
总之,这次实习自己受益匪浅!
七.源代码:
#include
#include
#include
#include
#defineN20
#defineMAX20
#defineM20
#definemessage1printf("\n----------------------公寓号:
%d--------------------\n",student[i].num)
#definemessage2printf("\n姓名:
%6s性别:
%4s******\n",student[i].name,student[i].sex)
#definemessage3printf("\n年龄:
%6d学号:
%4d*照片*\n",student[i].age,student[i].xuehao)
#definemessage4printf("\n系别:
%8s******\n",student[i].grade)
#definemessage5printf("\n----------------------公寓号:
%d--------------------\n",goods[j].num1)
#definemessage6printf("\n桌子:
%4d坏:
%4d\n",goods[j].desk1,goods[j].desk2)
#definemessage7printf("\n椅子:
%4d坏:
%4d\n",goods[j].chair1,goods[j].chair2)
#definemessage8printf("\n衣柜:
%4d坏:
%4d\n",goods[j].yigui1,goods[j].yigui2)
#definemessage9printf("\n床:
%4d坏:
%4d\n",goods[j].bed1,goods[j].bed2)
#definemessage10printf("\n其它需维修的物品:
%s\n",goods[j].other)
#definemessage11printf("\n外来人员姓名:
%s,性别:
%s,年龄:
%d,证件号:
%d.\n",people[k].name,people[k].sex,people[k].age,people[k].card)
intsum1,sum2,sum3,sum4;
structstudent_type/*学生成员信息*/
{intnum;
charname[10];
charsex[10];
intxuehao;
intage;
chargrade[30];
}student[MAX];
voidsave_message1(intsum1)/*保存学生信息*/
{FILE*fp1;
inti;
if((fp1=fopen("student.txt","wt"))==NULL)
{printf("读文件错误!
\n");return;}
for(i=0;i if(fwrite(&student[i],sizeof(structstudent_type),1,fp1)! =1) printf("写文件错误! \n"); fclose(fp1); } structgoods_type/*公寓物品信息*/ {intnum1; intdesk1; intdesk2; intbed1; intbed2; intchair1; intchair2; intyigui1; intyigui2; charother[40]; }goods[N]; voidsave_message2(intsum2)/*保存物品信息*/ {FILE*fp2; intj; if((fp2=fopen("goods.txt","wb"))==NULL) {printf("读文件错误! \n");return;} for(j=0;j if(fwrite(&goods[j],sizeof(structgoods_type),1,fp2)! =1) printf("写文件错误! \n"); fclose(fp2); } structzhu_type/*密码信息*/ {intnum; charmima[20]; }zhu[N]; voidsave_message4(intsum4)/*保存密码信息*/ {FILE*fp4; intk; if((fp4=fopen("mima.txt","wb"))==NULL) { printf("读文件错误! \n"); return; } for(k=0;k if(fwrite(&zhu[k],sizeof(structzhu_type),1,fp4)! =1) printf("写文件错误! \n"); fclose(fp4); } structpeople_type/*外来人员信息*/ {charname[10]; charsex[10]; intage; intcard; }people[M]; voidsave_message3(intsum3)/*保存外来人员信息*/ {FILE*fp3; intk; if((fp3=fopen("people.txt","wb"))==NULL) { printf("读文件错误! \n"); return; } for(k=0;k if(fwrite(&people[k],sizeof(structpeople_type),1,fp3)! =1) printf("写文件错误! \n"); fclose(fp3); } voidinput_message1()/*输入学生或物品信息*/ {inti,j,a,s,b; printf("\n\n输入学生或物品信息\n\n"); printf("\n选择: 1: 先输入学生信息;\n"); printf("\n2: 直接输入物品信息。 \n"); scanf("%d",&a); switch(a) {case1: { for(i=0;i {system("cls"); printf("\n请输入姓名: \n"); scanf("%s",student[i].name); printf("\n请输入公寓号: \n"); scanf("%d",&student[i].num); printf("\n请输入性别: \n"); scanf("%s",student[i].sex); printf("\n请输入年龄及学号: \n"); scanf("%d%d",&student[i].age,&student[i].xuehao); printf("\n请输入所在系别: \n"); scanf("%s",student[i].grade); printf("\n是否继续输入(是1,否2)? \n"); scanf("%d",&b); if(b==2)break; } printf("\n是否输入公寓物品信息(是1,否2)? \n"); scanf("%d",&s); if(s==2){i++;sum1=i;break;} if(s==1){i++;sum1=i;} } case2: { for(j=0;j {system("cls"); printf("\n请输入公寓号: \n"); scanf("%d",&goods[j].num1); printf("\n请输入桌子、椅子、床及衣柜的数量: \n"); scanf("%d%d%d%d",&goods[j].desk1,&goods[j].chair1,&goods[j].bed1,&goods[j].yigui1); printf("\n请输入已损坏的桌子、椅子、床及衣柜的数量: \n"); scanf("%d%d%d%d",&goods[j].desk2,&goods[j].chair2,&goods[j].bed2,&goods[j].yigui2); printf("\n请输入其它需要修理的物品信息: \n"); scanf("%s",goods[j].other); printf("\n是否继续输入(是1,否2)? \n"); scanf("%d",&b); if(b==2){j++;break;} } sum2=j; break; } default: printf("\n错误\n"); } printf("\n公寓信息输入完毕\n"); getch(); } voidinput_message2()/*外来人员输入信息*/ {intk,choice; for(k=sum3;k {system("cls"); printf("\n请输入姓名\n"); scanf("%s",people[k].name); printf("\n请输入性别\n"); scanf("%s",people[k].sex); printf("\n请输入年龄\n"); scanf("%d",&people[k].age); printf("\n请输入你的证件号(后四位): \n"); scanf("%d",&people[k].card); printf("\n是否继续输入新信息? (是1,否2)\n"); scanf("%d",&choice); if(choice==2){k++;break;} } sum3=k; printf("\n人员已经登记\n"); printf("\n谢谢\n"); } intread_message1()/*读取信息1*/ {FILE*fp1; inti=0; if((fp1=fopen("student.txt","rb"))==NULL) { printf("\n\n没有信息\n\n"); returni; } while(feof(fp1)! =1) { fread(&student[i],sizeof(structstudent_type),1,fp1); if(student[i].num==0)break; elsei++; } fclose(fp1); return(i); } intread_message2()/*读取信息2*/ {FILE*fp2; intj=0; if((fp2=fopen("goods.txt","rb"))==NULL) {printf("\n\n没有信息\n\n"); returnj; } while(feof(fp2)! =1) {fread(&goods[j],sizeof(structgoods_type),1,fp2); if(goods[j].num1==0)break; elsej++; } fclose(fp2); return(j); } intread_message3()/*读取信息3*/ {FILE*fp3; intk=0; if((fp3=fopen("people.txt","rb"))==NULL) {printf("\n\n没有信息\n\n"); returnk; } while(feof(fp3)! =1) {fread(&people[k],sizeof(structpeople_type),1,fp3); if(people[k].card==0)break; elsek++; } fclose(fp3); return(k); } intread_message4()/*读取信息4*/ { FILE*fp4; intk=0; if((fp4=fopen("mima.txt","rb"))==NULL) {printf("\n\n没有信息\n\n"); returnk; } while(feof(fp4)! =1) {fread(&zhu[k],sizeof(structzhu_type),1,fp4); if(zhu[k].num==0)break; elsek++; } fclose(fp4); return(k); } voidinsert_message()/*添加信息*/ {intchoice,j,i,a,b; system("cls"); printf("\n\n---------------------添加公寓信息---------------------\n\n"); printf("\n1: 添加公寓物品信息\n"); printf("\n2: 添加学生信息\n"); printf("\n请选择1或2。 \n"); scanf("%d",&choice); switch(choice) { case1: { for(j=sum2;j {system("cls"); printf("\n请输入新增的公寓号\n"); scanf("%d",&goods[j].num1); printf("\n请输入桌子、椅子、床及衣柜的数量: \n"); scanf("%d%d%d%d",&goods[j].desk1,&goods[j].chair1,&goods[j].bed1,&goods[j].yigui1); printf("\n请输入已损坏的桌子、椅子、床及衣柜的数量: \n"); scanf("%d%d%d%d",&goods[j].desk2,&goods[j].chair2,&goods[j].bed2,&goods[j].yigui2); printf("\n请输入其它需要修理的物品信息: \n"); scanf("%s",goods[j].other); printf("是否继续? 是1,否2"); scanf("%d",&a); if(a==2){j++;break;} } sum2=j; break; } case2: { for(i=sum1;i {system("cls"); printf("\n请输入新增人员姓名: \n"); scanf("%s",student[i].name); printf("\n请输入公寓号: \n"); scanf("%d",&student[i].num); printf("\n请输入性别: \n"); scanf("%s",student[i].sex); printf("\n请输入年龄及学号: \n"); scanf("%d%d",&student[i].age,&student[i].xuehao); printf("\n请输入所在系别: \n"); scanf("%s",student[i].grade); printf("是否继续? 是1,否2"); scanf("%d",&b); if(b==2){i++;break;} } sum1=i; break; } default: printf("\n错误\n");break; } printf("\n添加信息完毕\n"); getch(); } voiddel_message()/*删除信息*/ {intchoice,del_xuehao,i,n,j,k,del_num1,a,x; longintdel_card; system("cls"); printf("\n请选择要删除的信息类别: \n"); printf("\n1: 学生信息;\n"); printf("\n2: 公寓物品信息;\n"); printf("\n3: 外来人员登记信息;\n"); scanf("%d",&choice); switch(choice) { case1: {do {system("cls"); printf("\n请输入要删除的学生学号: \n"); scanf("%d",&del_xuehao); x=0; for(i=0;i { if(del_xuehao==student[i].xuehao) { if(i==0&&sum1==1) {student[i].num=0; memset(student[i].name,0,sizeof(student[i].name)); student[i].age=0; student[i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 信息管理 系统 高级 语言程序设计 报告