计本班《c++课程设计报告》学生信息管理系统程张磊.doc
《计本班《c++课程设计报告》学生信息管理系统程张磊.doc》由会员分享,可在线阅读,更多相关《计本班《c++课程设计报告》学生信息管理系统程张磊.doc(12页珍藏版)》请在咨信网上搜索。
个人收集整理 勿做商业用途 巢湖学院计算机与信息工程学院 课程名称 C++课程设计 课题名称 学生信息管理系统 专 业 计算机科学与技术 班 级 11级计本3班 学 号 11011169 姓 名 程张磊 联系方式 18226926353 指导教师 许荣泉 目录 一、 系统的设计需求—-—--———--—-—--————-———---2 二、 系统的功能模块划分—--————-——------——---—2 三、 系统的整体设计—--——---———-—----—---—--——2 四、 调试分析-——----—---—-—-—-—-—————--—--—-—6 五、 总结-———----—-—--—-—-—--————-—---—-—————7 六、 附件:代码——-——-——-—----——-—-—-—-—----—-7 一、系统的设计需求 1、整个系统均用C语言实现; 2、利用指针、链表来实现学生成绩的数据结构设计; 3、系统具有输入、显示、删除、排序、退出基本功能; 4、系统的各个功能模块都用函数的形式来实现; 5、可以将学生信息全部显示出来出来。 二、系统的功能模块划分 每一条记录包括一个学生的姓名、成绩。同时 1、输入功能:一次可以完成一个学生成绩记录的输入。 2、显示功能:完成全部学生记录的显示。 3、删除功能:对指定学生的成绩进行删除。 4、排序功能:按学生从大到小进行排序。 5、修改功能:对学生的成绩进行修改。 三、系统的整体设计 1).数据结构设计: A、输入功能的设计: void insert_func(void) {char s_temp[4]; ptr=(struct student *) malloc(sizeof(struct student)); printf(” Student name : "); gets(ptr—〉name);// gets从标准输入设备读取字符串// printf(" Student score: ”); gets(s_temp); ptr-〉score = atoi(s_temp);//把字符串转化为 整数// B、删除功能的设计: void delete_func(void)//现在进入删除操作// {char del_name[20]; printf(” Delete student name: "); gets(del_name); prev = head; current = head—>next; while ((current != NULL) && (strcmp(current—〉name , del_name)!=0))//用到了strcmp 比较字符串 {prev = current; current = current-〉next; }if (current != NULL) {prev->next = current—>next; free(current);//释放当前位置// printf(” %s student record deleted\n”,del_name);//输出被删除的姓名// }else printf(” Student %s not found\n",del_name);//否则此学生不存在// C、排序功能的设计: void sort_func(void) //插入数据// {prev = head;//把头指针所指的值付给prev// current = head—>next;//把头指针的下一个指针值付给当前指针所指的位置// while ((current != NULL) && (current—>score 〉 ptr->score)) {prev = current; current = current->next; }ptr—>next = current; prev—>next = ptr; D、修改功能的设计: void modify_func(void) {char n_temp[20],s_temp[4];//定义字符类型// printf(” Modify student name: "); gets(n_temp);//这样输入姓名 current=head—>next; while ((current != NULL) && (strcmp(current->name , n_temp)!=0)) {prev = current; current = current-〉next; }if (current != NULL) {printf(" **************************\n”); printf(" Student name : %s\n”,current->name); printf(” Student score: %d\n”,current—〉score); printf(" **************************\n"); printf(" Please enter new score: ”); gets(s_temp); current-〉score = atoi(s_temp); printf(" %s student record modified\n”,n_temp); }//输出被修改的成绩// else printf(" Student %s not found\n”,n_temp);//否则此学生不存在// anykey_func(); E、显示功能的设计: void display_func(void)//定义显示// {int count=0; system(”cls"); if(head—〉next == NULL)//如果头指针所指数为空// {printf(” No student record\n”);//则输出学生记录为空// }else//否则输出学生姓名和成绩// {printf(” NAME SCORE\n"); printf(” ——---——-———-——————--—--——--\n"); current=head-〉next; while(current != NULL) {printf(" %—20s %3d\n", current—〉name, current—〉score); count++; current=current->next; if(count % 20 == 0) getch(); }printf(” --—-—---———————----———————-\n"); printf(" Total %d record(s) found\n", count); 2)。功能模块的具体设计 整个系统除了主函数外,另外还有8个函数,实现5大功能:输入功能、显示功能、排序功能、删除功能、修改功能。各个函数的详细设计说明分别如下: 1、 主函数 main() 利用while()循环和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。 2、 输入记录函数getch(); insert_func(); 这是一个无参函数,用来执行第学生成绩记录的输入,当当没有学生纪录时就开始进行输入操作。 算法:先声明一个首节点head,并将head—〉next设为NULL.然后用 if((fptr=fopen(“slist。dat",”r”))==NULL)对程序进行判断如果成立则进行输入,输入时运用getch()函数和insert_func()主导来完成。 最终效果图: 3、 显示记录函数 void display_func(void) 这是一个不返回值的有参函数,负责对全部学生成绩记录的输出,不足之处就是不能对学生成绩进行分页显示。 算法: 先用if语句对头指针的下一给位置进行判断看是否为空如果为空则不显示如果不为空则输出学生姓名及成绩。算法:现将head->next赋值给当前位置current然后再用while对current进行定义最后输出。 最终效果: 4、 删除记录函数void delete_func(void)这是一个有参函数,先输入要删除的学生记录的 姓名,找到后显示该学生信息,等确认后便可进行删除。 算法:从p指向的第一个结点开始,检查该结点中的num值是否等于输入的要求删除的那个姓名。如果相等就将该结点删除,如不相等,就将p后移一个结点,再如此进行下去,直到遇到表尾为止.最终效果: 5、排序函数void sort_func(void) 这是一个有参函数,按学生成绩的大小进行排 6、修改函数 void modify_func(void)这是一个有参函数,先输入要修改的学生姓名找到后对其成绩进行修改. 算法:先将head—〉next赋值给当前位置current然后用while函数对其进行定义然后检查该节点中的姓名是不是p要找的如果相等就修改,如不相等,就将current –>next赋值给current在于p节点比较直到遇到表尾为止。 四、调试分析 (1)刚开始没有那个初始化函数,程序运行后,没有输入任何数据就试得去执行显示功能,结果显示的是一些乱码!加入初始化函数后,这种现象也随之消失。 (2)刚开始执行输入函数,输入十个学生的成绩,输完后执行显示功能,学生成绩记录是按输入时的顺序显示的,试着在其中增加一些语句,希望能把学号按从大到小的顺序显示,但暂时没有成功,但最后还是按从大到小的顺序输出了。 (3)在输入函数中设了一个无限循环,可以输入无数个学生的成绩信息,但最后失败了只能一个一个输入。 (4)输入太多个学生的成绩时,屏幕显示不能控制为一页一页显示,所以为了方便起见,不要输入太多记录,十七左右为最佳。 五、 总结 经过C语言课程设计,感觉自己收获不少!这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了C语言的重要性。这个学生成绩管理系统都是在自己知识范围内完成的,所以界面清晰简单,可能不是很好看,但绝对实用! 从这里我也得到一个体会,做一个程序,或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或者软件。 相信这次的课程设计为我以后继续从事计算机工作打了一个小小的开头。 六、附件:代码 /* file name: slist.c */ /* 单向键结链表,插入、删除使用排序 */ //学会对文件操作文件操作和单链表一起使用 #include <stdio.h> #include 〈stdlib。h〉 #include 〈string.h> #include <conio。h〉 void read_func(void); void write_func(void); void insert_func(void); void sort_func(void);// sort意思为类型// void delete_func(void); void display_func(void); /*DSFGAFSHDGSJHDF*/ void modify_func(void); /*DSFGAFSHDGSJHDF*/ void anykey_func(void); /*DSFGAFSHDGSJHDF*/ struct student { char name[20]; /*DSFGAFSHDGSJHDF*/ int score; struct student *next; }; struct student *ptr, *head, *current, *prev;//全部声明为全局变量 int main(void) { char option1; system(”cls");//清屏 read_func();//func意思为目前使用者定义函式的参数列的数目// while(1) { printf("****************************************\n”); printf(" 1。插入\n"); printf(" 2。删除\n"); printf(” 3。显示\n”); printf(" 4.修改\n"); printf(" 5。退出\n”); printf("****************************************\n"); printf(" Please enter your choice (1-5)...”); option1=getche(); printf(”\n");/*DSFGAFSHDGSJHDF*/ switch(option1) { case '1’: insert_func(); break; case '2’: delete_func(); break; case ’3': display_func(); break; case ’4': modify_func(); break; case '5': // write_func();//写入参数数目// exit(0);//这里也处理的比较好 } } } void read_func(void) { FILE *fptr;// FILE意思为归档// head=(struct student *) malloc(sizeof(struct student)); head—>next = NULL; /* 开始时,若表中不存在数据,则要求输入第一笔数据 */ if((fptr=fopen(”slist.dat”,”r")) == NULL) {printf(" Data file not exist\n”);//数据文件不存在// printf(" Press any key to edit first record。.。\n"); getch();//字符插入函数// insert_func();//不存在就实行插入操作 }else {ptr=(struct student *) malloc(sizeof(struct student)); while(fscanf(fptr, "%s %d", ptr->name, &ptr-〉score) != EOF) {sort_func(); ptr=(struct student *) malloc(sizeof(struct student)); }fclose(fptr);//关闭fptr所指的文件释放缓冲区// }} void write_func(void) {FILE *fptr; fptr=fopen(”slist。dat”,"w"); current=head->next;// current意思为当前的// while(current != NULL) {fprintf(fptr, ”%s %d\n”, current—>name, current-〉score); current = current—>next; }fclose(fptr); }void insert_func(void) //一插入就比较字符串(想比较很简单) 不是等到全部插完了才比较 {char s_temp[4]; ptr=(struct student *) malloc(sizeof(struct student)); printf(" Student name : ”); gets(ptr—〉name);// gets从标准输入设备读取字符串// printf(” Student score: ”); gets(s_temp); ptr—〉score = atoi(s_temp);//把字符串转化为 整数// sort_func(); }/*以分数高低由大到小排列*/ void sort_func(void) //插入数据// {prev = head;//把头指针所指的值付给prev// current = head-〉next;//把头指针的下一个指针值付给当前指针所指的位置// while ((current != NULL) && (current—〉score > ptr—>score)) {prev = current; current = current->next; }ptr—〉next = current; prev-〉next = ptr; }//前面是进行成绩排序操作// void delete_func(void)//现在进入删除操作// {char del_name[20]; printf(” Delete student name: ”); gets(del_name); prev = head; current = head—〉next; while ((current != NULL) && (strcmp(current—〉name , del_name)!=0))//用到了strcmp 比较字符串 {prev = current; current = current—〉next; }if (current != NULL) {prev—〉next = current->next; free(current);//释放当前位置// printf(" %s student record deleted\n",del_name);//输出被删除的姓名// }else printf(" Student %s not found\n",del_name);//否则此学生不存在// //以上为删除操作// anykey_func(); }//进入修改操作// void modify_func(void) {char n_temp[20],s_temp[4];//定义字符类型// printf(” Modify student name: ”); gets(n_temp);//这样输入姓名 current=head-〉next; while ((current != NULL) && (strcmp(current->name , n_temp)!=0)) {prev = current; current = current—>next; }if (current != NULL) {printf(” **************************\n”); printf(” Student name : %s\n",current—〉name); printf(" Student score: %d\n”,current—〉score); printf(" **************************\n"); printf(" Please enter new score: "); gets(s_temp); current—〉score = atoi(s_temp); printf(” %s student record modified\n”,n_temp); }//输出被修改的成绩// else printf(" Student %s not found\n”,n_temp);//否则此学生不存在// anykey_func(); }//进入显示操作// void display_func(void)//定义显示// {int count=0; system(”cls”); if(head—>next == NULL)//如果头指针所指数为空// {printf(” No student record\n");//则输出学生记录为空// }else//否则输出学生姓名和成绩// {printf(” NAME SCORE\n”); printf(" ——--—-—-———---—---—---—-—-—\n"); current=head-〉next; while(current != NULL) {printf(” %—20s %3d\n", current—〉name, current-〉score); count++; current=current-〉next; if(count % 20 == 0) getch(); }printf(” ——-—--—-—----————————-———-—\n"); printf(” Total %d record(s) found\n”, count); }anykey_func(); }void anykey_func(void)//任何键继续 {printf(" Press any key to continue。..”); getch(); printf(”\n”); } - 11 -- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+课程设计报告 本班 c+ 课程设计 报告 学生 信息管理 系统 程张磊
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文