学生信息系统.docx
- 文档编号:24691034
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:26
- 大小:233.22KB
学生信息系统.docx
《学生信息系统.docx》由会员分享,可在线阅读,更多相关《学生信息系统.docx(26页珍藏版)》请在冰豆网上搜索。
学生信息系统
HUNANUNIVERSITY
程序设计训练
报告
学生姓名
学生学号
专业班级
指导老师
院长(系主任)
年月日
湖南大学程序设计训练报告
目录
实训1通信录管理系统………………………………………………3
湖南大学程序设计训练报告
实训1
一实训目的
1、掌握结构化程序设计的基本思想;
2、熟练掌握结构以及顺序表的设计和应用;
3、提高C语言程序设计的综合应用能力。
4、了解综合系统设计的基本原理;
5、掌握C语言程序的综合应用。
二实训内容
通信录管理系统
要求:
1.操作界面实用美观,提供简易菜单或图形菜单
2.通信录基本信息包括:
姓名(不重复),单位,住址、电话、电子邮件等
3.能够进行基本信息的录入、删除、修改、保存、查询(包括按姓名模糊查询)、浏览
4.能够按姓名升序排序
5.能够按姓名快速查找(先排序然后查找)
若用户输入信息不正确,给出相应的“错误”信息显示,然后重复刚才的操作
三实训分析
1.算法分析:
这个题目的基本信息既可以用链表储存,也可以用顺序表储存,用链表的话删除比较方便,但排序较麻烦;用顺序表的话删除较麻烦,但排序较方便;在这个题目中我选择了用顺序表L存储其基本信息。
写了几个关于顺序表的基本操作(如删除、查找等等),然后把它们整合到主函数里,就实现了题目的要求。
2.N—S图或程序流程图
图1-1通信录系统总流程图
四、系统结构设计:
1.总体设计
在对通信录管理系统进行合理的需求分析之后,对整个系统进行总体设计。
首先确定开发与设计的总体思想,在此基础上,用图表的方式给出系统总体的设计架构,绘制系统模型结构图,并且通过模块功能树图对每个模块进行总体设计。
此外,总体设计还包括对系统的数据结构或数库设计,以及界面设计等,从而对后续的详细设计起到指导必作用。
系统采用结构化的设计方法进行设计,采用C语言进行开发。
2、基本数据结构的设计:
#definelist_init_size100//初始化内存大小
#definelistincrement10//内存用完时增加的内存大小
3、系统用户数据结构
描叙系统联系人的姓名、单位、住址、电话、电子邮件,作为一整条记录存在内存中。
structelemtype{
charname[20];//姓名
chardw[100];//单位
charzz[100];//住址
chardh[20];//电话
chardzyj[30];//电子邮件
};
structsqlist{
elemtype*elem;//存储空间基址
intlength;//顺序表当前长度
intlistsize;//当前分配的存储容量(以sizeof(elemtype)为单位)
};
4.系统模块结构图
依据需求分析结果,通信录管理系统可分为6个模块:
浏览、排序、删除、修改、插入、查询。
系统模块结构如下页图所示:
图1-2系统模块结构图
5、界面设计
充分考虑界面易于操作的系统需求,管理员和投票人的功能调用采用类似于菜单
的功能选择方式实现。
用C语言的打印语名构造简单界面,设计效果图如下所示:
图1-3初始界面图
图1-4输入信息后的界面图
操作界面注重简洁性,并且容易看明白。
6、模块设计
该模块为系统用户提供功能选择界面,用户登录系统后都会看到对应的功能选择界面,输入自己的功能选项即可跳转到相应的功能执行函数。
图如上面的系统模块结构图。
(1)函数声明
●功能:
用户功能选择界面。
●输入:
用户选择的功能选项
●处理:
根据用户选项跳转到相关功能函数
●输出:
相关功能函数的处理或显界界。
五、实训源程序代码和调试过程
程序清单:
//////////////////////////////////////////////////////////////////////////////////查询
voidchaxun_list(sqlist&L)
{inti;
charname0[20];
printf("请输入要查询的人的姓名:
");
cin>>name0;
for(i=0;i {if(! strcmp(L.elem[i].name,name0)) {printf("您要查询的人的信息如下: \n"); printf("姓名单位住址电话电子邮件\n"); printf("%s%s%s%s%s\n",L.elem[i].name,L.elem[i].dw,L.elem[i].zz,L.elem[i].dh,L.elem[i].dzyj); break; } } if(i==L.length)printf("您的输入有误! \n"); } /////////////////////////////初始化 sqlistinit_list(sqlist&L) {L.elem=(elemtype*)malloc(list_init_size*sizeof(elemtype)); L.length=0; L.listsize=list_init_size; returnL; } //////////////////////////////////插入 sqlistinsert_list(sqlist&L) {sqlistnewbase; if(L.elem! =NULL) {printf("请输入姓名: "); scanf("%s",&L.elem[L.length].name); if(L.elem[L.length].name[0]! ='*') {printf("请输入单位,住址,电话,电子邮件: \n"); scanf("%s%s%s%s",&L.elem[L.length].dw,&L.elem[L.length].zz,&L.elem[L.length].dh,&L.elem[L.length].dzyj); } } while(L.elem[L.length].name[0]! ='*') {++L.length; if(L.elem! =NULL) {printf("请输入姓名: "); scanf("%s",&L.elem[L.length].name); if(L.elem[L.length].name[0]! ='*') {printf("请输入单位,住址,电话,电子邮件: \n"); scanf("%s%s%s%s",&L.elem[L.length].dw,&L.elem[L.length].zz,&L.elem[L.length].dh,&L.elem[L.length].dzyj); } } if(L.length>=L.listsize) {newbase.elem=(elemtype*)realloc(L.elem,(L.listsize+list_init_size)*sizeof(elemtype)); L.elem=newbase.elem; L.listsize+=listincrement; } } returnL; } ///////////////////////////////////删除 sqlistdelete_list(sqlist&L) {charname0[20]; inti,j; printf("请输入要删除人的姓名: \n"); scanf("%s",&name0); for(i=0;i { if(! strcmp(name0,L.elem[i].name)) { for(j=i;j L.elem[j]=L.elem[j+1]; --L.length; } } returnL; } //////////////////////////////////////修改///////////// sqlistxiugai_list(sqlist&L) {charname1[20],name2[20],dw0[100],zz0[100],dh0[20],dzyj0[30]; inti; printf("请输入要修改人的姓名: \n"); scanf("%s",&name1); for(i=0;i {if(! strcmp(name1,L.elem[i].name)) {printf("请输入要改成的姓名: ");scanf("%s",&name2);if(name2[0]! ='*') {strcpy(L.elem[i].name,name2);printf("请输入单位: ");scanf("%s",&dw0); if(dw0[0]! ='*') {strcpy(L.elem[i].dw,dw0);printf("请输入住址: ");scanf("%s",&zz0); if(zz0[0]! ='*') {strcpy(L.elem[i].zz,zz0);printf("请输入电话: ");scanf("%s",&dh0); if(dh0[0]! ='*') {strcpy(L.elem[i].dh,dh0);printf("请输入电子邮件: ");scanf("%s",&dzyj0); if(dzyj0[0]! ='*'){strcpy(L.elem[i].dzyj,dzyj0);printf("修改完成! \n");} elseprintf("修改完成! \n"); } else {printf("请输入电子邮件: ");scanf("%s",&dzyj0); if(dzyj0[0]! ='*'){strcpy(L.elem[i].dzyj,dzyj0);printf("修改完成! \n");} elseprintf("修改完成! \n"); } } else {printf("请输入电话: ");scanf("%s",&dh0); if(dh0[0]! ='*') {strcpy(L.elem[i].dh,dh0);printf("请输入电子邮件: ");scanf("%s",&dzyj0); if(dzyj0[0]! ='*'){strcpy(L.elem[i].dzyj,dzyj0);printf("修改完成! \n");} elseprintf("修改完成! \n"); } else {printf("请输入电子邮件: ");scanf("%s",&dzyj0); if(dzyj0[0]! ='*'){strcpy(L.elem[i].dzyj,dzyj0);printf("修改完成! \n");} elseprintf("修改完成! \n"); } } } else {printf("请输入住址: ");scanf("%s",&zz0); if(zz0[0]! ='*') {strcpy(L.elem[i].zz,zz0);printf("请输入电话: ");scanf("%s",&dh0); if(dh0[0]! ='*') {strcpy(L.elem[i].dh,dh0);printf("请输入电子邮件: ");scanf("%s",&dzyj0); if(dzyj0[0]! ='*'){strcpy(L.elem[i].dzyj,dzyj0);printf("修改完成! \n");} elseprintf("修改完成! \n"); } else {printf("请输入电子邮件: ");scanf("%s",&dzyj0); if(dzyj0[0]! ='*'){strcpy(L.elem[i].dzyj,dzyj0);printf("修改完成! \n");} elseprintf("修改完成! \n"); } } } } else {printf("请输入单位: "); scanf("%s",&dw0); if(dw0[0]! ='*') {strcpy(L.elem[i].dw,dw0); printf("请输入住址: "); scanf("%s",&zz0); if(zz0[0]! ='*') {strcpy(L.elem[i].zz,zz0); printf("请输入电话: "); scanf("%s",&dh0); if(dh0[0]! ='*') {strcpy(L.elem[i].dh,dh0);printf("请输入电子邮件: ");scanf("%s",&dzyj0); if(dzyj0[0]! ='*'){strcpy(L.elem[i].dzyj,dzyj0);printf("修改完成! \n");} elseprintf("修改完成! \n"); } else {printf("请输入电子邮件: ");scanf("%s",&dzyj0); if(dzyj0[0]! ='*'){strcpy(L.elem[i].dzyj,dzyj0);printf("修改完成! ");} elseprintf("修改完成! \n"); } } else {printf("请输入电话: ");scanf("%s",&dh0); if(dh0[0]! ='*') {strcpy(L.elem[i].dh,dh0);printf("请输入电子邮件: ");scanf("%s",&dzyj0); if(dzyj0[0]! ='*'){strcpy(L.elem[i].dzyj,dzyj0);printf("修改完成! \n");} elseprintf("修改完成! \n"); } else {printf("请输入电子邮件: ");scanf("%s",&dzyj0); if(dzyj0[0]! ='*'){strcpy(L.elem[i].dzyj,dzyj0);printf("修改完成! \n");} elseprintf("修改完成! \n"); } } } else {printf("请输入住址: ");scanf("%s",&zz0); if(zz0[0]! ='*') {strcpy(L.elem[i].zz,zz0);printf("请输入电话: ");scanf("%s",&dh0); if(dh0[0]! ='*') {strcpy(L.elem[i].dh,dh0);printf("请输入电子邮件: ");scanf("%s",&dzyj0); if(dzyj0[0]! ='*'){strcpy(L.elem[i].dzyj,dzyj0);printf("修改完成! \n");} elseprintf("修改完成! \n"); } else {printf("请输入电子邮件: ");scanf("%s",&dzyj0); if(dzyj0[0]! ='*'){strcpy(L.elem[i].dzyj,dzyj0);printf("修改完成! \n");} elseprintf("修改完成! \n"); } } } } } } returnL; } //////////////////////////////////排序//////////////// sqlistpaixu_list(sqlist&L) {elemtypeq; inti,j,k; for(i=0;i for(j=0;j {k=strcmp(L.elem[j].name,L.elem[j+1].name); if(k>0) {q=L.elem[j]; L.elem[j]=L.elem[j+1]; L.elem[j+1]=q; } } returnL; } ///////////////////////////////////输出浏览/////////////// voidprintf_list(sqlist&L) {inti; printf("姓名单位住址电话电子邮件\n"); for(i=0;i printf("%s%s%%s%s\n",L.elem[i].name,L.elem[i].dw,L.elem[i].zz,L.elem[i].dh,L.elem[i].dzyj); } ////////////////////////功能选择界面函数//////////////////////// voidp() {printf("----------------------------\n"); printf("|通信录|\n"); printf("----------------------------\n"); printf("----------------------------\n"); printf("|1---浏览|\n"); printf("|2---排序|\n"); printf("|3---删除|\n"); printf("|4---修改|\n"); printf("|5---插入|\n"); printf("|6---查询|\n"); printf("|q---退出|\n"); printf("----------------------------\n"); printf("\n"); printf("\n"); } ///////////////////////////////////////////////////////////////////主函数///////////////////////////////////////// intmain() {charx,c; sqlistL; L=init_list(L);/////////////////////////////////将L初始化 /////////////////////////////////////////////////////////////初始界面设计 printf("----------------------------\n"); printf("|通信录|\n"); printf("----------------------------\n"); printf("|初始通信录为空! 请先输入信息! |\n"); printf("|以输入'*'号为结束! |\n"); printf("----------------------------\n"); printf("|1---浏览|\n"); printf("|2---排序|\n"); printf("|3---删除|\n"); printf("|4---修改|\n"); printf("|5---插入|\n"); printf("|6---查询|\n"); printf("|q---退出|\n"); printf("----------------------------\n"); printf("\n"); printf("\n"); insert_list(L);////////////////////////////////初始插入信息 system("cls");////////////////////////////////清屏 p();/////////////////////////打印选择功能界面 cin>>x;////////////////////////用户输入选择项 while(x! ='q'){ switch(x) { case'1': printf_list(L);printf("总人数: "); printf("%d个\n",L.length); printf("输入'*'继续: ");cin>>c;system("cls"); p();cin>>x;////////////////////浏览 break; case'2': paixu_list(L); printf("排序后的通信录为: \n");printf_list(L);printf("总人数: "); printf("%d个\n",L.length);printf("输入'*'继续: "); cin>>c;system("cls");p();cin>>x;//////////////////排序 break; case'3': delete_list(L);printf("删除后的通信录为: \n");printf_list(L); printf("总人数: ");printf("%d个\n",L.length);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 信息系统